U v`@sdZddlmZddlmZdZdZdZdZdZ d Z d Z d Z d Z d ZdZdZdZdZdZdZGdddejZddZddZddZdS)zCisco Discovery Protocol.)absolute_import)dpkt c@sfeZdZdZdZGdddejZGdddeZGdddeZ d d Z d d Z d dZ e e iZdS)CDPzCisco Discovery Protocol. See more on https://en.wikipedia.org/wiki/Cisco_Discovery_Protocol Attributes: __hdr__: Header fields of CDP. #TODO ))versionBr)Zttlr)sumHrc@s4eZdZdZdZddZddZddZd d Zd S) zCDP.TLVzWhen constructing the packet, len is not mandatory: if not provided, then self.data must be this exact TLV payload ))typerrlenrrcCs|jr|j|jSt|jSN)r __hdr_len__dataselfr"`/private/var/folders/0j/yyfkg7712236ncpm167bvylc27vst9/T/pip-unpacked-wheel-y9gppv54/dpkt/cdp.pydata_len6s zCDP.TLV.data_lencCs&tj|||jd||_dSr)rPacketunpackrr$)r!bufr"r"r#r&;szCDP.TLV.unpackcCs|jt|jSrrrrr r"r"r#__len__?szCDP.TLV.__len__cCs,t|dr|jst||_|t|jS)Nr)hasattrrpack_hdrbytesrr r"r"r# __bytes__Bs zCDP.TLV.__bytes__N) __name__ __module__ __qualname____doc____hdr__r$r&r)r-r"r"r"r#TLV,s r3c@seZdZdZddZdS)z CDP.Address))ptyperr)plenrr)pr)alenrrcCs|jSr)r8r r"r"r#r$PszCDP.Address.data_lenN)r.r/r0r2r$r"r"r"r#AddressGsr9c@seZdZddefddfZdS)zCDP.TLV_Addressesrrr)Z AddressesLrN)r.r/r0 CDP_ADDRESSr2r"r"r"r# TLV_AddressesSsr<cCsrtj|||j}g}|r\||j}|j||j|}|t ||t |d}q||_ d ||_dS)N) rr%r&rr3r tlv_typesgetappendr,rtlvsjoin)r!r'Zl_Z tlv_find_typetlvr"r"r#r&Zs z CDP.unpackcCs|jt|jSrr(r r"r"r#r)hsz CDP.__len__cCs0t|j}|js$t|||_||Sr)r,rrrZin_cksumr+)r!rr"r"r#r-ks z CDP.__bytes__N)r.r/r0r1r2rr%r3r9r<r&r)r-r;r>r"r"r"r#rs  rc Csddl}ddlm}d}t|}t||ks0td}tjtj|ddd}tj t dd}| | }t|d}t||kstd }| |} t | jjtstt| jjjd kstt| t|kstt| t|kstdS) Nrr)ethernetsߓ ciscogz 192.168.1.103)rscisco)rrsb 2kT ,BR2Cisco IOS Software, 3700 Software (C3745-ADVENTERPRISEK9_SNA-M), Version 12.4(25d), RELEASE SOFTWARE (fc1) Technical Support: http://www.cisco.com/techsupport Copyright (c) 1986-2010 by Cisco Systems, Inc. Compiled Wed 18-Aug-10 08:18 by prod_rel_teamCisco 3745 FastEthernet0/0)  )socketrDrr,AssertionErrorr<r9 inet_atonr3 CDP_DEVIDpackZEthernet isinstancerrrAstr) rFrDssZrr1p1p2rZrr2sethr"r"r#test_cdpus"   rScCsddlm}|d}|d}t|}|jdks4t|jdksBt|dksRt|jdks`tt ||ksptt|}|jdkst|jdkst|dkst|jdkstt ||kstdS)Nr unhexlifyZ 00000000abcdZ 00000006abcdrsr ) binasciirUrr3rrHrr$rr,)rUZ buf_no_lenZ buf_with_lenrCr"r"r#test_tlvs&   rWcCs2ddlm}|d}t|}|dks.tdS)NrrTZ 0011223333i33)rVrUrr9r$rH)rUr'addressr"r"r# test_addresss   rYN)r1 __future__rrGrrJr;Z CDP_PORTIDZCDP_CAPABILITIESZ CDP_VERSIONZ CDP_PLATFORMZ CDP_IPPREFIXZCDP_VTP_MGMT_DOMAINZCDP_NATIVE_VLANZ CDP_DUPLEXZCDP_TRUST_BITMAPZCDP_UNTRUST_COSZCDP_SYSTEM_NAMEZCDP_SYSTEM_OIDZCDP_MGMT_ADDRESSZ CDP_LOCATIONr%rrSrWrYr"r"r"r#s,  Z