[zeromq-dev] IPv6 support?

dhruva dhruva at ymail.com
Tue Jul 28 13:34:15 CEST 2009


Hello,
 I wrote the following script (regexp) to match standard compliant IP addresses (IPv4/IPv6). Might come handy. We had a requirement to get parse the URI and hence the following examples. I am following up with my employer so that I can start getting involved more actively.

#!/usr/bin/env perl
# Some valid address formats
my @addrs = ();
push (@addrs,'http://some.thing.host.com:80/some/path?q=hello');
push (@addrs,'http://3m.some.thing.host.com:80/some/path?q=hello');
push (@addrs,'http://22.11.11.23/some/path/hello?q=hello');
push (@addrs,'http://[22:11:11:23:80/some/path/how?q=hello');
push (@addrs,'http://[22:11:11:23]:80/some/path/are?q=hello');
push (@addrs,'http://[22::11:11:23]/some/path?q=hello?tag=how');


for $a (@addrs) {
  if ($a =~ m/([a-zA-Z]+)(\:\/\/)(((\[)([a-zA-Z0-9\-\:]+)(\]))|(([a-zA-Z0-9\-\.]+)))(\:[0-9]+)?(\/)?(([a-zA-Z0-9%]+\/?)+)?(.+)/) {
    print "Matching: $a\n";
    print "\ttransport: $1\n";
    print "\taddress: $3\n";
    if ($10) {
      print "\tport: $10\n";
    }
    if ($12) {
      print "\tpath: $12\n";
    }
    if ($14) {
      print "\tquery: $14\n";
    }
  } else {
    print "Could not match: $a\n";
  }
}

-dhruva



----- Original Message ----
> From: Martin Sustrik <sustrik at fastmq.com>
> To: dhruva <dhruva at ymail.com>
> Cc: ZeroMQ <zeromq-dev at lists.zeromq.org>
> Sent: Tuesday, 28 July, 2009 4:23:30 PM
> Subject: Re: [zeromq-dev] IPv6 support?
> 
> Hi Dhruva,
> 
> >  Does 0MQ support IPv6? If not, could someone let me know areas that need IPv6 
> support. As part of my
> > day job I have worked on successfully converting a large code base to support 
> IPv6, I can help.
> 
> I would say you should give it a try. That way we'll find out what the actual 
> problems are and gradually move to solve them.
> 
> Parsing IPv6 network addresses would be a good point to start IMO (see ip.cpp). 
> The problem is that colons in IPv6 address would collide with colon used as a 
> port separator.
> 
> Here's what wikipedia says about the topic:
> 
> Since an IPv6 address contains colon (":") characters, network administrators 
> must take care to avoid conflicts with other syntactic meanings of the colon in 
> network resource labels. In IPv4 the colon is used to separate an IP address 
> from a transport protocol port number. This usage has been extended to IPv6, 
> however, when a port is specified in an address string, the proper IPv6 address 
> must be enclosed in square brackets ("[", "]"). This convention is used in other 
> more complex identifiers.
> 
> Example: In a URL the IPv6 address is enclosed in brackets, e.g., 
> http://[2001:0db8:85a3:08d3:1319:8a2e:0370:7348]/.
> 
> If the URL also contains a port number the notation is:
> 
> https://[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]:443/
> 
> This is not only useful but mandated when using the short form:
> 
> https://[2001:db8::1428:57ab]:443/
> 
> Additional information can be found in "RFC 2732 - Format for Literal IPv6 
> Addresses in URL's" and "RFC 3986 - Uniform Resource Identifier (URI): Generic 
> Syntax."
> 
> Thoughts?
> Martin



      Looking for local information? Find it on Yahoo! Local http://in.local.yahoo.com/



More information about the zeromq-dev mailing list