Skip to content

Commit dbca207

Browse files
committed
pgm: support either 0x0b or 0x0d as a PGMCC ACK.
This supports 0x0b, Wireshark supports 0x0d. At least one capture uses 0x0d; 0x0b is either a typo or there's a capture out there that uses it - I'll assume there is, for now. Support both. While we're at it, indicate that the PGM spec is RFC 3208, and indicate the dire state of documentation of the on-the-wire format for PGMCC.
1 parent c416618 commit dbca207

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

print-pgm.c

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,20 @@
1515

1616
/* \summary: Pragmatic General Multicast (PGM) printer */
1717

18+
/* specification: RFC 3208
19+
20+
Plus https://dl.acm.org/doi/pdf/10.1145/347057.347390 for PGMCC,
21+
whence the ACK packet type comes; there are some I-Ds for PGMCC,
22+
draft-ietf-rmt-bb-pgmcc-00 through draft-ietf-rmt-bb-pgmcc-03,
23+
but none of them give any description of the packet-level
24+
changes to PGM, unlike the paper in question, which merely gives
25+
an *insufficient* description of said changes. In particular,
26+
it doesn't indicate what the packet type code for ACK is.
27+
28+
This uses 0x0b as the packet type code; Wireshark uses 0x0d.
29+
At least one capture appears to use 0x0d, so we use *both*,
30+
treating *either one* as a PGMCC ACK. */
31+
1832
#ifdef HAVE_CONFIG_H
1933
#include <config.h>
2034
#endif
@@ -104,8 +118,9 @@ typedef enum _pgm_type {
104118
PGM_NAK = 0x08, /* NAK */
105119
PGM_NULLNAK = 0x09, /* Null NAK */
106120
PGM_NCF = 0x0a, /* NAK Confirmation */
107-
PGM_ACK = 0x0b, /* ACK for congestion control */
108-
PGM_SPMR = 0x0c /* SPM request */
121+
PGM_ACK = 0x0b, /* ACK for congestion control? */
122+
PGM_SPMR = 0x0c, /* SPM request */
123+
PGM_ACK2 = 0x0d, /* Also ACK for congestion control? */
109124
} pgm_type;
110125

111126
#define PGM_OPT_BIT_PRESENT 0x01
@@ -396,7 +411,8 @@ pgm_print(netdissect_options *ndo,
396411
break;
397412
}
398413

399-
case PGM_ACK: {
414+
case PGM_ACK:
415+
case PGM_ACK2: {
400416
const struct pgm_ack *ack;
401417

402418
ack = (const struct pgm_ack *)bp;

0 commit comments

Comments
 (0)