summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuy Harris <gharris@sonic.net>2023-04-10 22:49:46 -0700
committerGuy Harris <gharris@sonic.net>2023-04-10 22:49:46 -0700
commit9469f628841ba08d11f6bcaf850315ff6f0a72a1 (patch)
treef14ecc28392ff36178bd4cf8e6688e50f86e5cef
parenta7f57c74c92328445805131c1eaeff915ec64bb8 (diff)
downloadtcpdump-9469f628841ba08d11f6bcaf850315ff6f0a72a1.tar.gz
cdp: support CDP TLV 0x001a.
Based on the way it's dissected in Wireshark.
-rw-r--r--print-cdp.c18
-rw-r--r--tests/cdp-v.out9
-rw-r--r--tests/lldp_cdp-ev.out12
3 files changed, 25 insertions, 14 deletions
diff --git a/print-cdp.c b/print-cdp.c
index 204131cd..d3bce2e9 100644
--- a/print-cdp.c
+++ b/print-cdp.c
@@ -182,6 +182,22 @@ cdp_print_phys_loc(netdissect_options *ndo,
}
}
+static void
+cdp_print_power_avail(netdissect_options *ndo,
+ const u_char *cp, const u_int len)
+{
+ ND_PRINT("reqid %u, mgmtid %u", GET_BE_U_2(cp), GET_BE_U_2(cp + 2));
+ if (len > 4) {
+ const u_char *powerp;
+ u_int powerlen;
+
+ ND_PRINT(", pwravail");
+ for (powerp = cp + 4, powerlen = len - 4;
+ powerlen >= 4; powerp += 4, powerlen -= 4)
+ ND_PRINT(" %u mW", GET_BE_U_4(powerp));
+ }
+}
+
typedef enum {
VERBOSE_OR_NOT_VERBOSE,
VERBOSE_ONLY
@@ -232,6 +248,8 @@ static const struct cdp_tlvinfo cdptlvs[] = {
[ 0x16 ] = { "Management Addresses", cdp_print_addr, VERBOSE_ONLY, 4, -1 },
/* not documented */
[ 0x17 ] = { "Physical Location", cdp_print_phys_loc, VERBOSE_ONLY, 1, -1 },
+ /* not documented */
+ [ 0x1a ] = { "Power available", cdp_print_power_avail, VERBOSE_ONLY, 8, -1 },
};
#define T_MAX (sizeof cdptlvs / sizeof cdptlvs[0])
diff --git a/tests/cdp-v.out b/tests/cdp-v.out
index 78e5011a..00376348 100644
--- a/tests/cdp-v.out
+++ b/tests/cdp-v.out
@@ -15,8 +15,7 @@
AVVID trust bitmap (0x12), value length: 1 byte: 0x00
AVVID untrusted ports CoS (0x13), value length: 1 byte: 0x00
Management Addresses (0x16), value length: 13 bytes: IPv4 (1) 192.168.0.1
- unknown field type (0x1a), value length: 12 bytes:
- 0x0000: 0000 0001 0000 0000 ffff ffff
+ Power available (0x1a), value length: 12 bytes: reqid 0, mgmtid 1, pwravail 0 mW 4294967295 mW
2 11:47:08.378706 CDPv2, ttl: 180s, checksum: 0xb0bd (unverified), length 378
Device-ID (0x01), value length: 6 bytes: 'Switch'
Version String (0x05), value length: 192 bytes:
@@ -34,8 +33,7 @@
AVVID trust bitmap (0x12), value length: 1 byte: 0x00
AVVID untrusted ports CoS (0x13), value length: 1 byte: 0x00
Management Addresses (0x16), value length: 13 bytes: IPv4 (1) 192.168.0.1
- unknown field type (0x1a), value length: 12 bytes:
- 0x0000: 0000 0001 0000 0000 ffff ffff
+ Power available (0x1a), value length: 12 bytes: reqid 0, mgmtid 1, pwravail 0 mW 4294967295 mW
3 11:48:08.392643 CDPv2, ttl: 180s, checksum: 0xb0bd (unverified), length 378
Device-ID (0x01), value length: 6 bytes: 'Switch'
Version String (0x05), value length: 192 bytes:
@@ -53,5 +51,4 @@
AVVID trust bitmap (0x12), value length: 1 byte: 0x00
AVVID untrusted ports CoS (0x13), value length: 1 byte: 0x00
Management Addresses (0x16), value length: 13 bytes: IPv4 (1) 192.168.0.1
- unknown field type (0x1a), value length: 12 bytes:
- 0x0000: 0000 0001 0000 0000 ffff ffff
+ Power available (0x1a), value length: 12 bytes: reqid 0, mgmtid 1, pwravail 0 mW 4294967295 mW
diff --git a/tests/lldp_cdp-ev.out b/tests/lldp_cdp-ev.out
index ee1e8c37..1bd122af 100644
--- a/tests/lldp_cdp-ev.out
+++ b/tests/lldp_cdp-ev.out
@@ -15,8 +15,7 @@
AVVID trust bitmap (0x12), value length: 1 byte: 0x00
AVVID untrusted ports CoS (0x13), value length: 1 byte: 0x00
Management Addresses (0x16), value length: 13 bytes: IPv4 (1) 0.0.0.0
- unknown field type (0x1a), value length: 12 bytes:
- 0x0000: 0000 0001 0000 0000 ffff ffff
+ Power available (0x1a), value length: 12 bytes: reqid 0, mgmtid 1, pwravail 0 mW 4294967295 mW
2 03:00:39.208974 00:19:2f:a7:b2:8d > 01:00:0c:cc:cc:cc, 802.3, length 378: LLC, dsap SNAP (0xaa) Individual, ssap SNAP (0xaa) Command, ctrl 0x03: oui Cisco (0x00000c), pid CDP (0x2000), length 370: CDPv2, ttl: 180s, checksum: 0x971d (unverified), length 370
Device-ID (0x01), value length: 2 bytes: 'S2'
Version String (0x05), value length: 190 bytes:
@@ -34,8 +33,7 @@
AVVID trust bitmap (0x12), value length: 1 byte: 0x00
AVVID untrusted ports CoS (0x13), value length: 1 byte: 0x00
Management Addresses (0x16), value length: 13 bytes: IPv4 (1) 0.0.0.0
- unknown field type (0x1a), value length: 12 bytes:
- 0x0000: 0000 0001 0000 0000 ffff ffff
+ Power available (0x1a), value length: 12 bytes: reqid 0, mgmtid 1, pwravail 0 mW 4294967295 mW
3 03:00:41.163180 00:19:2f:a7:b2:8d > 01:80:c2:00:00:0e, ethertype LLDP (0x88cc), length 296: LLDP, length 282
Chassis ID TLV (1), length 7
Subtype MAC address (4): 00:19:2f:a7:b2:8d
@@ -141,8 +139,7 @@
AVVID trust bitmap (0x12), value length: 1 byte: 0x00
AVVID untrusted ports CoS (0x13), value length: 1 byte: 0x00
Management Addresses (0x16), value length: 13 bytes: IPv4 (1) 0.0.0.0
- unknown field type (0x1a), value length: 12 bytes:
- 0x0000: 0000 0001 0000 0000 ffff ffff
+ Power available (0x1a), value length: 12 bytes: reqid 0, mgmtid 1, pwravail 0 mW 4294967295 mW
8 03:01:39.211811 00:19:2f:a7:b2:8d > 01:00:0c:cc:cc:cc, 802.3, length 378: LLC, dsap SNAP (0xaa) Individual, ssap SNAP (0xaa) Command, ctrl 0x03: oui Cisco (0x00000c), pid CDP (0x2000), length 370: CDPv2, ttl: 180s, checksum: 0x971c (unverified), length 370
Device-ID (0x01), value length: 2 bytes: 'S2'
Version String (0x05), value length: 190 bytes:
@@ -160,8 +157,7 @@
AVVID trust bitmap (0x12), value length: 1 byte: 0x00
AVVID untrusted ports CoS (0x13), value length: 1 byte: 0x00
Management Addresses (0x16), value length: 13 bytes: IPv4 (1) 0.0.0.0
- unknown field type (0x1a), value length: 12 bytes:
- 0x0000: 0000 0001 0000 0000 ffff ffff
+ Power available (0x1a), value length: 12 bytes: reqid 0, mgmtid 1, pwravail 0 mW 4294967295 mW
9 03:01:40.932913 00:19:2f:a7:b2:8d > 01:80:c2:00:00:0e, ethertype LLDP (0x88cc), length 296: LLDP, length 282
Chassis ID TLV (1), length 7
Subtype MAC address (4): 00:19:2f:a7:b2:8d