From 20a7cb157425395035300b1047d2d3f0a10efaed Mon Sep 17 00:00:00 2001 From: smos Date: Sat, 31 Mar 2012 20:41:10 +0200 Subject: Add interface tracking support. With this it is now possible for dynamic IPv6 interfaces to setup the corresponding lan interface for RA. DHCP6 with prefix delegation to follow later for automatic daisychaining. --- usr/local/www/interfaces.php | 203 +++++++++++++++++++++++++++---------------- 1 file changed, 129 insertions(+), 74 deletions(-) (limited to 'usr/local/www') diff --git a/usr/local/www/interfaces.php b/usr/local/www/interfaces.php index b0594df..6435ea6 100755 --- a/usr/local/www/interfaces.php +++ b/usr/local/www/interfaces.php @@ -223,6 +223,11 @@ switch($wancfg['ipaddrv6']) { case "6to4": $pconfig['type6'] = "6to4"; break; + case "track6": + $pconfig['type6'] = "track6"; + $pconfig['track6-interface'] = $wancfg['track6-interface']; + $pconfig['track6-prefix-id'] = $wancfg['track6-prefix-id']; + break; case "6rd": $pconfig['prefix-6rd'] = $wancfg['prefix-6rd']; if($wancfg['prefix-6rd-v4plen'] == "") @@ -237,8 +242,6 @@ switch($wancfg['ipaddrv6']) { $pconfig['ipaddrv6'] = $wancfg['ipaddrv6']; $pconfig['subnetv6'] = $wancfg['subnetv6']; $pconfig['gatewayv6'] = $wancfg['gatewayv6']; - $pconfig['dhcp6-pd-sla-id'] = $wancfg['dhcp6-pd-sla-id']; - $pconfig['prefix-6rd-id'] = $wancfg['prefix-6rd-id']; } else $pconfig['type6'] = "none"; break; @@ -507,6 +510,11 @@ if ($_POST['apply']) { if (in_array($wancfg['ipaddrv6'], array())) $input_errors[] = sprintf(gettext("You have to reassign the interface to be able to configure as %s."),$_POST['type']); break; + case "track6": + /* needs to check if $track6-prefix-id is used on another interface */ + if (in_array($wancfg['ipaddrv6'], array())) + $input_errors[] = sprintf(gettext("You have to reassign the interface to be able to configure as %s."),$_POST['type']); + break; } @@ -644,13 +652,13 @@ if ($_POST['apply']) { unset($wancfg['subnetv6']); unset($wancfg['gatewayv6']); unset($wancfg['dhcphostname']); - unset($wancfg['dhcp6-pd-sla-id']); unset($wancfg['dhcp6-duid']); unset($wancfg['dhcp6-ia-pd-len']); + unset($wancfg['track6-interface']); + unset($wancfg['track6-prefix-id']); unset($wancfg['prefix-6rd']); unset($wancfg['prefix-6rd-v4plen']); unset($wancfg['gateway-6rd']); - unset($wancfg['prefix-6rd-id']); unset($wancfg['pppoe_password']); unset($wancfg['pptp_username']); unset($wancfg['pptp_password']); @@ -676,21 +684,31 @@ if ($_POST['apply']) { /* for dynamic interfaces we tack a gateway item onto the array to prevent system * log messages from appearing. They can also manually add these items */ /* 1st added gateway gets a default bit */ - /* FIXME: Add address family check here! */ + /* FIXME: Add address family check here! IPv6 needs a gateway bit too */ if(!empty($a_gateways)) { $gateway_item = array(); /* check for duplicates */ $skip = false; foreach($a_gateways as $item) { - if(($item['interface'] == "$if") && (preg_match("/dynamic/", $item['gateway']))) { - $skip = true; + if(($item['interface'] == "$if") && (trim($item['gateway']) == "dynamic")) { + $skip4 = true; + } + if(($item['interface'] == "$if") && (trim($item['gateway']) == "dynamic6")) { + $skip6 = true; } } - if($skip == false) { + if($skip4 == false) { $gateway_item['gateway'] = "dynamic"; - $gateway_item['descr'] = sprintf(gettext("Interface %s dynamic gateway"),$if); + $gateway_item['descr'] = sprintf(gettext("Interface %s dynamic IPv4 gateway"),$if); $gateway_item['name'] = "GW_" . strtoupper($if); $gateway_item['interface'] = "{$if}"; + $gateway_item['family'] = "inet"; + } elseif($skip6 == false) { + $gateway_item['gateway'] = "dynamic6"; + $gateway_item['descr'] = sprintf(gettext("Interface %s dynamic IPv6 gateway"),$if); + $gateway_item['name'] = "GW_" . strtoupper($if) ."_v6"; + $gateway_item['interface'] = "{$if}"; + $gateway_item['family'] = "inet6"; } else { unset($gateway_item); } @@ -801,8 +819,6 @@ if ($_POST['apply']) { case "staticv6": $wancfg['ipaddrv6'] = $_POST['ipaddrv6']; $wancfg['subnetv6'] = $_POST['subnetv6']; - $wancfg['dhcp6-pd-sla-id'] = $_POST['dhcp6-pd-sla-id']; - $wancfg['prefix-6rd-id'] = $_POST['prefix-6rd-id']; if ($_POST['gatewayv6'] != "none") { $wancfg['gatewayv6'] = $_POST['gatewayv6']; } @@ -827,6 +843,11 @@ if ($_POST['apply']) { case "6to4": $wancfg['ipaddrv6'] = "6to4"; break; + case "track6": + $wancfg['ipaddrv6'] = "track6"; + $wancfg['track6-interface'] = $_POST['track6-interface']; + $wancfg['track6-prefix-id'] = $_POST['track6-prefix-id']; + break; case "none": break; } @@ -1079,7 +1100,7 @@ $statusurl = "status_interfaces.php"; $closehead = false; include("head.inc"); $types4 = array("none" => gettext("None"), "staticv4" => gettext("Static IPv4"), "dhcp" => gettext("DHCP"), "ppp" => gettext("PPP"), "pppoe" => gettext("PPPoE"), "pptp" => gettext("PPTP"), "l2tp" => gettext("L2TP") /* , "carpdev-dhcp" => "CarpDev"*/); -$types6 = array("none" => gettext("None"), "staticv6" => gettext("Static IPv6"), "dhcp6" => gettext("DHCP6"), "6rd" => gettext("6rd"), "6to4" => gettext("6to4")); +$types6 = array("none" => gettext("None"), "staticv6" => gettext("Static IPv6"), "dhcp6" => gettext("DHCP6"), "6rd" => gettext("6rd"), "6to4" => gettext("6to4"), "track6" => gettext("Track Interface")); ?> @@ -1126,23 +1147,27 @@ $types6 = array("none" => gettext("None"), "staticv6" => gettext("Static IPv6"), function updateTypeSix(t) { switch(t) { case "none": { - jQuery('#staticv6, #dhcp6, #6rd, #6to4').hide(); + jQuery('#staticv6, #dhcp6, #6rd, #6to4, #track6').hide(); break; } case "staticv6": { - jQuery('#none, #dhcp6, #6rd, #6to4').hide(); + jQuery('#none, #dhcp6, #6rd, #6to4, #track6').hide(); break; } case "dhcp6": { - jQuery('#none, #staticv6, #6rd, #6to4').hide(); + jQuery('#none, #staticv6, #6rd, #6to4, #track6').hide(); break; } case "6rd": { - jQuery('#none, #dhcp6, #staticv6, #6to4').hide(); + jQuery('#none, #dhcp6, #staticv6, #6to4, #track6').hide(); break; } case "6to4": { - jQuery('#none, #dhcp6, #staticv6, #6rd').hide(); + jQuery('#none, #dhcp6, #staticv6, #6rd, #track6').hide(); + break; + } + case "track6": { + jQuery('#none, #dhcp6, #staticv6, #6rd, #6to4').hide(); break; } } @@ -1621,63 +1646,6 @@ $types6 = array("none" => gettext("None"), "staticv6" => gettext("Static IPv6"), - - - - - - - - - - - - - - @@ -1736,6 +1704,7 @@ $types6 = array("none" => gettext("None"), "staticv6" => gettext("Static IPv6"), + @@ -1814,6 +1784,91 @@ $types6 = array("none" => gettext("None"), "staticv6" => gettext("Static IPv6"), + + + + + + + + + + + + + + + + + +
+
+
+
+
+ + +
+ + -- cgit v1.1