From d1833c12f493791f53443e039ce57c8d4c0b833d Mon Sep 17 00:00:00 2001 From: devdatt Date: Tue, 23 Dec 2025 15:32:54 +0530 Subject: [PATCH] generate_netplan --- encoder/network.php | 5 ----- encoder/static.php | 50 +++++++++++++++++++++++++++++---------------- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/encoder/network.php b/encoder/network.php index 9a1e51a..ffc7363 100755 --- a/encoder/network.php +++ b/encoder/network.php @@ -58,11 +58,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $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'; - 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_gateway = $get('network_primary_gateway'); $network_primary_vlan = $get('network_primary_vlan'); diff --git a/encoder/static.php b/encoder/static.php index 97234b5..aed67d0 100755 --- a/encoder/static.php +++ b/encoder/static.php @@ -157,15 +157,10 @@ function generate_netplan(array $data, string $iface): array ] ]; - /* ---------- PRIMARY ---------- */ - if ( - $data['primary']['mode'] !== 'disabled' || - $data['primary']['modev6'] !== 'disabled' - ) { + if ($data['primary']['mode'] !== 'disabled') { $vlan = trim($data['primary']['network_primary_vlan'] ?? ''); if ($vlan !== '') { - /* VLAN configuration */ $netplan['network']['ethernets'][$iface] = new stdClass(); $netplan['network']['vlans']["{$iface}.{$vlan}"] = @@ -174,20 +169,27 @@ function generate_netplan(array $data, string $iface): array build_interface($data['primary'], 'primary') ); } else { - /* NO VLAN → configure base NIC */ $netplan['network']['ethernets'][$iface] = 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 ( - !isset($netplan['network']['ethernets'][$iface]) && - ( - $data['secondary']['mode'] !== 'disabled' || - $data['secondary']['modev6'] !== 'disabled' - ) - ) { + if ($vlan !== '') { + $netplan['network']['ethernets'][$iface] = new stdClass(); + + $netplan['network']['vlans']["{$iface}.{$vlan}"] = + array_merge( + ['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'] ?? ''); if ($vlan !== '') { @@ -199,17 +201,29 @@ function generate_netplan(array $data, string $iface): array build_interface($data['secondary'], 'secondary') ); } else { - /* NO VLAN → configure base NIC */ $netplan['network']['ethernets'][$iface] = 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'])) { $netplan['network']['vlans'] = new stdClass(); } - return $netplan; }