Ñò î¡ßNc@srdZddklZlZddklZdZdZ d„Z d„Z d„Z d „Z d „Zd „Zd S( s=Fallback routines for Python's standard library socket moduleiÿÿÿÿ(tunpacktpack(t _bytes_joinii cCsdt|dƒp tdtt|ƒƒƒ‚nt|ƒdjotdƒ‚ndtd|ƒS(sR Convert an IP address from 32-bit packed binary format to string format. tsplitsstring type expected, not %sis*invalid length of packed IP address strings %d.%d.%d.%dt4B(thasattrt TypeErrortstrttypetlent ValueErrort_unpack(t packed_ip((s4/usr/lib/python2.6/site-packages/netaddr/fbsocket.pyt inet_ntoas  c CsÇt|dƒotd|ƒ}g}d}x¨|idƒD]—}|idƒo d}nB|idƒot|ƒdjo d }n|d joq<ny|it||ƒƒWq<tj o |‚q<Xq<Wt|ƒ}|d joMd gd |}|djo!|iƒ}|||g}q=||}nt|ƒd joSg}x?|D]7}|d ?d jo |‚n|itd |ƒƒq]Wt |ƒS|‚ntdt |ƒƒ‚dS(s‹ Convert an IP address in string format (123.45.67.89) to the 32-bit packed binary format used in low-level network functions. Rsillegal IP address string %ri t.t0xit0iitiitBs#argument should be a string, not %sN( RR Rt startswithR tappendtinttpopt_packRR( t ip_stringt invalid_addrttokenstbasettokent num_tokenst fill_tokenst end_tokentwords((s4/usr/lib/python2.6/site-packages/netaddr/fbsocket.pyt inet_atonsB #         c Cs£g}g}d}d}x‰t|ƒD]{\}}|djo%|djo |}n|d7}n1|djo|i||fƒnd}d}|i|ƒq%W|djo|i||fƒnt|ƒdjoÄ|idd„ƒ|d}x-|D]%}|d|djo |}qÿqÿW|\} } |d| !dg|| | }|ddjo|iddƒn|ddjo|idƒqŸn|S(NiRitkeycSs|dS(i((tx((s4/usr/lib/python2.6/site-packages/netaddr/fbsocket.pythsRiÿÿÿÿ(tNonet enumerateRR tsorttinsert( Rt new_tokenst positionst start_indexRtidxRt best_positiontpositiontlengtht start_idx((s4/usr/lib/python2.6/site-packages/netaddr/fbsocket.pyt_compact_ipv6_tokensLs@        c Cs•|tjo t|ƒS|tjo\t|ƒdjpt|dƒ otdƒ‚ng}td|ƒD]}|d|qm~}ttd|ƒƒ}d}x>tt |ƒƒD]*\}}|}|d|>}||B}qµWd|jo djnp|d ?djo[t d g} |d D]}| t |dƒq'~ Œ} t| ƒ} |dd !| g}nd i t |ƒƒStd |ƒ‚dS(sBConvert an packed IP address of the given family to string format.iRs*invalid length of packed IP address strings>8Hs%xiiÿÿlÿÿi s>2Hiþÿÿÿt:sunknown address family %dN(tAF_INETR tAF_INET6R RR R tlistR&treversedRRtjoinR1( tafR t_[1]tiRR tint_valtnumtwordt_[2]t packed_ipv4tipv4_str((s4/usr/lib/python2.6/site-packages/netaddr/fbsocket.pyt inet_ntop|s&   $. /7 cCs"t|dƒoøtd|ƒ}|idƒ}t|ƒdjo¼g}x¨|D] }|idƒp#|idƒot|ƒdjo |‚nyt|ƒ}Wntj o |‚nX|d?d jo |‚n|itd |ƒƒqOWt|ƒS|‚ntd t |ƒƒ‚d S( s Convert an IP address in string format (123.45.67.89) to the 32-bit packed binary format used in low-level network functions. Differs from inet_aton by only support decimal octets. Using octal or hexadecimal values will raise a ValueError exception. Rsillegal IP address string %rRiRRiiiRs#argument should be a string, not %sN( RR RR RRRRRR(RRRR Rtoctet((s4/usr/lib/python2.6/site-packages/netaddr/fbsocket.pyt_inet_pton_af_inet›s(#     cCs |tjo t|ƒS|tjoÓtd|ƒ}g}t|dƒp |‚nd|jo |‚nd|jor|djodiƒdSy|idƒ\}}Wntj o |‚nXg}g}|djo|idƒ}n|djo|idƒ}nt|ƒoqd |d jo`t|iƒƒ}|i d t d |d d!ƒd ƒ|i d t d |dd!ƒd ƒnt|ƒt|ƒ} d | jo djnp |‚ndt|ƒt|ƒ} g} |D]} | t d t | dƒƒq÷~ g} t | ƒD]} | diƒq-~ g}|D]} |t d t | dƒƒqR~}yPxI||D]=}t |dƒ}d |jo djnp |‚q‰q‰WWqítj o |‚qíXnd|joï|idƒ}d |jo|d }|d dddddgjo |‚n|d iƒdjo |‚nt|ƒdjo |‚nt|iƒƒ}|i d t d |d d!ƒd ƒ|i d t d |dd!ƒd ƒg}|D]} |t d t | dƒƒqí~}nt|ƒdjo |‚nygg}|D]}|t |dƒqD~}x6|D].}d |jo djnp |‚qjqjWWntj o |‚nXg}|D]} |t d | ƒqÄ~}n|‚t|ƒStd|ƒ‚dS(s| Convert an IP address from string format to a packed string suitable for use with low-level network functions. sillegal IP address string %rRR#s::tiRR2Riÿÿÿÿs%xs>HiiiiitiÿÿRtffffisUnknown address family %dNi(RRF(R3RCR4R RtencodeRR RRR RRtrangetlowerR(R8RRtvaluestprefixtsuffixtl_prefixtl_suffixR@t token_counttgap_sizeR9R:R>t_[3]RR=Rt ipv6_prefixt_[4]t_[5]t_[6]((s4/usr/lib/python2.6/site-packages/netaddr/fbsocket.pyt inet_pton¾s†           %)         %%7 * . N(t__doc__tstructRR RRtnetaddr.compatRR3R4R R!R1RARCRV(((s4/usr/lib/python2.6/site-packages/netaddr/fbsocket.pyts / 0  #