diff --git a/print-mpls.c b/print-mpls.c index 62b79957..e375c84a 100644 --- a/print-mpls.c +++ b/print-mpls.c @@ -50,7 +50,8 @@ enum mpls_packet_type { PT_UNKNOWN, PT_IPV4, PT_IPV6, - PT_OSI + PT_OSI, + PT_ETHER }; /* @@ -174,6 +175,15 @@ mpls_print(netdissect_options *ndo, const u_char *bp, u_int length) pt = PT_OSI; break; + case 0x00: /* RFC 4448 PW Ethernet Control Word */ + ND_PRINT("\n\tPW Ethernet Control Word"); + p += 2; + ND_PRINT(", Sequence Number %u", GET_BE_U_2(p)); + p += 2; + length -= 4; + pt = PT_ETHER; + break; + default: /* ok bail out - we did not figure out what it is*/ break; @@ -203,6 +213,10 @@ mpls_print(netdissect_options *ndo, const u_char *bp, u_int length) isoclns_print(ndo, p, length); break; + case PT_ETHER: + ether_print(ndo, p, length, ND_BYTES_AVAILABLE_AFTER(bp), NULL, NULL); + break; + default: break; }