--- Begin Message ---
Hi,
On Thu, May 07, 2020 at 08:20:40AM +0200, Francois-Xavier Le Bail wrote:
> Proposed patch attached.
>
> With new '-T mplsethnocw' option to force 'Ethernet without Control Word'
> decode.
> (from Francesco Fondelli comment)
There's one bug here:
> + case 0x00: /* RFC 4448 PW Ethernet Control Word */
> + if (ndo->ndo_vflag) {
> + ND_PRINT("\n\tPW Ethernet Control
> Word");
> + p += 2;
> + ND_PRINT(", Sequence Number %u",
> GET_BE_U_2(p));
> + p += 2;
> + } else
> + ND_PRINT(" PWETHCW");
> + p += 4;
> + length -= 4;
Due to missing {}, the "p += 4" will always be executed, skipping the
control word twice if "-v" is set.
I'd totally leave off printing the "PWETHCW", though. If it's decoding the
payload, that is all information I need - if I want more, I can always
do "-v".
So the code would become:
+ case 0x00: /* RFC 4448 PW Ethernet Control Word */
+ if (ndo->ndo_vflag) {
+ ND_PRINT("\n\tPW Ethernet Control
Word");
+ ND_PRINT(", Sequence Number %u",
GET_BE_U_2(p+2));
+ }
+ p += 4;
+ length -= 4;
+ pt = PT_ETHER;
+ break;
There's something else:
+ case PT_ETHER:
+ ether_print(ndo, p, length, ND_BYTES_AVAILABLE_AFTER(bp), NULL,
NULL);
This might actually be a bug in my original patch, ND_BYTES_AVAILABLE_AFTER()
should possibly call "(p)", not "(bp)". Copy-pasted that line from
print-gre.c, and only changed the first "bp" to "p.
gert
--
"If was one thing all people took for granted, was conviction that if you
feed honest figures into a computer, honest figures come out. Never doubted
it myself till I met a computer with a sense of humor."
Robert A. Heinlein, The Moon is a Harsh Mistress
Gert Doering - Munich, Germany g...@greenie.muc.de
--- End Message ---
_______________________________________________
tcpdump-workers mailing list
tcpdump-workers@lists.tcpdump.org
https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers