]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - html/cgi-bin/routing.cgi
BUG11466: fix routing.cgi the function call in routing.cgi was fixed to call the...
[ipfire-2.x.git] / html / cgi-bin / routing.cgi
index c460a74e7ca1ab56d4d2dd44f8ecc9d69f9df6c2..f2014e2e12f917ecc31c56c7490534a52a420874 100644 (file)
@@ -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;
        }