Skip to content

Commit

Permalink
Fix IPv6 Prefix ID default value
Browse files Browse the repository at this point in the history
. Always initialize it to 0 when it's undefined
. Remove unecessary initializations and checks
. Bump config version to 9.5
. Write an upgrade config function to initialize old configs properly
  • Loading branch information
rbgarga committed May 6, 2013
1 parent 9459730 commit 02203e6
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 35 deletions.
2 changes: 1 addition & 1 deletion conf.default/config.xml
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!-- pfSense default system configuration -->
<pfsense>
<version>9.4</version>
<version>9.5</version>
<lastchange></lastchange>
<theme>pfsense_ng</theme>
<sysctl>
Expand Down
2 changes: 1 addition & 1 deletion etc/inc/globals.inc
Expand Up @@ -71,7 +71,7 @@ $g = array(
"disablecrashreporter" => false,
"crashreporterurl" => "http://crashreporter.pfsense.org/crash_reporter.php",
"debug" => false,
"latest_config" => "9.4",
"latest_config" => "9.5",
"nopkg_platforms" => array("cdrom"),
"minimum_ram_warning" => "101",
"minimum_ram_warning_text" => "128 MB",
Expand Down
9 changes: 0 additions & 9 deletions etc/inc/interfaces.inc
Expand Up @@ -3141,9 +3141,6 @@ function interface_track6_6rd_configure($interface = "lan", $lancfg) {
if (empty($lancfg['track6-interface']))
return;

if (!is_numeric($lancfg['track6-prefix-id']))
$lancfg['track6-prefix-id'] = 0;

$wancfg = $config['interfaces'][$lancfg['track6-interface']];
if (empty($wancfg)) {
log_error("Interface {$interface} tracking non-existant interface {$lancfg['track6-interface']}");
Expand Down Expand Up @@ -3211,9 +3208,6 @@ function interface_track6_6to4_configure($interface = "lan", $lancfg) {
return;
}

if (!is_numeric($lancfg['track6-prefix-id']))
$lancfg['track6-prefix-id'] = 0;

$ip4address = get_interface_ip($lancfg['track6-interface']);
if (!is_ipaddrv4($ip4address) || is_private_ip($ip4address)) {
log_error("The interface IPv4 '{$ip4address}' address on interface '{$lancfg['track6-interface']}' is not public, not configuring 6RD tunnel");
Expand Down Expand Up @@ -3265,9 +3259,6 @@ function interface_track6_dhcp6_configure($interface = "lan", $lancfg) {
if (empty($lancfg['track6-interface']))
return;

if (!is_numeric($lancfg['track6-prefix-id']))
$lancfg['track6-prefix-id'] = 0;

$wancfg = $config['interfaces'][$lancfg['track6-interface']];
if (empty($wancfg)) {
log_error("Interface {$interface} tracking non-existant interface {$lancfg['track6-interface']}");
Expand Down
12 changes: 12 additions & 0 deletions etc/inc/upgrade_config.inc
Expand Up @@ -3074,4 +3074,16 @@ function upgrade_093_to_094() {
}
}

function upgrade_094_to_095() {
global $config;

if (!isset($config['interfaces']) || !is_array($config['interfaces']))
return;

foreach ($config['interfaces'] as $iface => $cfg)
if (isset($cfg['ipaddrv6']) && ($cfg['ipaddrv6'] == "track6"))
if (!isset($cfg['track6-prefix-id']) || ($cfg['track6-prefix-id'] == ""))
$config['interfaces'][$iface]['track6-prefix-id'] = 0;
}

?>
41 changes: 17 additions & 24 deletions usr/local/www/interfaces.php
Expand Up @@ -225,12 +225,11 @@ function remove_bad_chars($string) {
case "track6":
$pconfig['type6'] = "track6";
$pconfig['track6-interface'] = $wancfg['track6-interface'];
$pconfig['track6-prefix-id'] = $wancfg['track6-prefix-id'];
if ($wancfg['track6-prefix-id'] == "" || $wancfg['track6-prefix-id'] == "none") {
$pconfig['track6-prefix-id--hex'] = "";
} else {
$pconfig['track6-prefix-id--hex'] = sprintf("%x", $wancfg['track6-prefix-id']);
}
if ($wancfg['track6-prefix-id'] == "")
$pconfig['track6-prefix-id'] = 0;
else
$pconfig['track6-prefix-id'] = $wancfg['track6-prefix-id'];
$pconfig['track6-prefix-id--hex'] = sprintf("%x", $pconfig['track6-prefix-id']);
break;
case "6rd":
$pconfig['prefix-6rd'] = $wancfg['prefix-6rd'];
Expand Down Expand Up @@ -402,13 +401,10 @@ interface_sync_wireless_clones($wancfg, false);

unset($input_errors);
$pconfig = $_POST;
if ($pconfig['track6-prefix-id--hex'] === "") {
$pconfig['track6-prefix-id'] = "none";
} else if (is_numeric("0x" . $_POST['track6-prefix-id--hex'])) {
if (is_numeric("0x" . $_POST['track6-prefix-id--hex']))
$pconfig['track6-prefix-id'] = intval($_POST['track6-prefix-id--hex'], 16);
} else {
$pconfig['track6-prefix-id'] = "none";
}
else
$pconfig['track6-prefix-id'] = 0;
conf_mount_rw();

/* filter out spaces from descriptions */
Expand Down Expand Up @@ -900,13 +896,12 @@ interface_sync_wireless_clones($wancfg, false);
case "track6":
$wancfg['ipaddrv6'] = "track6";
$wancfg['track6-interface'] = $_POST['track6-interface'];
if ($_POST['track6-prefix-id--hex'] === "") {
$wancfg['track6-prefix-id'] = "none";
} else if (is_numeric("0x" . $_POST['track6-prefix-id--hex'])) {
if ($_POST['track6-prefix-id--hex'] === "")
$wancfg['track6-prefix-id'] = 0;
else if (is_numeric("0x" . $_POST['track6-prefix-id--hex']))
$wancfg['track6-prefix-id'] = intval($_POST['track6-prefix-id--hex'], 16);
} else {
$wancfg['track6-prefix-id'] = "none";
}
else
$wancfg['track6-prefix-id'] = 0;
break;
case "none":
break;
Expand Down Expand Up @@ -1894,17 +1889,15 @@ function prefill_provider() {
<td width="22%" valign="top" class="vncell"><?=gettext("IPv6 Prefix ID"); ?></td>
<td width="78%" class="vtable">
<?php
if ($pconfig['track6-prefix-id'] == "none" || $pconfig['track6-prefix-id'] == "") {
$track6_prefix_id_hex = "";
} else {
$track6_prefix_id_hex = sprintf("%x", $pconfig['track6-prefix-id']);
}
if ($pconfig['track6-prefix-id'] == "")
$pconfig['track6-prefix-id'] = 0;
$track6_prefix_id_hex = sprintf("%x", $pconfig['track6-prefix-id']);
?>
<input name="track6-prefix-id--hex" type="text" class="formfld unknown" id="track6-prefix-id--hex" size="8" value="<?= $track6_prefix_id_hex ?>" />
<br />
<?= gettext("The value in this field is the (Delegated) IPv6 prefix id. This determines the configurable network ID based on the dynamic IPv6 connection"); ?>
<br />
<?= sprintf(gettext("Enter a <b>hexadecimal</b> value between %x and %x here, or leave blank."), 0, $ipv6_num_prefix_ids - 1); ?>
<?= sprintf(gettext("Enter a <b>hexadecimal</b> value between %x and %x here, default value is 0."), 0, $ipv6_num_prefix_ids - 1); ?>
</td>
</tr>
<tr>
Expand Down

0 comments on commit 02203e6

Please sign in to comment.