Ñò î¡ßNc @s”dZddkZddkZdZddklZddkl Z l Z l ZlZlZlZlZlZlZlZdZdZdZdZ eZ!d Z"dZ#d Z$d ed Z%eeZ&d ed Z'ei(d di)dgdƒdei*ƒZ+d„Z,d„Z-dd„Z/d„Z0d„Z1dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zd„Zd„Zd„ZdS(s6 IEEE 64-bit EUI (Extended Unique Indentifier) logic. iÿÿÿÿNi@(tAddrFormatError( t BYTES_TO_BITSt valid_wordst int_to_wordst words_to_intt valid_bitst bits_to_intt int_to_bitst valid_bint int_to_bint bin_to_intis%.2Xt-sEUI-64iiit^s([0-9A-F]{1,2})t$cCsEy+ti|ƒ}t|ƒdjotSWntj onXtS(s‹ @param addr: An IEEE EUI-64 indentifier in string form. @return: C{True} if EUI-64 indentifier is valid, C{False} otherwise. i(tRE_EUI64_FORMATtfindalltlentTruet TypeErrortFalse(taddrt match_result((s:/usr/lib/python2.6/site-packages/netaddr/strategy/eui64.pyt valid_strAs c Cs¿g}y$ti|ƒ}|p t‚nWn#tj otd|ƒ‚nX|d}t|ƒtjotd|ƒ‚ntdig}|D]}|dt|dƒq•~ƒdƒS(s° @param addr: An IEEE EUI-64 indentifier in string form. @return: An unsigned integer that is equivalent to value represented by EUI-64 string identifier. s#invalid IEEE EUI-64 identifier: %r!is)bad word count for EUI-64 identifier: %r!ts%.2xi(RRRRRt num_wordstinttjoin(RtwordsRt_[1]tw((s:/usr/lib/python2.6/site-packages/netaddr/strategy/eui64.pyt str_to_intQs cCsDt|ƒ}g}|D]}|t|q~}ti|ƒ}|S(s÷ @param int_val: An unsigned integer. @param dialect: (optional) a Python class defining formatting options (Please Note - not currently in use). @return: An IEEE EUI-64 identifier that is equivalent to unsigned integer. (Rtword_fmttword_sepR(tint_valtdialectRRtittokensR((s:/usr/lib/python2.6/site-packages/netaddr/strategy/eui64.pyt int_to_strjs %cCst|ƒ}tid|ŒS(s• @param int_val: the integer to be packed. @return: a packed string that is equivalent to value represented by an unsigned integer. s>8B(Rt_structtpack(R!R((s:/usr/lib/python2.6/site-packages/netaddr/strategy/eui64.pyt int_to_packedys cCscttid|ƒƒ}d}x>tt|ƒƒD]*\}}|}|d|>}||B}q1W|S(s @param packed_int: a packed string containing an unsigned integer. It is assumed that string is packed in network byte order. @return: An unsigned integer equivalent to value of network address represented by packed binary string. s>8Bii(tlistR&tunpackt enumeratetreversed(t packed_intRR!R#tnumtword((s:/usr/lib/python2.6/site-packages/netaddr/strategy/eui64.pyt packed_to_int„s cCst|ttƒS(N(t _valid_wordst word_sizeR(RR"((s:/usr/lib/python2.6/site-packages/netaddr/strategy/eui64.pyR—scCst|ttƒS(N(t _int_to_wordsR2R(R!R"((s:/usr/lib/python2.6/site-packages/netaddr/strategy/eui64.pyR›scCst|ttƒS(N(t _words_to_intR2R(RR"((s:/usr/lib/python2.6/site-packages/netaddr/strategy/eui64.pyRŸscCst|ttƒS(N(t _valid_bitstwidthR (tbitsR"((s:/usr/lib/python2.6/site-packages/netaddr/strategy/eui64.pyR£scCst|ttƒS(N(t _bits_to_intR6R (R7R"((s:/usr/lib/python2.6/site-packages/netaddr/strategy/eui64.pyR§scCst|tttƒS(N(t _int_to_bitsR2RR (R!R"((s:/usr/lib/python2.6/site-packages/netaddr/strategy/eui64.pyR«scCs t|tƒS(N(t _valid_binR6(tbin_val((s:/usr/lib/python2.6/site-packages/netaddr/strategy/eui64.pyR¯scCs t|tƒS(N(t _int_to_binR6(R!((s:/usr/lib/python2.6/site-packages/netaddr/strategy/eui64.pyR ³scCs t|tƒS(N(t _bin_to_intR6(R;((s:/usr/lib/python2.6/site-packages/netaddr/strategy/eui64.pyR ·s(2t__doc__tstructR&tret_retAF_EUI64t netaddr.coreRtnetaddr.strategyRt_BYTES_TO_BITSRR1RR3RR4RR5RR8RR9RR:R R<R R=R6R2RR tfamilyt family_nametversiont word_basetmax_intRtmax_wordtcompileRt IGNORECASERRRtNoneR%R(R0(((s:/usr/lib/python2.6/site-packages/netaddr/strategy/eui64.pyts@  F  !