/* \summary: Protocol Independent Multicast (PIM) printer */
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
#include "netdissect-stdinc.h"
#include "ip.h"
#include "ip6.h"
#include "ipproto.h"
+#include "af.h"
#define PIMV1_TYPE_QUERY 0
#define PIMV1_TYPE_REGISTER 1
/*
* XXX: We consider a case where IPv6 is not ready yet for portability,
- * but PIM dependent defintions should be independent of IPv6...
+ * but PIM dependent definitions should be independent of IPv6...
*/
struct pim {
return;
trunc:
nd_print_trunc(ndo);
- return;
}
void
trunc:
nd_print_trunc(ndo);
- return;
}
/*
trunc:
nd_print_trunc(ndo);
- return;
}
void
if (addr_len == 0) {
if (len < 2)
goto trunc;
- switch (GET_U_1(bp)) {
- case 1:
- af = AF_INET;
+ af = GET_U_1(bp);
+ switch (af) {
+ case AFNUM_IP:
addr_len = (u_int)sizeof(nd_ipv4);
break;
- case 2:
- af = AF_INET6;
+ case AFNUM_IP6:
addr_len = (u_int)sizeof(nd_ipv6);
break;
default:
} else {
switch (addr_len) {
case sizeof(nd_ipv4):
- af = AF_INET;
+ af = AFNUM_IP;
break;
case sizeof(nd_ipv6):
- af = AF_INET6;
+ af = AFNUM_IP6;
break;
default:
return -1;
- break;
}
hdrlen = 0;
}
if (len < addr_len)
goto trunc;
ND_TCHECK_LEN(bp, addr_len);
- if (af == AF_INET) {
+ if (af == AFNUM_IP) {
if (!silent)
ND_PRINT("%s", GET_IPADDR_STRING(bp));
- }
- else if (af == AF_INET6) {
+ } else if (af == AFNUM_IP6) {
if (!silent)
ND_PRINT("%s", GET_IP6ADDR_STRING(bp));
}
if (len < addr_len + 2)
goto trunc;
ND_TCHECK_LEN(bp, addr_len + 2);
- if (af == AF_INET) {
+ if (af == AFNUM_IP) {
if (!silent) {
ND_PRINT("%s", GET_IPADDR_STRING(bp + 2));
if (GET_U_1(bp + 1) != 32)
ND_PRINT("/%u", GET_U_1(bp + 1));
}
- }
- else if (af == AF_INET6) {
+ } else if (af == AFNUM_IP6) {
if (!silent) {
ND_PRINT("%s", GET_IP6ADDR_STRING(bp + 2));
if (GET_U_1(bp + 1) != 128)
case PIMV2_TYPE_HELLO:
{
uint16_t otype, olen;
- while (len > 0) {
+ while (len != 0) {
if (len < 4)
goto trunc;
otype = GET_BE_U_2(bp);
ND_PRINT("[option length %u != 4]", olen);
nd_print_invalid(ndo);
return;
- break;
}
break;