nanog mailing list archives

Re: IPv6 Netowrk Device Numbering BP


From: Karl Auer <kauer () biplane com au>
Date: Fri, 02 Nov 2012 10:52:10 +1100

On Thu, 2012-11-01 at 07:07 -0700, Owen DeLong wrote:
I agree with you that we shouldn't introduce partially decimal format,
but I
don't see why you say IPv6 addresses are difficult to parse.

They are not simple to parse, but not particularly difficult either.

1.    Tokenize (on : boundaries).
2.    If n(tokens) < 8, expand null token to 9-n tokens.

It's a bit harder than that. You need to deal with the positioning of
the "::", which may be at the beginning or end. Scope identifiers need
to be handled. On output, you need to handle the requirements of RFC
5952.

You really shouldn't need to parse [mapped addresses] and it's
perfectly valid
to reject them as invalid input.

No, it's not OK to reject them. You can't just say they are invalid,
they are not.

Finally, at this point, if you're feeling like you have to write your
own IP address parser,
you're probably doing something wrong. PLEASE PLEASE PLEASE use the
standard
libraries whenever possible.

Definitely oh very yes! That said, I have had to write my own three
times now, because of errors or inadequacies in the existing parsers,
and I can confidently say it is slightly tricky, but not hard. The key,
the essential and vital thing, is to unit test that sucker until it is
gasping and limp.

There are similar library functions for virtually every other language
at this point as well.

Java's is broken, for a start. I have had to replace it for literals,
because it doesn't compress for output, and because it treats a mapped
IPv4 address as an IPv4 address! It's also hard to do some operations on
InetAddress objects. I still use InetAddress where actual names are
concerned, so as not to duplicate the Java DNS functionality.
Unfortunately Java appears to not properly prefer IPv6 addresses. There
is allegedly a system property to control that, but it is either
documented incorrectly or just doesn't work.

Regards, K.


-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Karl Auer (kauer () biplane com au)
http://www.biplane.com.au/kauer
http://www.biplane.com.au/blog

GPG fingerprint: AE1D 4868 6420 AD9A A698 5251 1699 7B78 4EEE 6017
Old fingerprint: DA41 51B1 1481 16E1 F7E2 B2E9 3007 14ED 5736 F687

Attachment: signature.asc
Description: This is a digitally signed message part


Current thread: