/* \summary: IPv4/IPv6 payload printer */
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
#include "netdissect-stdinc.h"
-#include <string.h>
-
#include "netdissect.h"
#include "addrtoname.h"
#include "extract.h"
case IPPROTO_ICMP:
if (ver == 4)
- icmp_print(ndo, bp, length, iph, fragmented);
+ icmp_print(ndo, bp, length, fragmented);
else {
ND_PRINT("[%s requires IPv4]",
tok2str(ipproto_values,"unknown",nh));
* (used by Cisco for their IGRP)" and 88 as
* "EIGRP" from Cisco.
*
- * Recent BSD <netinet/in.h> headers define
- * IP_PROTO_PIGP as 9 and IP_PROTO_IGRP as 88.
- * We define IP_PROTO_PIGP as 9 and
- * IP_PROTO_EIGRP as 88; those names better
- * match was the current protocol number
- * assignments say.
+ * Recent FreeBSD, DragonFly BSD, and macOS <netinet/in.h>
+ * headers define IPPROTO_PIGP as 9 and IPPROTO_IGRP
+ * as 88. We define IPPROTO_PIGP ("private interior
+ * gateway protocol") as 9 and IPPROTO_EIGRP as 88;
+ * those names better match what the current protocol
+ * number assignments say.
*/
igrp_print(ndo, bp, length);
break;
if (ndo->ndo_packettype == PT_CARP) {
carp_print(ndo, bp, length, ttl_hl);
} else {
- vrrp_print(ndo, bp, length, iph, ttl_hl);
+ vrrp_print(ndo, bp, length, iph, ttl_hl, ver);
}
break;
pgm_print(ndo, bp, length, iph);
break;
+ case IPPROTO_ETHERNET:
+ if (ver == 6)
+ ether_print(ndo, bp, length, ND_BYTES_AVAILABLE_AFTER(bp), NULL, NULL);
+ else {
+ ND_PRINT("[%s requires IPv6]",
+ tok2str(ipproto_values,"unknown",nh));
+ nd_print_invalid(ndo);
+ }
+ break;
+
+ case IPPROTO_NHRP:
+ nhrp_print(ndo, bp, length);
+ break;
+
case IPPROTO_NONE:
ND_PRINT("no next header");
break;