X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/d22cb958d769aad307264be0c9a09b56583ee607..41ef9cfe38f86553ffd8f61b6f87e9c00baf5f07:/print-decnet.c diff --git a/print-decnet.c b/print-decnet.c index ec611e38..31166e3f 100644 --- a/print-decnet.c +++ b/print-decnet.c @@ -31,9 +31,6 @@ #include #include -struct mbuf; -struct rtentry; - #ifdef HAVE_DNET_HTOA #ifdef HAVE_NETDNET_DN_H #include @@ -57,7 +54,6 @@ struct dn_naddr { #include "extract.h" #include "addrtoname.h" -static const char tstr[] = "[|decnet]"; #ifndef _WIN32 typedef nd_uint8_t byte; /* single byte field */ @@ -492,10 +488,10 @@ struct dcmsg /* disconnect confirm message */ /* Forwards */ static int print_decnet_ctlmsg(netdissect_options *, const union routehdr *, u_int, u_int); static void print_t_info(netdissect_options *, u_int); -static int print_l1_routes(netdissect_options *, const char *, u_int); -static int print_l2_routes(netdissect_options *, const char *, u_int); +static int print_l1_routes(netdissect_options *, const u_char *, u_int); +static int print_l2_routes(netdissect_options *, const u_char *, u_int); static void print_i_info(netdissect_options *, u_int); -static int print_elist(const char *, u_int); +static int print_elist(const u_char *, u_int); static int print_nsp(netdissect_options *, const u_char *, u_int); static void print_reason(netdissect_options *, u_int); @@ -506,30 +502,32 @@ decnet_print(netdissect_options *ndo, { const union routehdr *rhp; u_int mflags; - u_int dst, src, hops; + uint16_t dst, src; + u_int hops; u_int nsplen, pktlen; const u_char *nspp; + ndo->ndo_protocol = "decnet"; if (length < sizeof(struct shorthdr)) { - ND_PRINT("%s", tstr); + nd_print_trunc(ndo); return; } ND_TCHECK_LEN(ap, sizeof(short)); - pktlen = EXTRACT_LE_U_2(ap); + pktlen = GET_LE_U_2(ap); if (pktlen < sizeof(struct shorthdr)) { - ND_PRINT("%s", tstr); + nd_print_trunc(ndo); return; } if (pktlen > length) { - ND_PRINT("%s", tstr); + nd_print_trunc(ndo); return; } length = pktlen; rhp = (const union routehdr *)(ap + sizeof(short)); ND_TCHECK_1(rhp->rh_short.sh_flags); - mflags = EXTRACT_U_1(rhp->rh_short.sh_flags); + mflags = GET_U_1(rhp->rh_short.sh_flags); if (mflags & RMF_PAD) { /* pad bytes of some sort in front of message */ @@ -537,7 +535,7 @@ decnet_print(netdissect_options *ndo, if (ndo->ndo_vflag) ND_PRINT("[pad:%u] ", padlen); if (length < padlen + 2) { - ND_PRINT("%s", tstr); + nd_print_trunc(ndo); return; } ND_TCHECK_LEN(ap + sizeof(short), padlen); @@ -546,7 +544,7 @@ decnet_print(netdissect_options *ndo, caplen -= padlen; rhp = (const union routehdr *)(ap + sizeof(short)); ND_TCHECK_1(rhp->rh_short.sh_flags); - mflags = EXTRACT_U_1(rhp->rh_short.sh_flags); + mflags = GET_U_1(rhp->rh_short.sh_flags); } if (mflags & RMF_FVER) { @@ -565,23 +563,23 @@ decnet_print(netdissect_options *ndo, switch (mflags & RMF_MASK) { case RMF_LONG: if (length < sizeof(struct longhdr)) { - ND_PRINT("%s", tstr); + nd_print_trunc(ndo); return; } - ND_TCHECK(rhp->rh_long); + ND_TCHECK_SIZE(&rhp->rh_long); dst = - EXTRACT_LE_U_2(rhp->rh_long.lg_dst.dne_remote.dne_nodeaddr); + GET_LE_U_2(rhp->rh_long.lg_dst.dne_remote.dne_nodeaddr); src = - EXTRACT_LE_U_2(rhp->rh_long.lg_src.dne_remote.dne_nodeaddr); - hops = EXTRACT_U_1(rhp->rh_long.lg_visits); + GET_LE_U_2(rhp->rh_long.lg_src.dne_remote.dne_nodeaddr); + hops = GET_U_1(rhp->rh_long.lg_visits); nspp = ap + sizeof(short) + sizeof(struct longhdr); nsplen = length - sizeof(struct longhdr); break; case RMF_SHORT: - ND_TCHECK(rhp->rh_short); - dst = EXTRACT_LE_U_2(rhp->rh_short.sh_dst); - src = EXTRACT_LE_U_2(rhp->rh_short.sh_src); - hops = (EXTRACT_U_1(rhp->rh_short.sh_visits) & VIS_MASK)+1; + ND_TCHECK_SIZE(&rhp->rh_short); + dst = GET_LE_U_2(rhp->rh_short.sh_dst); + src = GET_LE_U_2(rhp->rh_short.sh_src); + hops = (GET_U_1(rhp->rh_short.sh_visits) & VIS_MASK)+1; nspp = ap + sizeof(short) + sizeof(struct shorthdr); nsplen = length - sizeof(struct shorthdr); break; @@ -608,7 +606,7 @@ decnet_print(netdissect_options *ndo, return; trunc: - ND_PRINT("%s", tstr); + nd_print_trunc(ndo); return; } @@ -618,12 +616,12 @@ print_decnet_ctlmsg(netdissect_options *ndo, u_int caplen) { /* Our caller has already checked for mflags */ - u_int mflags = EXTRACT_U_1(rhp->rh_short.sh_flags); + u_int mflags = GET_U_1(rhp->rh_short.sh_flags); const union controlmsg *cmp = (const union controlmsg *)rhp; - u_int src, dst, info, blksize, eco, ueco, hello, other, vers; - etheraddr srcea, rtea; + uint16_t src, dst; + u_int info, blksize, eco, ueco, hello, other, vers; u_int priority; - const char *rhpx = (const char *)rhp; + const u_char *rhpx = (const u_char *)rhp; int ret; switch (mflags & RMF_CTLMASK) { @@ -631,14 +629,14 @@ print_decnet_ctlmsg(netdissect_options *ndo, ND_PRINT("init "); if (length < sizeof(struct initmsg)) goto trunc; - ND_TCHECK(cmp->cm_init); - src = EXTRACT_LE_U_2(cmp->cm_init.in_src); - info = EXTRACT_U_1(cmp->cm_init.in_info); - blksize = EXTRACT_LE_U_2(cmp->cm_init.in_blksize); - vers = EXTRACT_U_1(cmp->cm_init.in_vers); - eco = EXTRACT_U_1(cmp->cm_init.in_eco); - ueco = EXTRACT_U_1(cmp->cm_init.in_ueco); - hello = EXTRACT_LE_U_2(cmp->cm_init.in_hello); + ND_TCHECK_SIZE(&cmp->cm_init); + src = GET_LE_U_2(cmp->cm_init.in_src); + info = GET_U_1(cmp->cm_init.in_info); + blksize = GET_LE_U_2(cmp->cm_init.in_blksize); + vers = GET_U_1(cmp->cm_init.in_vers); + eco = GET_U_1(cmp->cm_init.in_eco); + ueco = GET_U_1(cmp->cm_init.in_ueco); + hello = GET_LE_U_2(cmp->cm_init.in_hello); print_t_info(ndo, info); ND_PRINT("src %sblksize %u vers %u eco %u ueco %u hello %u", dnaddr_string(ndo, src), blksize, vers, eco, ueco, @@ -649,9 +647,9 @@ print_decnet_ctlmsg(netdissect_options *ndo, ND_PRINT("verification "); if (length < sizeof(struct verifmsg)) goto trunc; - ND_TCHECK(cmp->cm_ver); - src = EXTRACT_LE_U_2(cmp->cm_ver.ve_src); - other = EXTRACT_U_1(cmp->cm_ver.ve_fcnval); + ND_TCHECK_SIZE(&cmp->cm_ver); + src = GET_LE_U_2(cmp->cm_ver.ve_src); + other = GET_U_1(cmp->cm_ver.ve_fcnval); ND_PRINT("src %s fcnval %o", dnaddr_string(ndo, src), other); ret = 1; break; @@ -659,9 +657,9 @@ print_decnet_ctlmsg(netdissect_options *ndo, ND_PRINT("test "); if (length < sizeof(struct testmsg)) goto trunc; - ND_TCHECK(cmp->cm_test); - src = EXTRACT_LE_U_2(cmp->cm_test.te_src); - other = EXTRACT_U_1(cmp->cm_test.te_data); + ND_TCHECK_SIZE(&cmp->cm_test); + src = GET_LE_U_2(cmp->cm_test.te_src); + other = GET_U_1(cmp->cm_test.te_data); ND_PRINT("src %s data %o", dnaddr_string(ndo, src), other); ret = 1; break; @@ -669,8 +667,8 @@ print_decnet_ctlmsg(netdissect_options *ndo, ND_PRINT("lev-1-routing "); if (length < sizeof(struct l1rout)) goto trunc; - ND_TCHECK(cmp->cm_l1rou); - src = EXTRACT_LE_U_2(cmp->cm_l1rou.r1_src); + ND_TCHECK_SIZE(&cmp->cm_l1rou); + src = GET_LE_U_2(cmp->cm_l1rou.r1_src); ND_PRINT("src %s ", dnaddr_string(ndo, src)); ret = print_l1_routes(ndo, &(rhpx[sizeof(struct l1rout)]), length - sizeof(struct l1rout)); @@ -679,8 +677,8 @@ print_decnet_ctlmsg(netdissect_options *ndo, ND_PRINT("lev-2-routing "); if (length < sizeof(struct l2rout)) goto trunc; - ND_TCHECK(cmp->cm_l2rout); - src = EXTRACT_LE_U_2(cmp->cm_l2rout.r2_src); + ND_TCHECK_SIZE(&cmp->cm_l2rout); + src = GET_LE_U_2(cmp->cm_l2rout.r2_src); ND_PRINT("src %s ", dnaddr_string(ndo, src)); ret = print_l2_routes(ndo, &(rhpx[sizeof(struct l2rout)]), length - sizeof(struct l2rout)); @@ -689,17 +687,16 @@ print_decnet_ctlmsg(netdissect_options *ndo, ND_PRINT("router-hello "); if (length < sizeof(struct rhellomsg)) goto trunc; - ND_TCHECK(cmp->cm_rhello); - vers = EXTRACT_U_1(cmp->cm_rhello.rh_vers); - eco = EXTRACT_U_1(cmp->cm_rhello.rh_eco); - ueco = EXTRACT_U_1(cmp->cm_rhello.rh_ueco); - memcpy((char *)&srcea, (const char *)&(cmp->cm_rhello.rh_src), - sizeof(srcea)); - src = EXTRACT_LE_U_2(srcea.dne_remote.dne_nodeaddr); - info = EXTRACT_U_1(cmp->cm_rhello.rh_info); - blksize = EXTRACT_LE_U_2(cmp->cm_rhello.rh_blksize); - priority = EXTRACT_U_1(cmp->cm_rhello.rh_priority); - hello = EXTRACT_LE_U_2(cmp->cm_rhello.rh_hello); + ND_TCHECK_SIZE(&cmp->cm_rhello); + vers = GET_U_1(cmp->cm_rhello.rh_vers); + eco = GET_U_1(cmp->cm_rhello.rh_eco); + ueco = GET_U_1(cmp->cm_rhello.rh_ueco); + src = + GET_LE_U_2(cmp->cm_rhello.rh_src.dne_remote.dne_nodeaddr); + info = GET_U_1(cmp->cm_rhello.rh_info); + blksize = GET_LE_U_2(cmp->cm_rhello.rh_blksize); + priority = GET_U_1(cmp->cm_rhello.rh_priority); + hello = GET_LE_U_2(cmp->cm_rhello.rh_hello); print_i_info(ndo, info); ND_PRINT("vers %u eco %u ueco %u src %s blksize %u pri %u hello %u", vers, eco, ueco, dnaddr_string(ndo, src), @@ -711,21 +708,19 @@ print_decnet_ctlmsg(netdissect_options *ndo, ND_PRINT("endnode-hello "); if (length < sizeof(struct ehellomsg)) goto trunc; - ND_TCHECK(cmp->cm_ehello); - vers = EXTRACT_U_1(cmp->cm_ehello.eh_vers); - eco = EXTRACT_U_1(cmp->cm_ehello.eh_eco); - ueco = EXTRACT_U_1(cmp->cm_ehello.eh_ueco); - memcpy((char *)&srcea, (const char *)&(cmp->cm_ehello.eh_src), - sizeof(srcea)); - src = EXTRACT_LE_U_2(srcea.dne_remote.dne_nodeaddr); - info = EXTRACT_U_1(cmp->cm_ehello.eh_info); - blksize = EXTRACT_LE_U_2(cmp->cm_ehello.eh_blksize); + ND_TCHECK_SIZE(&cmp->cm_ehello); + vers = GET_U_1(cmp->cm_ehello.eh_vers); + eco = GET_U_1(cmp->cm_ehello.eh_eco); + ueco = GET_U_1(cmp->cm_ehello.eh_ueco); + src = + GET_LE_U_2(cmp->cm_ehello.eh_src.dne_remote.dne_nodeaddr); + info = GET_U_1(cmp->cm_ehello.eh_info); + blksize = GET_LE_U_2(cmp->cm_ehello.eh_blksize); /*seed*/ - memcpy((char *)&rtea, (const char *)&(cmp->cm_ehello.eh_router), - sizeof(rtea)); - dst = EXTRACT_LE_U_2(rtea.dne_remote.dne_nodeaddr); - hello = EXTRACT_LE_U_2(cmp->cm_ehello.eh_hello); - other = EXTRACT_U_1(cmp->cm_ehello.eh_data); + dst = + GET_LE_U_2(cmp->cm_ehello.eh_router.dne_remote.dne_nodeaddr); + hello = GET_LE_U_2(cmp->cm_ehello.eh_hello); + other = GET_U_1(cmp->cm_ehello.eh_data); print_i_info(ndo, info); ND_PRINT("vers %u eco %u ueco %u src %s blksize %u rtr %s hello %u data %o", vers, eco, ueco, dnaddr_string(ndo, src), @@ -764,7 +759,7 @@ print_t_info(netdissect_options *ndo, static int print_l1_routes(netdissect_options *ndo, - const char *rp, u_int len) + const u_char *rp, u_int len) { u_int count; u_int id; @@ -773,15 +768,15 @@ print_l1_routes(netdissect_options *ndo, /* The last short is a checksum */ while (len > (3 * sizeof(short))) { ND_TCHECK_LEN(rp, 3 * sizeof(short)); - count = EXTRACT_LE_U_2(rp); + count = GET_LE_U_2(rp); if (count > 1024) return (1); /* seems to be bogus from here on */ rp += sizeof(short); len -= sizeof(short); - id = EXTRACT_LE_U_2(rp); + id = GET_LE_U_2(rp); rp += sizeof(short); len -= sizeof(short); - info = EXTRACT_LE_U_2(rp); + info = GET_LE_U_2(rp); rp += sizeof(short); len -= sizeof(short); ND_PRINT("{ids %u-%u cost %u hops %u} ", id, id + count, @@ -795,7 +790,7 @@ trunc: static int print_l2_routes(netdissect_options *ndo, - const char *rp, u_int len) + const u_char *rp, u_int len) { u_int count; u_int area; @@ -804,15 +799,15 @@ print_l2_routes(netdissect_options *ndo, /* The last short is a checksum */ while (len > (3 * sizeof(short))) { ND_TCHECK_LEN(rp, 3 * sizeof(short)); - count = EXTRACT_LE_U_2(rp); + count = GET_LE_U_2(rp); if (count > 1024) return (1); /* seems to be bogus from here on */ rp += sizeof(short); len -= sizeof(short); - area = EXTRACT_LE_U_2(rp); + area = GET_LE_U_2(rp); rp += sizeof(short); len -= sizeof(short); - info = EXTRACT_LE_U_2(rp); + info = GET_LE_U_2(rp); rp += sizeof(short); len -= sizeof(short); ND_PRINT("{areas %u-%u cost %u hops %u} ", area, area + count, @@ -844,7 +839,7 @@ print_i_info(netdissect_options *ndo, } static int -print_elist(const char *elp _U_, u_int len _U_) +print_elist(const u_char *elp _U_, u_int len _U_) { /* Not enough examples available for me to debug this */ return (1); @@ -860,9 +855,9 @@ print_nsp(netdissect_options *ndo, if (nsplen < sizeof(struct nsphdr)) goto trunc; ND_TCHECK_SIZE(nsphp); - flags = EXTRACT_U_1(nsphp->nh_flags); - dst = EXTRACT_LE_U_2(nsphp->nh_dst); - src = EXTRACT_LE_U_2(nsphp->nh_src); + flags = GET_U_1(nsphp->nh_flags); + dst = GET_LE_U_2(nsphp->nh_dst); + src = GET_LE_U_2(nsphp->nh_src); switch (flags & NSP_TYPEMASK) { case MFT_DATA: @@ -880,7 +875,7 @@ print_nsp(netdissect_options *ndo, if (nsplen < data_off) goto trunc; ND_TCHECK_2(shp->sh_seq[0]); - ack = EXTRACT_LE_U_2(shp->sh_seq[0]); + ack = GET_LE_U_2(shp->sh_seq[0]); if (ack & SGQ_ACK) { /* acknum field */ if ((ack & SGQ_NAK) == SGQ_NAK) ND_PRINT("nak %u ", ack & SGQ_MASK); @@ -890,7 +885,7 @@ print_nsp(netdissect_options *ndo, if (nsplen < data_off) goto trunc; ND_TCHECK_2(shp->sh_seq[1]); - ack = EXTRACT_LE_U_2(shp->sh_seq[1]); + ack = GET_LE_U_2(shp->sh_seq[1]); if (ack & SGQ_OACK) { /* ackoth field */ if ((ack & SGQ_ONAK) == SGQ_ONAK) ND_PRINT("onak %u ", ack & SGQ_MASK); @@ -900,7 +895,7 @@ print_nsp(netdissect_options *ndo, if (nsplen < data_off) goto trunc; ND_TCHECK_2(shp->sh_seq[2]); - ack = EXTRACT_LE_U_2(shp->sh_seq[2]); + ack = GET_LE_U_2(shp->sh_seq[2]); } } ND_PRINT("seg %u ", ack & SGQ_MASK); @@ -916,7 +911,7 @@ print_nsp(netdissect_options *ndo, if (nsplen < data_off) goto trunc; ND_TCHECK_2(shp->sh_seq[0]); - ack = EXTRACT_LE_U_2(shp->sh_seq[0]); + ack = GET_LE_U_2(shp->sh_seq[0]); if (ack & SGQ_ACK) { /* acknum field */ if ((ack & SGQ_NAK) == SGQ_NAK) ND_PRINT("nak %u ", ack & SGQ_MASK); @@ -926,7 +921,7 @@ print_nsp(netdissect_options *ndo, if (nsplen < data_off) goto trunc; ND_TCHECK_2(shp->sh_seq[1]); - ack = EXTRACT_LE_U_2(shp->sh_seq[1]); + ack = GET_LE_U_2(shp->sh_seq[1]); if (ack & SGQ_OACK) { /* ackdat field */ if ((ack & SGQ_ONAK) == SGQ_ONAK) ND_PRINT("nakdat %u ", ack & SGQ_MASK); @@ -936,7 +931,7 @@ print_nsp(netdissect_options *ndo, if (nsplen < data_off) goto trunc; ND_TCHECK_2(shp->sh_seq[2]); - ack = EXTRACT_LE_U_2(shp->sh_seq[2]); + ack = GET_LE_U_2(shp->sh_seq[2]); } } ND_PRINT("seg %u ", ack & SGQ_MASK); @@ -954,27 +949,27 @@ print_nsp(netdissect_options *ndo, if (nsplen < sizeof(struct seghdr) + sizeof(struct lsmsg)) goto trunc; ND_TCHECK_2(shp->sh_seq[0]); - ack = EXTRACT_LE_U_2(shp->sh_seq[0]); + ack = GET_LE_U_2(shp->sh_seq[0]); if (ack & SGQ_ACK) { /* acknum field */ if ((ack & SGQ_NAK) == SGQ_NAK) ND_PRINT("nak %u ", ack & SGQ_MASK); else ND_PRINT("ack %u ", ack & SGQ_MASK); ND_TCHECK_2(shp->sh_seq[1]); - ack = EXTRACT_LE_U_2(shp->sh_seq[1]); + ack = GET_LE_U_2(shp->sh_seq[1]); if (ack & SGQ_OACK) { /* ackdat field */ if ((ack & SGQ_ONAK) == SGQ_ONAK) ND_PRINT("nakdat %u ", ack & SGQ_MASK); else ND_PRINT("ackdat %u ", ack & SGQ_MASK); ND_TCHECK_2(shp->sh_seq[2]); - ack = EXTRACT_LE_U_2(shp->sh_seq[2]); + ack = GET_LE_U_2(shp->sh_seq[2]); } } ND_PRINT("seg %u ", ack & SGQ_MASK); ND_TCHECK_SIZE(lsmp); - lsflags = EXTRACT_U_1(lsmp->ls_lsflags); - fcval = EXTRACT_U_1(lsmp->ls_fcval); + lsflags = GET_U_1(lsmp->ls_lsflags); + fcval = GET_U_1(lsmp->ls_fcval); switch (lsflags & LSI_MASK) { case LSI_DATA: ND_PRINT("dat seg count %u ", fcval); @@ -1017,13 +1012,13 @@ print_nsp(netdissect_options *ndo, if (nsplen < sizeof(struct ackmsg)) goto trunc; ND_TCHECK_SIZE(amp); - ack = EXTRACT_LE_U_2(amp->ak_acknum[0]); + ack = GET_LE_U_2(amp->ak_acknum[0]); if (ack & SGQ_ACK) { /* acknum field */ if ((ack & SGQ_NAK) == SGQ_NAK) ND_PRINT("nak %u ", ack & SGQ_MASK); else ND_PRINT("ack %u ", ack & SGQ_MASK); - ack = EXTRACT_LE_U_2(amp->ak_acknum[1]); + ack = GET_LE_U_2(amp->ak_acknum[1]); if (ack & SGQ_OACK) { /* ackoth field */ if ((ack & SGQ_ONAK) == SGQ_ONAK) ND_PRINT("onak %u ", ack & SGQ_MASK); @@ -1042,14 +1037,14 @@ print_nsp(netdissect_options *ndo, if (nsplen < sizeof(struct ackmsg)) goto trunc; ND_TCHECK_SIZE(amp); - ack = EXTRACT_LE_U_2(amp->ak_acknum[0]); + ack = GET_LE_U_2(amp->ak_acknum[0]); if (ack & SGQ_ACK) { /* acknum field */ if ((ack & SGQ_NAK) == SGQ_NAK) ND_PRINT("nak %u ", ack & SGQ_MASK); else ND_PRINT("ack %u ", ack & SGQ_MASK); ND_TCHECK_2(amp->ak_acknum[1]); - ack = EXTRACT_LE_U_2(amp->ak_acknum[1]); + ack = GET_LE_U_2(amp->ak_acknum[1]); if (ack & SGQ_OACK) { /* ackdat field */ if ((ack & SGQ_ONAK) == SGQ_ONAK) ND_PRINT("nakdat %u ", ack & SGQ_MASK); @@ -1083,9 +1078,9 @@ print_nsp(netdissect_options *ndo, if (nsplen < sizeof(struct cimsg)) goto trunc; ND_TCHECK_SIZE(cimp); - services = EXTRACT_U_1(cimp->ci_services); - info = EXTRACT_U_1(cimp->ci_info); - segsize = EXTRACT_LE_U_2(cimp->ci_segsize); + services = GET_U_1(cimp->ci_services); + info = GET_U_1(cimp->ci_info); + segsize = GET_LE_U_2(cimp->ci_segsize); switch (services & COS_MASK) { case COS_NONE: @@ -1124,10 +1119,10 @@ print_nsp(netdissect_options *ndo, if (nsplen < sizeof(struct ccmsg)) goto trunc; ND_TCHECK_SIZE(ccmp); - services = EXTRACT_U_1(ccmp->cc_services); - info = EXTRACT_U_1(ccmp->cc_info); - segsize = EXTRACT_LE_U_2(ccmp->cc_segsize); - optlen = EXTRACT_U_1(ccmp->cc_optlen); + services = GET_U_1(ccmp->cc_services); + info = GET_U_1(ccmp->cc_info); + segsize = GET_LE_U_2(ccmp->cc_segsize); + optlen = GET_U_1(ccmp->cc_optlen); switch (services & COS_MASK) { case COS_NONE: @@ -1169,8 +1164,8 @@ print_nsp(netdissect_options *ndo, if (nsplen < sizeof(struct dimsg)) goto trunc; ND_TCHECK_SIZE(dimp); - reason = EXTRACT_LE_U_2(dimp->di_reason); - optlen = EXTRACT_U_1(dimp->di_optlen); + reason = GET_LE_U_2(dimp->di_reason); + optlen = GET_U_1(dimp->di_optlen); print_reason(ndo, reason); if (optlen) { @@ -1185,7 +1180,7 @@ print_nsp(netdissect_options *ndo, u_int reason; ND_TCHECK_SIZE(dcmp); - reason = EXTRACT_LE_U_2(dcmp->dc_reason); + reason = GET_LE_U_2(dcmp->dc_reason); print_reason(ndo, reason); } @@ -1246,9 +1241,10 @@ dnnum_string(netdissect_options *ndo, u_short dnaddr) u_int area = (u_short)(dnaddr & AREAMASK) >> AREASHIFT; u_int node = dnaddr & NODEMASK; + /* malloc() return used by the 'dnaddrtable' hash table: do not free() */ str = (char *)malloc(siz = sizeof("00.0000")); if (str == NULL) - (*ndo->ndo_error)(ndo, "dnnum_string: malloc"); + (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC, "dnnum_string: malloc"); snprintf(str, siz, "%u.%u", area, node); return(str); }