diff options
author | Renato Botelho <garga@FreeBSD.org> | 2013-12-04 18:20:58 -0200 |
---|---|---|
committer | Renato Botelho <garga@FreeBSD.org> | 2013-12-04 18:21:18 -0200 |
commit | 20dda766516f943339799abc31f7c3640fff3195 (patch) | |
tree | 865cc0b19432fed27b693d21cab1088c4500b2a6 /usr/local/www/interfaces.php | |
parent | f51fa0d411483ac3b645c1c4cd21d54256b20ad3 (diff) | |
download | pfsense-20dda766516f943339799abc31f7c3640fff3195.zip pfsense-20dda766516f943339799abc31f7c3640fff3195.tar.gz |
Prevent network or broadcast address to be set on interface (console, GUI and wizard). It should fix #3196
Diffstat (limited to 'usr/local/www/interfaces.php')
-rwxr-xr-x | usr/local/www/interfaces.php | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/usr/local/www/interfaces.php b/usr/local/www/interfaces.php index b8a3cf0..75fd460 100755 --- a/usr/local/www/interfaces.php +++ b/usr/local/www/interfaces.php @@ -611,6 +611,14 @@ if ($_POST['apply']) { if (is_ipaddr_configured($_POST['ipaddr'], $if, true)) $input_errors[] = gettext("This IPv4 address is being used by another interface or VIP."); + /* Do not accept network or broadcast address, except if subnet is 31 or 32 */ + if ($_POST['subnet'] < 31) { + if ($_POST['ipaddr'] == gen_subnet($_POST['ipaddr'], $_POST['subnet'])) + $input_errors[] = gettext("This IPv4 address is the network address and cannot be used"); + else if ($_POST['ipaddr'] == gen_subnet_max($_POST['ipaddr'], $_POST['subnet'])) + $input_errors[] = gettext("This IPv4 address is the broadcast address and cannot be used"); + } + foreach ($staticroutes as $route_subnet) { list($network, $subnet) = explode("/", $route_subnet); if ($_POST['subnet'] == $subnet && $network == gen_subnet($_POST['ipaddr'], $_POST['subnet'])) { |