Hi. Thank you for the patch. Ryu project adopts pep8/Google style as style/conding guide. Can you please try pep8 and refer to SubmittingPatches.rst.
On Fri, Apr 12, 2013 at 10:21:20AM +0800, Can Zhang wrote: > Signed-off-by: Can Zhang <[email protected]> > --- > ryu/lib/ip.py | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 57 insertions(+) > create mode 100644 ryu/lib/ip.py > > diff --git a/ryu/lib/ip.py b/ryu/lib/ip.py > new file mode 100644 > index 0000000..9077634 > --- /dev/null > +++ b/ryu/lib/ip.py > @@ -0,0 +1,57 @@ > +import struct > + > +def ipNum(w, x, y, z): Please use_under_score for method name instead of CamelCase. thanks, > + """Generate unsigned int from components of IP address > + returns: w << 24 | x << 16 | y << 8 | z""" > + return ( w << 24 ) | ( x << 16 ) | ( y << 8 ) | z > + > +# ip eg '192.168.1.1' > +def ipv4_to_bin(ip): > + "Parse an IP address and return an unsigned int." > + args = [ int( arg ) for arg in ip.split( '.' ) ] > + return ipNum( *args ) > + > +def ipv4_to_str(ip): > + """Generate IP address string from an unsigned int. > + ip: unsigned int of form w << 24 | x << 16 | y << 8 | z > + returns: ip address string w.x.y.z""" > + w = ( ip >> 24 ) & 0xff > + x = ( ip >> 16 ) & 0xff > + y = ( ip >> 8 ) & 0xff > + z = ip & 0xff > + return "%i.%i.%i.%i" % ( w, x, y, z ) > + > +IPV6_PACK_STR = '!8H' > + > +def ipv6_to_arg_list(ipv6): > + args = [] > + if '::' in ipv6: > + h, t = ipv6.split('::') > + h_list = [ int(x, 16) for x in h.split(':') ] > + t_list = [ int(x, 16) for x in t.split(':') ] > + args += h_list > + zero = [0] > + args += ( (8 - len(h_list) - len(t_list)) * zero ) > + args += t_list > + else: > + args = [ int(x, 16) for x in ipv6.split(':') ] > + > + return args > + > +def ipv6_to_bin(ipv6): > + ''' > + convert ipv6 string to bin > + ''' > + args = ipv6_to_arg_list(ipv6) > + return struct.pack(IPV6_PACK_STR, *args) > + > +def bin_to_ipv6(bin_addr): > + args = struct.unpack_from(IPV6_PACK_STR, bin_addr) > + return ':'.join( '%x' % x for x in args) > + > +if __name__ == '__main__': > + a = ipv4_to_bin('10.28.197.1') > + print ipv4_to_str(a) > + print bin_to_ipv6( ipv6_to_bin('10::1:2')) > + print bin_to_ipv6( ipv6_to_bin('2013:da8:215:8f2:aa20:66ff:fe4c:9c3c')) > + > -- > 1.7.11.1 > > > ------------------------------------------------------------------------------ > Precog is a next-generation analytics platform capable of advanced > analytics on semi-structured data. The platform includes APIs for building > apps and a phenomenal toolset for data science. Developers can use > our toolset for easy data analysis & visualization. Get a free account! > http://www2.precog.com/precogplatform/slashdotnewsletter > _______________________________________________ > Ryu-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/ryu-devel > -- yamahata ------------------------------------------------------------------------------ Precog is a next-generation analytics platform capable of advanced analytics on semi-structured data. The platform includes APIs for building apps and a phenomenal toolset for data science. Developers can use our toolset for easy data analysis & visualization. Get a free account! http://www2.precog.com/precogplatform/slashdotnewsletter _______________________________________________ Ryu-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ryu-devel
