X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/525875a63ee715aed734cbdf6048424ff3ce4b02..0845bc813c1cc48b18cdefff0b387c110647463c:/print-decnet.c diff --git a/print-decnet.c b/print-decnet.c index e29691fb..41d022fc 100644 --- a/print-decnet.c +++ b/print-decnet.c @@ -19,7 +19,6 @@ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ -#define NETDISSECT_REWORKED #ifdef HAVE_CONFIG_H #include "config.h" #endif @@ -38,31 +37,31 @@ struct rtentry; #include #include "extract.h" -#include "interface.h" +#include "netdissect.h" #include "addrtoname.h" static const char tstr[] = "[|decnet]"; -#ifndef WIN32 -typedef u_int8_t byte[1]; /* single byte field */ +#ifndef _WIN32 +typedef uint8_t byte[1]; /* single byte field */ #else /* * the keyword 'byte' generates conflicts in Windows */ typedef unsigned char Byte[1]; /* single byte field */ #define byte Byte -#endif /* WIN32 */ -typedef u_int8_t word[2]; /* 2 byte field */ -typedef u_int8_t longword[4]; /* 4 bytes field */ +#endif /* _WIN32 */ +typedef uint8_t word[2]; /* 2 byte field */ +typedef uint8_t longword[4]; /* 4 bytes field */ /* * Definitions for DECNET Phase IV protocol headers */ union etheraddress { - u_int8_t dne_addr[6]; /* full ethernet address */ + uint8_t dne_addr[6]; /* full ethernet address */ struct { - u_int8_t dne_hiord[4]; /* DECnet HIORD prefix */ - u_int8_t dne_nodeaddr[2]; /* DECnet node address */ + uint8_t dne_hiord[4]; /* DECnet HIORD prefix */ + uint8_t dne_nodeaddr[2]; /* DECnet node address */ } dne_remote; }; @@ -76,8 +75,8 @@ typedef union etheraddress etheraddr; /* Ethernet address */ #define DN_MAXADDL 20 /* max size of DECnet address */ struct dn_naddr { - u_int16_t a_len; /* length of address */ - u_int8_t a_addr[DN_MAXADDL]; /* address as bytes */ + uint16_t a_len; /* length of address */ + uint8_t a_addr[DN_MAXADDL]; /* address as bytes */ }; /* @@ -271,7 +270,7 @@ union controlmsg /* Macros for decoding routing-info fields */ #define RI_COST(x) ((x)&0777) #define RI_HOPS(x) (((x)>>10)&037) - + /* * NSP protocol fields and values. */ @@ -586,12 +585,12 @@ decnet_print(netdissect_options *ndo, break; default: ND_PRINT((ndo, "unknown message flags under mask")); - ND_DEFAULTPRINT((u_char *)ap, min(length, caplen)); + ND_DEFAULTPRINT((const u_char *)ap, min(length, caplen)); return; } ND_PRINT((ndo, "%s > %s %d ", - dnaddr_string(src), dnaddr_string(dst), pktlen)); + dnaddr_string(ndo, src), dnaddr_string(ndo, dst), pktlen)); if (ndo->ndo_vflag) { if (mflags & RMF_RQR) ND_PRINT((ndo, "RQR ")); @@ -617,11 +616,11 @@ print_decnet_ctlmsg(netdissect_options *ndo, u_int caplen) { int mflags = EXTRACT_LE_8BITS(rhp->rh_short.sh_flags); - register union controlmsg *cmp = (union controlmsg *)rhp; + register const union controlmsg *cmp = (const union controlmsg *)rhp; int src, dst, info, blksize, eco, ueco, hello, other, vers; etheraddr srcea, rtea; int priority; - char *rhpx = (char *)rhp; + const char *rhpx = (const char *)rhp; int ret; switch (mflags & RMF_CTLMASK) { @@ -640,7 +639,7 @@ print_decnet_ctlmsg(netdissect_options *ndo, print_t_info(ndo, info); ND_PRINT((ndo, "src %sblksize %d vers %d eco %d ueco %d hello %d", - dnaddr_string(src), blksize, vers, eco, ueco, + dnaddr_string(ndo, src), blksize, vers, eco, ueco, hello)); ret = 1; break; @@ -651,7 +650,7 @@ print_decnet_ctlmsg(netdissect_options *ndo, ND_TCHECK(cmp->cm_ver); src = EXTRACT_LE_16BITS(cmp->cm_ver.ve_src); other = EXTRACT_LE_8BITS(cmp->cm_ver.ve_fcnval); - ND_PRINT((ndo, "src %s fcnval %o", dnaddr_string(src), other)); + ND_PRINT((ndo, "src %s fcnval %o", dnaddr_string(ndo, src), other)); ret = 1; break; case RMF_TEST: @@ -661,7 +660,7 @@ print_decnet_ctlmsg(netdissect_options *ndo, ND_TCHECK(cmp->cm_test); src = EXTRACT_LE_16BITS(cmp->cm_test.te_src); other = EXTRACT_LE_8BITS(cmp->cm_test.te_data); - ND_PRINT((ndo, "src %s data %o", dnaddr_string(src), other)); + ND_PRINT((ndo, "src %s data %o", dnaddr_string(ndo, src), other)); ret = 1; break; case RMF_L1ROUT: @@ -670,7 +669,7 @@ print_decnet_ctlmsg(netdissect_options *ndo, goto trunc; ND_TCHECK(cmp->cm_l1rou); src = EXTRACT_LE_16BITS(cmp->cm_l1rou.r1_src); - ND_PRINT((ndo, "src %s ", dnaddr_string(src))); + ND_PRINT((ndo, "src %s ", dnaddr_string(ndo, src))); ret = print_l1_routes(ndo, &(rhpx[sizeof(struct l1rout)]), length - sizeof(struct l1rout)); break; @@ -680,7 +679,7 @@ print_decnet_ctlmsg(netdissect_options *ndo, goto trunc; ND_TCHECK(cmp->cm_l2rout); src = EXTRACT_LE_16BITS(cmp->cm_l2rout.r2_src); - ND_PRINT((ndo, "src %s ", dnaddr_string(src))); + ND_PRINT((ndo, "src %s ", dnaddr_string(ndo, src))); ret = print_l2_routes(ndo, &(rhpx[sizeof(struct l2rout)]), length - sizeof(struct l2rout)); break; @@ -692,7 +691,7 @@ print_decnet_ctlmsg(netdissect_options *ndo, vers = EXTRACT_LE_8BITS(cmp->cm_rhello.rh_vers); eco = EXTRACT_LE_8BITS(cmp->cm_rhello.rh_eco); ueco = EXTRACT_LE_8BITS(cmp->cm_rhello.rh_ueco); - memcpy((char *)&srcea, (char *)&(cmp->cm_rhello.rh_src), + memcpy((char *)&srcea, (const char *)&(cmp->cm_rhello.rh_src), sizeof(srcea)); src = EXTRACT_LE_16BITS(srcea.dne_remote.dne_nodeaddr); info = EXTRACT_LE_8BITS(cmp->cm_rhello.rh_info); @@ -702,7 +701,7 @@ print_decnet_ctlmsg(netdissect_options *ndo, print_i_info(ndo, info); ND_PRINT((ndo, "vers %d eco %d ueco %d src %s blksize %d pri %d hello %d", - vers, eco, ueco, dnaddr_string(src), + vers, eco, ueco, dnaddr_string(ndo, src), blksize, priority, hello)); ret = print_elist(&(rhpx[sizeof(struct rhellomsg)]), length - sizeof(struct rhellomsg)); @@ -715,13 +714,13 @@ print_decnet_ctlmsg(netdissect_options *ndo, vers = EXTRACT_LE_8BITS(cmp->cm_ehello.eh_vers); eco = EXTRACT_LE_8BITS(cmp->cm_ehello.eh_eco); ueco = EXTRACT_LE_8BITS(cmp->cm_ehello.eh_ueco); - memcpy((char *)&srcea, (char *)&(cmp->cm_ehello.eh_src), + memcpy((char *)&srcea, (const char *)&(cmp->cm_ehello.eh_src), sizeof(srcea)); src = EXTRACT_LE_16BITS(srcea.dne_remote.dne_nodeaddr); info = EXTRACT_LE_8BITS(cmp->cm_ehello.eh_info); blksize = EXTRACT_LE_16BITS(cmp->cm_ehello.eh_blksize); /*seed*/ - memcpy((char *)&rtea, (char *)&(cmp->cm_ehello.eh_router), + memcpy((char *)&rtea, (const char *)&(cmp->cm_ehello.eh_router), sizeof(rtea)); dst = EXTRACT_LE_16BITS(rtea.dne_remote.dne_nodeaddr); hello = EXTRACT_LE_16BITS(cmp->cm_ehello.eh_hello); @@ -729,14 +728,14 @@ print_decnet_ctlmsg(netdissect_options *ndo, print_i_info(ndo, info); ND_PRINT((ndo, "vers %d eco %d ueco %d src %s blksize %d rtr %s hello %d data %o", - vers, eco, ueco, dnaddr_string(src), - blksize, dnaddr_string(dst), hello, other)); + vers, eco, ueco, dnaddr_string(ndo, src), + blksize, dnaddr_string(ndo, dst), hello, other)); ret = 1; break; default: ND_PRINT((ndo, "unknown control message")); - ND_DEFAULTPRINT((u_char *)rhp, min(length, caplen)); + ND_DEFAULTPRINT((const u_char *)rhp, min(length, caplen)); ret = 1; break; } @@ -855,7 +854,7 @@ static int print_nsp(netdissect_options *ndo, const u_char *nspp, u_int nsplen) { - const struct nsphdr *nsphp = (struct nsphdr *)nspp; + const struct nsphdr *nsphp = (const struct nsphdr *)nspp; int dst, src, flags; if (nsplen < sizeof(struct nsphdr)) @@ -874,10 +873,10 @@ print_nsp(netdissect_options *ndo, case MFS_BOM+MFS_EOM: ND_PRINT((ndo, "data %d>%d ", src, dst)); { - struct seghdr *shp = (struct seghdr *)nspp; + const struct seghdr *shp = (const struct seghdr *)nspp; int ack; #ifdef PRINT_NSPDATA - u_char *dp; + const u_char *dp; #endif u_int data_off = sizeof(struct minseghdr); @@ -920,10 +919,10 @@ print_nsp(netdissect_options *ndo, case MFS_ILS+MFS_INT: ND_PRINT((ndo, "intr ")); { - struct seghdr *shp = (struct seghdr *)nspp; + const struct seghdr *shp = (const struct seghdr *)nspp; int ack; #ifdef PRINT_NSPDATA - u_char *dp; + const u_char *dp; #endif u_int data_off = sizeof(struct minseghdr); @@ -966,9 +965,9 @@ print_nsp(netdissect_options *ndo, case MFS_ILS: ND_PRINT((ndo, "link-service %d>%d ", src, dst)); { - struct seghdr *shp = (struct seghdr *)nspp; - struct lsmsg *lsmp = - (struct lsmsg *)&(nspp[sizeof(struct seghdr)]); + const struct seghdr *shp = (const struct seghdr *)nspp; + const struct lsmsg *lsmp = + (const struct lsmsg *)&(nspp[sizeof(struct seghdr)]); int ack; int lsflags, fcval; @@ -1032,7 +1031,7 @@ print_nsp(netdissect_options *ndo, case MFS_DACK: ND_PRINT((ndo, "data-ack %d>%d ", src, dst)); { - struct ackmsg *amp = (struct ackmsg *)nspp; + const struct ackmsg *amp = (const struct ackmsg *)nspp; int ack; if (nsplen < sizeof(struct ackmsg)) @@ -1057,7 +1056,7 @@ print_nsp(netdissect_options *ndo, case MFS_IACK: ND_PRINT((ndo, "ils-ack %d>%d ", src, dst)); { - struct ackmsg *amp = (struct ackmsg *)nspp; + const struct ackmsg *amp = (const struct ackmsg *)nspp; int ack; if (nsplen < sizeof(struct ackmsg)) @@ -1098,10 +1097,10 @@ print_nsp(netdissect_options *ndo, ND_PRINT((ndo, "retrans-conn-initiate ")); ND_PRINT((ndo, "%d>%d ", src, dst)); { - struct cimsg *cimp = (struct cimsg *)nspp; + const struct cimsg *cimp = (const struct cimsg *)nspp; int services, info, segsize; #ifdef PRINT_NSPDATA - u_char *dp; + const u_char *dp; #endif if (nsplen < sizeof(struct cimsg)) @@ -1151,11 +1150,11 @@ print_nsp(netdissect_options *ndo, case MFS_CC: ND_PRINT((ndo, "conn-confirm %d>%d ", src, dst)); { - struct ccmsg *ccmp = (struct ccmsg *)nspp; + const struct ccmsg *ccmp = (const struct ccmsg *)nspp; int services, info; u_int segsize, optlen; #ifdef PRINT_NSPDATA - u_char *dp; + const u_char *dp; #endif if (nsplen < sizeof(struct ccmsg)) @@ -1209,11 +1208,11 @@ print_nsp(netdissect_options *ndo, case MFS_DI: ND_PRINT((ndo, "disconn-initiate %d>%d ", src, dst)); { - struct dimsg *dimp = (struct dimsg *)nspp; + const struct dimsg *dimp = (const struct dimsg *)nspp; int reason; u_int optlen; #ifdef PRINT_NSPDATA - u_char *dp; + const u_char *dp; #endif if (nsplen < sizeof(struct dimsg)) @@ -1238,7 +1237,7 @@ print_nsp(netdissect_options *ndo, case MFS_DC: ND_PRINT((ndo, "disconn-confirm %d>%d ", src, dst)); { - struct dcmsg *dcmp = (struct dcmsg *)nspp; + const struct dcmsg *dcmp = (const struct dcmsg *)nspp; int reason; ND_TCHECK(*dcmp); @@ -1296,7 +1295,7 @@ print_reason(netdissect_options *ndo, } const char * -dnnum_string(u_short dnaddr) +dnnum_string(netdissect_options *ndo, u_short dnaddr) { char *str; size_t siz; @@ -1305,22 +1304,27 @@ dnnum_string(u_short dnaddr) str = (char *)malloc(siz = sizeof("00.0000")); if (str == NULL) - error("dnnum_string: malloc"); + (*ndo->ndo_error)(ndo, "dnnum_string: malloc"); snprintf(str, siz, "%d.%d", area, node); return(str); } const char * -dnname_string(u_short dnaddr) +dnname_string(netdissect_options *ndo, u_short dnaddr) { #ifdef HAVE_DNET_HTOA struct dn_naddr dna; + char *dnname; dna.a_len = sizeof(short); memcpy((char *)dna.a_addr, (char *)&dnaddr, sizeof(short)); - return (strdup(dnet_htoa(&dna))); + dnname = dnet_htoa(&dna); + if(dnname != NULL) + return (strdup(dnname)); + else + return(dnnum_string(ndo, dnaddr)); #else - return(dnnum_string(dnaddr)); /* punt */ + return(dnnum_string(ndo, dnaddr)); /* punt */ #endif }