Ë wÃ?üà.&øãó8—dZddlZddlmZmZddlmZmZddl m Z m Z m Z m Z ddlmZiiiidœZGd„d ej"«ZGd „d e«ZGd „d e«ZGd„de«ZGd„de«ZGd„de«ZGd„de«Zd„Zdd„Zd„Zd„Ze«y)a Routines for accessing data published by IANA (Internet Assigned Numbers Authority). More details can be found at the following URLs :- - IANA Home Page - http://www.iana.org/ - IEEE Protocols Information Home Page - http://www.iana.org/protocols/ éN)Ú make_parserÚhandler)Ú PublisherÚ Subscriber)Ú IPAddressÚ IPNetworkÚIPRangeÚcidr_abbrev_to_verbose)Ú _open_binary)ÚIPv4ÚIPv6Ú IPv6_unicastÚ multicastcó&—eZdZdd„Zd„Zd„Zd„Zy)ÚSaxRecordParserNcóf—d|_d|_d|_d|_d|_d|_||_y)NrF)Ú_levelÚ _is_activeÚ_recordÚ _tag_levelÚ _tag_payloadÚ _tag_feedingÚ _callback)ÚselfÚcallbacks ú4/usr/lib/python3.12/site-packages/netaddr/ip/iana.pyÚ__init__zSaxRecordParser.__init__2s5€ØˆŒ ؈ŒØˆŒ ؈ŒØ ˆÔØ ˆÔØ!ˆ�ócó®—|xjdz c_|jdur=|dk(r7d|_|j|_i|_d|vr|d|jd<yyy|j|jdzk(rR|dk(r™>¨:Ô6Ø—N‘N 4§<¡<Ô0Ø#�• Ø—‘ §¡°!Ñ 3Ò3ؘ6’>Ø)+¯©°×1BÑ1BÓ)C�D—L‘L Ñ&Ø(,�DÔ%Ø(-�DÔ%à � Š �qÑŽ rcóX—|jdur|jj|«yy)NT)rrr')rÚcontents rÚ characterszSaxRecordParser.characters`s)€Ø × Ñ  Ñ $Ø × Ñ × $Ñ $ WÕ -ð %r©N)Ú__name__Ú __module__Ú __qualname__rr+r1r4©rrrr1s„ó"ò&ò*ó .rrcó4‡—eZdZdZˆfd„Zd„Zd„Zd„ZˆxZS)ÚXMLRecordParserzP A configurable Parser that understands how to parse XML based records. c óè•—tt|� «t«|_|jj t |j««||_|jj|«y)z` Constructor. fh - a valid, open file handle to XML based record data. N) Úsuperr;rrÚ xmlparserÚsetContentHandlerrÚconsume_recordÚfhÚ__dict__Úupdate©rrAÚkwargsÚ __class__s €rrzXMLRecordParser.__init__jsQø€ô Œo˜tÑ-Ô/ä$›ˆŒØ �‰×(Ñ(¬¸×9LÑ9LÓ)MÔNàˆŒà � ‰ ×јVÕ$rcó—|S)a This is the callback method invoked for every record. It is usually over-ridden by base classes to provide specific record-based logic. Any record can be vetoed (not passed to registered Subscriber objects) by simply returning None. r9)rÚrecs rÚprocess_recordzXMLRecordParser.process_recordys €ðˆ rcóN—|j|«}|�|j|«yyr5)rIÚnotify©rrHr!s rr@zXMLRecordParser.consume_recordƒs)€Ø×$Ñ$ SÓ)ˆØ Ð Ø �K‰K˜Õ ð rcóN—|jj|j«y)z Parse and normalises records, notifying registered subscribers with record data as it is encountered. N)r>ÚparserA)rs rrNzXMLRecordParser.parseˆs€ð �‰×јTŸW™WÕ%r) r6r7r8Ú__doc__rrIr@rNÚ __classcell__©rFs@rr;r;esø„ñô %òò ö &rr;có(‡—eZdZdZˆfd„Zd„ZˆxZS)Ú IPv4Parserz÷ A XMLRecordParser that understands how to parse and retrieve data records from the IANA IPv4 address space file. It can be found online here :- - http://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.xml c ó,•—tt|� |«y)z— Constructor. fh - a valid, open file handle to an IANA IPv4 address space file. kwargs - additional parser options. N)r=rSrrDs €rrzIPv4Parser.__init__šóø€ô Œj˜$Ñ(¨Õ,rcó—i}dD].}t|j|d««j«||<Œ0d|dvr3|djd«\}}dt |«t |«fz|d<|dj «|d<|S)úl Callback method invoked for every record. See base class method for more details. )ÚprefixÚ designationr"ÚwhoisÚstatusr.Ú/rXz%d/%dr[)ÚstrÚgetÚstripÚsplitÚintÚ capitalize)rrHr!ÚkeyÚoctetrXs rrIzIPv4Parser.process_record¤s—€ðˆÛGˆCܘcŸg™g c¨2Ó.Ó/×5Ñ5Ó7ˆF�3ŠKðHð �&˜Ñ"Ñ "Ø$ XÑ.×4Ñ4°SÓ9‰OˆU�FØ&¬#¨e«*´c¸&³kÐ)BÑBˆF�8Ñ à! (Ñ+×6Ñ6Ó8ˆˆxÑàˆ r©r6r7r8rOrrIrPrQs@rrSrS�sø„ñô-örrScó(‡—eZdZdZˆfd„Zd„ZˆxZS)Ú IPv6Parserz÷ A XMLRecordParser that understands how to parse and retrieve data records from the IANA IPv6 address space file. It can be found online here :- - http://www.iana.org/assignments/ipv6-address-space/ipv6-address-space.xml c ó,•—tt|� |«y©z— Constructor. fh - a valid, open file handle to an IANA IPv6 address space file. kwargs - additional parser options. N)r=rgrrDs €rrzIPv6Parser.__init__ÃrUrcó—t|jdd««j«t|jdd««j«t|jddg«d«j«dœ}|S)rWrXr.Ú descriptionÚrfcéÿÿÿÿ)rXÚ allocationÚ reference©r]r^r_rLs rrIzIPv6Parser.process_recordÍso€ô˜#Ÿ'™' (¨BÓ/Ó0×6Ñ6Ó8ܘcŸg™g m°RÓ8Ó9×?Ñ?ÓAô˜SŸW™W U¨R¨DÓ1°"Ñ5Ó6×<Ñ<Ó>ñ  ˆðˆ rrerQs@rrgrg¹sø„ñô-örrgcó(‡—eZdZdZˆfd„Zd„ZˆxZS)ÚIPv6UnicastParsera! A XMLRecordParser that understands how to parse and retrieve data records from the IANA IPv6 unicast address assignments file. It can be found online here :- - http://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments.xml c ó,•—tt|� |«yri)r=rrrrDs €rrzIPv6UnicastParser.__init__ísø€ô Ô Ñ/°Õ3rc óœ—t|jdd««j«t|jdd««j«t|jdd««j«t|jdd««j«t|jdd««j«dœ}|S)rWr[r.rkrXr"rZ)r[rkrXr"rZrprLs rrIz IPv6UnicastParser.process_record÷sž€ô˜#Ÿ'™' (¨BÓ/Ó0×6Ñ6Ó8ܘsŸw™w }°bÓ9Ó:×@Ñ@ÓBܘ#Ÿ'™' (¨BÓ/Ó0×6Ñ6Ó8ܘŸ™ ¨Ó+Ó,×2Ñ2Ó4ܘŸ™ ¨"Ó-Ó.×4Ñ4Ó6ñ  ˆðˆ rrerQs@rrrrrãsø„ñô4örrrcó.‡—eZdZdZˆfd„Zd„Zd„ZˆxZS)ÚMulticastParserzå A XMLRecordParser that knows how to process the IANA IPv4 multicast address allocation file. It can be found online here :- - http://www.iana.org/assignments/multicast-addresses/multicast-addresses.xml c ó,•—tt|� |«y)z³ Constructor. fh - a valid, open file handle to an IANA IPv4 multicast address allocation file. kwargs - additional parser options. N)r=rvrrDs €rrzMulticastParser.__init__sø€ô Œo˜tÑ-¨bÕ1rc ó6—d|vr·|jd«\}}|j«jd«}|j«jd«}dj|D�cgc]}tt |««‘Œc}«›ddj|D�cgc]}tt |««‘Œc}«›�S|j«jd«}dj|D�cgc]}tt |««‘Œc}«Scc}wcc}wcc}w)zX Removes variations from address entries found in this particular file. Ú-Ú.)r`r_r0r]ra)rÚaddrÚa1Úa2Úo1Úo2Úis rÚnormalise_addrzMulticastParser.normalise_addrsã€ð �$‰;Ø—z‘z #“‰HˆR�Ø—‘“×!Ñ! #Ó&ˆBØ—‘“×!Ñ! #Ó&ˆBà—‘©rÓ2©r¨!œ#œc !›f�+¨rÑ2Õ3Ø—‘©rÓ2©r¨!œ#œc !›f�+¨rÑ2Ô3ðð ð —‘“×#Ñ# CÓ(ˆBØ—8‘8±"Ó5±"¨QœS¤ Q£�[°"Ñ5Ó6Ð 6ùò 3ùÚ2ùò6sÁ&D ÂD Ã*Dcó‚—d|vr;|jt|d««t|jdd««dœ}|Sy)rWr{rkr.)ÚaddressÚdescrN)r�r]r^rLs rrIzMulticastParser.process_record-sH€ð �S‰=à×.Ñ.¬s°3°v±;Ó/?Ó@ܘSŸW™W ]°BÓ7Ó8ñˆFðˆMð r)r6r7r8rOrr�rIrPrQs@rrvrvsø„ñô 2ò7ö rrvcó—eZdZdZd„Zd„Zy)Ú DictUpdaterzc Concrete Subscriber that inserts records received from a Publisher into a dictionary. có.—||_||_||_y)zñ Constructor. dct - lookup dict or dict like object to insert records into. topic - high-level category name of data to be processed. unique_key - key name in data dict that uniquely identifies it. N)ÚdctÚtopicÚ unique_key)rrˆr‰rŠs rrzDictUpdater.__init__Bs€ðˆŒØˆŒ Ø$ˆ�rcó*—||j}|jdk(r$tt|««}||j|<y|jdk(r$tt|««}||j|<y|jdk(rt|«}||j|<y|jdk(red}d|vrD|j d«\}}t ||«}|j«}t|«dk(r|d}n t|«}||j|<yy) z¶ Callback function used by Publisher to notify this Subscriber about an update. Stores topic based information into dictionary passed to constructor. r r rrNryr r) rŠr‰rr rˆr`r ÚcidrsÚlenr)rr%Údata_idÚcidrÚiprangeÚfirstÚlastrŒs rrCzDictUpdater.updatePsù€ð �t—‘Ñ'ˆà �:‰:˜Ò ÜÔ3°GÓ<Ó=ˆDØ!ˆD�H‰H�TŠNØ �Z‰Z˜6Ò !ÜÔ3°GÓ<Ó=ˆDØ!ˆD�H‰H�TŠNØ �Z‰Z˜>Ò )ܘWÓ%ˆDØ!ˆD�H‰H�TŠNØ �Z‰Z˜;Ò &؈GØ�g‰~à '§ ¡ ¨cÓ 2‘ �˜Ü! %¨Ó.�ØŸ ™ ›�Ü�u“: ’?Ø# A™h‘Gä# GÓ,�Ø $ˆD�H‰H�WÒ ð'rN)r6r7r8rOrrCr9rrr†r†<s„ñò %ó%rr†cód—tttd««}|jt t ddd««|j «tttd««}|jt t ddd««|j «tttd««}|jt t ddd««|j «tttd««}|jt t d d d ««|j «y ) zd Parse and load internal IANA data lookups with the latest information from data files. zipv4-address-space.xmlr rXzipv6-address-space.xmlr z$ipv6-unicast-address-assignments.xmlrzmulticast-addresses.xmlrrƒN) rSr Ú __package__Úattachr†Ú IANA_INFOrNrgrrrv)Úipv4Úipv6Úipv6uaÚmcasts rÚ load_infor›osÝ€ô ”l¤;Ð0HÓIÓ J€D؇K�K” œI fÑ-¨v°xÓ@ÔA؇J�J„Lä ”l¤;Ð0HÓIÓ J€D؇K�K” œI fÑ-¨v°xÓ@ÔA؇J�J„Lä Ü”[Ð"HÓIó€Fð ‡M�M”+œi¨Ñ7¸ÈÓRÔSØ ‡L�L„Nä œL¬Ð6OÓPÓ Q€EØ ‡L�L”œY {Ñ3°[À)ÓLÔMØ ‡K�K…Mrcóh—|€tj}tt«D]Ž}|j dt |«zdz«|j |dz«|j dt |«zdz«t|}t|«D]!}||}|j d|z|zdz«Œ#Œ�y)z7 Pretty prints IANA information to filehandle. NryÚ z%-45r)Ú_sysÚstdoutÚsortedr–Úwriter�)rAÚcategoryÚiprangesr�Údetailss rÚ pprint_infor¥‡s£€ð €zÜ �[‰[ˆäœ9Ö%ˆØ �‰�”s˜8“}Ñ$ tÑ+Ô,Ø �‰�˜D‘Ô!Ø �‰�”s˜8“}Ñ$ tÑ+Ô,ܘXÑ&ˆÜ˜hÖ'ˆGؘwÑ'ˆGØ �H‰H�W Ñ(¨7Ñ2°TÑ9Õ :ñ(ñ &rcób—t|d«r||vSt|d«r||k(Std|›d�«‚)Nr‘Úvaluez!Unsupported IP range or address: Ú!)r/Ú Exception)ÚipÚip_ranges rÚ_within_boundsr¬˜s8€äˆx˜Ô!à�Xˆ~ÐÜ �˜7Ô #à�X‰~Ðå ºhÐHÓ IÐIrcóú—i}|jdk(r¶tdj«D]8\}}t||«sŒ|j dg«|dj |«Œ:|j «rRtdj«D]8\}}t||«sŒ|j dg«|dj |«Œ:|S|jdk(r¤tdj«D]8\}}t||«sŒ|j dg«|dj |«Œ:tdj«D]8\}}t||«sŒ|j dg«|dj |«Œ:|S)z7Returns informational data specific to this IP address.ér rÚ Multicastér r)Úversionr–Úitemsr¬r&r'Ú is_multicast)Úip_addrÚinfor�r!r�s rÚqueryr¶¤sZ€à €Dà‡�˜!ÒÜ% fÑ-×3Ñ3Ö5‰LˆD�&ܘg tÕ,Ø—‘ ¨Ô+Ø�V‘ ×#Ñ# FÕ+ð6ð × Ñ Ô !Ü#,¨[Ñ#9×#?Ñ#?Ö#A‘�˜Ü! '¨7Õ3Ø—O‘O K°Ô4ؘÑ%×,Ñ,¨VÕ4ð$Bð €Kð �‰˜AÒ Ü% fÑ-×3Ñ3Ö5‰LˆD�&ܘg tÕ,Ø—‘ ¨Ô+Ø�V‘ ×#Ñ# FÕ+ð6ô & nÑ5×;Ñ;Ö=‰LˆD�&ܘg tÕ,Ø—‘ °Ô3Ø�^Ñ$×+Ñ+¨FÕ3ð>ð €Krr5)rOÚsysržÚxml.saxrrÚ netaddr.corerrÚ netaddr.iprrr r Únetaddr.compatr r–ÚContentHandlerrr;rSrgrrrvr†r›r¥r¬r¶r9rrÚr½s°ðñ,óß(ç.ßLÓLÝ'ð Ø ØØñ  € ô1.�g×,Ñ,ô1.ôh(&�iô(&ôV&�ô&ôR'�ô'ôT"˜ô"ôJ1�oô1ôh0%�*ô0%òfó0;ò" Jòñ> … r