if (!ND_TTEST_2(tp->th_dport)) {
if (ip6) {
ND_PRINT("%s > %s:",
- ip6addr_string(ndo, ip6->ip6_src),
- ip6addr_string(ndo, ip6->ip6_dst));
+ GET_IP6ADDR_STRING(ip6->ip6_src),
+ GET_IP6ADDR_STRING(ip6->ip6_dst));
} else {
ND_PRINT("%s > %s:",
- ipaddr_string(ndo, ip->ip_src),
- ipaddr_string(ndo, ip->ip_dst));
+ GET_IPADDR_STRING(ip->ip_src),
+ GET_IPADDR_STRING(ip->ip_dst));
}
nd_print_trunc(ndo);
return;
if (ip6) {
if (GET_U_1(ip6->ip6_nxt) == IPPROTO_TCP) {
ND_PRINT("%s.%s > %s.%s: ",
- ip6addr_string(ndo, ip6->ip6_src),
+ GET_IP6ADDR_STRING(ip6->ip6_src),
tcpport_string(ndo, sport),
- ip6addr_string(ndo, ip6->ip6_dst),
+ GET_IP6ADDR_STRING(ip6->ip6_dst),
tcpport_string(ndo, dport));
} else {
ND_PRINT("%s > %s: ",
} else {
if (GET_U_1(ip->ip_p) == IPPROTO_TCP) {
ND_PRINT("%s.%s > %s.%s: ",
- ipaddr_string(ndo, ip->ip_src),
+ GET_IPADDR_STRING(ip->ip_src),
tcpport_string(ndo, sport),
- ipaddr_string(ndo, ip->ip_dst),
+ GET_IPADDR_STRING(ip->ip_dst),
tcpport_string(ndo, dport));
} else {
ND_PRINT("%s > %s: ",
if (th->nxt == NULL)
(*ndo->ndo_error)(ndo,
S_ERR_ND_MEM_ALLOC,
- "tcp_print: calloc");
+ "%s: calloc", __func__);
}
th->addr = tha;
if (rev)
if (th->nxt == NULL)
(*ndo->ndo_error)(ndo,
S_ERR_ND_MEM_ALLOC,
- "tcp_print: calloc");
+ "%s: calloc", __func__);
}
th->addr = tha;
if (rev)
while (hlen > 0) {
if (ch != '\0')
ND_PRINT("%c", ch);
- ND_TCHECK_1(cp);
opt = GET_U_1(cp);
cp++;
if (ZEROLENOPT(opt))
len = 1;
else {
- ND_TCHECK_1(cp);
len = GET_U_1(cp);
cp++; /* total including type, len */
if (len < 2 || len > hlen)
case PT_RESP:
resp_print(ndo, bp, length);
break;
+ case PT_DOMAIN:
+ /* over_tcp: TRUE, is_mdns: FALSE */
+ domain_print(ndo, bp, length, TRUE, FALSE);
+ break;
}
return;
}
} else if (IS_SRC_OR_DST_PORT(RTSP_PORT) || IS_SRC_OR_DST_PORT(RTSP_PORT_ALT)) {
ND_PRINT(": ");
rtsp_print(ndo, bp, length);
- } else if (length > 2 &&
- (IS_SRC_OR_DST_PORT(NAMESERVER_PORT))) {
- /* domain_print() assumes it does not have to prepend a space before its
- * own output to separate it from the output of the calling function. This
- * works well with udp_print(), but requires a small prop here.
- */
- ND_PRINT(" ");
-
- /*
- * TCP DNS query has 2byte length at the head.
- * XXX packet could be unaligned, it can go strange
- */
- domain_print(ndo, bp + 2, length - 2, 0);
+ } else if (IS_SRC_OR_DST_PORT(NAMESERVER_PORT)) {
+ /* over_tcp: TRUE, is_mdns: FALSE */
+ domain_print(ndo, bp, length, TRUE, FALSE);
} else if (IS_SRC_OR_DST_PORT(MSDP_PORT)) {
msdp_print(ndo, bp, length);
} else if (IS_SRC_OR_DST_PORT(RPKI_RTR_PORT)) {
rpki_rtr_print(ndo, bp, length);
- }
- else if (length > 0 && (IS_SRC_OR_DST_PORT(LDP_PORT))) {
+ } else if (IS_SRC_OR_DST_PORT(LDP_PORT)) {
ldp_print(ndo, bp, length);
- }
- else if ((IS_SRC_OR_DST_PORT(NFS_PORT)) &&
+ } else if ((IS_SRC_OR_DST_PORT(NFS_PORT)) &&
length >= 4 && ND_TTEST_4(bp)) {
/*
* If data present, header length valid, and NFS port used,
}
return;
- bad:
+bad:
ND_PRINT("[bad opt]");
if (ch != '\0')
ND_PRINT("]");
return;
- trunc:
+trunc:
nd_print_trunc(ndo);
if (ch != '\0')
ND_PRINT(">");