summaryrefslogtreecommitdiff
path: root/print-dhcp6.c
diff options
context:
space:
mode:
authorDenis Ovsienko <infrastation@yandex.ru>2014-03-25 15:05:59 +0400
committerDenis Ovsienko <infrastation@yandex.ru>2014-03-25 23:27:23 +0400
commit59690cf6b7ffce3cc86936cbe658909c6ec3a687 (patch)
treeadf69cb3d387361ad0e0eade251e77d275b0eafd /print-dhcp6.c
parentf979840e7b4f2f538ee7948e789899e0a51bf54d (diff)
downloadtcpdump-59690cf6b7ffce3cc86936cbe658909c6ec3a687.tar.gz
NDOize BOOTP, DHCPv6, DNS, PIM and sFlow decoders
Also add/remove tabs in a few involved functions to justify indentation.
Diffstat (limited to 'print-dhcp6.c')
-rw-r--r--print-dhcp6.c285
1 files changed, 144 insertions, 141 deletions
diff --git a/print-dhcp6.c b/print-dhcp6.c
index 8a119ff5..70c0e15c 100644
--- a/print-dhcp6.c
+++ b/print-dhcp6.c
@@ -40,6 +40,7 @@
* RFC6334: Dual-Stack Lite option,
*/
+#define NETDISSECT_REWORKED
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@@ -328,7 +329,8 @@ dhcp6stcode(int code)
}
static void
-dhcp6opt_print(const u_char *cp, const u_char *ep)
+dhcp6opt_print(netdissect_options *ndo,
+ const u_char *cp, const u_char *ep)
{
const struct dhcp6opt *dh6o;
const u_char *tp;
@@ -348,159 +350,159 @@ dhcp6opt_print(const u_char *cp, const u_char *ep)
if (ep < cp + sizeof(*dh6o))
goto trunc;
dh6o = (struct dhcp6opt *)cp;
- TCHECK(*dh6o);
+ ND_TCHECK(*dh6o);
optlen = EXTRACT_16BITS(&dh6o->dh6opt_len);
if (ep < cp + sizeof(*dh6o) + optlen)
goto trunc;
opttype = EXTRACT_16BITS(&dh6o->dh6opt_type);
- printf(" (%s", dhcp6opt_name(opttype));
+ ND_PRINT((ndo, " (%s", dhcp6opt_name(opttype)));
switch (opttype) {
case DH6OPT_CLIENTID:
case DH6OPT_SERVERID:
if (optlen < 2) {
/*(*/
- printf(" ?)");
+ ND_PRINT((ndo, " ?)"));
break;
}
tp = (u_char *)(dh6o + 1);
switch (EXTRACT_16BITS(tp)) {
case 1:
if (optlen >= 2 + 6) {
- printf(" hwaddr/time type %u time %u ",
+ ND_PRINT((ndo, " hwaddr/time type %u time %u ",
EXTRACT_16BITS(&tp[2]),
- EXTRACT_32BITS(&tp[4]));
+ EXTRACT_32BITS(&tp[4])));
for (i = 8; i < optlen; i++)
- printf("%02x", tp[i]);
+ ND_PRINT((ndo, "%02x", tp[i]));
/*(*/
- printf(")");
+ ND_PRINT((ndo, ")"));
} else {
/*(*/
- printf(" ?)");
+ ND_PRINT((ndo, " ?)"));
}
break;
case 2:
if (optlen >= 2 + 8) {
- printf(" vid ");
+ ND_PRINT((ndo, " vid "));
for (i = 2; i < 2 + 8; i++)
- printf("%02x", tp[i]);
+ ND_PRINT((ndo, "%02x", tp[i]));
/*(*/
- printf(")");
+ ND_PRINT((ndo, ")"));
} else {
/*(*/
- printf(" ?)");
+ ND_PRINT((ndo, " ?)"));
}
break;
case 3:
if (optlen >= 2 + 2) {
- printf(" hwaddr type %u ",
- EXTRACT_16BITS(&tp[2]));
+ ND_PRINT((ndo, " hwaddr type %u ",
+ EXTRACT_16BITS(&tp[2])));
for (i = 4; i < optlen; i++)
- printf("%02x", tp[i]);
+ ND_PRINT((ndo, "%02x", tp[i]));
/*(*/
- printf(")");
+ ND_PRINT((ndo, ")"));
} else {
/*(*/
- printf(" ?)");
+ ND_PRINT((ndo, " ?)"));
}
break;
default:
- printf(" type %d)", EXTRACT_16BITS(tp));
+ ND_PRINT((ndo, " type %d)", EXTRACT_16BITS(tp)));
break;
}
break;
case DH6OPT_IA_ADDR:
if (optlen < 24) {
/*(*/
- printf(" ?)");
+ ND_PRINT((ndo, " ?)"));
break;
}
tp = (u_char *)(dh6o + 1);
- printf(" %s", ip6addr_string(&tp[0]));
- printf(" pltime:%u vltime:%u",
+ ND_PRINT((ndo, " %s", ip6addr_string(&tp[0])));
+ ND_PRINT((ndo, " pltime:%u vltime:%u",
EXTRACT_32BITS(&tp[16]),
- EXTRACT_32BITS(&tp[20]));
+ EXTRACT_32BITS(&tp[20])));
if (optlen > 24) {
/* there are sub-options */
- dhcp6opt_print(tp + 24, tp + optlen);
+ dhcp6opt_print(ndo, tp + 24, tp + optlen);
}
- printf(")");
+ ND_PRINT((ndo, ")"));
break;
case DH6OPT_ORO:
case DH6OPT_ERO:
if (optlen % 2) {
- printf(" ?)");
+ ND_PRINT((ndo, " ?)"));
break;
}
tp = (u_char *)(dh6o + 1);
for (i = 0; i < optlen; i += 2) {
- printf(" %s",
- dhcp6opt_name(EXTRACT_16BITS(&tp[i])));
+ ND_PRINT((ndo, " %s",
+ dhcp6opt_name(EXTRACT_16BITS(&tp[i]))));
}
- printf(")");
+ ND_PRINT((ndo, ")"));
break;
case DH6OPT_PREFERENCE:
if (optlen != 1) {
- printf(" ?)");
+ ND_PRINT((ndo, " ?)"));
break;
}
tp = (u_char *)(dh6o + 1);
- printf(" %d)", *tp);
+ ND_PRINT((ndo, " %d)", *tp));
break;
case DH6OPT_ELAPSED_TIME:
if (optlen != 2) {
- printf(" ?)");
+ ND_PRINT((ndo, " ?)"));
break;
}
tp = (u_char *)(dh6o + 1);
- printf(" %d)", EXTRACT_16BITS(tp));
+ ND_PRINT((ndo, " %d)", EXTRACT_16BITS(tp)));
break;
case DH6OPT_RELAY_MSG:
- printf(" (");
+ ND_PRINT((ndo, " ("));
tp = (u_char *)(dh6o + 1);
- dhcp6_print(tp, optlen);
- printf(")");
+ dhcp6_print(ndo, tp, optlen);
+ ND_PRINT((ndo, ")"));
break;
case DH6OPT_AUTH:
if (optlen < 11) {
- printf(" ?)");
+ ND_PRINT((ndo, " ?)"));
break;
}
tp = (u_char *)(dh6o + 1);
auth_proto = *tp;
switch (auth_proto) {
case DH6OPT_AUTHPROTO_DELAYED:
- printf(" proto: delayed");
+ ND_PRINT((ndo, " proto: delayed"));
break;
case DH6OPT_AUTHPROTO_RECONFIG:
- printf(" proto: reconfigure");
+ ND_PRINT((ndo, " proto: reconfigure"));
break;
default:
- printf(" proto: %d", auth_proto);
+ ND_PRINT((ndo, " proto: %d", auth_proto));
break;
}
tp++;
switch (*tp) {
case DH6OPT_AUTHALG_HMACMD5:
/* XXX: may depend on the protocol */
- printf(", alg: HMAC-MD5");
+ ND_PRINT((ndo, ", alg: HMAC-MD5"));
break;
default:
- printf(", alg: %d", *tp);
+ ND_PRINT((ndo, ", alg: %d", *tp));
break;
}
tp++;
switch (*tp) {
case DH6OPT_AUTHRDM_MONOCOUNTER:
- printf(", RDM: mono");
+ ND_PRINT((ndo, ", RDM: mono"));
break;
default:
- printf(", RDM: %d", *tp);
+ ND_PRINT((ndo, ", RDM: %d", *tp));
break;
}
tp++;
- printf(", RD:");
+ ND_PRINT((ndo, ", RD:"));
for (i = 0; i < 4; i++, tp += 2)
- printf(" %04x", EXTRACT_16BITS(tp));
+ ND_PRINT((ndo, " %04x", EXTRACT_16BITS(tp)));
/* protocol dependent part */
authinfolen = optlen - 11;
@@ -509,50 +511,50 @@ dhcp6opt_print(const u_char *cp, const u_char *ep)
if (authinfolen == 0)
break;
if (authinfolen < 20) {
- printf(" ??");
+ ND_PRINT((ndo, " ??"));
break;
}
authrealmlen = authinfolen - 20;
if (authrealmlen > 0) {
- printf(", realm: ");
+ ND_PRINT((ndo, ", realm: "));
}
for (i = 0; i < authrealmlen; i++, tp++)
- printf("%02x", *tp);
- printf(", key ID: %08x", EXTRACT_32BITS(tp));
+ ND_PRINT((ndo, "%02x", *tp));
+ ND_PRINT((ndo, ", key ID: %08x", EXTRACT_32BITS(tp)));
tp += 4;
- printf(", HMAC-MD5:");
+ ND_PRINT((ndo, ", HMAC-MD5:"));
for (i = 0; i < 4; i++, tp+= 4)
- printf(" %08x", EXTRACT_32BITS(tp));
+ ND_PRINT((ndo, " %08x", EXTRACT_32BITS(tp)));
break;
case DH6OPT_AUTHPROTO_RECONFIG:
if (authinfolen != 17) {
- printf(" ??");
+ ND_PRINT((ndo, " ??"));
break;
}
switch (*tp++) {
case DH6OPT_AUTHRECONFIG_KEY:
- printf(" reconfig-key");
+ ND_PRINT((ndo, " reconfig-key"));
break;
case DH6OPT_AUTHRECONFIG_HMACMD5:
- printf(" type: HMAC-MD5");
+ ND_PRINT((ndo, " type: HMAC-MD5"));
break;
default:
- printf(" type: ??");
+ ND_PRINT((ndo, " type: ??"));
break;
}
- printf(" value:");
+ ND_PRINT((ndo, " value:"));
for (i = 0; i < 4; i++, tp+= 4)
- printf(" %08x", EXTRACT_32BITS(tp));
+ ND_PRINT((ndo, " %08x", EXTRACT_32BITS(tp)));
break;
default:
- printf(" ??");
+ ND_PRINT((ndo, " ??"));
break;
}
- printf(")");
+ ND_PRINT((ndo, ")"));
break;
case DH6OPT_RAPID_COMMIT: /* nothing todo */
- printf(")");
+ ND_PRINT((ndo, ")"));
break;
case DH6OPT_INTERFACE_ID:
case DH6OPT_SUBSCRIBER_ID:
@@ -561,27 +563,27 @@ dhcp6opt_print(const u_char *cp, const u_char *ep)
* at most 10 characters.
*/
tp = (u_char *)(dh6o + 1);
- printf(" ");
+ ND_PRINT((ndo, " "));
for (i = 0; i < optlen && i < 10; i++)
- printf("%02x", tp[i]);
- printf("...)");
+ ND_PRINT((ndo, "%02x", tp[i]));
+ ND_PRINT((ndo, "...)"));
break;
case DH6OPT_RECONF_MSG:
tp = (u_char *)(dh6o + 1);
switch (*tp) {
case DH6_RENEW:
- printf(" for renew)");
+ ND_PRINT((ndo, " for renew)"));
break;
case DH6_INFORM_REQ:
- printf(" for inf-req)");
+ ND_PRINT((ndo, " for inf-req)"));
break;
default:
- printf(" for ?\?\?(%02x))", *tp);
+ ND_PRINT((ndo, " for ?\?\?(%02x))", *tp));
break;
}
break;
case DH6OPT_RECONF_ACCEPT: /* nothing todo */
- printf(")");
+ ND_PRINT((ndo, ")"));
break;
case DH6OPT_SIP_SERVER_A:
case DH6OPT_DNS_SERVERS:
@@ -592,150 +594,150 @@ dhcp6opt_print(const u_char *cp, const u_char *ep)
case DH6OPT_PANA_AGENT:
case DH6OPT_LQ_CLIENT_LINK:
if (optlen % 16) {
- printf(" ?)");
+ ND_PRINT((ndo, " ?)"));
break;
}
tp = (u_char *)(dh6o + 1);
for (i = 0; i < optlen; i += 16)
- printf(" %s", ip6addr_string(&tp[i]));
- printf(")");
+ ND_PRINT((ndo, " %s", ip6addr_string(&tp[i])));
+ ND_PRINT((ndo, ")"));
break;
case DH6OPT_SIP_SERVER_D:
case DH6OPT_DOMAIN_LIST:
tp = (u_char *)(dh6o + 1);
while (tp < cp + sizeof(*dh6o) + optlen) {
putchar(' ');
- if ((tp = ns_nprint(tp, cp + sizeof(*dh6o) + optlen)) == NULL)
+ if ((tp = ns_nprint(ndo, tp, cp + sizeof(*dh6o) + optlen)) == NULL)
goto trunc;
}
- printf(")");
+ ND_PRINT((ndo, ")"));
break;
case DH6OPT_STATUS_CODE:
if (optlen < 2) {
- printf(" ?)");
+ ND_PRINT((ndo, " ?)"));
break;
}
tp = (u_char *)(dh6o + 1);
- printf(" %s)", dhcp6stcode(EXTRACT_16BITS(&tp[0])));
+ ND_PRINT((ndo, " %s)", dhcp6stcode(EXTRACT_16BITS(&tp[0]))));
break;
case DH6OPT_IA_NA:
case DH6OPT_IA_PD:
if (optlen < 12) {
- printf(" ?)");
+ ND_PRINT((ndo, " ?)"));
break;
}
tp = (u_char *)(dh6o + 1);
- printf(" IAID:%u T1:%u T2:%u",
+ ND_PRINT((ndo, " IAID:%u T1:%u T2:%u",
EXTRACT_32BITS(&tp[0]),
EXTRACT_32BITS(&tp[4]),
- EXTRACT_32BITS(&tp[8]));
+ EXTRACT_32BITS(&tp[8])));
if (optlen > 12) {
/* there are sub-options */
- dhcp6opt_print(tp + 12, tp + optlen);
+ dhcp6opt_print(ndo, tp + 12, tp + optlen);
}
- printf(")");
+ ND_PRINT((ndo, ")"));
break;
case DH6OPT_IA_TA:
if (optlen < 4) {
- printf(" ?)");
+ ND_PRINT((ndo, " ?)"));
break;
}
tp = (u_char *)(dh6o + 1);
- printf(" IAID:%u", EXTRACT_32BITS(tp));
+ ND_PRINT((ndo, " IAID:%u", EXTRACT_32BITS(tp)));
if (optlen > 4) {
/* there are sub-options */
- dhcp6opt_print(tp + 4, tp + optlen);
+ dhcp6opt_print(ndo, tp + 4, tp + optlen);
}
- printf(")");
+ ND_PRINT((ndo, ")"));
break;
case DH6OPT_IA_PD_PREFIX:
if (optlen < 25) {
- printf(" ?)");
+ ND_PRINT((ndo, " ?)"));
break;
}
tp = (u_char *)(dh6o + 1);
- printf(" %s/%d", ip6addr_string(&tp[9]), tp[8]);
- printf(" pltime:%u vltime:%u",
+ ND_PRINT((ndo, " %s/%d", ip6addr_string(&tp[9]), tp[8]));
+ ND_PRINT((ndo, " pltime:%u vltime:%u",
EXTRACT_32BITS(&tp[0]),
- EXTRACT_32BITS(&tp[4]));
+ EXTRACT_32BITS(&tp[4])));
if (optlen > 25) {
/* there are sub-options */
- dhcp6opt_print(tp + 25, tp + optlen);
+ dhcp6opt_print(ndo, tp + 25, tp + optlen);
}
- printf(")");
+ ND_PRINT((ndo, ")"));
break;
case DH6OPT_LIFETIME:
case DH6OPT_CLT_TIME:
if (optlen != 4) {
- printf(" ?)");
+ ND_PRINT((ndo, " ?)"));
break;
}
tp = (u_char *)(dh6o + 1);
- printf(" %d)", EXTRACT_32BITS(tp));
+ ND_PRINT((ndo, " %d)", EXTRACT_32BITS(tp)));
break;
case DH6OPT_REMOTE_ID:
if (optlen < 4) {
- printf(" ?)");
+ ND_PRINT((ndo, " ?)"));
break;
}
tp = (u_char *)(dh6o + 1);
- printf(" %d ", EXTRACT_32BITS(tp));
+ ND_PRINT((ndo, " %d ", EXTRACT_32BITS(tp)));
/*
* Print hex dump first 10 characters.
*/
for (i = 4; i < optlen && i < 14; i++)
- printf("%02x", tp[i]);
- printf("...)");
+ ND_PRINT((ndo, "%02x", tp[i]));
+ ND_PRINT((ndo, "...)"));
break;
case DH6OPT_LQ_QUERY:
if (optlen < 17) {
- printf(" ?)");
+ ND_PRINT((ndo, " ?)"));
break;
}
tp = (u_char *)(dh6o + 1);
switch (*tp) {
case 1:
- printf(" by-address");
+ ND_PRINT((ndo, " by-address"));
break;
case 2:
- printf(" by-clientID");
+ ND_PRINT((ndo, " by-clientID"));
break;
default:
- printf(" type_%d", (int)*tp);
+ ND_PRINT((ndo, " type_%d", (int)*tp));
break;
}
- printf(" %s", ip6addr_string(&tp[1]));
+ ND_PRINT((ndo, " %s", ip6addr_string(&tp[1])));
if (optlen > 17) {
/* there are query-options */
- dhcp6opt_print(tp + 17, tp + optlen);
+ dhcp6opt_print(ndo, tp + 17, tp + optlen);
}
- printf(")");
+ ND_PRINT((ndo, ")"));
break;
case DH6OPT_CLIENT_DATA:
tp = (u_char *)(dh6o + 1);
if (optlen > 0) {
/* there are encapsulated options */
- dhcp6opt_print(tp, tp + optlen);
+ dhcp6opt_print(ndo, tp, tp + optlen);
}
- printf(")");
+ ND_PRINT((ndo, ")"));
break;
case DH6OPT_LQ_RELAY_DATA:
if (optlen < 16) {
- printf(" ?)");
+ ND_PRINT((ndo, " ?)"));
break;
}
tp = (u_char *)(dh6o + 1);
- printf(" %s ", ip6addr_string(&tp[0]));
+ ND_PRINT((ndo, " %s ", ip6addr_string(&tp[0])));
/*
* Print hex dump first 10 characters.
*/
for (i = 16; i < optlen && i < 26; i++)
- printf("%02x", tp[i]);
- printf("...)");
+ ND_PRINT((ndo, "%02x", tp[i]));
+ ND_PRINT((ndo, "...)"));
break;
case DH6OPT_NTP_SERVER:
if (optlen < 4) {
- printf(" ?)");
+ ND_PRINT((ndo, " ?)"));
break;
}
tp = (u_char *)(dh6o + 1);
@@ -746,54 +748,54 @@ dhcp6opt_print(const u_char *cp, const u_char *ep)
tp += 2;
if (tp + subopt_len > cp + sizeof(*dh6o) + optlen)
goto trunc;
- printf(" subopt:%d", subopt_code);
+ ND_PRINT((ndo, " subopt:%d", subopt_code));
switch (subopt_code) {
case DH6OPT_NTP_SUBOPTION_SRV_ADDR:
case DH6OPT_NTP_SUBOPTION_MC_ADDR:
if (subopt_len != 16) {
- printf(" ?");
+ ND_PRINT((ndo, " ?"));
break;
}
- printf(" %s", ip6addr_string(&tp[0]));
+ ND_PRINT((ndo, " %s", ip6addr_string(&tp[0])));
break;
case DH6OPT_NTP_SUBOPTION_SRV_FQDN:
putchar(' ');
- if (ns_nprint(tp, tp + subopt_len) == NULL)
+ if (ns_nprint(ndo, tp, tp + subopt_len) == NULL)
goto trunc;
break;
default:
- printf(" ?");
+ ND_PRINT((ndo, " ?"));
break;
}
tp += subopt_len;
}
- printf(")");
+ ND_PRINT((ndo, ")"));
break;
case DH6OPT_AFTR_NAME:
if (optlen < 3) {
- printf(" ?)");
+ ND_PRINT((ndo, " ?)"));
break;
}
tp = (u_char *)(dh6o + 1);
remain_len = optlen;
- printf(" ");
+ ND_PRINT((ndo, " "));
/* Encoding is described in section 3.1 of RFC 1035 */
while (remain_len && *tp) {
label_len = *tp++;
if (label_len < remain_len - 1) {
- printf("%.*s", label_len, tp);
+ ND_PRINT((ndo, "%.*s", label_len, tp));
tp += label_len;
remain_len -= (label_len + 1);
- if(*tp) printf(".");
+ if(*tp) ND_PRINT((ndo, "."));
} else {
- printf(" ?");
+ ND_PRINT((ndo, " ?"));
break;
}
}
- printf(")");
+ ND_PRINT((ndo, ")"));
break;
default:
- printf(")");
+ ND_PRINT((ndo, ")"));
break;
}
@@ -802,14 +804,15 @@ dhcp6opt_print(const u_char *cp, const u_char *ep)
return;
trunc:
- printf("[|dhcp6ext]");
+ ND_PRINT((ndo, "[|dhcp6ext]"));
}
/*
* Print dhcp6 packets
*/
void
-dhcp6_print(const u_char *cp, u_int length)
+dhcp6_print(netdissect_options *ndo,
+ const u_char *cp, u_int length)
{
struct dhcp6 *dh6;
struct dhcp6_relay *dh6relay;
@@ -817,15 +820,15 @@ dhcp6_print(const u_char *cp, u_int length)
u_char *extp;
const char *name;
- printf("dhcp6");
+ ND_PRINT((ndo, "dhcp6"));
- ep = (u_char *)snapend;
+ ep = (u_char *)ndo->ndo_snapend;
if (cp + length < ep)
ep = cp + length;
dh6 = (struct dhcp6 *)cp;
dh6relay = (struct dhcp6_relay *)cp;
- TCHECK(dh6->dh6_xid);
+ ND_TCHECK(dh6->dh6_xid);
switch (dh6->dh6_msgtype) {
case DH6_SOLICIT:
name = "solicit";
@@ -877,12 +880,12 @@ dhcp6_print(const u_char *cp, u_int length)
break;
}
- if (!vflag) {
+ if (!ndo->ndo_vflag) {
if (name)
- printf(" %s", name);
+ ND_PRINT((ndo, " %s", name));
else if (dh6->dh6_msgtype != DH6_RELAY_FORW &&
dh6->dh6_msgtype != DH6_RELAY_REPLY) {
- printf(" msgtype-%u", dh6->dh6_msgtype);
+ ND_PRINT((ndo, " msgtype-%u", dh6->dh6_msgtype));
}
return;
}
@@ -890,31 +893,31 @@ dhcp6_print(const u_char *cp, u_int length)
/* XXX relay agent messages have to be handled differently */
if (name)
- printf(" %s (", name); /*)*/
+ ND_PRINT((ndo, " %s (", name)); /*)*/
else
- printf(" msgtype-%u (", dh6->dh6_msgtype); /*)*/
+ ND_PRINT((ndo, " msgtype-%u (", dh6->dh6_msgtype)); /*)*/
if (dh6->dh6_msgtype != DH6_RELAY_FORW &&
dh6->dh6_msgtype != DH6_RELAY_REPLY) {
- printf("xid=%x", EXTRACT_32BITS(&dh6->dh6_xid) & DH6_XIDMASK);
+ ND_PRINT((ndo, "xid=%x", EXTRACT_32BITS(&dh6->dh6_xid) & DH6_XIDMASK));
extp = (u_char *)(dh6 + 1);
- dhcp6opt_print(extp, ep);
+ dhcp6opt_print(ndo, extp, ep);
} else { /* relay messages */
struct in6_addr addr6;
- TCHECK(dh6relay->dh6relay_peeraddr);
+ ND_TCHECK(dh6relay->dh6relay_peeraddr);
memcpy(&addr6, dh6relay->dh6relay_linkaddr, sizeof (addr6));
- printf("linkaddr=%s", ip6addr_string(&addr6));
+ ND_PRINT((ndo, "linkaddr=%s", ip6addr_string(&addr6)));
memcpy(&addr6, dh6relay->dh6relay_peeraddr, sizeof (addr6));
- printf(" peeraddr=%s", ip6addr_string(&addr6));
+ ND_PRINT((ndo, " peeraddr=%s", ip6addr_string(&addr6)));
- dhcp6opt_print((u_char *)(dh6relay + 1), ep);
+ dhcp6opt_print(ndo, (u_char *)(dh6relay + 1), ep);
}
/*(*/
- printf(")");
+ ND_PRINT((ndo, ")"));
return;
trunc:
- printf("[|dhcp6]");
+ ND_PRINT((ndo, "[|dhcp6]"));
}