diff options
author | Simon Cornelius P. Umacob <simoncpu@gmail.com> | 2009-01-20 15:52:39 +0800 |
---|---|---|
committer | Simon Cornelius P. Umacob <simoncpu@gmail.com> | 2009-01-20 15:52:39 +0800 |
commit | f193cf92b2c925a2f3f71a713d766efd1e4d81e0 (patch) | |
tree | c02f02076434ddf76d0892a06a66ad0969cbe70e /usr/local/www/interfaces.php | |
parent | 1f9f2a95b7b42cf33e730535092e56e214fdb848 (diff) | |
download | pfsense-f193cf92b2c925a2f3f71a713d766efd1e4d81e0.zip pfsense-f193cf92b2c925a2f3f71a713d766efd1e4d81e0.tar.gz |
Merge IPv6 changes
Diffstat (limited to 'usr/local/www/interfaces.php')
-rwxr-xr-x | usr/local/www/interfaces.php | 146 |
1 files changed, 120 insertions, 26 deletions
diff --git a/usr/local/www/interfaces.php b/usr/local/www/interfaces.php index 498aa0f..2916857 100755 --- a/usr/local/www/interfaces.php +++ b/usr/local/www/interfaces.php @@ -40,7 +40,8 @@ ##|*MATCH=interfaces.php* ##|-PRIV -require("guiconfig.inc"); +require_once("guiconfig.inc"); +require_once("IPv6.inc"); if ($_REQUEST['if']) $if = $_REQUEST['if']; @@ -154,10 +155,14 @@ if ($if == "wan" || $if == "lan") else $pconfig['enable'] = isset($wancfg['enable']); -if (is_array($config['aliases']['alias'])) -foreach($config['aliases']['alias'] as $alias) - if($alias['name'] == $wancfg['descr']) - $input_errors[] = gettext("Sorry, an alias with the name {$wancfg['descr']} already exists."); +if (is_array($config['aliases']['alias'])) { + foreach($config['aliases']['alias'] as $alias) { + if($alias['name'] == $wancfg['descr']) { + $input_errors[] = gettext("Sorry, an alias with the name {$wancfg['descr']} already exists."); + } + } +} + if ($wancfg['ipaddr'] == "dhcp") { $pconfig['type'] = "dhcp"; } else if ($wancfg['ipaddr'] == "carpdev-dhcp") { @@ -167,14 +172,25 @@ if ($wancfg['ipaddr'] == "dhcp") { $pconfig['type'] = "pppoe"; } else if ($wancfg['ipaddr'] == "pptp") { $pconfig['type'] = "pptp"; -} else if ($wancfg['ipaddr'] != "") { - $pconfig['type'] = "static"; - $pconfig['ipaddr'] = $wancfg['ipaddr']; - $pconfig['subnet'] = $wancfg['subnet']; - $pconfig['gateway'] = $wancfg['gateway']; - $pconfig['pointtopoint'] = $wancfg['pointtopoint']; -} else +} else if ($wancfg['ipaddr'] == "" && $wancfg['ipaddr_ipv6'] == "") { $pconfig['type'] = "none"; +} else { + if ($wancfg['ipaddr'] != "") { + $pconfig['type'] = "static"; + $pconfig['ipaddr'] = $wancfg['ipaddr']; + $pconfig['subnet'] = $wancfg['subnet']; + $pconfig['gateway'] = $wancfg['gateway']; + $pconfig['pointtopoint'] = $wancfg['pointtopoint']; + } + + if ($wancfg['ipaddr_ipv6'] != "") { + $pconfig['type'] = "static"; + $pconfig['ipaddr_ipv6'] = $wancfg['ipaddr_ipv6']; + $pconfig['subnet_ipv6'] = $wancfg['subnet_ipv6']; + $pconfig['gateway_ipv6'] = $wancfg['gateway_ipv6']; + $pconfig['pointtopoint_ipv6'] = $wancfg['pointtopoint_ipv6']; + } +} $pconfig['blockpriv'] = isset($wancfg['blockpriv']); $pconfig['blockbogons'] = isset($wancfg['blockbogons']); @@ -296,8 +312,16 @@ if ($_POST) { } /* input validation */ if ($_POST['type'] == "static") { - $reqdfields = explode(" ", "ipaddr subnet gateway"); - $reqdfieldsn = explode(",", "IP address,Subnet bit count,Gateway"); + if ($_POST['ipaddr'] != "") { + $reqdfields = explode(" ", "ipaddr subnet gateway"); + $reqdfieldsn = explode(",", "IPv4 Address,IPv4 Subnet Bit Count,IPv4 Gateway"); + } else if ($_POST['ipaddr_ipv6'] != "") { + $reqdfields = explode(" ", "ipaddr_ipv6 subnet_ipv6 gateway_ipv6"); + $reqdfieldsn = explode(",", "IPv6 Address,IPv6 Subnet Bit Count,IPv6 Gateway"); + } else { + $input_errors[] = "An IPv4 or IPv6 Address is required."; + } + do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); } else if ($_POST['type'] == "PPPoE") { if ($_POST['pppoe_dialondemand']) { @@ -321,9 +345,13 @@ if ($_POST) { /* normalize MAC addresses - lowercase and convert Windows-ized hyphenated MACs to colon delimited */ $_POST['spoofmac'] = strtolower(str_replace("-", ":", $_POST['spoofmac'])); if (($_POST['ipaddr'] && !is_ipaddr($_POST['ipaddr']))) - $input_errors[] = "A valid IP address must be specified."; + $input_errors[] = "A valid IPv4 address must be specified."; if (($_POST['subnet'] && !is_numeric($_POST['subnet']))) - $input_errors[] = "A valid subnet bit count must be specified."; + $input_errors[] = "A valid IPv4 subnet bit count must be specified."; + if ($_POST['ipaddr_ipv6'] && !Net_IPv6::checkIPv6($_POST['ipaddr_ipv6'])) + $input_errors[] = "A valid IPv6 address must be specified."; + if ($_POST['subnet_ipv6'] && !is_numeric($_POST['subnet_ipv6'])) + $input_errors[] = "A valid IPv6 prefix length must be specified."; if (($_POST['alias-address'] && !is_ipaddr($_POST['alias-address']))) $input_errors[] = "A valid alias IP address must be specified."; if (($_POST['alias-subnet'] && !is_numeric($_POST['alias-subnet']))) @@ -337,7 +365,9 @@ if ($_POST) { $input_errors[] = "A valid gateway must be specified."; } if (($_POST['pointtopoint'] && !is_ipaddr($_POST['pointtopoint']))) - $input_errors[] = "A valid point-to-point IP address must be specified."; + $input_errors[] = "A valid IPv4 point-to-point address must be specified."; + if (($_POST['pointtopoint_ipv6'] && !is_ipaddr($_POST['pointtopoint_ipv6']))) + $input_errors[] = "A valid IPv6 point-to-point address must be specified."; if (($_POST['provider'] && !is_domain($_POST['provider']))) $input_errors[] = "The service name contains invalid characters."; if (($_POST['pppoe_idletimeout'] != "") && !is_numericint($_POST['pppoe_idletimeout'])) @@ -408,6 +438,10 @@ if ($_POST) { unset($wancfg['subnet']); unset($wancfg['gateway']); unset($wancfg['pointtopoint']); + unset($wancfg['ipaddr_ipv6']); + unset($wancfg['subnet_ipv6']); + unset($wancfg['gateway_ipv6']); + unset($wancfg['pointtopoint_ipv6']); unset($wancfg['dhcphostname']); unset($wancfg['pppoe_username']); unset($wancfg['pppoe_password']); @@ -433,10 +467,17 @@ if ($_POST) { if ($_POST['type'] == "static") { $wancfg['ipaddr'] = $_POST['ipaddr']; $wancfg['subnet'] = $_POST['subnet']; - if ($_POST['gateway'] != "none") + $wancfg['ipaddr_ipv6'] = $_POST['ipaddr_ipv6']; + $wancfg['subnet_ipv6'] = $_POST['subnet_ipv6']; + + if ($_POST['gateway'] != "none") { $wancfg['gateway'] = $_POST['gateway']; - if (isset($wancfg['ispointtopoint'])) + $wancfg['gateway_ipv6'] = $_POST['gateway_ipv6']; + } + if (isset($wancfg['ispointtopoint'])) { $wancfg['pointtopoint'] = $_POST['pointtopoint']; + $wancfg['pointtopoint_ipv6'] = $_POST['pointtopoint_ipv6']; + } } else if ($_POST['type'] == "dhcp") { $wancfg['ipaddr'] = "dhcp"; $wancfg['dhcphostname'] = $_POST['dhcphostname']; @@ -712,7 +753,7 @@ $types = array("none" => "None", "static" => "Static", "dhcp" => "DHCP", "pppoe" else $('allcfg').hide(); } - + function show_periodic_reset(obj) { if (obj.checked) $('presetwrap').show(); @@ -822,7 +863,7 @@ $types = array("none" => "None", "static" => "Static", "dhcp" => "DHCP", "pppoe" <td colspan="2" style="padding:0px;"> <table width="100%" border="0" cellpadding="6" cellspacing="0"> <tr> - <td colspan="2" valign="top" class="listtopic">Static IP configuration</td> + <td colspan="2" valign="top" class="listtopic">Static IPv4 configuration</td> </tr> <tr> <td width="22%" valign="top" class="vncellreq">IP address</td> @@ -844,7 +885,7 @@ $types = array("none" => "None", "static" => "Static", "dhcp" => "DHCP", "pppoe" </tr> <?php if (isset($wancfg['ispointtopoint'])): ?> <tr> - <td width="22%" valign="top" class="vncellreq">Point-to-point IP address </td> + <td width="22%" valign="top" class="vncellreq">Point-to-point IPv4 address </td> <td width"78%" class="vtable"> <input name="pointtopoint" type="text" class="formfld unknown" id="pointtopoint" size="20" value="<?=htmlspecialchars($pconfig['pointtopoint']);?>"> </td> @@ -858,10 +899,10 @@ $types = array("none" => "None", "static" => "Static", "dhcp" => "DHCP", "pppoe" <?php if(count($a_gateways) > 0) { foreach ($a_gateways as $gateway) { - if($gateway['interface'] == $if) { + if($gateway['interface'] == $if && $gateway['type'] == 'IPv4') { ?> <option value="<?=$gateway['name'];?>" <?php if ($gateway['name'] == $pconfig['gateway']) echo "selected"; ?>> - <?=htmlspecialchars($gateway['name']);?> + <?=htmlspecialchars($gateway['name']);?> </option> <?php } @@ -917,10 +958,63 @@ $types = array("none" => "None", "static" => "Static", "dhcp" => "DHCP", "pppoe" </table> </td></tr></table> <p/> - </div> - </td> + </div> </td> </tr> </table> + + <!-- IPv6 begin --> + <tr> + <td colspan="2" valign="top" class="listtopic">Static IPv6 configuration</td> + </tr> + <tr> + <td width="22%" valign="top" class="vncellreq">IP address</td> + <td width="78%" class="vtable"> <input name="ipaddr_ipv6" type="text" class="formfld unknown" id="ipaddr_ipv6" size="20" value="<?=htmlspecialchars($pconfig['ipaddr_ipv6']);?>"> + / + <select name="subnet_ipv6" class="formselect" id="subnet_ipv6"> + <?php + for ($i = 64; $i > 0; $i -= 4) { + if ($i == $pconfig['subnet_ipv6']) { + echo "<option value=\"$i\" selected=\"selected\">$i</option>"; + } else { + echo "<option value=\"$i\">$i</option>"; + } + } + ?> + </select> + </td> + </tr> + <?php if (isset($wancfg['ispointtopoint'])): ?> + <tr> + <td width="22%" valign="top" class="vncellreq">Point-to-point IPv6 address </td> + <td width"78%" class="vtable"> + <input name="pointtopoint_ipv6" type="text" class="formfld unknown" id="pointtopoint_ipv6" size="20" value="<?=htmlspecialchars($pconfig['pointtopoint_ipv6']);?>"> + </td> + </tr><?php endif; ?> + <tr> + <td width="22%" valign="top" class="vncellreq">Gateway</td> + <td width="78%" class="vtable"><select name="gateway_ipv6" class="formselect" id="gateway_ipv6"> + <option value="none" selected>None</option> + <?php + if(count($a_gateways) > 0) { + foreach ($a_gateways as $gateway) { + if($gateway['interface'] == $if && $gateway['type'] == 'IPv6') { + ?> + <option value="<?=$gateway['name'];?>" <?php if ($gateway['name'] == $pconfig['gateway_ipv6']) echo "selected"; ?>> + <?=htmlspecialchars($gateway['name']);?> + </option> + <?php + } + } + } + ?> + </select> + <br /> + Select a existing Gateway from the list or add one on the <a href="/system_gateways.php">Gateways</a> page<br /> + TODO: use Ajax, similar to IPv4 + </td> + </tr> + <!-- IPv6 end --> + </td> </tr> <tr style="display:none;" name="dhcp" id="dhcp"> |