X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/57bfcb4ebe253111f5d0c12e2269846678306c2a..05ec05a87b3a7c6983a16b5ae62d0f1512c4ce89:/print-ip.c diff --git a/print-ip.c b/print-ip.c index d2df0a89..494eb295 100644 --- a/print-ip.c +++ b/print-ip.c @@ -350,7 +350,7 @@ again: ipds->nh = enh & 0xff; goto again; } - + case IPPROTO_IPCOMP: { int enh; @@ -370,25 +370,25 @@ again: case IPPROTO_DCCP: dccp_print(ipds->cp, (const u_char *)ipds->ip, ipds->len); break; - + case IPPROTO_TCP: /* pass on the MF bit plus the offset to detect fragments */ tcp_print(ipds->cp, ipds->len, (const u_char *)ipds->ip, ipds->off & (IP_MF|IP_OFFMASK)); break; - + case IPPROTO_UDP: /* pass on the MF bit plus the offset to detect fragments */ udp_print(ipds->cp, ipds->len, (const u_char *)ipds->ip, ipds->off & (IP_MF|IP_OFFMASK)); break; - + case IPPROTO_ICMP: /* pass on the MF bit plus the offset to detect fragments */ icmp_print(ipds->cp, ipds->len, (const u_char *)ipds->ip, ipds->off & (IP_MF|IP_OFFMASK)); break; - + case IPPROTO_PIGP: /* * XXX - the current IANA protocol number assignments @@ -405,11 +405,11 @@ again: */ igrp_print(ipds->cp, ipds->len, (const u_char *)ipds->ip); break; - + case IPPROTO_EIGRP: eigrp_print(ipds->cp, ipds->len); break; - + case IPPROTO_ND: ND_PRINT((ndo, " nd %d", ipds->len)); break; @@ -434,7 +434,7 @@ again: return; } break; - + #ifdef INET6 case IPPROTO_IPV6: /* ip6-in-ip encapsulation */ @@ -462,7 +462,19 @@ again: break; case IPPROTO_VRRP: - vrrp_print(ipds->cp, ipds->len, ipds->ip->ip_ttl); + if (packettype == PT_CARP) { + if (vflag) + (void)printf("carp %s > %s: ", + ipaddr_string(&ipds->ip->ip_src), + ipaddr_string(&ipds->ip->ip_dst)); + carp_print(ipds->cp, ipds->len, ipds->ip->ip_ttl); + } else { + if (vflag) + (void)printf("vrrp %s > %s: ", + ipaddr_string(&ipds->ip->ip_src), + ipaddr_string(&ipds->ip->ip_dst)); + vrrp_print(ipds->cp, ipds->len, ipds->ip->ip_ttl); + } break; case IPPROTO_PGM: @@ -470,7 +482,7 @@ again: break; default: - if ((proto = getprotobynumber(ipds->nh)) != NULL) + if (ndo->ndo_nflag==0 && (proto = getprotobynumber(ipds->nh)) != NULL) ND_PRINT((ndo, " %s", proto->p_name)); else ND_PRINT((ndo, " ip-proto-%d", ipds->nh)); @@ -478,7 +490,7 @@ again: break; } } - + void ip_print_inner(netdissect_options *ndo, const u_char *bp, @@ -585,7 +597,7 @@ ip_print(netdissect_options *ndo, } if (ipds->ip->ip_ttl >= 1) - (void)printf(", ttl %u", ipds->ip->ip_ttl); + (void)printf(", ttl %u", ipds->ip->ip_ttl); /* * for the firewall guys, print id, offset. @@ -649,11 +661,11 @@ ip_print(netdissect_options *ndo, if (ipds->off & 0x1fff) { (void)printf("%s > %s:", ipaddr_string(&ipds->ip->ip_src), ipaddr_string(&ipds->ip->ip_dst)); - if ((proto = getprotobynumber(ipds->ip->ip_p)) != NULL) + if (!ndo->ndo_nflag && (proto = getprotobynumber(ipds->ip->ip_p)) != NULL) (void)printf(" %s", proto->p_name); else (void)printf(" ip-proto-%d", ipds->ip->ip_p); - } + } } }