[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

"Programmers can't get IPv6 thus that is why they do not have IPv6 in their applications"....



Hadn't thought about it that way before. This was a useful bit of info,
thanks.

-Blake


On Thu, Nov 29, 2012 at 8:55 AM, William Herrin <bill at herrin.us> wrote:

> On Thu, Nov 29, 2012 at 9:01 AM, Ray Soucy <rps at maine.edu> wrote:
> > You should store IPv6 as a pair of 64-bit integers.  While PHP lacks
> > the function set to do this on its own, it's not very difficult to do.
>
> Hi Ray,
>
> I have to disagree. In your SQL database you should store addresses as
> a fixed length character string containing a zero-padded hexadecimal
> representation of the IPv4 or IPv6 address with A through F forced to
> the consistent case of your choice. Expand :: and optionally strip the
> colons entirely. If you want to store a block of addresses, store it
> as two character strings: start and end of the range.
>
> Bytes are cheap and query simplicity is important. Multi-element
> indexes are messy and the code to manage an array of integers is
> messier than managing a character string in most programming
> languages. memcmp() that integer array for less or greater than? Not
> on a little endian machine!
>
>
> > Here are a set of functions I wrote a while back to do just that
> > (though I admit I should spend some time to try and make it more
> > elegant and I'm not sure it's completely up to date compared to my
> > local copy ... I would love some eyes on it to make some
> > improvements).
> >
> > http://soucy.org/project/inet6/
>
> If we're plugging our code, give my public domain libeasyv6 a try. It
> eases entry into dual stack programming for anyone used to doing
> gethostbyname followed by a blocking connect(). Just do a
> connectbyname() with the hostname or textual IP address, the port, a
> timeout and null options. The library takes care of finding a working
> IPv4 or IPv6 address for the host and connecting to it in a timely
> manner.
>
> http://bill.herrin.us/freebies/
>
> Currently Linux only but if you're willing to lose timeout control on
> the DNS lookup you can replace getaddrinfo_a() with standard
> getaddrinfo() and the code should run anywhere.
>
> Regards,
> Bill Herrin
>
>
> --
> William D. Herrin ................ herrin at dirtside.com  bill at herrin.us
> 3005 Crane Dr. ...................... Web: <http://bill.herrin.us/>
> Falls Church, VA 22042-3004
>
>