X-Git-Url: http://git.ipfire.org/?p=ipfire-2.x.git;a=blobdiff_plain;f=html%2Fcgi-bin%2Frouting.cgi;h=f2014e2e12f917ecc31c56c7490534a52a420874;hp=c460a74e7ca1ab56d4d2dd44f8ecc9d69f9df6c2;hb=51141b150d5fd2a51ae75f32fe23ce2eb79558e6;hpb=5ffd14f1407ca9be93a2edd65d7151567927fbb4 diff --git a/html/cgi-bin/routing.cgi b/html/cgi-bin/routing.cgi index c460a74e7c..f2014e2e12 100644 --- a/html/cgi-bin/routing.cgi +++ b/html/cgi-bin/routing.cgi @@ -118,12 +118,15 @@ if ($settings{'ACTION'} eq $Lang::tr{'toggle enable disable'}) { } if ($settings{'ACTION'} eq $Lang::tr{'add'}) { - # Convert subnet masks to CIDR notation. - $settings{'IP'} = &General::iporsubtocidr($settings{'IP'}); - -# Validate inputs - if (( !&General::validip($settings{'IP'})) and ( !&General::validipandmask($settings{'IP'}))){ - $errormessage = $Lang::tr{'invalid ip'}." / ".$Lang::tr{'invalid netmask'}; + # Validate inputs + if (!&General::validipandmask($settings{'IP'})){ + $errormessage = $Lang::tr{'invalid ip'}." / ".$Lang::tr{'invalid netmask'}; + }else{ + #set networkip if not already correctly defined + my($ip,$cidr) = split(/\//,$settings{'IP'}); + $cidr = &General::iporsubtocidr($cidr); + my $netip=&General::getnetworkip($ip,$cidr); + $settings{'IP'} = "$netip/$cidr"; } if ($settings{'IP'} =~ /^0\.0\.0\.0/){ @@ -146,12 +149,12 @@ if ($settings{'ACTION'} eq $Lang::tr{'add'}) { $temp[2] ='' unless defined $temp[2]; # not always populated $temp[3] ='' unless defined $temp[2]; # not always populated #Same ip already used? - if($temp[1] eq $settings{'IP'}){ + if($temp[1] eq $settings{'IP'} && $settings{'KEY1'} eq ''){ $errormessage = $Lang::tr{'ccd err irouteexist'}; last; } #Is the network part of an internal network? - $errormessage .= &General::check_net_internal($settings{'IP'}); + $errormessage .= &General::check_net_internal_exact($settings{'IP'}); last; }