generate_netplan

This commit is contained in:
devdatt 2025-12-23 15:32:54 +05:30
parent e47a390769
commit d1833c12f4
2 changed files with 32 additions and 23 deletions

View File

@ -58,11 +58,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$secondary_mode = in_array($get('secondary_mode'), ['dhcp', 'static', 'disabled']) ? $get('secondary_mode') : 'dhcp'; $secondary_mode = in_array($get('secondary_mode'), ['dhcp', 'static', 'disabled']) ? $get('secondary_mode') : 'dhcp';
$secondary_modev6 = in_array($get('secondary_ipv6'), ['auto', 'dhcpv6', 'static', 'disabled']) ? $get('secondary_ipv6') : 'auto'; $secondary_modev6 = in_array($get('secondary_ipv6'), ['auto', 'dhcpv6', 'static', 'disabled']) ? $get('secondary_ipv6') : 'auto';
error_log("primary_mode :- " . $primary_mode);
error_log("primary_modev6:- " . $primary_modev6);
error_log("secondary_mode:- " . $secondary_mode);
error_log("secondary_modev6:- " . $secondary_modev6);
$network_primary_ip = $get('network_primary_ip'); $network_primary_ip = $get('network_primary_ip');
$network_primary_gateway = $get('network_primary_gateway'); $network_primary_gateway = $get('network_primary_gateway');
$network_primary_vlan = $get('network_primary_vlan'); $network_primary_vlan = $get('network_primary_vlan');

View File

@ -157,15 +157,10 @@ function generate_netplan(array $data, string $iface): array
] ]
]; ];
/* ---------- PRIMARY ---------- */ if ($data['primary']['mode'] !== 'disabled') {
if (
$data['primary']['mode'] !== 'disabled' ||
$data['primary']['modev6'] !== 'disabled'
) {
$vlan = trim($data['primary']['network_primary_vlan'] ?? ''); $vlan = trim($data['primary']['network_primary_vlan'] ?? '');
if ($vlan !== '') { if ($vlan !== '') {
/* VLAN configuration */
$netplan['network']['ethernets'][$iface] = new stdClass(); $netplan['network']['ethernets'][$iface] = new stdClass();
$netplan['network']['vlans']["{$iface}.{$vlan}"] = $netplan['network']['vlans']["{$iface}.{$vlan}"] =
@ -174,20 +169,27 @@ function generate_netplan(array $data, string $iface): array
build_interface($data['primary'], 'primary') build_interface($data['primary'], 'primary')
); );
} else { } else {
/* NO VLAN → configure base NIC */
$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'] ?? '');
/* ---------- SECONDARY (only if primary not configured on base) ---------- */ if ($vlan !== '') {
if ( $netplan['network']['ethernets'][$iface] = new stdClass();
!isset($netplan['network']['ethernets'][$iface]) &&
( $netplan['network']['vlans']["{$iface}.{$vlan}"] =
$data['secondary']['mode'] !== 'disabled' || array_merge(
$data['secondary']['modev6'] !== 'disabled' ['id' => (int)$vlan, 'link' => $iface],
) 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'] ?? ''); $vlan = trim($data['secondary']['network_secondary_vlan'] ?? '');
if ($vlan !== '') { if ($vlan !== '') {
@ -199,17 +201,29 @@ function generate_netplan(array $data, string $iface): array
build_interface($data['secondary'], 'secondary') build_interface($data['secondary'], 'secondary')
); );
} else { } else {
/* NO VLAN → configure base NIC */
$netplan['network']['ethernets'][$iface] = $netplan['network']['ethernets'][$iface] =
build_interface($data['secondary'], 'secondary'); build_interface($data['secondary'], 'secondary');
} }
} }
if ($data['secondary']['modev6'] !== 'disabled') {
$vlan = trim($data['secondary']['network_secondary_ipv6_vlan'] ?? '');
/* Normalize vlans */ if ($vlan !== '') {
$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;
} }