Changeset 2a6ca4f for util.c


Ignore:
Timestamp:
2006-01-04T11:16:58Z (18 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
0196c47
Parents:
13c4cd3
Message:

Better handling of IPv4 connections in IPv6 mode. (Wrapping/Unwrapping of ::ffff:style addresses.)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • util.c

    r13c4cd3 r2a6ca4f  
    403403        return source;
    404404}
     405
     406#ifdef IPV6
     407/* Wrap an IPv4 address into IPv6 space. Not thread-safe... */
     408char *ipv6_wrap( char *src )
     409{
     410        static char dst[64];
     411        int i;
     412       
     413        for( i = 0; src[i]; i ++ )
     414                if( ( src[i] < '0' || src[i] > '9' ) && src[i] != '.' )
     415                        break;
     416       
     417        /* Hmm, it's not even an IP... */
     418        if( src[i] )
     419                return src;
     420       
     421        g_snprintf( dst, sizeof( dst ), "::ffff:%s", src );
     422       
     423        return dst;
     424}
     425
     426/* Unwrap an IPv4 address into IPv6 space. Thread-safe, because it's very simple. :-) */
     427char *ipv6_unwrap( char *src )
     428{
     429        int i;
     430       
     431        if( g_strncasecmp( src, "::ffff:", 7 ) != 0 )
     432                return src;
     433       
     434        for( i = 7; src[i]; i ++ )
     435                if( ( src[i] < '0' || src[i] > '9' ) && src[i] != '.' )
     436                        break;
     437       
     438        /* Hmm, it's not even an IP... */
     439        if( src[i] )
     440                return src;
     441       
     442        return ( src + 7 );
     443}
     444#endif
Note: See TracChangeset for help on using the changeset viewer.