summaryrefslogtreecommitdiffstats
path: root/usr/local/www/interfaces.php
diff options
context:
space:
mode:
authorSimon Cornelius P. Umacob <simoncpu@gmail.com>2009-01-20 15:52:39 +0800
committerSimon Cornelius P. Umacob <simoncpu@gmail.com>2009-01-20 15:52:39 +0800
commitf193cf92b2c925a2f3f71a713d766efd1e4d81e0 (patch)
treec02f02076434ddf76d0892a06a66ad0969cbe70e /usr/local/www/interfaces.php
parent1f9f2a95b7b42cf33e730535092e56e214fdb848 (diff)
downloadpfsense-f193cf92b2c925a2f3f71a713d766efd1e4d81e0.zip
pfsense-f193cf92b2c925a2f3f71a713d766efd1e4d81e0.tar.gz
Merge IPv6 changes
Diffstat (limited to 'usr/local/www/interfaces.php')
-rwxr-xr-xusr/local/www/interfaces.php146
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">
OpenPOWER on IntegriCloud