[ipv6] Clean up inet6_ntoa
authorMatthew Iselin <matthew@theiselins.net>
Mon, 27 Jun 2011 09:02:27 +0000 (19:02 +1000)
committerMarty Connor <mdc@etherboot.org>
Thu, 21 Jul 2011 02:21:00 +0000 (22:21 -0400)
Signed-off-by: Matthew Iselin <matthew@theiselins.net>
Signed-off-by: Marty Connor <mdc@etherboot.org>
src/net/ipv6.c

index fe8c7af..bfd78ca 100644 (file)
@@ -542,18 +542,12 @@ char * inet6_ntoa ( struct in6_addr in6 ) {
 int inet6_aton ( const char *cp, struct in6_addr *inp ) {
        char convbuf[40];
        char *tmp = convbuf, *next = convbuf;
-       size_t i = 0, len = strlen ( cp );
+       size_t i = 0;
        int ok;
        char c;
        
        /* Verify a valid address. */
-       if ( ! len ) {
-               return 0;
-       }
-       
-       for ( ; i < len; i++ ) {
-               c = cp[i];
-               
+       while ( ( c = cp[i++] ) ) {
                ok = c == ':';
                ok = ok || ( ( c >= '0' ) && ( c <= '9' ) );
                ok = ok || ( ( c >= 'a' ) && ( c <= 'f' ) );
@@ -563,6 +557,9 @@ int inet6_aton ( const char *cp, struct in6_addr *inp ) {
                        return 0;
                }
        }
+       if ( ! i ) {
+               return 0;
+       }
        
        strcpy ( convbuf, cp );