Commit a067487f authored by juvancic's avatar juvancic
Browse files

added f_IPV4or6_String2Address for convert ip as string to structure

parent 42936551
Loading
Loading
Loading
Loading
+71 −2
Original line number Diff line number Diff line
@@ -598,13 +598,82 @@ group GlobalSteps {
                  
            } // end function f_Diameter_Set_Headers
            
            function f_IPAdresss (IPv4Addr p_ipv4,IPv6Addr p_ipv6)
            function f_IPAdress (IPv4Addr p_ipv4,IPv6Addr p_ipv6)
            	return template Address
        	{if (PX_IPv6)
        	    {return( {ipv6:= p_ipv6  }  ) }
        	    else {return( {ipv4:= p_ipv4 }   )}
        	}  
        	
            function f_IPV4or6_String2Address (charstring p_addr)
                return template Address
            {
               var integer addr_len:=0;
               var integer i;
               //var integer addr[8];
               var integer addr_i;
               var charstring num:="";
               var charstring current:="";
               var template Address v_ip;        
               addr_len:=lengthof(p_addr);
               addr_i:=0;
                        
               if (PX_IPv6){
                            
                   for(i:=0;i<addr_len;i:=i+1){
                       current:=substr(p_addr,i,1);
                       if(current==":"){
                           if ((lengthof(num) mod 2)==1){
                               num:="0"&num;
                           }
                           //addr[addr_i]:=oct2int(str2oct(num));
                           v_ip.ipv6[addr_i]:=oct2int(str2oct(num));
                           addr_i:=addr_i+1;
                           num:="";
                       }
                       else{
                           num:=num&current;
                       }
                   }
                            
                   if  (addr_i>7){
                       log("IPV6 parse ERROR");
                   }else{
                       if ((lengthof(num) mod 2)==1){
                           num:="0"&num;
                       }
                       //addr[addr_i]:=oct2int(str2oct(num));
                       v_ip.ipv6[addr_i]:=oct2int(str2oct(num));
                       num:="";
                   }
                           
                   return(v_ip) 
               }
               else{
                            
                   for(i:=0;i<addr_len;i:=i+1){
                       current:=substr(p_addr,i,1);
                       if(current=="."){
                           //addr[addr_i]:=str2int(num);
                           v_ip.ipv4[addr_i]:=str2int(num);
                           addr_i:=addr_i+1;
                           num:="";
                       }else{
                       num:=num&current;
                       }
                   }
                   if  (addr_i>3){
                       log("IPV4 parse ERROR");
                   }else{
                       //addr[addr_i]:=str2int(num);
                       v_ip.ipv4[addr_i]:=str2int(num);
                       num:="";
                   }
                            
                   return(v_ip)
               } 
            } 

}// end group GlobalSteps