ó €aUc@sodZddlmZmZddlmZmZdZ dZ d„Z d„Z d„Z d „Zd „Zd S( s=Fallback routines for Python's standard library socket moduleiÿÿÿÿ(tunpacktpack(t _bytes_joint_is_strii cCs]t|ƒs+tdtt|ƒƒƒ‚nt|ƒdkrLtdƒ‚ndtd|ƒS(sR Convert an IP address from 32-bit packed binary format to string format. sstring type expected, not %sis*invalid length of packed IP address strings %d.%d.%d.%dt4B(Rt TypeErrortstrttypetlent ValueErrort_unpack(t packed_ip((s4/usr/lib/python2.7/site-packages/netaddr/fbsocket.pyt inet_ntoas  c Cs“g}g}d}d}xƒt|ƒD]u\}}|dkr_|dkrR|}n|d7}n.|dkr|j||fƒnd}d}|j|ƒq%W|dkrÀ|j||fƒnt|ƒdkr|jdd„ƒ|d}x+|D]#}|d|dkrö|}qöqöW|\} } |d| !dg|| | }|ddkrl|jddƒn|ddkr|jdƒqn|S(Nit0itkeycSs|dS(Ni((tx((s4/usr/lib/python2.7/site-packages/netaddr/fbsocket.pyt9stiÿÿÿÿ(tNonet enumeratetappendRtsorttinsert( ttokenst new_tokenst positionst start_indext num_tokenstidxttokent best_positiontpositiontlengtht start_idx((s4/usr/lib/python2.7/site-packages/netaddr/fbsocket.pyt_compact_ipv6_tokenss<          c Csw|tkrt|ƒS|tkrct|ƒdksAt|ƒ rPtdƒ‚ngtd|ƒD]}d|^q`}ttd|ƒƒ}d}x>tt |ƒƒD]*\}}|}|d|>}||B}q¤Wd|koédknsþ|d?dkrPt d g|d D]}t |dƒ^qŒ}t|ƒ} |dd !| g}nd j t |ƒƒStd |ƒ‚d S(sBConvert an packed IP address of the given family to string format.is*invalid length of packed IP address strings>8Hs%xiiÿÿIÿÿÿÿi s>2Hiþÿÿÿt:sunknown address family %dN(tAF_INETR tAF_INET6RRR R tlistRtreversedt_packtinttjoinR"( tafR tiRtwordstint_valtnumtwordt packed_ipv4tipv4_str((s4/usr/lib/python2.7/site-packages/netaddr/fbsocket.pyt inet_ntopMs$   &,/ cCst|ƒrùtd|ƒ}|jdƒ}t|ƒdkrðg}x |D]˜}|jdƒs€|jdƒr‰t|ƒdkr‰|‚nyt|ƒ}Wntk r²|‚nX|d?dkrÌ|‚n|jtd |ƒƒqJWt|ƒ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. sillegal IP address string %rt.it0xR iiitBs#argument should be a string, not %sN( RR tsplitRt startswithR)RR(RR(t ip_stringt invalid_addrRR-Rtoctet((s4/usr/lib/python2.7/site-packages/netaddr/fbsocket.pyt_inet_pton_af_inetls&  !      c Cs«|tkrt|ƒS|tkr—td|ƒ}g}t|ƒsM|‚nd|krb|‚nd|kr´|dkrˆdjƒdSy|jdƒ\}}Wntk rº|‚nXg}g}|dkrå|jdƒ}n|dkr|jdƒ}nt|ƒr~d|d kr~t|jƒƒ}|j d t d |d d !ƒd ƒ|j d t d |d d!ƒd ƒnt|ƒt|ƒ} d | ko«dkns¹|‚ndt|ƒt|ƒ} g|D]} t d t | dƒƒ^qÚgt | ƒD]} djƒ^qg|D]} t d t | dƒƒ^q%}yMxF||D]:} t | dƒ} d | ko„dknsX|‚qXqXWWqtk r°|‚qXnÙd|kr‡|jdƒ}d|krÑ|d }|d dddddgkr |‚n|d jƒdkr,|‚nt|ƒdkrG|‚nt|jƒƒ}|j d t d |d d !ƒd ƒ|j d t d |d d!ƒd ƒg|D]} t d t | dƒƒ^qª}nt|ƒdkrì|‚ny\g|D]} t | dƒ^qö}x3|D]+} d | ko5dkns|‚qqWWntk ra|‚nXg|D]} t d | ƒ^qi}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 %rRs::tiRR#R4iÿÿÿÿs%xs>HiiiiitiÿÿR tffffisUnknown address family %dNi(R R?(R$R<R%R RtencodeR7RtpopRR R(R)trangetlowerR(R+R9R:tvaluestprefixtsuffixtl_prefixtl_suffixR2t token_counttgap_sizeR,RR0Rt ipv6_prefix((s4/usr/lib/python2.7/site-packages/netaddr/fbsocket.pyt inet_ptons‚             %( w        %%. "   % N(t__doc__tstructRR RR(tnetaddr.compatRRR$R%R R"R3R<RL(((s4/usr/lib/python2.7/site-packages/netaddr/fbsocket.pyts 0  #