1 #################################### cdp.py ################################## 2 % Regression tests for the cdp module 3 4 5 ################################## CDPv2_HDR ################################## 6 + CDP 7 8 = CDPv2 - Dissection (1) 9 s = b'\x02\xb4\x8c\xfa\x00\x01\x00\x0cmyswitch\x00\x02\x00\x11\x00\x00\x00\x01\x01\x01\xcc\x00\x04\xc0\xa8\x00\xfd\x00\x03\x00\x13FastEthernet0/1\x00\x04\x00\x08\x00\x00\x00(\x00\x05\x01\x14Cisco Internetwork Operating System Software \nIOS (tm) C2950 Software (C2950-I6K2L2Q4-M), Version 12.1(22)EA14, RELEASE SOFTWARE (fc1)\nTechnical Support: http://www.cisco.com/techsupport\nCopyright (c) 1986-2010 by cisco Systems, Inc.\nCompiled Tue 26-Oct-10 10:35 by nburra\x00\x06\x00\x15cisco WS-C2950-12\x00\x08\x00$\x00\x00\x0c\x01\x12\x00\x00\x00\x00\xff\xff\xff\xff\x01\x02!\xff\x00\x00\x00\x00\x00\x00\x00\x0b\xbe\x18\x9a@\xff\x00\x00\x00\t\x00\x0cMYDOMAIN\x00\n\x00\x06\x00\x01\x00\x0b\x00\x05\x01\x00\x0e\x00\x07\x01\x00\n\x00\x12\x00\x05\x00\x00\x13\x00\x05\x00\x00\x16\x00\x11\x00\x00\x00\x01\x01\x01\xcc\x00\x04\xc0\xa8\x00\xfd' 10 cdpv2 = CDPv2_HDR(s) 11 assert(cdpv2.vers == 2) 12 assert(cdpv2.ttl == 180) 13 assert(cdpv2.cksum == 0x8cfa) 14 assert(cdpv2.haslayer(CDPMsgDeviceID)) 15 assert(cdpv2.haslayer(CDPMsgAddr)) 16 assert(cdpv2.haslayer(CDPAddrRecordIPv4)) 17 assert(cdpv2.haslayer(CDPMsgPortID)) 18 assert(cdpv2.haslayer(CDPMsgCapabilities)) 19 assert(cdpv2.haslayer(CDPMsgSoftwareVersion)) 20 assert(cdpv2.haslayer(CDPMsgPlatform)) 21 assert(cdpv2.haslayer(CDPMsgProtoHello)) 22 assert(cdpv2.haslayer(CDPMsgVTPMgmtDomain)) 23 assert(cdpv2.haslayer(CDPMsgNativeVLAN)) 24 assert(cdpv2.haslayer(CDPMsgDuplex)) 25 assert(cdpv2.haslayer(CDPMsgVoIPVLANReply)) 26 assert(cdpv2.haslayer(CDPMsgTrustBitmap)) 27 assert(cdpv2.haslayer(CDPMsgUntrustedPortCoS)) 28 assert(cdpv2.haslayer(CDPMsgMgmtAddr)) 29 assert(cdpv2[CDPMsgProtoHello].len == 36) 30 assert(cdpv2[CDPMsgProtoHello].oui == 0xc) 31 assert(cdpv2[CDPMsgProtoHello].protocol_id == 0x112) 32 assert(cdpv2[CDPMsgTrustBitmap].type == 0x0012) 33 assert(cdpv2[CDPMsgTrustBitmap].len == 5) 34 assert(cdpv2[CDPMsgTrustBitmap].trust_bitmap == 0x0) 35 assert(cdpv2[CDPMsgUntrustedPortCoS].type == 0x0013) 36 assert(cdpv2[CDPMsgUntrustedPortCoS].len == 5) 37 assert(cdpv2[CDPMsgUntrustedPortCoS].untrusted_port_cos == 0x0) 38 39 = CDPv2 - Dissection (2) 40 s = b'\x02\xb4\xd7\xdb\x00\x01\x00\x13SIP001122334455\x00\x02\x00\x11\x00\x00\x00\x01\x01\x01\xcc\x00\x04\xc0\xa8\x01!\x00\x03\x00\nPort 1\x00\x04\x00\x08\x00\x00\x00\x10\x00\x05\x00\x10P003-08-2-00\x00\x06\x00\x17Cisco IP Phone 7960\x00\x0f\x00\x08 \x02\x00\x01\x00\x0b\x00\x05\x01\x00\x10\x00\x06\x18\x9c' 41 cdpv2 = CDPv2_HDR(s) 42 assert(cdpv2.vers == 2) 43 assert(cdpv2.ttl == 180) 44 assert(cdpv2.cksum == 0xd7db) 45 assert(cdpv2.haslayer(CDPMsgDeviceID)) 46 assert(cdpv2.haslayer(CDPMsgAddr)) 47 assert(cdpv2.haslayer(CDPAddrRecordIPv4)) 48 assert(cdpv2.haslayer(CDPMsgPortID)) 49 assert(cdpv2.haslayer(CDPMsgCapabilities)) 50 assert(cdpv2.haslayer(CDPMsgSoftwareVersion)) 51 assert(cdpv2.haslayer(CDPMsgPlatform)) 52 assert(cdpv2.haslayer(CDPMsgVoIPVLANQuery)) 53 assert(cdpv2.haslayer(CDPMsgDuplex)) 54 assert(cdpv2.haslayer(CDPMsgPower)) 55 assert(cdpv2[CDPMsgVoIPVLANQuery].type == 0x000f) 56 assert(cdpv2[CDPMsgVoIPVLANQuery].len == 8) 57 assert(cdpv2[CDPMsgVoIPVLANQuery].unknown1 == 0x20) 58 assert(cdpv2[CDPMsgVoIPVLANQuery].vlan == 512) 59 60