From 63dc70157fd59c3ed378a36aa0e9bceba48ab25c Mon Sep 17 00:00:00 2001 From: Martin Stigge Date: Sun, 22 Dec 2024 14:29:30 +0100 Subject: [PATCH 1/3] RSVP: Add a full-session test for P2P and P2MP. Included are PATH, RESV, PATH ERROR, PATH TEAR and RESV TEAR message types. The pcap contains two sessions, a P2P one and a P2MP one. --- tests/TESTLIST | 2 + tests/rsvp_session.out | 208 ++++++++++++++++++++++++++++++++++++++++ tests/rsvp_session.pcap | Bin 0 -> 1620 bytes 3 files changed, 210 insertions(+) create mode 100644 tests/rsvp_session.out create mode 100644 tests/rsvp_session.pcap diff --git a/tests/TESTLIST b/tests/TESTLIST index a6ffc3b0f..1148a9b0e 100644 --- a/tests/TESTLIST +++ b/tests/TESTLIST @@ -452,6 +452,8 @@ rsvp_infloop-v rsvp-infinite-loop.pcap rsvp_infloop-v.out -v rsvp_cap rsvp_cap.pcap rsvp_cap.out -v # fuzzed pcap rsvp-inf-loop-2-v rsvp-inf-loop-2.pcapng rsvp-inf-loop-2-v.out -v +# full session, p2p and p2mp +rsvp_session rsvp_session.pcap rsvp_session.out -v # HDLC tests hdlc1 chdlc-slarp.pcap hdlc1.out diff --git a/tests/rsvp_session.out b/tests/rsvp_session.out new file mode 100644 index 000000000..157cd6a4a --- /dev/null +++ b/tests/rsvp_session.out @@ -0,0 +1,208 @@ + 1 2024-12-21 22:27:13.504618 IP (tos 0xc0, ttl 255, id 10000, offset 0, flags [none], proto RSVP (46), length 180, options (RA)) + 1.1.1.1 > 3.3.3.3: + RSVPv1 Path Message (1), Flags: [none], length: 156, ttl: 255, checksum: 0x79d8 + Session Object (1) Flags: [reject if unknown], Class-Type: Tunnel IPv4 (7), length: 16 + IPv4 Tunnel EndPoint: 3.3.3.3, Tunnel ID: 0x0001, Extended Tunnel ID: 1.1.1.1 + RSVP Hop Object (3) Flags: [reject if unknown], Class-Type: IPv4 (1), length: 12 + Previous/Next Interface: 10.0.12.1, Logical Interface Handle: 0x00000000 + Time Values Object (5) Flags: [reject if unknown], Class-Type: 1 (1), length: 8 + Refresh Period: 30000ms + ERO Object (20) Flags: [reject if unknown], Class-Type: IPv4 (1), length: 20 + Subobject Type: IPv4 prefix, length 8, Strict, 10.0.12.2/32, Flags: [none] + Subobject Type: IPv4 prefix, length 8, Strict, 10.0.23.3/32, Flags: [none] + Label Request Object (19) Flags: [reject if unknown], Class-Type: without label range (1), length: 8 + L3 Protocol ID: IPv4 + Session Attribute Object (207) Flags: [ignore and forward if unknown], Class-Type: Tunnel IPv4 (7), length: 24 + Session Name: TestTunnelP2p + Setup Priority: 7, Holding Priority: 0, Flags: [Label Recording, SE Style] (0x46) + Sender Template Object (11) Flags: [reject if unknown], Class-Type: Tunnel IPv4 (7), length: 12 + IPv4 Tunnel Sender Address: 1.1.1.1, LSP-ID: 0x0001 + Sender TSpec Object (12) Flags: [reject if unknown], Class-Type: IntServ (2), length: 36 + Msg-Version: 0, length: 28 + Service Type: Default/Global Information (1), break bit not set, Service length: 24 + Parameter ID: Token Bucket TSpec (127), length: 20, Flags: [0x00] + Token Bucket Rate: 0 Mbps + Token Bucket Size: 0 bytes + Peak Data Rate: 0 Mbps + Minimum Policed Unit: 0 bytes + Maximum Packet Size: 2147483647 bytes + RRO Object (21) Flags: [reject if unknown], Class-Type: IPv4 (1), length: 12 + Subobject Type: IPv4 prefix, length 8, Strict, 10.0.12.1/32, Flags: [none] + 2 2024-12-21 22:27:13.511662 IP (tos 0xc0, ttl 253, id 1, offset 0, flags [none], proto RSVP (46), length 164) + 10.0.12.2 > 10.0.12.1: + RSVPv1 Resv Message (2), Flags: [none], length: 144, ttl: 253, checksum: 0xdfda + Session Object (1) Flags: [reject if unknown], Class-Type: Tunnel IPv4 (7), length: 16 + IPv4 Tunnel EndPoint: 3.3.3.3, Tunnel ID: 0x0001, Extended Tunnel ID: 1.1.1.1 + RSVP Hop Object (3) Flags: [reject if unknown], Class-Type: IPv4 (1), length: 12 + Previous/Next Interface: 10.0.12.2, Logical Interface Handle: 0x00000000 + Time Values Object (5) Flags: [reject if unknown], Class-Type: 1 (1), length: 8 + Refresh Period: 30000ms + Style Object (8) Flags: [reject if unknown], Class-Type: 1 (1), length: 8 + Reservation Style: Shared Explicit, Flags: [0x00] + Flowspec Object (9) Flags: [reject if unknown], Class-Type: IntServ (2), length: 36 + Msg-Version: 0, length: 28 + Service Type: Controlled Load (5), break bit not set, Service length: 24 + Parameter ID: Token Bucket TSpec (127), length: 20, Flags: [0x00] + Token Bucket Rate: 0 Mbps + Token Bucket Size: 0 bytes + Peak Data Rate: 0 Mbps + Minimum Policed Unit: 0 bytes + Maximum Packet Size: 2147483647 bytes + FilterSpec Object (10) Flags: [reject if unknown], Class-Type: Tunnel IPv4 (7), length: 12 + Source Address: 1.1.1.1, LSP-ID: 0x0001 + Label Object (16) Flags: [reject if unknown], Class-Type: Label (1), length: 8 + Label: 200000 + RRO Object (21) Flags: [reject if unknown], Class-Type: IPv4 (1), length: 36 + Subobject Type: IPv4 prefix, length 8, Strict, 10.0.12.2/32, Flags: [none] + Subobject Type: Label, length 8, Flags: [Global] (0x1), Class-Type: IPv4 (1), 200000 + Subobject Type: IPv4 prefix, length 8, Strict, 10.0.23.3/32, Flags: [none] + Subobject Type: Label, length 8, Flags: [Global] (0x1), Class-Type: IPv4 (1), 300000 + 3 2024-12-21 22:27:13.516745 IP (tos 0xc0, ttl 255, id 18, offset 0, flags [none], proto RSVP (46), length 68) + 10.0.12.2 > 10.0.12.1: + RSVPv1 PathErr Message (3), Flags: [none], length: 48, ttl: 255, checksum: 0xbe6a + Session Object (1) Flags: [reject if unknown], Class-Type: Tunnel IPv4 (7), length: 16 + IPv4 Tunnel EndPoint: 3.3.3.3, Tunnel ID: 0x0001, Extended Tunnel ID: 1.1.1.1 + Error Spec Object (6) Flags: [reject if unknown], Class-Type: IPv4 (1), length: 12 + Error Node Address: 10.0.12.2, Flags: [0x00] + Error Code: Notify Error (25), Unknown Error Value (3) + Sender Template Object (11) Flags: [reject if unknown], Class-Type: Tunnel IPv4 (7), length: 12 + IPv4 Tunnel Sender Address: 1.1.1.1, LSP-ID: 0x0001 + 4 2024-12-21 22:27:13.518137 IP (tos 0xc0, ttl 255, id 39, offset 0, flags [none], proto RSVP (46), length 72, options (RA)) + 1.1.1.1 > 3.3.3.3: + RSVPv1 PathTear Message (5), Flags: [none], length: 48, ttl: 255, checksum: 0xc185 + Session Object (1) Flags: [reject if unknown], Class-Type: Tunnel IPv4 (7), length: 16 + IPv4 Tunnel EndPoint: 3.3.3.3, Tunnel ID: 0x0001, Extended Tunnel ID: 1.1.1.1 + RSVP Hop Object (3) Flags: [reject if unknown], Class-Type: IPv4 (1), length: 12 + Previous/Next Interface: 10.0.12.1, Logical Interface Handle: 0x00000000 + Sender Template Object (11) Flags: [reject if unknown], Class-Type: Tunnel IPv4 (7), length: 12 + IPv4 Tunnel Sender Address: 1.1.1.1, LSP-ID: 0x0001 + 5 2024-12-21 22:27:13.519923 IP (tos 0xc0, ttl 255, id 63, offset 0, flags [none], proto RSVP (46), length 76) + 10.0.12.2 > 10.0.12.1: + RSVPv1 ResvTear Message (6), Flags: [none], length: 56, ttl: 255, checksum: 0xba60 + Session Object (1) Flags: [reject if unknown], Class-Type: Tunnel IPv4 (7), length: 16 + IPv4 Tunnel EndPoint: 3.3.3.3, Tunnel ID: 0x0001, Extended Tunnel ID: 1.1.1.1 + RSVP Hop Object (3) Flags: [reject if unknown], Class-Type: IPv4 (1), length: 12 + Previous/Next Interface: 10.0.12.2, Logical Interface Handle: 0x00000000 + Style Object (8) Flags: [reject if unknown], Class-Type: 1 (1), length: 8 + Reservation Style: Shared Explicit, Flags: [0x00] + FilterSpec Object (10) Flags: [reject if unknown], Class-Type: Tunnel IPv4 (7), length: 12 + Source Address: 1.1.1.1, LSP-ID: 0x0001 + 6 2024-12-21 22:27:13.521828 IP (tos 0xc0, ttl 255, id 0, offset 0, flags [none], proto RSVP (46), length 224, options (RA)) + 1.1.1.1 > 3.3.3.3: + RSVPv1 Path Message (1), Flags: [none], length: 200, ttl: 255, checksum: 0x88ac + Session Object (1) Flags: [reject if unknown], Class-Type: IPv4 P2MP LSP Tunnel (13), length: 16 + IPv4 P2MP LSP ID: 1.49.45.0, Tunnel ID: 0x0001, Extended Tunnel ID: 1.1.1.1 + RSVP Hop Object (3) Flags: [reject if unknown], Class-Type: IPv4 (1), length: 12 + Previous/Next Interface: 10.0.12.1, Logical Interface Handle: 0x00000000 + Time Values Object (5) Flags: [reject if unknown], Class-Type: 1 (1), length: 8 + Refresh Period: 30000ms + ERO Object (20) Flags: [reject if unknown], Class-Type: IPv4 (1), length: 20 + Subobject Type: IPv4 prefix, length 8, Strict, 10.0.12.2/32, Flags: [none] + Subobject Type: IPv4 prefix, length 8, Strict, 10.0.23.3/32, Flags: [none] + Label Request Object (19) Flags: [reject if unknown], Class-Type: without label range (1), length: 8 + L3 Protocol ID: IPv4 + Session Attribute Object (207) Flags: [ignore and forward if unknown], Class-Type: Tunnel IPv4 (7), length: 24 + Session Name: TestTunnelP2mp + Setup Priority: 7, Holding Priority: 0, Flags: [Label Recording, SE Style] (0x46) + Sender Template Object (11) Flags: [reject if unknown], Class-Type: IPv4 P2MP LSP Tunnel (12), length: 20 + IPv4 Tunnel Sender Address: 1.1.1.1, LSP ID: 0x0001 + Sub-Group Originator ID: 1.1.1.1, Sub-Group ID: 0x0000 + Sender TSpec Object (12) Flags: [reject if unknown], Class-Type: IntServ (2), length: 36 + Msg-Version: 0, length: 28 + Service Type: Default/Global Information (1), break bit not set, Service length: 24 + Parameter ID: Token Bucket TSpec (127), length: 20, Flags: [0x00] + Token Bucket Rate: 0 Mbps + Token Bucket Size: 0 bytes + Peak Data Rate: 0 Mbps + Minimum Policed Unit: 0 bytes + Maximum Packet Size: 2147483647 bytes + RRO Object (21) Flags: [reject if unknown], Class-Type: IPv4 (1), length: 12 + Subobject Type: IPv4 prefix, length 8, Strict, 10.0.12.1/32, Flags: [none] + Sub-LSP to LSP Object (50) Flags: [reject if unknown], Class-Type: IPv4 sub-LSP (1), length: 8 + Sub-LSP destination address: 3.3.3.3 + Sub-LSP to LSP Object (50) Flags: [reject if unknown], Class-Type: IPv4 sub-LSP (1), length: 8 + Sub-LSP destination address: 4.4.4.4 + Unknown Object (200) Flags: [ignore and forward if unknown], Class-Type: Unknown (2), length: 20 + 0x0000: 0108 0a00 1703 2000 0108 0a00 2204 2000 + 7 2024-12-21 22:27:13.532254 IP (tos 0xc0, ttl 253, id 1, offset 0, flags [none], proto RSVP (46), length 224) + 10.0.12.2 > 10.0.12.1: + RSVPv1 Resv Message (2), Flags: [none], length: 204, ttl: 253, checksum: 0x3483 + Session Object (1) Flags: [reject if unknown], Class-Type: IPv4 P2MP LSP Tunnel (13), length: 16 + IPv4 P2MP LSP ID: 1.49.45.0, Tunnel ID: 0x0001, Extended Tunnel ID: 1.1.1.1 + RSVP Hop Object (3) Flags: [reject if unknown], Class-Type: IPv4 (1), length: 12 + Previous/Next Interface: 10.0.12.2, Logical Interface Handle: 0x00000000 + Time Values Object (5) Flags: [reject if unknown], Class-Type: 1 (1), length: 8 + Refresh Period: 30000ms + Style Object (8) Flags: [reject if unknown], Class-Type: 1 (1), length: 8 + Reservation Style: Shared Explicit, Flags: [0x00] + Flowspec Object (9) Flags: [reject if unknown], Class-Type: IntServ (2), length: 36 + Msg-Version: 0, length: 28 + Service Type: Controlled Load (5), break bit not set, Service length: 24 + Parameter ID: Token Bucket TSpec (127), length: 20, Flags: [0x00] + Token Bucket Rate: 0 Mbps + Token Bucket Size: 0 bytes + Peak Data Rate: 0 Mbps + Minimum Policed Unit: 0 bytes + Maximum Packet Size: 2147483647 bytes + FilterSpec Object (10) Flags: [reject if unknown], Class-Type: IPv4 P2MP LSP Tunnel (12), length: 20 + IPv4 Tunnel Sender Address: 1.1.1.1, LSP ID: 0x0001 + Sub-Group Originator ID: 1.1.1.1, Sub-Group ID: 0x0000 + Label Object (16) Flags: [reject if unknown], Class-Type: Label (1), length: 8 + Label: 200000 + RRO Object (21) Flags: [reject if unknown], Class-Type: IPv4 (1), length: 36 + Subobject Type: IPv4 prefix, length 8, Strict, 10.0.12.2/32, Flags: [none] + Subobject Type: Label, length 8, Flags: [Global] (0x1), Class-Type: IPv4 (1), 200000 + Subobject Type: IPv4 prefix, length 8, Strict, 10.0.23.3/32, Flags: [none] + Subobject Type: Label, length 8, Flags: [Global] (0x1), Class-Type: IPv4 (1), 300000 + Sub-LSP to LSP Object (50) Flags: [reject if unknown], Class-Type: IPv4 sub-LSP (1), length: 8 + Sub-LSP destination address: 3.3.3.3 + Sub-LSP to LSP Object (50) Flags: [reject if unknown], Class-Type: IPv4 sub-LSP (1), length: 8 + Sub-LSP destination address: 4.4.4.4 + Unknown Object (201) Flags: [ignore and forward if unknown], Class-Type: Unknown (2), length: 36 + 0x0000: 0108 0a00 1703 2000 0308 0101 0004 93e0 + 0x0010: 0108 0a00 2204 2000 0308 0101 0006 1a80 + 8 2024-12-21 22:27:13.540508 IP (tos 0xc0, ttl 255, id 18, offset 0, flags [none], proto RSVP (46), length 92) + 10.0.12.2 > 10.0.12.1: + RSVPv1 PathErr Message (3), Flags: [none], length: 72, ttl: 255, checksum: 0x21f2 + Session Object (1) Flags: [reject if unknown], Class-Type: IPv4 P2MP LSP Tunnel (13), length: 16 + IPv4 P2MP LSP ID: 1.49.45.0, Tunnel ID: 0x0001, Extended Tunnel ID: 1.1.1.1 + Error Spec Object (6) Flags: [reject if unknown], Class-Type: IPv4 (1), length: 12 + Error Node Address: 10.0.12.2, Flags: [0x00] + Error Code: Notify Error (25), Unknown Error Value (3) + Sender Template Object (11) Flags: [reject if unknown], Class-Type: IPv4 P2MP LSP Tunnel (12), length: 20 + IPv4 Tunnel Sender Address: 1.1.1.1, LSP ID: 0x0001 + Sub-Group Originator ID: 1.1.1.1, Sub-Group ID: 0x0000 + Sub-LSP to LSP Object (50) Flags: [reject if unknown], Class-Type: IPv4 sub-LSP (1), length: 8 + Sub-LSP destination address: 3.3.3.3 + Sub-LSP to LSP Object (50) Flags: [reject if unknown], Class-Type: IPv4 sub-LSP (1), length: 8 + Sub-LSP destination address: 4.4.4.4 + 9 2024-12-21 22:27:13.543048 IP (tos 0xc0, ttl 255, id 39, offset 0, flags [none], proto RSVP (46), length 96, options (RA)) + 1.1.1.1 > 3.3.3.3: + RSVPv1 PathTear Message (5), Flags: [none], length: 72, ttl: 255, checksum: 0x250d + Session Object (1) Flags: [reject if unknown], Class-Type: IPv4 P2MP LSP Tunnel (13), length: 16 + IPv4 P2MP LSP ID: 1.49.45.0, Tunnel ID: 0x0001, Extended Tunnel ID: 1.1.1.1 + RSVP Hop Object (3) Flags: [reject if unknown], Class-Type: IPv4 (1), length: 12 + Previous/Next Interface: 10.0.12.1, Logical Interface Handle: 0x00000000 + Sender Template Object (11) Flags: [reject if unknown], Class-Type: IPv4 P2MP LSP Tunnel (12), length: 20 + IPv4 Tunnel Sender Address: 1.1.1.1, LSP ID: 0x0001 + Sub-Group Originator ID: 1.1.1.1, Sub-Group ID: 0x0000 + Sub-LSP to LSP Object (50) Flags: [reject if unknown], Class-Type: IPv4 sub-LSP (1), length: 8 + Sub-LSP destination address: 3.3.3.3 + Sub-LSP to LSP Object (50) Flags: [reject if unknown], Class-Type: IPv4 sub-LSP (1), length: 8 + Sub-LSP destination address: 4.4.4.4 + 10 2024-12-21 22:27:13.546156 IP (tos 0xc0, ttl 255, id 63, offset 0, flags [none], proto RSVP (46), length 100) + 10.0.12.2 > 10.0.12.1: + RSVPv1 ResvTear Message (6), Flags: [none], length: 80, ttl: 255, checksum: 0x1de8 + Session Object (1) Flags: [reject if unknown], Class-Type: IPv4 P2MP LSP Tunnel (13), length: 16 + IPv4 P2MP LSP ID: 1.49.45.0, Tunnel ID: 0x0001, Extended Tunnel ID: 1.1.1.1 + RSVP Hop Object (3) Flags: [reject if unknown], Class-Type: IPv4 (1), length: 12 + Previous/Next Interface: 10.0.12.2, Logical Interface Handle: 0x00000000 + Style Object (8) Flags: [reject if unknown], Class-Type: 1 (1), length: 8 + Reservation Style: Shared Explicit, Flags: [0x00] + FilterSpec Object (10) Flags: [reject if unknown], Class-Type: IPv4 P2MP LSP Tunnel (12), length: 20 + IPv4 Tunnel Sender Address: 1.1.1.1, LSP ID: 0x0001 + Sub-Group Originator ID: 1.1.1.1, Sub-Group ID: 0x0000 + Sub-LSP to LSP Object (50) Flags: [reject if unknown], Class-Type: IPv4 sub-LSP (1), length: 8 + Sub-LSP destination address: 3.3.3.3 + Sub-LSP to LSP Object (50) Flags: [reject if unknown], Class-Type: IPv4 sub-LSP (1), length: 8 + Sub-LSP destination address: 4.4.4.4 diff --git a/tests/rsvp_session.pcap b/tests/rsvp_session.pcap new file mode 100644 index 0000000000000000000000000000000000000000..96c78fd6f039f342c5131f81b339f973c68d7978 GIT binary patch literal 1620 zcmbVLJ!lj`7=5#QcQao0_ulvE?ZRUZ z8N{pE1e8214Ngw>KG%37{~3Vq*l``_yD}noNza(cnZGPH4;l;d5knZ+ddSP*)FPgc_*&omMb^Y> zi{95SYry;lY>3`sV+^zHKzW<3O3L|1RrwYRQ&jK^gD6LpN;iBX9g}x)SL}1 z`=QLbF>Cvr+jpJX zk5&w7(p-k)ve9T-9wqGkgFi+0s>?n#EuFOcOA8`bPaD()li|2-ESjQgbU|y14i`G3 nr>5vX(WlNCTozo0!+SiMu3Ex7*Zo6~hh5$srmLfp?Oyx?n4hV? literal 0 HcmV?d00001 From 2d6fb5a0358a06bfa0ff0f7ac1b554c18733de39 Mon Sep 17 00:00:00 2001 From: Martin Stigge Date: Sat, 21 Dec 2024 23:36:26 +0100 Subject: [PATCH 2/3] RSVP: Adjust P2MP ID rendering to more common hex format. The P2MP ID is typically denoted as a single value, either in decimal or in hexadecimal format. The 4-octet notation is quite uncommon and I believe this was just a mistake in the code since the IPv6 version 11 lines above uses a hexadecimal notation instead. I'm also using this opportunity to change the name from "P2MP LSP ID" to "P2MP ID" since that's more correct. The term "LSP ID" has a well-defined meaning in the RSVP protocol and is something else than the P2MP ID. The BGP dissector uses the term P2MP ID as well for the same value (and shows it in hexadecimal format). --- print-rsvp.c | 6 +++--- tests/rsvp_session.out | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/print-rsvp.c b/print-rsvp.c index 14c52f13b..9bc145947 100644 --- a/print-rsvp.c +++ b/print-rsvp.c @@ -777,7 +777,7 @@ rsvp_obj_print(netdissect_options *ndo, case RSVP_CTYPE_14: /* IPv6 p2mp LSP Tunnel */ if (obj_tlen < 26) goto obj_tooshort; - ND_PRINT("%s IPv6 P2MP LSP ID: 0x%08x, Tunnel ID: 0x%04x, Extended Tunnel ID: %s", + ND_PRINT("%s IPv6 P2MP ID: 0x%08x, Tunnel ID: 0x%04x, Extended Tunnel ID: %s", indent, GET_BE_U_4(obj_tptr), GET_BE_U_2(obj_tptr + 6), @@ -788,9 +788,9 @@ rsvp_obj_print(netdissect_options *ndo, case RSVP_CTYPE_13: /* IPv4 p2mp LSP Tunnel */ if (obj_tlen < 12) goto obj_tooshort; - ND_PRINT("%s IPv4 P2MP LSP ID: %s, Tunnel ID: 0x%04x, Extended Tunnel ID: %s", + ND_PRINT("%s IPv4 P2MP ID: 0x%08x, Tunnel ID: 0x%04x, Extended Tunnel ID: %s", indent, - GET_IPADDR_STRING(obj_tptr), + GET_BE_U_4(obj_tptr), GET_BE_U_2(obj_tptr + 6), GET_IPADDR_STRING(obj_tptr + 8)); obj_tlen-=12; diff --git a/tests/rsvp_session.out b/tests/rsvp_session.out index 157cd6a4a..94d9fa2af 100644 --- a/tests/rsvp_session.out +++ b/tests/rsvp_session.out @@ -91,7 +91,7 @@ 1.1.1.1 > 3.3.3.3: RSVPv1 Path Message (1), Flags: [none], length: 200, ttl: 255, checksum: 0x88ac Session Object (1) Flags: [reject if unknown], Class-Type: IPv4 P2MP LSP Tunnel (13), length: 16 - IPv4 P2MP LSP ID: 1.49.45.0, Tunnel ID: 0x0001, Extended Tunnel ID: 1.1.1.1 + IPv4 P2MP ID: 0x01312d00, Tunnel ID: 0x0001, Extended Tunnel ID: 1.1.1.1 RSVP Hop Object (3) Flags: [reject if unknown], Class-Type: IPv4 (1), length: 12 Previous/Next Interface: 10.0.12.1, Logical Interface Handle: 0x00000000 Time Values Object (5) Flags: [reject if unknown], Class-Type: 1 (1), length: 8 @@ -128,7 +128,7 @@ 10.0.12.2 > 10.0.12.1: RSVPv1 Resv Message (2), Flags: [none], length: 204, ttl: 253, checksum: 0x3483 Session Object (1) Flags: [reject if unknown], Class-Type: IPv4 P2MP LSP Tunnel (13), length: 16 - IPv4 P2MP LSP ID: 1.49.45.0, Tunnel ID: 0x0001, Extended Tunnel ID: 1.1.1.1 + IPv4 P2MP ID: 0x01312d00, Tunnel ID: 0x0001, Extended Tunnel ID: 1.1.1.1 RSVP Hop Object (3) Flags: [reject if unknown], Class-Type: IPv4 (1), length: 12 Previous/Next Interface: 10.0.12.2, Logical Interface Handle: 0x00000000 Time Values Object (5) Flags: [reject if unknown], Class-Type: 1 (1), length: 8 @@ -165,7 +165,7 @@ 10.0.12.2 > 10.0.12.1: RSVPv1 PathErr Message (3), Flags: [none], length: 72, ttl: 255, checksum: 0x21f2 Session Object (1) Flags: [reject if unknown], Class-Type: IPv4 P2MP LSP Tunnel (13), length: 16 - IPv4 P2MP LSP ID: 1.49.45.0, Tunnel ID: 0x0001, Extended Tunnel ID: 1.1.1.1 + IPv4 P2MP ID: 0x01312d00, Tunnel ID: 0x0001, Extended Tunnel ID: 1.1.1.1 Error Spec Object (6) Flags: [reject if unknown], Class-Type: IPv4 (1), length: 12 Error Node Address: 10.0.12.2, Flags: [0x00] Error Code: Notify Error (25), Unknown Error Value (3) @@ -180,7 +180,7 @@ 1.1.1.1 > 3.3.3.3: RSVPv1 PathTear Message (5), Flags: [none], length: 72, ttl: 255, checksum: 0x250d Session Object (1) Flags: [reject if unknown], Class-Type: IPv4 P2MP LSP Tunnel (13), length: 16 - IPv4 P2MP LSP ID: 1.49.45.0, Tunnel ID: 0x0001, Extended Tunnel ID: 1.1.1.1 + IPv4 P2MP ID: 0x01312d00, Tunnel ID: 0x0001, Extended Tunnel ID: 1.1.1.1 RSVP Hop Object (3) Flags: [reject if unknown], Class-Type: IPv4 (1), length: 12 Previous/Next Interface: 10.0.12.1, Logical Interface Handle: 0x00000000 Sender Template Object (11) Flags: [reject if unknown], Class-Type: IPv4 P2MP LSP Tunnel (12), length: 20 @@ -194,7 +194,7 @@ 10.0.12.2 > 10.0.12.1: RSVPv1 ResvTear Message (6), Flags: [none], length: 80, ttl: 255, checksum: 0x1de8 Session Object (1) Flags: [reject if unknown], Class-Type: IPv4 P2MP LSP Tunnel (13), length: 16 - IPv4 P2MP LSP ID: 1.49.45.0, Tunnel ID: 0x0001, Extended Tunnel ID: 1.1.1.1 + IPv4 P2MP ID: 0x01312d00, Tunnel ID: 0x0001, Extended Tunnel ID: 1.1.1.1 RSVP Hop Object (3) Flags: [reject if unknown], Class-Type: IPv4 (1), length: 12 Previous/Next Interface: 10.0.12.2, Logical Interface Handle: 0x00000000 Style Object (8) Flags: [reject if unknown], Class-Type: 1 (1), length: 8 From c9843f61cace043a8fd2c37acfb7338dcf1108fd Mon Sep 17 00:00:00 2001 From: Martin Stigge Date: Sun, 22 Dec 2024 15:02:23 +0100 Subject: [PATCH 3/3] RSVP: Add support for P2MP Secondary ERO and RRO. The code can just re-use the printer of the P2P ERO and RRO. However, for P2MP the C-Type is 2, which make the check a little cumbersome: We can only do the printing of the sub-objects if either we are dealing with a P2P ERO/RRO having C-Type 1 (indicating IPv4), or if we are dealing with a P2MP ERO/RRO having C-Type 2 (indicating P2MP). --- print-rsvp.c | 17 +++++++++++++---- tests/rsvp_session.out | 13 ++++++++----- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/print-rsvp.c b/print-rsvp.c index 9bc145947..ec0d0b02f 100644 --- a/print-rsvp.c +++ b/print-rsvp.c @@ -155,6 +155,8 @@ static const struct tok rsvp_obj_capability_flag_values[] = { #define RSVP_OBJ_CAPABILITY 134 /* rfc5063 */ #define RSVP_OBJ_NOTIFY_REQ 195 /* rfc3473 */ #define RSVP_OBJ_ADMIN_STATUS 196 /* rfc3473 */ +#define RSVP_OBJ_SERO 200 /* rfc4875 */ +#define RSVP_OBJ_SRRO 201 /* rfc4875 */ #define RSVP_OBJ_PROPERTIES 204 /* juniper proprietary */ #define RSVP_OBJ_FASTREROUTE 205 /* rfc4090 */ #define RSVP_OBJ_SESSION_ATTRIBUTE 207 /* rfc3209 */ @@ -205,6 +207,8 @@ static const struct tok rsvp_obj_values[] = { { RSVP_OBJ_PROTECTION, "Protection" }, { RSVP_OBJ_ADMIN_STATUS, "Administrative Status" }, { RSVP_OBJ_S2L, "Sub-LSP to LSP" }, + { RSVP_OBJ_SERO, "Secondary ERO" }, + { RSVP_OBJ_SRRO, "Secondary RRO" }, { 0, NULL} }; @@ -301,6 +305,8 @@ static const struct tok rsvp_ctype_values[] = { { 256*RSVP_OBJ_GENERALIZED_UNI+RSVP_CTYPE_1, "1" }, { 256*RSVP_OBJ_S2L+RSVP_CTYPE_IPV4, "IPv4 sub-LSP" }, { 256*RSVP_OBJ_S2L+RSVP_CTYPE_IPV6, "IPv6 sub-LSP" }, + { 256*RSVP_OBJ_SERO+RSVP_CTYPE_2, "P2MP" }, + { 256*RSVP_OBJ_SRRO+RSVP_CTYPE_2, "P2MP" }, { 0, NULL} }; @@ -1065,8 +1071,12 @@ rsvp_obj_print(netdissect_options *ndo, case RSVP_OBJ_RRO: case RSVP_OBJ_ERO: - switch(rsvp_obj_ctype) { - case RSVP_CTYPE_IPV4: + case RSVP_OBJ_SRRO: + case RSVP_OBJ_SERO: + if (((rsvp_obj_class_num == RSVP_OBJ_RRO || rsvp_obj_class_num == RSVP_OBJ_ERO) && + rsvp_obj_ctype == RSVP_CTYPE_IPV4) || + ((rsvp_obj_class_num == RSVP_OBJ_SRRO || rsvp_obj_class_num == RSVP_OBJ_SERO) && + rsvp_obj_ctype == RSVP_CTYPE_2)) { while(obj_tlen >= 4 ) { u_char length; @@ -1130,8 +1140,7 @@ rsvp_obj_print(netdissect_options *ndo, obj_tlen-=length; obj_tptr+=length; } - break; - default: + } else { hexdump=TRUE; } break; diff --git a/tests/rsvp_session.out b/tests/rsvp_session.out index 94d9fa2af..bd8e9e165 100644 --- a/tests/rsvp_session.out +++ b/tests/rsvp_session.out @@ -122,8 +122,9 @@ Sub-LSP destination address: 3.3.3.3 Sub-LSP to LSP Object (50) Flags: [reject if unknown], Class-Type: IPv4 sub-LSP (1), length: 8 Sub-LSP destination address: 4.4.4.4 - Unknown Object (200) Flags: [ignore and forward if unknown], Class-Type: Unknown (2), length: 20 - 0x0000: 0108 0a00 1703 2000 0108 0a00 2204 2000 + Secondary ERO Object (200) Flags: [ignore and forward if unknown], Class-Type: P2MP (2), length: 20 + Subobject Type: IPv4 prefix, length 8, Strict, 10.0.23.3/32, Flags: [none] + Subobject Type: IPv4 prefix, length 8, Strict, 10.0.34.4/32, Flags: [none] 7 2024-12-21 22:27:13.532254 IP (tos 0xc0, ttl 253, id 1, offset 0, flags [none], proto RSVP (46), length 224) 10.0.12.2 > 10.0.12.1: RSVPv1 Resv Message (2), Flags: [none], length: 204, ttl: 253, checksum: 0x3483 @@ -158,9 +159,11 @@ Sub-LSP destination address: 3.3.3.3 Sub-LSP to LSP Object (50) Flags: [reject if unknown], Class-Type: IPv4 sub-LSP (1), length: 8 Sub-LSP destination address: 4.4.4.4 - Unknown Object (201) Flags: [ignore and forward if unknown], Class-Type: Unknown (2), length: 36 - 0x0000: 0108 0a00 1703 2000 0308 0101 0004 93e0 - 0x0010: 0108 0a00 2204 2000 0308 0101 0006 1a80 + Secondary RRO Object (201) Flags: [ignore and forward if unknown], Class-Type: P2MP (2), length: 36 + Subobject Type: IPv4 prefix, length 8, Strict, 10.0.23.3/32, Flags: [none] + Subobject Type: Label, length 8, Flags: [Global] (0x1), Class-Type: IPv4 (1), 300000 + Subobject Type: IPv4 prefix, length 8, Strict, 10.0.34.4/32, Flags: [none] + Subobject Type: Label, length 8, Flags: [Global] (0x1), Class-Type: IPv4 (1), 400000 8 2024-12-21 22:27:13.540508 IP (tos 0xc0, ttl 255, id 18, offset 0, flags [none], proto RSVP (46), length 92) 10.0.12.2 > 10.0.12.1: RSVPv1 PathErr Message (3), Flags: [none], length: 72, ttl: 255, checksum: 0x21f2