generate_netplan

This commit is contained in:
devdatt 2025-12-23 15:49:47 +05:30
parent d1833c12f4
commit a410ed970e
1 changed files with 43 additions and 50 deletions

View File

@ -157,73 +157,66 @@ function generate_netplan(array $data, string $iface): array
] ]
]; ];
if ($data['primary']['mode'] !== 'disabled') { /* ---------- BASE INTERFACE (PRIMARY FIRST) ---------- */
$vlan = trim($data['primary']['network_primary_vlan'] ?? ''); if (
$data['primary']['mode'] !== 'disabled' ||
$data['primary']['modev6'] !== 'disabled'
) {
$base_vlan = trim($data['primary']['network_primary_vlan'] ?? '');
if ($vlan !== '') { if ($base_vlan === '') {
$netplan['network']['ethernets'][$iface] = new stdClass(); // Configure base NIC
$netplan['network']['vlans']["{$iface}.{$vlan}"] =
array_merge(
['id' => (int)$vlan, 'link' => $iface],
build_interface($data['primary'], 'primary')
);
} else {
$netplan['network']['ethernets'][$iface] = $netplan['network']['ethernets'][$iface] =
build_interface($data['primary'], 'primary'); build_interface($data['primary'], 'primary');
} }
} }
if ($data['primary']['modev6'] !== 'disabled') {
$vlan = trim($data['primary']['network_primary_ipv6_vlan'] ?? '');
if ($vlan !== '') { /* ---------- BASE INTERFACE (SECONDARY ONLY IF NOT SET) ---------- */
$netplan['network']['ethernets'][$iface] = new stdClass(); if (
!isset($netplan['network']['ethernets'][$iface]) &&
(
$data['secondary']['mode'] !== 'disabled' ||
$data['secondary']['modev6'] !== 'disabled'
)
) {
$base_vlan = trim($data['secondary']['network_secondary_vlan'] ?? '');
$netplan['network']['vlans']["{$iface}.{$vlan}"] = if ($base_vlan === '') {
$netplan['network']['ethernets'][$iface] =
build_interface($data['secondary'], 'secondary');
}
}
/* ---------- VLANs (PRIMARY) ---------- */
$p_vlan = trim($data['primary']['network_primary_vlan'] ?? '');
if ($p_vlan !== '') {
// Ensure base interface exists
$netplan['network']['ethernets'][$iface] ??= new stdClass();
$netplan['network']['vlans']["{$iface}.{$p_vlan}"] =
array_merge( array_merge(
['id' => (int)$vlan, 'link' => $iface], ['id' => (int)$p_vlan, 'link' => $iface],
build_interface($data['primary'], 'primary') build_interface($data['primary'], 'primary')
); );
} else {
$netplan['network']['ethernets'][$iface] =
build_interface($data['primary'], 'primary');
} }
}
if ($data['secondary']['mode'] !== 'disabled') {
$vlan = trim($data['secondary']['network_secondary_vlan'] ?? '');
if ($vlan !== '') { /* ---------- VLANs (SECONDARY) ---------- */
$netplan['network']['ethernets'][$iface] = new stdClass(); $s_vlan = trim($data['secondary']['network_secondary_vlan'] ?? '');
if ($s_vlan !== '') {
$netplan['network']['ethernets'][$iface] ??= new stdClass();
$netplan['network']['vlans']["{$iface}.{$vlan}"] = $netplan['network']['vlans']["{$iface}.{$s_vlan}"] =
array_merge( array_merge(
['id' => (int)$vlan, 'link' => $iface], ['id' => (int)$s_vlan, 'link' => $iface],
build_interface($data['secondary'], 'secondary') build_interface($data['secondary'], 'secondary')
); );
} else {
$netplan['network']['ethernets'][$iface] =
build_interface($data['secondary'], 'secondary');
} }
}
if ($data['secondary']['modev6'] !== 'disabled') {
$vlan = trim($data['secondary']['network_secondary_ipv6_vlan'] ?? '');
if ($vlan !== '') { /* ---------- Normalize vlans ---------- */
$netplan['network']['ethernets'][$iface] = new stdClass();
$netplan['network']['vlans']["{$iface}.{$vlan}"] =
array_merge(
['id' => (int)$vlan, 'link' => $iface],
build_interface($data['secondary'], 'secondary')
);
} else {
$netplan['network']['ethernets'][$iface] =
build_interface($data['secondary'], 'secondary');
}
}
if (empty($netplan['network']['vlans'])) { if (empty($netplan['network']['vlans'])) {
$netplan['network']['vlans'] = new stdClass(); $netplan['network']['vlans'] = new stdClass();
} }
return $netplan; return $netplan;
} }