def inet_aton(text):
    """Convert a text format IPv6 address into network format.

    @param text: the textual address
    @type text: string
    @rtype: string
    @raises dns.exception.SyntaxError: the text was not properly formatted
    """

    #
    # Our aim here is not something fast; we just want something that works.
    #

    if text == '::':
        text = '0::'
    #
    # Get rid of the icky dot-quad syntax if we have it.
    #
    m = _v4_ending.match(text)
    if not m is None:
        text = "%s:%04x:%04x" % (m.group(1),
                                 int(m.group(2)) * 256 + int(m.group(3)),
                                 int(m.group(4)) * 256 + int(m.group(5)))
    #
    # Try to turn '::<whatever>' into ':<whatever>'; if no match try to
    # turn '<whatever>::' into '<whatever>:'
    #
    m = _colon_colon_start.match(text)
    if not m is None:
        text = text[1:]
    else:
        m = _colon_colon_end.match(text)
        if not m is None:
            text = text[:-1]
    #
    # Now canonicalize into 8 chunks of 4 hex digits each
    #
    chunks = text.split(':')
    l = len(chunks)
    if l > 8:
        raise dns.exception.SyntaxError
    seen_empty = False
    canonical = []
    for c in chunks:
        if c == '':
            if seen_empty:
                raise dns.exception.SyntaxError
            seen_empty = True
            for i in xrange(0, 8 - l + 1):
                canonical.append('0000')
        else:
            lc = len(c)
            if lc > 4:
                raise dns.exception.SyntaxError
            if lc != 4:
                c = ('0' * (4 - lc)) + c
            canonical.append(c)
    if l < 8 and not seen_empty:
        raise dns.exception.SyntaxError
    text = ''.join(canonical)

    #
    # Finally we can go to binary.
    #
    try:
        return text.decode('hex_codec')
    except TypeError:
        raise dns.exception.SyntaxError
def inet_aton ( text ) : if text == '::' : text = '0::' m = _v4_ending . match ( text ) if not m is None : text = "%s:%04x:%04x" % ( m . group ( 1 ) , int ( m . group ( 2 ) ) * 256 + int ( m . group ( 3 ) ) , int ( m . group ( 4 ) ) * 256 + int ( m . group ( 5 ) ) ) m = _colon_colon_start . match ( text ) if not m is None : text = text [ 1 : ] else : m = _colon_colon_end . match ( text ) if not m is None : text = text [ : - 1 ] chunks = text . split ( ':' ) l = len ( chunks ) if l > 8 : raise dns . exception . SyntaxError seen_empty = False canonical = [ ] for c in chunks : if c == '' : if seen_empty : raise dns . exception . SyntaxError seen_empty = True for i in xrange ( 0 , 8 - l + 1 ) : canonical . append ( '0000' ) else : lc = len ( c ) if lc > 4 : raise dns . exception . SyntaxError if lc != 4 : c = ( '0' * ( 4 - lc ) ) + c canonical . append ( c ) if l < 8 and not seen_empty : raise dns . exception . SyntaxError text = '' . join ( canonical ) try : return text . decode ( 'hex_codec' ) except TypeError : raise dns . exception . SyntaxError
Convert a text format IPv6 address into network format.

    @param text: the textual address
    @type text: string
    @rtype: string
    @raises dns.exception.SyntaxError: the text was not properly formatted