summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--interface.h3
-rw-r--r--netdissect.h8
-rw-r--r--print-ascii.c21
-rw-r--r--print-bfd.c10
-rw-r--r--print-bgp.c24
-rw-r--r--print-bootp.c2
-rw-r--r--print-cdp.c2
-rw-r--r--print-cfm.c10
-rw-r--r--print-chdlc.c4
-rw-r--r--print-eigrp.c6
-rw-r--r--print-forces.c26
-rw-r--r--print-fr.c16
-rw-r--r--print-icmp.c10
-rw-r--r--print-icmp6.c743
-rw-r--r--print-ip6.c4
-rw-r--r--print-isoclns.c50
-rw-r--r--print-ldp.c14
-rw-r--r--print-lldp.c6
-rw-r--r--print-lmp.c10
-rw-r--r--print-lspping.c12
-rw-r--r--print-lwapp.c2
-rw-r--r--print-mpcp.c8
-rw-r--r--print-olsr.c2
-rw-r--r--print-ospf.c12
-rw-r--r--print-ospf6.c4
-rw-r--r--print-pim.c4
-rw-r--r--print-ppp.c32
-rw-r--r--print-radius.c2
-rw-r--r--print-rip.c16
-rw-r--r--print-rpki-rtr.c2
-rw-r--r--print-rsvp.c10
-rw-r--r--print-sflow.c6
-rw-r--r--print-sip.c2
-rw-r--r--print-slow.c14
-rw-r--r--print-syslog.c2
-rw-r--r--print-telnet.c2
-rw-r--r--print-vqp.c2
-rw-r--r--print-vtp.c2
-rw-r--r--tcpdump.c30
-rw-r--r--util.c12
40 files changed, 605 insertions, 542 deletions
diff --git a/interface.h b/interface.h
index 7bc2c84d..7c3a4683 100644
--- a/interface.h
+++ b/interface.h
@@ -175,13 +175,10 @@ extern u_int16_t create_osi_cksum(const u_int8_t *, int, int);
#include <pcap.h>
-extern int print_unknown_data(const u_char *, const char *,int);
extern void ascii_print(const u_char *, u_int);
extern void hex_and_ascii_print_with_offset(const char *, const u_char *,
u_int, u_int);
extern void hex_and_ascii_print(const char *, const u_char *, u_int);
-extern void hex_print_with_offset(const char *, const u_char *, u_int, u_int);
-extern void hex_print(const char *, const u_char *, u_int);
extern void telnet_print(const u_char *, u_int);
extern int llc_print(const u_char *, u_int, u_int, const u_char *,
const u_char *, u_short *);
diff --git a/netdissect.h b/netdissect.h
index 4fd47264..f82027c3 100644
--- a/netdissect.h
+++ b/netdissect.h
@@ -328,15 +328,17 @@ extern u_int netanalyzer_transparent_if_print(netdissect_options *,
extern int ethertype_print(netdissect_options *,u_short, const u_char *,
u_int, u_int);
+extern int print_unknown_data(netdissect_options *,const u_char *, const char *,int);
+extern void hex_print_with_offset(netdissect_options *, const char *ident, const u_char *cp,
+ u_int, u_int);
+extern void hex_print(netdissect_options *,const char *ident, const u_char *cp,u_int);
+
/* stuff that has not yet been rototiled */
#if 0
extern void ascii_print(netdissect_options *,u_int);
extern void hex_and_ascii_print_with_offset(netdissect_options *,const char *,
u_int, u_int);
extern void hex_and_ascii_print(netdissect_options *,const char *, u_int);
-extern void hex_print_with_offset(netdissect_options *,const char *,
- u_int, u_int);
-extern void hex_print(netdissect_options *,const char *, u_int);
extern void telnet_print(netdissect_options *,const u_char *, u_int);
extern int llc_print(netdissect_options *,
const u_char *, u_int, u_int, const u_char *,
diff --git a/print-ascii.c b/print-ascii.c
index fa8793cb..c672ca8c 100644
--- a/print-ascii.c
+++ b/print-ascii.c
@@ -47,7 +47,7 @@ static const char rcsid[] _U_ =
#include <tcpdump-stdinc.h>
#include <stdio.h>
-#include "interface.h"
+#include "netdissect.h"
#define ASCII_LINELENGTH 300
#define HEXDUMP_BYTES_PER_LINE 16
@@ -131,8 +131,9 @@ hex_and_ascii_print(register const char *ident, register const u_char *cp,
* telnet_print() wants this. It is essentially default_print_unaligned()
*/
void
-hex_print_with_offset(register const char *ident, register const u_char *cp, register u_int length,
- register u_int oset)
+hex_print_with_offset(netdissect_options *ndo,
+ const char *ident, const u_char *cp, u_int length,
+ u_int oset)
{
register u_int i, s;
register int nshorts;
@@ -141,16 +142,16 @@ hex_print_with_offset(register const char *ident, register const u_char *cp, reg
i = 0;
while (--nshorts >= 0) {
if ((i++ % 8) == 0) {
- (void)printf("%s0x%04x: ", ident, oset);
- oset += HEXDUMP_BYTES_PER_LINE;
+ (void)ND_PRINT((ndo,"%s0x%04x: ", ident, oset));
+ oset += HEXDUMP_BYTES_PER_LINE;
}
s = *cp++;
- (void)printf(" %02x%02x", s, *cp++);
+ (void)ND_PRINT((ndo," %02x%02x", s, *cp++));
}
if (length & 1) {
if ((i % 8) == 0)
- (void)printf("%s0x%04x: ", ident, oset);
- (void)printf(" %02x", *cp);
+ (void)ND_PRINT((ndo,"%s0x%04x: ", ident, oset));
+ (void)ND_PRINT((ndo," %02x", *cp));
}
}
@@ -158,9 +159,9 @@ hex_print_with_offset(register const char *ident, register const u_char *cp, reg
* just for completeness
*/
void
-hex_print(register const char *ident, register const u_char *cp, register u_int length)
+hex_print(netdissect_options *ndo,const char *ident, const u_char *cp, u_int length)
{
- hex_print_with_offset(ident, cp, length, 0);
+ hex_print_with_offset(ndo, ident, cp, length, 0);
}
#ifdef MAIN
diff --git a/print-bfd.c b/print-bfd.c
index 0020222d..dc03a8b4 100644
--- a/print-bfd.c
+++ b/print-bfd.c
@@ -271,8 +271,8 @@ bfd_print(register const u_char *pptr, register u_int len, register u_int port)
tok2str(bfd_port_values, "unknown (%u)", port),
len);
if (vflag >= 1) {
- if(!print_unknown_data(pptr,"\n\t",len))
- return;
+ if(!print_unknown_data(gndo, pptr,"\n\t",len))
+ return;
}
break;
}
@@ -281,3 +281,9 @@ bfd_print(register const u_char *pptr, register u_int len, register u_int port)
trunc:
printf("[|BFD]");
}
+/*
+ * Local Variables:
+ * c-style: whitesmith
+ * c-basic-offset: 8
+ * End:
+ */
diff --git a/print-bgp.c b/print-bgp.c
index 974903fc..5acdbc31 100644
--- a/print-bgp.c
+++ b/print-bgp.c
@@ -1518,7 +1518,7 @@ bgp_attr_print(u_int atype, const u_char *pptr, u_int len)
TCHECK2(tptr[0], tlen);
printf("\n\t no AFI %u / SAFI %u decoder",af,safi);
if (vflag <= 1)
- print_unknown_data(tptr,"\n\t ",tlen);
+ print_unknown_data(gndo,tptr,"\n\t ",tlen);
goto done;
break;
}
@@ -1651,7 +1651,7 @@ bgp_attr_print(u_int atype, const u_char *pptr, u_int len)
TCHECK2(tptr[0], tlen);
printf("no AFI %u/SAFI %u decoder",af,safi);
if (vflag <= 1)
- print_unknown_data(tptr,"\n\t ",tlen);
+ print_unknown_data(gndo,tptr,"\n\t ",tlen);
tptr += tlen;
tlen = 0;
goto done;
@@ -1818,7 +1818,7 @@ bgp_attr_print(u_int atype, const u_char *pptr, u_int len)
TCHECK2(*tptr,tlen);
printf("\n\t no AFI %u / SAFI %u decoder",af,safi);
if (vflag <= 1)
- print_unknown_data(tptr,"\n\t ",tlen);
+ print_unknown_data(gndo,tptr,"\n\t ",tlen);
advance = 0;
tptr = pptr + len;
break;
@@ -1980,7 +1980,7 @@ bgp_attr_print(u_int atype, const u_char *pptr, u_int len)
TCHECK2(*(tptr-3),tlen);
printf("no AFI %u / SAFI %u decoder",af,safi);
if (vflag <= 1)
- print_unknown_data(tptr-3,"\n\t ",tlen);
+ print_unknown_data(gndo,tptr-3,"\n\t ",tlen);
advance = 0;
tptr = pptr + len;
break;
@@ -2070,7 +2070,7 @@ bgp_attr_print(u_int atype, const u_char *pptr, u_int len)
break;
default:
TCHECK2(*tptr,8);
- print_unknown_data(tptr,"\n\t ",8);
+ print_unknown_data(gndo,tptr,"\n\t ",8);
break;
}
tlen -=8;
@@ -2131,7 +2131,7 @@ bgp_attr_print(u_int atype, const u_char *pptr, u_int len)
break;
default:
if (vflag <= 1) {
- print_unknown_data(tptr,"\n\t ",tlen);
+ print_unknown_data(gndo,tptr,"\n\t ",tlen);
}
}
break;
@@ -2193,12 +2193,12 @@ bgp_attr_print(u_int atype, const u_char *pptr, u_int len)
TCHECK2(*pptr,len);
printf("\n\t no Attribute %u decoder",atype); /* we have no decoder for the attribute */
if (vflag <= 1)
- print_unknown_data(pptr,"\n\t ",len);
+ print_unknown_data(gndo,pptr,"\n\t ",len);
break;
}
if (vflag > 1 && len) { /* omit zero length attributes*/
TCHECK2(*pptr,len);
- print_unknown_data(pptr,"\n\t ",len);
+ print_unknown_data(gndo,pptr,"\n\t ",len);
}
return 1;
@@ -2276,11 +2276,11 @@ bgp_capabilities_print(const u_char *opt, int caps_len)
printf("\n\t\tno decoder for Capability %u",
cap_type);
if (vflag <= 1)
- print_unknown_data(&opt[i+2],"\n\t\t",cap_len);
+ print_unknown_data(gndo,&opt[i+2],"\n\t\t",cap_len);
break;
}
if (vflag > 1 && cap_len > 0) {
- print_unknown_data(&opt[i+2],"\n\t\t",cap_len);
+ print_unknown_data(gndo,&opt[i+2],"\n\t\t",cap_len);
}
i += BGP_CAP_HEADER_SIZE + cap_len;
}
@@ -2628,7 +2628,7 @@ bgp_route_refresh_print(const u_char *pptr, int len) {
if (vflag > 1) {
TCHECK2(*pptr, len);
- print_unknown_data(pptr,"\n\t ", len);
+ print_unknown_data(gndo,pptr,"\n\t ", len);
}
return;
@@ -2669,7 +2669,7 @@ bgp_header_print(const u_char *dat, int length)
/* we have no decoder for the BGP message */
TCHECK2(*dat, length);
printf("\n\t no Message %u decoder",bgp.bgp_type);
- print_unknown_data(dat,"\n\t ",length);
+ print_unknown_data(gndo,dat,"\n\t ",length);
break;
}
return 1;
diff --git a/print-bootp.c b/print-bootp.c
index 499f9785..c4601567 100644
--- a/print-bootp.c
+++ b/print-bootp.c
@@ -691,7 +691,7 @@ rfc1048_print(register const u_char *bp)
break;
default:
- print_unknown_data(bp, "\n\t\t", suboptlen);
+ print_unknown_data(gndo,bp, "\n\t\t", suboptlen);
}
len -= suboptlen;
diff --git a/print-cdp.c b/print-cdp.c
index da3f10b4..12f2d4bf 100644
--- a/print-cdp.c
+++ b/print-cdp.c
@@ -220,7 +220,7 @@ cdp_print(const u_char *pptr, u_int length, u_int caplen)
}
break;
default:
- print_unknown_data(tptr,"\n\t ",len);
+ print_unknown_data(gndo,tptr,"\n\t ",len);
break;
}
}
diff --git a/print-cfm.c b/print-cfm.c
index b71014db..81f2df65 100644
--- a/print-cfm.c
+++ b/print-cfm.c
@@ -387,7 +387,7 @@ cfm_print(register const u_char *pptr, register u_int length) {
/* FIXME add printers for those MD formats - hexdump for now */
case CFM_CCM_MA_FORMAT_8021:
default:
- print_unknown_data(msg_ptr.cfm_ccm->md_name, "\n\t ",
+ print_unknown_data(gndo,msg_ptr.cfm_ccm->md_name, "\n\t ",
msg_ptr.cfm_ccm->md_namelength);
}
}
@@ -418,7 +418,7 @@ cfm_print(register const u_char *pptr, register u_int length) {
case CFM_CCM_MA_FORMAT_INT:
case CFM_CCM_MA_FORMAT_VPN:
default:
- print_unknown_data(ma_name, "\n\t ", *ma_namelength);
+ print_unknown_data(gndo,ma_name, "\n\t ", *ma_namelength);
}
break;
@@ -467,7 +467,7 @@ cfm_print(register const u_char *pptr, register u_int length) {
case CFM_OPCODE_LBM:
default:
if (tlen > cfm_common_header->first_tlv_offset) {
- print_unknown_data(tptr, "\n\t ",
+ print_unknown_data(gndo,tptr, "\n\t ",
tlen - cfm_common_header->first_tlv_offset);
}
break;
@@ -507,7 +507,7 @@ cfm_print(register const u_char *pptr, register u_int length) {
if ((cfm_tlv_type != CFM_TLV_END) &&
((cfm_tlv_len + sizeof(struct cfm_tlv_header_t) > tlen) ||
(!cfm_tlv_len))) {
- print_unknown_data(tptr,"\n\t ",tlen);
+ print_unknown_data(gndo,tptr,"\n\t ",tlen);
return;
}
@@ -634,7 +634,7 @@ cfm_print(register const u_char *pptr, register u_int length) {
}
/* do we want to see an additional hexdump ? */
if (hexdump || vflag > 1)
- print_unknown_data(tlv_ptr, "\n\t ", cfm_tlv_len);
+ print_unknown_data(gndo,tlv_ptr, "\n\t ", cfm_tlv_len);
tptr+=cfm_tlv_len;
tlen-=cfm_tlv_len;
diff --git a/print-chdlc.c b/print-chdlc.c
index 79eaaa9e..5685cc13 100644
--- a/print-chdlc.c
+++ b/print-chdlc.c
@@ -192,14 +192,14 @@ chdlc_slarp_print(const u_char *cp, u_int length)
default:
printf("0x%02x unknown", EXTRACT_32BITS(&slarp->code));
if (vflag <= 1)
- print_unknown_data(cp+4,"\n\t",length-4);
+ print_unknown_data(gndo,cp+4,"\n\t",length-4);
break;
}
if (SLARP_MAX_LEN < length && vflag)
printf(", (trailing junk: %d bytes)", length - SLARP_MAX_LEN);
if (vflag > 1)
- print_unknown_data(cp+4,"\n\t",length-4);
+ print_unknown_data(gndo,cp+4,"\n\t",length-4);
return;
trunc:
diff --git a/print-eigrp.c b/print-eigrp.c
index 86288450..4177564d 100644
--- a/print-eigrp.c
+++ b/print-eigrp.c
@@ -280,7 +280,7 @@ eigrp_print(register const u_char *pptr, register u_int len) {
if (eigrp_tlv_len < sizeof(struct eigrp_tlv_header) ||
eigrp_tlv_len > tlen) {
- print_unknown_data(tptr+sizeof(struct eigrp_tlv_header),"\n\t ",tlen);
+ print_unknown_data(gndo,tptr+sizeof(struct eigrp_tlv_header),"\n\t ",tlen);
return;
}
@@ -463,12 +463,12 @@ eigrp_print(register const u_char *pptr, register u_int len) {
default:
if (vflag <= 1)
- print_unknown_data(tlv_tptr,"\n\t ",tlv_tlen);
+ print_unknown_data(gndo,tlv_tptr,"\n\t ",tlv_tlen);
break;
}
/* do we want to see an additionally hexdump ? */
if (vflag > 1)
- print_unknown_data(tptr+sizeof(struct eigrp_tlv_header),"\n\t ",
+ print_unknown_data(gndo,tptr+sizeof(struct eigrp_tlv_header),"\n\t ",
eigrp_tlv_len-sizeof(struct eigrp_tlv_header));
tptr+=eigrp_tlv_len;
diff --git a/print-forces.c b/print-forces.c
index 49c26ae0..5a19890e 100644
--- a/print-forces.c
+++ b/print-forces.c
@@ -720,7 +720,7 @@ fdatatlv_print(register const u_char * pptr, register u_int len,
if (vflag >= 3) {
char *ib = indent_pr(indent + 2, 1);
printf("%s[", &ib[1]);
- hex_print_with_offset(ib, tdp, rlen, 0);
+ hex_print_with_offset(gndo,ib, tdp, rlen, 0);
printf("\n%s]\n", &ib[1]);
}
return 0;
@@ -754,7 +754,7 @@ sdatailv_print(register const u_char * pptr, register u_int len,
invilv = ilv_valid(ilv, rlen);
if (invilv) {
printf("%s[", &ib[1]);
- hex_print_with_offset(ib, tdp, rlen, 0);
+ hex_print_with_offset(gndo,ib, tdp, rlen, 0);
printf("\n%s]\n", &ib[1]);
return -1;
}
@@ -762,7 +762,7 @@ sdatailv_print(register const u_char * pptr, register u_int len,
int ilvl = EXTRACT_32BITS(&ilv->length);
printf("\n%s ILV: type %x length %d\n", &ib[1],
EXTRACT_32BITS(&ilv->type), ilvl);
- hex_print_with_offset("\t\t[", tdp, ilvl-ILV_HDRL, 0);
+ hex_print_with_offset(gndo,"\t\t[", tdp, ilvl-ILV_HDRL, 0);
}
ilv = GO_NXT_ILV(ilv, rlen);
@@ -989,7 +989,7 @@ pdatacnt_print(register const u_char * pptr, register u_int len,
type, EXTRACT_16BITS(&pdtlv->length));
pd_err:
if (EXTRACT_16BITS(&pdtlv->length)) {
- hex_print_with_offset("Bad Data val\n\t [",
+ hex_print_with_offset(gndo,"Bad Data val\n\t [",
pptr, len, 0);
printf("]\n");
@@ -1042,7 +1042,7 @@ pdata_print(register const u_char * pptr, register u_int len,
if (len < minsize) {
printf("\t\t\ttruncated IDs expected %uB got %uB\n", minsize,
len);
- hex_print_with_offset("\t\t\tID Data[", pptr, len, 0);
+ hex_print_with_offset(gndo,"\t\t\tID Data[", pptr, len, 0);
printf("]\n");
return -1;
}
@@ -1174,7 +1174,7 @@ invoptlv_print(register const u_char * pptr, register u_int len,
if (vflag >= 3) {
printf("%sData[", &ib[1]);
- hex_print_with_offset(ib, pptr, len, 0);
+ hex_print_with_offset(gndo,ib, pptr, len, 0);
printf("%s]\n", ib);
}
return -1;
@@ -1374,7 +1374,7 @@ print_metailv(register const u_char * pptr, register u_int len,
printf("%sMetaID 0x%x length %d\n", ib, EXTRACT_32BITS(&ilv->type),
EXTRACT_32BITS(&ilv->length));
if (vflag >= 3) {
- hex_print_with_offset("\t\t[", ILV_DATA(ilv), rlen, 0);
+ hex_print_with_offset(gndo,"\t\t[", ILV_DATA(ilv), rlen, 0);
printf(" ]\n");
}
return 0;
@@ -1439,7 +1439,7 @@ print_reddata(register const u_char * pptr, register u_int len,
if (vflag >= 3) {
printf("\t\t[");
- hex_print_with_offset("\n\t\t", pptr, rlen, 0);
+ hex_print_with_offset(gndo,"\n\t\t", pptr, rlen, 0);
printf("\n\t\t]");
}
@@ -1739,14 +1739,14 @@ forces_print(register const u_char * pptr, register u_int len)
rc = forces_type_print(pptr, fhdr, mlen, tops);
if (rc < 0) {
error:
- hex_print_with_offset("\n\t[", pptr, len, 0);
+ hex_print_with_offset(gndo,"\n\t[", pptr, len, 0);
printf("\n\t]");
return;
}
if (vflag >= 4) {
printf("\n\t Raw ForCES message\n\t [");
- hex_print_with_offset("\n\t ", pptr, len, 0);
+ hex_print_with_offset(gndo,"\n\t ", pptr, len, 0);
printf("\n\t ]");
}
printf("\n");
@@ -1755,3 +1755,9 @@ error:
trunc:
printf("%s", tstr);
}
+/*
+ * Local Variables:
+ * c-style: whitesmith
+ * c-basic-offset: 8
+ * End:
+ */
diff --git a/print-fr.c b/print-fr.c
index ba134d29..56cc47de 100644
--- a/print-fr.c
+++ b/print-fr.c
@@ -484,13 +484,13 @@ mfr_print(register const u_char *p, u_int length)
default:
if (vflag <= 1)
- print_unknown_data(tptr,"\n\t ",ie_len);
+ print_unknown_data(gndo,tptr,"\n\t ",ie_len);
break;
}
/* do we want to see a hexdump of the IE ? */
if (vflag > 1 )
- print_unknown_data(tptr,"\n\t ",ie_len);
+ print_unknown_data(gndo,tptr,"\n\t ",ie_len);
tlen-=ie_len;
tptr+=ie_len;
@@ -528,7 +528,7 @@ mfr_print(register const u_char *p, u_int length)
printf("FRF.16 Frag, seq %u, Flags [%s]",
sequence_num,
bittok2str(frf_flag_values,"none",(p[0] & MFR_BEC_MASK)));
- print_unknown_data(p,"\n\t",length);
+ print_unknown_data(gndo,p,"\n\t",length);
return hdr_len;
@@ -807,12 +807,12 @@ q933_print(const u_char *p, u_int length)
}
if (vflag >= 1 && !ie_is_known) {
- print_unknown_data(ptemp+2,"\n\t",ie_p->ie_len);
+ print_unknown_data(gndo,ptemp+2,"\n\t",ie_p->ie_len);
}
/* do we want to see a hexdump of the IE ? */
if (vflag> 1 && ie_is_known) {
- print_unknown_data(ptemp+2,"\n\t ",ie_p->ie_len);
+ print_unknown_data(gndo,ptemp+2,"\n\t ",ie_p->ie_len);
}
length = length - ie_p->ie_len - 2;
@@ -881,3 +881,9 @@ fr_q933_print_ie_codeset5(const struct ie_tlv_header_t *ie_p, const u_char *p)
return 0;
}
+/*
+ * Local Variables:
+ * c-style: whitesmith
+ * c-basic-offset: 8
+ * End:
+ */
diff --git a/print-icmp.c b/print-icmp.c
index 135b9a44..cbc342b3 100644
--- a/print-icmp.c
+++ b/print-icmp.c
@@ -669,7 +669,7 @@ icmp_print(const u_char *bp, u_int plen, const u_char *bp2, int fragmented)
printf(", ttl %u", MPLS_TTL(raw_label));
break;
default:
- print_unknown_data(obj_tptr, "\n\t ", obj_tlen);
+ print_unknown_data(gndo,obj_tptr, "\n\t ", obj_tlen);
}
break;
@@ -679,7 +679,7 @@ icmp_print(const u_char *bp, u_int plen, const u_char *bp2, int fragmented)
*/
case 2:
default:
- print_unknown_data(obj_tptr, "\n\t ", obj_tlen);
+ print_unknown_data(gndo,obj_tptr, "\n\t ", obj_tlen);
break;
}
if (hlen < obj_tlen)
@@ -693,3 +693,9 @@ icmp_print(const u_char *bp, u_int plen, const u_char *bp2, int fragmented)
trunc:
fputs("[|icmp]", stdout);
}
+/*
+ * Local Variables:
+ * c-style: whitesmith
+ * c-basic-offset: 8
+ * End:
+ */
diff --git a/print-icmp6.c b/print-icmp6.c
index 4953340f..011702bc 100644
--- a/print-icmp6.c
+++ b/print-icmp6.c
@@ -35,7 +35,7 @@ static const char rcsid[] _U_ =
#include <stdio.h>
#include <string.h>
-#include "interface.h"
+#include "netdissect.h"
#include "addrtoname.h"
#include "extract.h"
@@ -48,15 +48,15 @@ static const char rcsid[] _U_ =
static const char *get_rtpref(u_int);
static const char *get_lifetime(u_int32_t);
-static void print_lladdr(const u_char *, size_t);
-static void icmp6_opt_print(const u_char *, int);
-static void mld6_print(const u_char *);
-static void mldv2_report_print(const u_char *, u_int);
-static void mldv2_query_print(const u_char *, u_int);
-static struct udphdr *get_upperlayer(u_char *, u_int *);
-static void dnsname_print(const u_char *, const u_char *);
-static void icmp6_nodeinfo_print(u_int, const u_char *, const u_char *);
-static void icmp6_rrenum_print(const u_char *, const u_char *);
+static void print_lladdr(netdissect_options *ndo, const u_char *, size_t);
+static void icmp6_opt_print(netdissect_options *ndo, const u_char *, int);
+static void mld6_print(netdissect_options *ndo, const u_char *);
+static void mldv2_report_print(netdissect_options *ndo, const u_char *, u_int);
+static void mldv2_query_print(netdissect_options *ndo, const u_char *, u_int);
+static struct udphdr *get_upperlayer(netdissect_options *ndo, u_char *, u_int *);
+static void dnsname_print(netdissect_options *ndo, const u_char *, const u_char *);
+static void icmp6_nodeinfo_print(netdissect_options *ndo, u_int, const u_char *, const u_char *);
+static void icmp6_rrenum_print(netdissect_options *ndo, const u_char *, const u_char *);
#ifndef abs
#define abs(a) ((0 < (a)) ? (a) : -(a))
@@ -181,7 +181,7 @@ get_lifetime(u_int32_t v)
}
static void
-print_lladdr(const u_int8_t *p, size_t l)
+print_lladdr(netdissect_options *ndo, const u_int8_t *p, size_t l)
{
const u_int8_t *ep, *q;
@@ -189,8 +189,8 @@ print_lladdr(const u_int8_t *p, size_t l)
ep = p + l;
while (l > 0 && q < ep) {
if (q > p)
- printf(":");
- printf("%02x", *q++);
+ ND_PRINT((ndo,":"));
+ ND_PRINT((ndo,"%02x", *q++));
l--;
}
}
@@ -315,167 +315,167 @@ icmp6_print(netdissect_options *ndo,
ip = (struct ip6_hdr *)bp2;
oip = (struct ip6_hdr *)(dp + 1);
/* 'ep' points to the end of available data. */
- ep = snapend;
+ ep = ndo->ndo_snapend;
- TCHECK(dp->icmp6_cksum);
+ ND_TCHECK(dp->icmp6_cksum);
- if (vflag && !fragmented) {
+ if (ndo->ndo_vflag && !fragmented) {
u_int16_t sum, udp_sum;
- if (TTEST2(bp[0], length)) {
+ if (ND_TTEST2(bp[0], length)) {
udp_sum = EXTRACT_16BITS(&dp->icmp6_cksum);
sum = icmp6_cksum(ip, dp, length);
if (sum != 0)
- (void)printf("[bad icmp6 cksum 0x%04x -> 0x%04x!] ",
- udp_sum,
- in_cksum_shouldbe(udp_sum, sum));
+ (void)ND_PRINT((ndo,"[bad icmp6 cksum 0x%04x -> 0x%04x!] ",
+ udp_sum,
+ in_cksum_shouldbe(udp_sum, sum)));
else
- (void)printf("[icmp6 sum ok] ");
+ (void)ND_PRINT((ndo,"[icmp6 sum ok] "));
}
}
- printf("ICMP6, %s", tok2str(icmp6_type_values,"unknown icmp6 type (%u)",dp->icmp6_type));
+ ND_PRINT((ndo,"ICMP6, %s", tok2str(icmp6_type_values,"unknown icmp6 type (%u)",dp->icmp6_type)));
/* display cosmetics: print the packet length for printer that use the vflag now */
- if (vflag && (dp->icmp6_type == ND_ROUTER_SOLICIT ||
+ if (ndo->ndo_vflag && (dp->icmp6_type == ND_ROUTER_SOLICIT ||
dp->icmp6_type == ND_ROUTER_ADVERT ||
dp->icmp6_type == ND_NEIGHBOR_ADVERT ||
dp->icmp6_type == ND_NEIGHBOR_SOLICIT ||
dp->icmp6_type == ND_REDIRECT ||
dp->icmp6_type == ICMP6_HADISCOV_REPLY ||
dp->icmp6_type == ICMP6_MOBILEPREFIX_ADVERT ))
- printf(", length %u", length);
+ ND_PRINT((ndo,", length %u", length));
switch (dp->icmp6_type) {
case ICMP6_DST_UNREACH:
- TCHECK(oip->ip6_dst);
- printf(", %s", tok2str(icmp6_dst_unreach_code_values,"unknown unreach code (%u)",dp->icmp6_code));
+ ND_TCHECK(oip->ip6_dst);
+ ND_PRINT((ndo,", %s", tok2str(icmp6_dst_unreach_code_values,"unknown unreach code (%u)",dp->icmp6_code)));
switch (dp->icmp6_code) {
case ICMP6_DST_UNREACH_NOROUTE: /* fall through */
case ICMP6_DST_UNREACH_ADMIN:
case ICMP6_DST_UNREACH_ADDR:
- printf(" %s",ip6addr_string(&oip->ip6_dst));
+ ND_PRINT((ndo," %s",ip6addr_string(&oip->ip6_dst)));
break;
case ICMP6_DST_UNREACH_BEYONDSCOPE:
- printf(" %s, source address %s",
+ ND_PRINT((ndo," %s, source address %s",
ip6addr_string(&oip->ip6_dst),
- ip6addr_string(&oip->ip6_src));
+ ip6addr_string(&oip->ip6_src)));
break;
case ICMP6_DST_UNREACH_NOPORT:
- if ((ouh = get_upperlayer((u_char *)oip, &prot))
+ if ((ouh = get_upperlayer(ndo, (u_char *)oip, &prot))
== NULL)
goto trunc;
dport = EXTRACT_16BITS(&ouh->uh_dport);
switch (prot) {
case IPPROTO_TCP:
- printf(", %s tcp port %s",
+ ND_PRINT((ndo,", %s tcp port %s",
ip6addr_string(&oip->ip6_dst),
- tcpport_string(dport));
+ tcpport_string(dport)));
break;
case IPPROTO_UDP:
- printf(", %s udp port %s",
+ ND_PRINT((ndo,", %s udp port %s",
ip6addr_string(&oip->ip6_dst),
- udpport_string(dport));
+ udpport_string(dport)));
break;
default:
- printf(", %s protocol %d port %d unreachable",
+ ND_PRINT((ndo,", %s protocol %d port %d unreachable",
ip6addr_string(&oip->ip6_dst),
- oip->ip6_nxt, dport);
+ oip->ip6_nxt, dport));
break;
}
break;
default:
- if (vflag <= 1) {
- print_unknown_data(bp,"\n\t",length);
- return;
- }
+ if (ndo->ndo_vflag <= 1) {
+ print_unknown_data(ndo, bp,"\n\t",length);
+ return;
+ }
break;
}
break;
case ICMP6_PACKET_TOO_BIG:
- TCHECK(dp->icmp6_mtu);
- printf(", mtu %u", EXTRACT_32BITS(&dp->icmp6_mtu));
+ ND_TCHECK(dp->icmp6_mtu);
+ ND_PRINT((ndo,", mtu %u", EXTRACT_32BITS(&dp->icmp6_mtu)));
break;
case ICMP6_TIME_EXCEEDED:
- TCHECK(oip->ip6_dst);
+ ND_TCHECK(oip->ip6_dst);
switch (dp->icmp6_code) {
case ICMP6_TIME_EXCEED_TRANSIT:
- printf(" for %s",
- ip6addr_string(&oip->ip6_dst));
+ ND_PRINT((ndo," for %s",
+ ip6addr_string(&oip->ip6_dst)));
break;
case ICMP6_TIME_EXCEED_REASSEMBLY:
- printf(" (reassembly)");
+ ND_PRINT((ndo," (reassembly)"));
break;
default:
- printf(", unknown code (%u)", dp->icmp6_code);
+ ND_PRINT((ndo,", unknown code (%u)", dp->icmp6_code));
break;
}
break;
case ICMP6_PARAM_PROB:
- TCHECK(oip->ip6_dst);
+ ND_TCHECK(oip->ip6_dst);
switch (dp->icmp6_code) {
case ICMP6_PARAMPROB_HEADER:
- printf(", erroneous - octet %u", EXTRACT_32BITS(&dp->icmp6_pptr));
- break;
+ ND_PRINT((ndo,", erroneous - octet %u", EXTRACT_32BITS(&dp->icmp6_pptr)));
+ break;
case ICMP6_PARAMPROB_NEXTHEADER:
- printf(", next header - octet %u", EXTRACT_32BITS(&dp->icmp6_pptr));
- break;
+ ND_PRINT((ndo,", next header - octet %u", EXTRACT_32BITS(&dp->icmp6_pptr)));
+ break;
case ICMP6_PARAMPROB_OPTION:
- printf(", option - octet %u", EXTRACT_32BITS(&dp->icmp6_pptr));
- break;
+ ND_PRINT((ndo,", option - octet %u", EXTRACT_32BITS(&dp->icmp6_pptr)));
+ break;
default:
- printf(", code-#%d",
- dp->icmp6_code);
- break;
+ ND_PRINT((ndo,", code-#%d",
+ dp->icmp6_code));
+ break;
}
break;
case ICMP6_ECHO_REQUEST:
case ICMP6_ECHO_REPLY:
- TCHECK(dp->icmp6_seq);
- printf(", seq %u", EXTRACT_16BITS(&dp->icmp6_seq));
+ ND_TCHECK(dp->icmp6_seq);
+ ND_PRINT((ndo,", seq %u", EXTRACT_16BITS(&dp->icmp6_seq)));
break;
case ICMP6_MEMBERSHIP_QUERY:
if (length == MLD_MINLEN) {
- mld6_print((const u_char *)dp);
+ mld6_print(ndo, (const u_char *)dp);
} else if (length >= MLDV2_MINLEN) {
- printf(" v2");
- mldv2_query_print((const u_char *)dp, length);
+ ND_PRINT((ndo," v2"));
+ mldv2_query_print(ndo, (const u_char *)dp, length);
} else {
- printf(" unknown-version (len %u) ", length);
+ ND_PRINT((ndo," unknown-version (len %u) ", length));
}
break;
case ICMP6_MEMBERSHIP_REPORT:
- mld6_print((const u_char *)dp);
+ mld6_print(ndo, (const u_char *)dp);
break;
case ICMP6_MEMBERSHIP_REDUCTION:
- mld6_print((const u_char *)dp);
+ mld6_print(ndo, (const u_char *)dp);
break;
case ND_ROUTER_SOLICIT:
#define RTSOLLEN 8
- if (vflag) {
- icmp6_opt_print((const u_char *)dp + RTSOLLEN,
+ if (ndo->ndo_vflag) {
+ icmp6_opt_print(ndo, (const u_char *)dp + RTSOLLEN,
length - RTSOLLEN);
}
break;
case ND_ROUTER_ADVERT:
#define RTADVLEN 16
- if (vflag) {
+ if (ndo->ndo_vflag) {
struct nd_router_advert *p;
p = (struct nd_router_advert *)dp;
- TCHECK(p->nd_ra_retransmit);
- printf("\n\thop limit %u, Flags [%s]" \
- ", pref %s, router lifetime %us, reachable time %us, retrans time %us",
- (u_int)p->nd_ra_curhoplimit,
- bittok2str(icmp6_opt_ra_flag_values,"none",(p->nd_ra_flags_reserved)),
- get_rtpref(p->nd_ra_flags_reserved),
- EXTRACT_16BITS(&p->nd_ra_router_lifetime),
- EXTRACT_32BITS(&p->nd_ra_reachable),
- EXTRACT_32BITS(&p->nd_ra_retransmit));
-
- icmp6_opt_print((const u_char *)dp + RTADVLEN,
+ ND_TCHECK(p->nd_ra_retransmit);
+ ND_PRINT((ndo,"\n\thop limit %u, Flags [%s]" \
+ ", pref %s, router lifetime %us, reachable time %us, retrans time %us",
+ (u_int)p->nd_ra_curhoplimit,
+ bittok2str(icmp6_opt_ra_flag_values,"none",(p->nd_ra_flags_reserved)),
+ get_rtpref(p->nd_ra_flags_reserved),
+ EXTRACT_16BITS(&p->nd_ra_router_lifetime),
+ EXTRACT_32BITS(&p->nd_ra_reachable),
+ EXTRACT_32BITS(&p->nd_ra_retransmit)));
+
+ icmp6_opt_print(ndo, (const u_char *)dp + RTADVLEN,
length - RTADVLEN);
}
break;
@@ -483,11 +483,11 @@ icmp6_print(netdissect_options *ndo,
{
struct nd_neighbor_solicit *p;
p = (struct nd_neighbor_solicit *)dp;
- TCHECK(p->nd_ns_target);
- printf(", who has %s", ip6addr_string(&p->nd_ns_target));
- if (vflag) {
+ ND_TCHECK(p->nd_ns_target);
+ ND_PRINT((ndo,", who has %s", ip6addr_string(&p->nd_ns_target)));
+ if (ndo->ndo_vflag) {
#define NDSOLLEN 24
- icmp6_opt_print((const u_char *)dp + NDSOLLEN,
+ icmp6_opt_print(ndo, (const u_char *)dp + NDSOLLEN,
length - NDSOLLEN);
}
}
@@ -497,16 +497,16 @@ icmp6_print(netdissect_options *ndo,
struct nd_neighbor_advert *p;
p = (struct nd_neighbor_advert *)dp;
- TCHECK(p->nd_na_target);
- printf(", tgt is %s",
- ip6addr_string(&p->nd_na_target));
- if (vflag) {
- printf(", Flags [%s]",
- bittok2str(icmp6_nd_na_flag_values,
- "none",
- EXTRACT_32BITS(&p->nd_na_flags_reserved)));
+ ND_TCHECK(p->nd_na_target);
+ ND_PRINT((ndo,", tgt is %s",
+ ip6addr_string(&p->nd_na_target)));
+ if (ndo->ndo_vflag) {
+ ND_PRINT((ndo,", Flags [%s]",
+ bittok2str(icmp6_nd_na_flag_values,
+ "none",
+ EXTRACT_32BITS(&p->nd_na_flags_reserved))));
#define NDADVLEN 24
- icmp6_opt_print((const u_char *)dp + NDADVLEN,
+ icmp6_opt_print(ndo, (const u_char *)dp + NDADVLEN,
length - NDADVLEN);
#undef NDADVLEN
}
@@ -514,64 +514,64 @@ icmp6_print(netdissect_options *ndo,
break;
case ND_REDIRECT:
#define RDR(i) ((struct nd_redirect *)(i))
- TCHECK(RDR(dp)->nd_rd_dst);
- printf(", %s", getname6((const u_char *)&RDR(dp)->nd_rd_dst));
- TCHECK(RDR(dp)->nd_rd_target);
- printf(" to %s",
- getname6((const u_char*)&RDR(dp)->nd_rd_target));
+ ND_TCHECK(RDR(dp)->nd_rd_dst);
+ ND_PRINT((ndo,", %s", getname6((const u_char *)&RDR(dp)->nd_rd_dst)));
+ ND_TCHECK(RDR(dp)->nd_rd_target);
+ ND_PRINT((ndo," to %s",
+ getname6((const u_char*)&RDR(dp)->nd_rd_target)));
#define REDIRECTLEN 40
- if (vflag) {
- icmp6_opt_print((const u_char *)dp + REDIRECTLEN,
+ if (ndo->ndo_vflag) {
+ icmp6_opt_print(ndo, (const u_char *)dp + REDIRECTLEN,
length - REDIRECTLEN);
}
break;
#undef REDIRECTLEN
#undef RDR
case ICMP6_ROUTER_RENUMBERING:
- icmp6_rrenum_print(bp, ep);
+ icmp6_rrenum_print(ndo, bp, ep);
break;
case ICMP6_NI_QUERY:
case ICMP6_NI_REPLY:
- icmp6_nodeinfo_print(length, bp, ep);
+ icmp6_nodeinfo_print(ndo, length, bp, ep);
break;
case IND_SOLICIT:
case IND_ADVERT:
break;
case ICMP6_V2_MEMBERSHIP_REPORT:
- mldv2_report_print((const u_char *) dp, length);
+ mldv2_report_print(ndo, (const u_char *) dp, length);
break;
case ICMP6_MOBILEPREFIX_SOLICIT: /* fall through */
case ICMP6_HADISCOV_REQUEST:
- TCHECK(dp->icmp6_data16[0]);
- printf(", id 0x%04x", EXTRACT_16BITS(&dp->icmp6_data16[0]));
+ ND_TCHECK(dp->icmp6_data16[0]);
+ ND_PRINT((ndo,", id 0x%04x", EXTRACT_16BITS(&dp->icmp6_data16[0])));
break;
case ICMP6_HADISCOV_REPLY:
- if (vflag) {
+ if (ndo->ndo_vflag) {
struct in6_addr *in6;
u_char *cp;
- TCHECK(dp->icmp6_data16[0]);
- printf(", id 0x%04x", EXTRACT_16BITS(&dp->icmp6_data16[0]));
+ ND_TCHECK(dp->icmp6_data16[0]);
+ ND_PRINT((ndo,", id 0x%04x", EXTRACT_16BITS(&dp->icmp6_data16[0])));
cp = (u_char *)dp + length;
in6 = (struct in6_addr *)(dp + 1);
for (; (u_char *)in6 < cp; in6++) {
- TCHECK(*in6);
- printf(", %s", ip6addr_string(in6));
+ ND_TCHECK(*in6);
+ ND_PRINT((ndo,", %s", ip6addr_string(in6)));
}
}
break;
case ICMP6_MOBILEPREFIX_ADVERT:
- if (vflag) {
- TCHECK(dp->icmp6_data16[0]);
- printf(", id 0x%04x", EXTRACT_16BITS(&dp->icmp6_data16[0]));
+ if (ndo->ndo_vflag) {
+ ND_TCHECK(dp->icmp6_data16[0]);
+ ND_PRINT((ndo,", id 0x%04x", EXTRACT_16BITS(&dp->icmp6_data16[0])));
if (dp->icmp6_data16[1] & 0xc0)
- printf(" ");
+ ND_PRINT((ndo," "));
if (dp->icmp6_data16[1] & 0x80)
- printf("M");
+ ND_PRINT((ndo,"M"));
if (dp->icmp6_data16[1] & 0x40)
- printf("O");
+ ND_PRINT((ndo,"O"));
#define MPADVLEN 8
- icmp6_opt_print((const u_char *)dp + MPADVLEN,
+ icmp6_opt_print(ndo, (const u_char *)dp + MPADVLEN,
length - MPADVLEN);
}
break;
@@ -579,20 +579,20 @@ icmp6_print(netdissect_options *ndo,
rpl_print(ndo, dp, &dp->icmp6_data8[0], length);
break;
default:
- printf(", length %u", length);
- if (vflag <= 1)
- print_unknown_data(bp,"\n\t", length);
+ ND_PRINT((ndo,", length %u", length));
+ if (ndo->ndo_vflag <= 1)
+ print_unknown_data(ndo, bp,"\n\t", length);
return;
}
- if (!vflag)
- printf(", length %u", length);
+ if (!ndo->ndo_vflag)
+ ND_PRINT((ndo,", length %u", length));
return;
trunc:
- fputs("[|icmp6]", stdout);
+ ND_PRINT((ndo, "[|icmp6]"));
}
static struct udphdr *
-get_upperlayer(u_char *bp, u_int *prot)
+get_upperlayer(netdissect_options *ndo, u_char *bp, u_int *prot)
{
const u_char *ep;
struct ip6_hdr *ip6 = (struct ip6_hdr *)bp;
@@ -604,9 +604,9 @@ get_upperlayer(u_char *bp, u_int *prot)
int hlen;
/* 'ep' points to the end of available data. */
- ep = snapend;
+ ep = ndo->ndo_snapend;
- if (!TTEST(ip6->ip6_nxt))
+ if (!ND_TTEST(ip6->ip6_nxt))
return NULL;
nh = ip6->ip6_nxt;
@@ -619,7 +619,7 @@ get_upperlayer(u_char *bp, u_int *prot)
case IPPROTO_UDP:
case IPPROTO_TCP:
uh = (struct udphdr *)bp;
- if (TTEST(uh->uh_dport)) {
+ if (ND_TTEST(uh->uh_dport)) {
*prot = nh;
return(uh);
}
@@ -631,7 +631,7 @@ get_upperlayer(u_char *bp, u_int *prot)
case IPPROTO_DSTOPTS:
case IPPROTO_ROUTING:
hbh = (struct ip6_hbh *)bp;
- if (!TTEST(hbh->ip6h_len))
+ if (!ND_TTEST(hbh->ip6h_len))
return(NULL);
nh = hbh->ip6h_nxt;
hlen = (hbh->ip6h_len + 1) << 3;
@@ -639,7 +639,7 @@ get_upperlayer(u_char *bp, u_int *prot)
case IPPROTO_FRAGMENT: /* this should be odd, but try anyway */
fragh = (struct ip6_frag *)bp;
- if (!TTEST(fragh->ip6f_offlg))
+ if (!ND_TTEST(fragh->ip6f_offlg))
return(NULL);
/* fragments with non-zero offset are meaningless */
if ((EXTRACT_16BITS(&fragh->ip6f_offlg) & IP6F_OFF_MASK) != 0)
@@ -650,7 +650,7 @@ get_upperlayer(u_char *bp, u_int *prot)
case IPPROTO_AH:
ah = (struct ah *)bp;
- if (!TTEST(ah->ah_len))
+ if (!ND_TTEST(ah->ah_len))
return(NULL);
nh = ah->ah_nxt;
hlen = (ah->ah_len + 2) << 2;
@@ -666,7 +666,7 @@ get_upperlayer(u_char *bp, u_int *prot)
}
static void
-icmp6_opt_print(const u_char *bp, int resid)
+icmp6_opt_print(netdissect_options *ndo, const u_char *bp, int resid)
{
const struct nd_opt_hdr *op;
const struct nd_opt_prefix_info *opp;
@@ -685,7 +685,7 @@ icmp6_opt_print(const u_char *bp, int resid)
cp = bp;
/* 'ep' points to the end of available data. */
- ep = snapend;
+ ep = ndo->ndo_snapend;
while (cp < ep) {
op = (struct nd_opt_hdr *)cp;
@@ -698,58 +698,58 @@ icmp6_opt_print(const u_char *bp, int resid)
if (cp + (op->nd_opt_len << 3) > ep)
goto trunc;
- printf("\n\t %s option (%u), length %u (%u): ",
- tok2str(icmp6_opt_values, "unknown", op->nd_opt_type),
- op->nd_opt_type,
- op->nd_opt_len << 3,
- op->nd_opt_len);
+ ND_PRINT((ndo,"\n\t %s option (%u), length %u (%u): ",
+ tok2str(icmp6_opt_values, "unknown", op->nd_opt_type),
+ op->nd_opt_type,
+ op->nd_opt_len << 3,
+ op->nd_opt_len));
switch (op->nd_opt_type) {
case ND_OPT_SOURCE_LINKADDR:
l = (op->nd_opt_len << 3) - 2;
- print_lladdr(cp + 2, l);
+ print_lladdr(ndo, cp + 2, l);
break;
case ND_OPT_TARGET_LINKADDR:
l = (op->nd_opt_len << 3) - 2;
- print_lladdr(cp + 2, l);
+ print_lladdr(ndo, cp + 2, l);
break;
case ND_OPT_PREFIX_INFORMATION:
opp = (struct nd_opt_prefix_info *)op;
- TCHECK(opp->nd_opt_pi_prefix);
- printf("%s/%u%s, Flags [%s], valid time %s",
- ip6addr_string(&opp->nd_opt_pi_prefix),
- opp->nd_opt_pi_prefix_len,
- (op->nd_opt_len != 4) ? "badlen" : "",
- bittok2str(icmp6_opt_pi_flag_values, "none", opp->nd_opt_pi_flags_reserved),
- get_lifetime(EXTRACT_32BITS(&opp->nd_opt_pi_valid_time)));
- printf(", pref. time %s", get_lifetime(EXTRACT_32BITS(&opp->nd_opt_pi_preferred_time)));
+ ND_TCHECK(opp->nd_opt_pi_prefix);
+ ND_PRINT((ndo,"%s/%u%s, Flags [%s], valid time %s",
+ ip6addr_string(&opp->nd_opt_pi_prefix),
+ opp->nd_opt_pi_prefix_len,
+ (op->nd_opt_len != 4) ? "badlen" : "",
+ bittok2str(icmp6_opt_pi_flag_values, "none", opp->nd_opt_pi_flags_reserved),
+ get_lifetime(EXTRACT_32BITS(&opp->nd_opt_pi_valid_time))));
+ ND_PRINT((ndo,", pref. time %s", get_lifetime(EXTRACT_32BITS(&opp->nd_opt_pi_preferred_time))));
break;
case ND_OPT_REDIRECTED_HEADER:
- print_unknown_data(bp,"\n\t ",op->nd_opt_len<<3);
+ print_unknown_data(ndo, bp,"\n\t ",op->nd_opt_len<<3);
/* xxx */
break;
case ND_OPT_MTU:
opm = (struct nd_opt_mtu *)op;
- TCHECK(opm->nd_opt_mtu_mtu);
- printf(" %u%s",
+ ND_TCHECK(opm->nd_opt_mtu_mtu);
+ ND_PRINT((ndo," %u%s",
EXTRACT_32BITS(&opm->nd_opt_mtu_mtu),
- (op->nd_opt_len != 1) ? "bad option length" : "" );
+ (op->nd_opt_len != 1) ? "bad option length" : "" ));
break;
case ND_OPT_RDNSS:
oprd = (struct nd_opt_rdnss *)op;
l = (op->nd_opt_len - 1) / 2;
- printf(" lifetime %us,",
- EXTRACT_32BITS(&oprd->nd_opt_rdnss_lifetime));
+ ND_PRINT((ndo," lifetime %us,",
+ EXTRACT_32BITS(&oprd->nd_opt_rdnss_lifetime)));
for (i = 0; i < l; i++) {
- TCHECK(oprd->nd_opt_rdnss_addr[i]);
- printf(" addr: %s",
- ip6addr_string(&oprd->nd_opt_rdnss_addr[i]));
+ ND_TCHECK(oprd->nd_opt_rdnss_addr[i]);
+ ND_PRINT((ndo," addr: %s",
+ ip6addr_string(&oprd->nd_opt_rdnss_addr[i])));
}
break;
case ND_OPT_DNSSL:
opds = (struct nd_opt_dnssl *)op;
- printf(" lifetime %us, domain(s):",
- EXTRACT_32BITS(&opds->nd_opt_dnssl_lifetime));
+ ND_PRINT((ndo," lifetime %us, domain(s):",
+ EXTRACT_32BITS(&opds->nd_opt_dnssl_lifetime)));
domp = cp + 8; /* domain names, variable-sized, RFC1035-encoded */
while (domp < cp + (op->nd_opt_len << 3) && *domp != '\0')
{
@@ -760,51 +760,51 @@ icmp6_opt_print(const u_char *bp, int resid)
break;
case ND_OPT_ADVINTERVAL:
opa = (struct nd_opt_advinterval *)op;
- TCHECK(opa->nd_opt_adv_interval);
- printf(" %ums", EXTRACT_32BITS(&opa->nd_opt_adv_interval));
+ ND_TCHECK(opa->nd_opt_adv_interval);
+ ND_PRINT((ndo," %ums", EXTRACT_32BITS(&opa->nd_opt_adv_interval)));
break;
- case ND_OPT_HOMEAGENT_INFO:
+ case ND_OPT_HOMEAGENT_INFO:
oph = (struct nd_opt_homeagent_info *)op;
- TCHECK(oph->nd_opt_hai_lifetime);
- printf(" preference %u, lifetime %u",
- EXTRACT_16BITS(&oph->nd_opt_hai_preference),
- EXTRACT_16BITS(&oph->nd_opt_hai_lifetime));
+ ND_TCHECK(oph->nd_opt_hai_lifetime);
+ ND_PRINT((ndo," preference %u, lifetime %u",
+ EXTRACT_16BITS(&oph->nd_opt_hai_preference),
+ EXTRACT_16BITS(&oph->nd_opt_hai_lifetime)));
break;
case ND_OPT_ROUTE_INFO:
opri = (struct nd_opt_route_info *)op;
- TCHECK(opri->nd_opt_rti_lifetime);
+ ND_TCHECK(opri->nd_opt_rti_lifetime);
memset(&in6, 0, sizeof(in6));
in6p = (struct in6_addr *)(opri + 1);
switch (op->nd_opt_len) {
case 1:
break;
case 2:
- TCHECK2(*in6p, 8);
+ ND_TCHECK2(*in6p, 8);
memcpy(&in6, opri + 1, 8);
break;
case 3:
- TCHECK(*in6p);
+ ND_TCHECK(*in6p);
memcpy(&in6, opri + 1, sizeof(in6));
break;
default:
goto trunc;
}
- printf(" %s/%u", ip6addr_string(&in6),
- opri->nd_opt_rti_prefixlen);
- printf(", pref=%s", get_rtpref(opri->nd_opt_rti_flags));
- printf(", lifetime=%s",
- get_lifetime(EXTRACT_32BITS(&opri->nd_opt_rti_lifetime)));
+ ND_PRINT((ndo," %s/%u", ip6addr_string(&in6),
+ opri->nd_opt_rti_prefixlen));
+ ND_PRINT((ndo,", pref=%s", get_rtpref(opri->nd_opt_rti_flags)));
+ ND_PRINT((ndo,", lifetime=%s",
+ get_lifetime(EXTRACT_32BITS(&opri->nd_opt_rti_lifetime))));
break;
default:
- if (vflag <= 1) {
- print_unknown_data(cp+2,"\n\t ", (op->nd_opt_len << 3) - 2); /* skip option header */
+ if (ndo->ndo_vflag <= 1) {
+ print_unknown_data(ndo,cp+2,"\n\t ", (op->nd_opt_len << 3) - 2); /* skip option header */
return;
}
break;
}
/* do we want to see an additional hexdump ? */
- if (vflag> 1)
- print_unknown_data(cp+2,"\n\t ", (op->nd_opt_len << 3) - 2); /* skip option header */
+ if (ndo->ndo_vflag> 1)
+ print_unknown_data(ndo, cp+2,"\n\t ", (op->nd_opt_len << 3) - 2); /* skip option header */
cp += op->nd_opt_len << 3;
resid -= op->nd_opt_len << 3;
@@ -812,29 +812,29 @@ icmp6_opt_print(const u_char *bp, int resid)
return;
trunc:
- fputs("[ndp opt]", stdout);
+ ND_PRINT((ndo, "[ndp opt]"));
return;
#undef ECHECK
}
static void
-mld6_print(const u_char *bp)
+mld6_print(netdissect_options *ndo, const u_char *bp)
{
struct mld6_hdr *mp = (struct mld6_hdr *)bp;
const u_char *ep;
/* 'ep' points to the end of available data. */
- ep = snapend;
+ ep = ndo->ndo_snapend;
if ((u_char *)mp + sizeof(*mp) > ep)
return;
- printf("max resp delay: %d ", EXTRACT_16BITS(&mp->mld6_maxdelay));
- printf("addr: %s", ip6addr_string(&mp->mld6_addr));
+ ND_PRINT((ndo,"max resp delay: %d ", EXTRACT_16BITS(&mp->mld6_maxdelay)));
+ ND_PRINT((ndo,"addr: %s", ip6addr_string(&mp->mld6_addr)));
}
static void
-mldv2_report_print(const u_char *bp, u_int len)
+mldv2_report_print(netdissect_options *ndo, const u_char *bp, u_int len)
{
struct icmp6_hdr *icp = (struct icmp6_hdr *) bp;
u_int group, nsrcs, ngroups;
@@ -842,57 +842,57 @@ mldv2_report_print(const u_char *bp, u_int len)
/* Minimum len is 8 */
if (len < 8) {
- printf(" [invalid len %d]", len);
- return;
+ ND_PRINT((ndo," [invalid len %d]", len));
+ return;
}
- TCHECK(icp->icmp6_data16[1]);
+ ND_TCHECK(icp->icmp6_data16[1]);
ngroups = EXTRACT_16BITS(&icp->icmp6_data16[1]);
- printf(", %d group record(s)", ngroups);
- if (vflag > 0) {
+ ND_PRINT((ndo,", %d group record(s)", ngroups));
+ if (ndo->ndo_vflag > 0) {
/* Print the group records */
group = 8;
for (i = 0; i < ngroups; i++) {
/* type(1) + auxlen(1) + numsrc(2) + grp(16) */
if (len < group + 20) {
- printf(" [invalid number of groups]");
- return;
+ ND_PRINT((ndo," [invalid number of groups]"));
+ return;
}
- TCHECK2(bp[group + 4], sizeof(struct in6_addr));
- printf(" [gaddr %s", ip6addr_string(&bp[group + 4]));
- printf(" %s", tok2str(mldv2report2str, " [v2-report-#%d]",
- bp[group]));
+ ND_TCHECK2(bp[group + 4], sizeof(struct in6_addr));
+ ND_PRINT((ndo," [gaddr %s", ip6addr_string(&bp[group + 4])));
+ ND_PRINT((ndo," %s", tok2str(mldv2report2str, " [v2-report-#%d]",
+ bp[group])));
nsrcs = (bp[group + 2] << 8) + bp[group + 3];
/* Check the number of sources and print them */
if (len < group + 20 + (nsrcs * sizeof(struct in6_addr))) {
- printf(" [invalid number of sources %d]", nsrcs);
- return;
+ ND_PRINT((ndo," [invalid number of sources %d]", nsrcs));
+ return;
}
- if (vflag == 1)
- printf(", %d source(s)", nsrcs);
+ if (ndo->ndo_vflag == 1)
+ ND_PRINT((ndo,", %d source(s)", nsrcs));
else {
/* Print the sources */
- (void)printf(" {");
+ (void)ND_PRINT((ndo," {"));
for (j = 0; j < nsrcs; j++) {
- TCHECK2(bp[group + 20 + j * sizeof(struct in6_addr)],
+ ND_TCHECK2(bp[group + 20 + j * sizeof(struct in6_addr)],
sizeof(struct in6_addr));
- printf(" %s", ip6addr_string(&bp[group + 20 + j * sizeof(struct in6_addr)]));
+ ND_PRINT((ndo," %s", ip6addr_string(&bp[group + 20 + j * sizeof(struct in6_addr)])));
}
- (void)printf(" }");
+ (void)ND_PRINT((ndo," }"));
}
/* Next group record */
group += 20 + nsrcs * sizeof(struct in6_addr);
- printf("]");
+ ND_PRINT((ndo,"]"));
}
}
return;
trunc:
- (void)printf("[|icmp6]");
+ (void)ND_PRINT((ndo,"[|icmp6]"));
return;
}
static void
-mldv2_query_print(const u_char *bp, u_int len)
+mldv2_query_print(netdissect_options *ndo, const u_char *bp, u_int len)
{
struct icmp6_hdr *icp = (struct icmp6_hdr *) bp;
u_int mrc;
@@ -902,73 +902,73 @@ mldv2_query_print(const u_char *bp, u_int len)
/* Minimum len is 28 */
if (len < 28) {
- printf(" [invalid len %d]", len);
+ ND_PRINT((ndo," [invalid len %d]", len));
return;
}
- TCHECK(icp->icmp6_data16[0]);
+ ND_TCHECK(icp->icmp6_data16[0]);
mrc = EXTRACT_16BITS(&icp->icmp6_data16[0]);
if (mrc < 32768) {
mrt = mrc;
} else {
mrt = ((mrc & 0x0fff) | 0x1000) << (((mrc & 0x7000) >> 12) + 3);
}
- if (vflag) {
- (void)printf(" [max resp delay=%d]", mrt);
+ if (ndo->ndo_vflag) {
+ (void)ND_PRINT((ndo," [max resp delay=%d]", mrt));
}
- TCHECK2(bp[8], sizeof(struct in6_addr));
- printf(" [gaddr %s", ip6addr_string(&bp[8]));
+ ND_TCHECK2(bp[8], sizeof(struct in6_addr));
+ ND_PRINT((ndo," [gaddr %s", ip6addr_string(&bp[8])));
- if (vflag) {
- TCHECK(bp[25]);
+ if (ndo->ndo_vflag) {
+ ND_TCHECK(bp[25]);
if (bp[24] & 0x08) {
- printf(" sflag");
+ ND_PRINT((ndo," sflag"));
}
if (bp[24] & 0x07) {
- printf(" robustness=%d", bp[24] & 0x07);
+ ND_PRINT((ndo," robustness=%d", bp[24] & 0x07));
}
if (bp[25] < 128) {
qqi = bp[25];
} else {
qqi = ((bp[25] & 0x0f) | 0x10) << (((bp[25] & 0x70) >> 4) + 3);
}
- printf(" qqi=%d", qqi);
+ ND_PRINT((ndo," qqi=%d", qqi));
}
- TCHECK2(bp[26], 2);
+ ND_TCHECK2(bp[26], 2);
nsrcs = EXTRACT_16BITS(&bp[26]);
if (nsrcs > 0) {
if (len < 28 + nsrcs * sizeof(struct in6_addr))
- printf(" [invalid number of sources]");
- else if (vflag > 1) {
- printf(" {");
+ ND_PRINT((ndo," [invalid number of sources]"));
+ else if (ndo->ndo_vflag > 1) {
+ ND_PRINT((ndo," {"));
for (i = 0; i < nsrcs; i++) {
- TCHECK2(bp[28 + i * sizeof(struct in6_addr)],
+ ND_TCHECK2(bp[28 + i * sizeof(struct in6_addr)],
sizeof(struct in6_addr));
- printf(" %s", ip6addr_string(&bp[28 + i * sizeof(struct in6_addr)]));
+ ND_PRINT((ndo," %s", ip6addr_string(&bp[28 + i * sizeof(struct in6_addr)])));
}
- printf(" }");
+ ND_PRINT((ndo," }"));
} else
- printf(", %d source(s)", nsrcs);
+ ND_PRINT((ndo,", %d source(s)", nsrcs));
}
- printf("]");
+ ND_PRINT((ndo,"]"));
return;
trunc:
- (void)printf("[|icmp6]");
+ (void)ND_PRINT((ndo,"[|icmp6]"));
return;
}
static void
-dnsname_print(const u_char *cp, const u_char *ep)
+dnsname_print(netdissect_options *ndo, const u_char *cp, const u_char *ep)
{
int i;
/* DNS name decoding - no decompression */
- printf(", \"");
+ ND_PRINT((ndo,", \""));
while (cp < ep) {
i = *cp++;
if (i) {
if (i > ep - cp) {
- printf("???");
+ ND_PRINT((ndo,"???"));
break;
}
while (i-- && cp < ep) {
@@ -976,25 +976,25 @@ dnsname_print(const u_char *cp, const u_char *ep)
cp++;
}
if (cp + 1 < ep && *cp)
- printf(".");
+ ND_PRINT((ndo,"."));
} else {
if (cp == ep) {
/* FQDN */
- printf(".");
+ ND_PRINT((ndo,"."));
} else if (cp + 1 == ep && *cp == '\0') {
/* truncated */
} else {
/* invalid */
- printf("???");
+ ND_PRINT((ndo,"???"));
}
break;
}
}
- printf("\"");
+ ND_PRINT((ndo,"\""));
}
static void
-icmp6_nodeinfo_print(u_int icmp6len, const u_char *bp, const u_char *ep)
+icmp6_nodeinfo_print(netdissect_options *ndo, u_int icmp6len, const u_char *bp, const u_char *ep)
{
struct icmp6_nodeinfo *ni6;
struct icmp6_hdr *dp;
@@ -1012,238 +1012,238 @@ icmp6_nodeinfo_print(u_int icmp6len, const u_char *bp, const u_char *ep)
case ICMP6_NI_QUERY:
if (siz == sizeof(*dp) + 4) {
/* KAME who-are-you */
- printf(" who-are-you request");
+ ND_PRINT((ndo," who-are-you request"));
break;
}
- printf(" node information query");
+ ND_PRINT((ndo," node information query"));
- TCHECK2(*dp, sizeof(*ni6));
+ ND_TCHECK2(*dp, sizeof(*ni6));
ni6 = (struct icmp6_nodeinfo *)dp;
- printf(" ("); /*)*/
+ ND_PRINT((ndo," (")); /*)*/
switch (EXTRACT_16BITS(&ni6->ni_qtype)) {
case NI_QTYPE_NOOP:
- printf("noop");
+ ND_PRINT((ndo,"noop"));
break;
case NI_QTYPE_SUPTYPES:
- printf("supported qtypes");
+ ND_PRINT((ndo,"supported qtypes"));
i = EXTRACT_16BITS(&ni6->ni_flags);
if (i)
- printf(" [%s]", (i & 0x01) ? "C" : "");
+ ND_PRINT((ndo," [%s]", (i & 0x01) ? "C" : ""));
break;
break;
case NI_QTYPE_FQDN:
- printf("DNS name");
+ ND_PRINT((ndo,"DNS name"));
break;
case NI_QTYPE_NODEADDR:
- printf("node addresses");
+ ND_PRINT((ndo,"node addresses"));
i = ni6->ni_flags;
if (!i)
break;
/* NI_NODEADDR_FLAG_TRUNCATE undefined for query */
- printf(" [%s%s%s%s%s%s]",
+ ND_PRINT((ndo," [%s%s%s%s%s%s]",
(i & NI_NODEADDR_FLAG_ANYCAST) ? "a" : "",
(i & NI_NODEADDR_FLAG_GLOBAL) ? "G" : "",
(i & NI_NODEADDR_FLAG_SITELOCAL) ? "S" : "",
(i & NI_NODEADDR_FLAG_LINKLOCAL) ? "L" : "",
(i & NI_NODEADDR_FLAG_COMPAT) ? "C" : "",
- (i & NI_NODEADDR_FLAG_ALL) ? "A" : "");
+ (i & NI_NODEADDR_FLAG_ALL) ? "A" : ""));
break;
default:
- printf("unknown");
+ ND_PRINT((ndo,"unknown"));
break;
}
if (ni6->ni_qtype == NI_QTYPE_NOOP ||
ni6->ni_qtype == NI_QTYPE_SUPTYPES) {
if (siz != sizeof(*ni6))
- if (vflag)
- printf(", invalid len");
+ if (ndo->ndo_vflag)
+ ND_PRINT((ndo,", invalid len"));
/*(*/
- printf(")");
+ ND_PRINT((ndo,")"));
break;
}
/* XXX backward compat, icmp-name-lookup-03 */
if (siz == sizeof(*ni6)) {
- printf(", 03 draft");
+ ND_PRINT((ndo,", 03 draft"));
/*(*/
- printf(")");
+ ND_PRINT((ndo,")"));
break;
}
switch (ni6->ni_code) {
case ICMP6_NI_SUBJ_IPV6:
- if (!TTEST2(*dp,
+ if (!ND_TTEST2(*dp,
sizeof(*ni6) + sizeof(struct in6_addr)))
break;
if (siz != sizeof(*ni6) + sizeof(struct in6_addr)) {
- if (vflag)
- printf(", invalid subject len");
+ if (ndo->ndo_vflag)
+ ND_PRINT((ndo,", invalid subject len"));
break;
}
- printf(", subject=%s",
- getname6((const u_char *)(ni6 + 1)));
+ ND_PRINT((ndo,", subject=%s",
+ getname6((const u_char *)(ni6 + 1))));
break;
case ICMP6_NI_SUBJ_FQDN:
- printf(", subject=DNS name");
+ ND_PRINT((ndo,", subject=DNS name"));
cp = (const u_char *)(ni6 + 1);
if (cp[0] == ep - cp - 1) {
/* icmp-name-lookup-03, pascal string */
- if (vflag)
- printf(", 03 draft");
+ if (ndo->ndo_vflag)
+ ND_PRINT((ndo,", 03 draft"));
cp++;
- printf(", \"");
+ ND_PRINT((ndo,", \""));
while (cp < ep) {
safeputchar(*cp);
cp++;
}
- printf("\"");
+ ND_PRINT((ndo,"\""));
} else
- dnsname_print(cp, ep);
+ dnsname_print(ndo, cp, ep);
break;
case ICMP6_NI_SUBJ_IPV4:
- if (!TTEST2(*dp, sizeof(*ni6) + sizeof(struct in_addr)))
+ if (!ND_TTEST2(*dp, sizeof(*ni6) + sizeof(struct in_addr)))
break;
if (siz != sizeof(*ni6) + sizeof(struct in_addr)) {
- if (vflag)
- printf(", invalid subject len");
+ if (ndo->ndo_vflag)
+ ND_PRINT((ndo,", invalid subject len"));
break;
}
- printf(", subject=%s",
- getname((const u_char *)(ni6 + 1)));
+ ND_PRINT((ndo,", subject=%s",
+ getname((const u_char *)(ni6 + 1))));
break;
default:
- printf(", unknown subject");
+ ND_PRINT((ndo,", unknown subject"));
break;
}
/*(*/
- printf(")");
+ ND_PRINT((ndo,")"));
break;
case ICMP6_NI_REPLY:
if (icmp6len > siz) {
- printf("[|icmp6: node information reply]");
+ ND_PRINT((ndo,"[|icmp6: node information reply]"));
break;
}
needcomma = 0;
ni6 = (struct icmp6_nodeinfo *)dp;
- printf(" node information reply");
- printf(" ("); /*)*/
+ ND_PRINT((ndo," node information reply"));
+ ND_PRINT((ndo," (")); /*)*/
switch (ni6->ni_code) {
case ICMP6_NI_SUCCESS:
- if (vflag) {
- printf("success");
+ if (ndo->ndo_vflag) {
+ ND_PRINT((ndo,"success"));
needcomma++;
}
break;
case ICMP6_NI_REFUSED:
- printf("refused");
+ ND_PRINT((ndo,"refused"));
needcomma++;
if (siz != sizeof(*ni6))
- if (vflag)
- printf(", invalid length");
+ if (ndo->ndo_vflag)
+ ND_PRINT((ndo,", invalid length"));
break;
case ICMP6_NI_UNKNOWN:
- printf("unknown");
+ ND_PRINT((ndo,"unknown"));
needcomma++;
if (siz != sizeof(*ni6))
- if (vflag)
- printf(", invalid length");
+ if (ndo->ndo_vflag)
+ ND_PRINT((ndo,", invalid length"));
break;
}
if (ni6->ni_code != ICMP6_NI_SUCCESS) {
/*(*/
- printf(")");
+ ND_PRINT((ndo,")"));
break;
}
switch (EXTRACT_16BITS(&ni6->ni_qtype)) {
case NI_QTYPE_NOOP:
if (needcomma)
- printf(", ");
- printf("noop");
+ ND_PRINT((ndo,", "));
+ ND_PRINT((ndo,"noop"));
if (siz != sizeof(*ni6))
- if (vflag)
- printf(", invalid length");
+ if (ndo->ndo_vflag)
+ ND_PRINT((ndo,", invalid length"));
break;
case NI_QTYPE_SUPTYPES:
if (needcomma)
- printf(", ");
- printf("supported qtypes");
+ ND_PRINT((ndo,", "));
+ ND_PRINT((ndo,"supported qtypes"));
i = EXTRACT_16BITS(&ni6->ni_flags);
if (i)
- printf(" [%s]", (i & 0x01) ? "C" : "");
+ ND_PRINT((ndo," [%s]", (i & 0x01) ? "C" : ""));
break;
case NI_QTYPE_FQDN:
if (needcomma)
- printf(", ");
- printf("DNS name");
+ ND_PRINT((ndo,", "));
+ ND_PRINT((ndo,"DNS name"));
cp = (const u_char *)(ni6 + 1) + 4;
if (cp[0] == ep - cp - 1) {
/* icmp-name-lookup-03, pascal string */
- if (vflag)
- printf(", 03 draft");
+ if (ndo->ndo_vflag)
+ ND_PRINT((ndo,", 03 draft"));
cp++;
- printf(", \"");
+ ND_PRINT((ndo,", \""));
while (cp < ep) {
safeputchar(*cp);
cp++;
}
- printf("\"");
+ ND_PRINT((ndo,"\""));
} else
- dnsname_print(cp, ep);
+ dnsname_print(ndo, cp, ep);
if ((EXTRACT_16BITS(&ni6->ni_flags) & 0x01) != 0)
- printf(" [TTL=%u]", *(u_int32_t *)(ni6 + 1));
+ ND_PRINT((ndo," [TTL=%u]", *(u_int32_t *)(ni6 + 1)));
break;
case NI_QTYPE_NODEADDR:
if (needcomma)
- printf(", ");
- printf("node addresses");
+ ND_PRINT((ndo,", "));
+ ND_PRINT((ndo,"node addresses"));
i = sizeof(*ni6);
while (i < siz) {
if (i + sizeof(struct in6_addr) + sizeof(int32_t) > siz)
break;
- printf(" %s", getname6(bp + i));
+ ND_PRINT((ndo," %s", getname6(bp + i)));
i += sizeof(struct in6_addr);
- printf("(%d)", (int32_t)EXTRACT_32BITS(bp + i));
+ ND_PRINT((ndo,"(%d)", (int32_t)EXTRACT_32BITS(bp + i)));
i += sizeof(int32_t);
}
i = ni6->ni_flags;
if (!i)
break;
- printf(" [%s%s%s%s%s%s%s]",
- (i & NI_NODEADDR_FLAG_ANYCAST) ? "a" : "",
- (i & NI_NODEADDR_FLAG_GLOBAL) ? "G" : "",
- (i & NI_NODEADDR_FLAG_SITELOCAL) ? "S" : "",
- (i & NI_NODEADDR_FLAG_LINKLOCAL) ? "L" : "",
- (i & NI_NODEADDR_FLAG_COMPAT) ? "C" : "",
- (i & NI_NODEADDR_FLAG_ALL) ? "A" : "",
- (i & NI_NODEADDR_FLAG_TRUNCATE) ? "T" : "");
+ ND_PRINT((ndo," [%s%s%s%s%s%s%s]",
+ (i & NI_NODEADDR_FLAG_ANYCAST) ? "a" : "",
+ (i & NI_NODEADDR_FLAG_GLOBAL) ? "G" : "",
+ (i & NI_NODEADDR_FLAG_SITELOCAL) ? "S" : "",
+ (i & NI_NODEADDR_FLAG_LINKLOCAL) ? "L" : "",
+ (i & NI_NODEADDR_FLAG_COMPAT) ? "C" : "",
+ (i & NI_NODEADDR_FLAG_ALL) ? "A" : "",
+ (i & NI_NODEADDR_FLAG_TRUNCATE) ? "T" : ""));
break;
default:
if (needcomma)
- printf(", ");
- printf("unknown");
+ ND_PRINT((ndo,", "));
+ ND_PRINT((ndo,"unknown"));
break;
}
/*(*/
- printf(")");
+ ND_PRINT((ndo,")"));
break;
}
return;
trunc:
- fputs("[|icmp6]", stdout);
+ ND_PRINT((ndo, "[|icmp6]"));
}
static void
-icmp6_rrenum_print(const u_char *bp, const u_char *ep)
+icmp6_rrenum_print(netdissect_options *ndo, const u_char *bp, const u_char *ep)
{
struct icmp6_router_renum *rr6;
const char *cp;
@@ -1257,40 +1257,40 @@ icmp6_rrenum_print(const u_char *bp, const u_char *ep)
rr6 = (struct icmp6_router_renum *)bp;
cp = (const char *)(rr6 + 1);
- TCHECK(rr6->rr_reserved);
+ ND_TCHECK(rr6->rr_reserved);
switch (rr6->rr_code) {
case ICMP6_ROUTER_RENUMBERING_COMMAND:
- printf("router renum: command");
+ ND_PRINT((ndo,"router renum: command"));
break;
case ICMP6_ROUTER_RENUMBERING_RESULT:
- printf("router renum: result");
+ ND_PRINT((ndo,"router renum: result"));
break;
case ICMP6_ROUTER_RENUMBERING_SEQNUM_RESET:
- printf("router renum: sequence number reset");
+ ND_PRINT((ndo,"router renum: sequence number reset"));
break;
default:
- printf("router renum: code-#%d", rr6->rr_code);
+ ND_PRINT((ndo,"router renum: code-#%d", rr6->rr_code));
break;
}
- printf(", seq=%u", EXTRACT_32BITS(&rr6->rr_seqnum));
+ ND_PRINT((ndo,", seq=%u", EXTRACT_32BITS(&rr6->rr_seqnum)));
- if (vflag) {
+ if (ndo->ndo_vflag) {
#define F(x, y) ((rr6->rr_flags) & (x) ? (y) : "")
- printf("["); /*]*/
+ ND_PRINT((ndo,"[")); /*]*/
if (rr6->rr_flags) {
- printf("%s%s%s%s%s,", F(ICMP6_RR_FLAGS_TEST, "T"),
- F(ICMP6_RR_FLAGS_REQRESULT, "R"),
- F(ICMP6_RR_FLAGS_FORCEAPPLY, "A"),
- F(ICMP6_RR_FLAGS_SPECSITE, "S"),
- F(ICMP6_RR_FLAGS_PREVDONE, "P"));
+ ND_PRINT((ndo,"%s%s%s%s%s,", F(ICMP6_RR_FLAGS_TEST, "T"),
+ F(ICMP6_RR_FLAGS_REQRESULT, "R"),
+ F(ICMP6_RR_FLAGS_FORCEAPPLY, "A"),
+ F(ICMP6_RR_FLAGS_SPECSITE, "S"),
+ F(ICMP6_RR_FLAGS_PREVDONE, "P")));
}
- printf("seg=%u,", rr6->rr_segnum);
- printf("maxdelay=%u", EXTRACT_16BITS(&rr6->rr_maxdelay));
+ ND_PRINT((ndo,"seg=%u,", rr6->rr_segnum));
+ ND_PRINT((ndo,"maxdelay=%u", EXTRACT_16BITS(&rr6->rr_maxdelay)));
if (rr6->rr_reserved)
- printf("rsvd=0x%x", EXTRACT_32BITS(&rr6->rr_reserved));
+ ND_PRINT((ndo,"rsvd=0x%x", EXTRACT_32BITS(&rr6->rr_reserved)));
/*[*/
- printf("]");
+ ND_PRINT((ndo,"]"));
#undef F
}
@@ -1298,31 +1298,31 @@ icmp6_rrenum_print(const u_char *bp, const u_char *ep)
match = (struct rr_pco_match *)cp;
cp = (const char *)(match + 1);
- TCHECK(match->rpm_prefix);
+ ND_TCHECK(match->rpm_prefix);
- if (vflag > 1)
- printf("\n\t");
+ if (ndo->ndo_vflag > 1)
+ ND_PRINT((ndo,"\n\t"));
else
- printf(" ");
- printf("match("); /*)*/
+ ND_PRINT((ndo," "));
+ ND_PRINT((ndo,"match(")); /*)*/
switch (match->rpm_code) {
- case RPM_PCO_ADD: printf("add"); break;
- case RPM_PCO_CHANGE: printf("change"); break;
- case RPM_PCO_SETGLOBAL: printf("setglobal"); break;
- default: printf("#%u", match->rpm_code); break;
+ case RPM_PCO_ADD: ND_PRINT((ndo,"add")); break;
+ case RPM_PCO_CHANGE: ND_PRINT((ndo,"change")); break;
+ case RPM_PCO_SETGLOBAL: ND_PRINT((ndo,"setglobal")); break;
+ default: ND_PRINT((ndo,"#%u", match->rpm_code)); break;
}
- if (vflag) {
- printf(",ord=%u", match->rpm_ordinal);
- printf(",min=%u", match->rpm_minlen);
- printf(",max=%u", match->rpm_maxlen);
+ if (ndo->ndo_vflag) {
+ ND_PRINT((ndo,",ord=%u", match->rpm_ordinal));
+ ND_PRINT((ndo,",min=%u", match->rpm_minlen));
+ ND_PRINT((ndo,",max=%u", match->rpm_maxlen));
}
if (inet_ntop(AF_INET6, &match->rpm_prefix, hbuf, sizeof(hbuf)))
- printf(",%s/%u", hbuf, match->rpm_matchlen);
+ ND_PRINT((ndo,",%s/%u", hbuf, match->rpm_matchlen));
else
- printf(",?/%u", match->rpm_matchlen);
+ ND_PRINT((ndo,",?/%u", match->rpm_matchlen));
/*(*/
- printf(")");
+ ND_PRINT((ndo,")"));
n = match->rpm_len - 3;
if (n % 4)
@@ -1332,50 +1332,57 @@ icmp6_rrenum_print(const u_char *bp, const u_char *ep)
use = (struct rr_pco_use *)cp;
cp = (const char *)(use + 1);
- TCHECK(use->rpu_prefix);
+ ND_TCHECK(use->rpu_prefix);
- if (vflag > 1)
- printf("\n\t");
+ if (ndo->ndo_vflag > 1)
+ ND_PRINT((ndo,"\n\t"));
else
- printf(" ");
- printf("use("); /*)*/
+ ND_PRINT((ndo," "));
+ ND_PRINT((ndo,"use(")); /*)*/
if (use->rpu_flags) {
#define F(x, y) ((use->rpu_flags) & (x) ? (y) : "")
- printf("%s%s,",
- F(ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME, "V"),
- F(ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME, "P"));
+ ND_PRINT((ndo,"%s%s,",
+ F(ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME, "V"),
+ F(ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME, "P")));
#undef F
}
- if (vflag) {
- printf("mask=0x%x,", use->rpu_ramask);
- printf("raflags=0x%x,", use->rpu_raflags);
+ if (ndo->ndo_vflag) {
+ ND_PRINT((ndo,"mask=0x%x,", use->rpu_ramask));
+ ND_PRINT((ndo,"raflags=0x%x,", use->rpu_raflags));
if (~use->rpu_vltime == 0)
- printf("vltime=infty,");
+ ND_PRINT((ndo,"vltime=infty,"));
else
- printf("vltime=%u,",
- EXTRACT_32BITS(&use->rpu_vltime));
+ ND_PRINT((ndo,"vltime=%u,",
+ EXTRACT_32BITS(&use->rpu_vltime)));
if (~use->rpu_pltime == 0)
- printf("pltime=infty,");
+ ND_PRINT((ndo,"pltime=infty,"));
else
- printf("pltime=%u,",
- EXTRACT_32BITS(&use->rpu_pltime));
+ ND_PRINT((ndo,"pltime=%u,",
+ EXTRACT_32BITS(&use->rpu_pltime)));
}
if (inet_ntop(AF_INET6, &use->rpu_prefix, hbuf,
sizeof(hbuf)))
- printf("%s/%u/%u", hbuf, use->rpu_uselen,
- use->rpu_keeplen);
+ ND_PRINT((ndo,"%s/%u/%u", hbuf, use->rpu_uselen,
+ use->rpu_keeplen));
else
- printf("?/%u/%u", use->rpu_uselen,
- use->rpu_keeplen);
+ ND_PRINT((ndo,"?/%u/%u", use->rpu_uselen,
+ use->rpu_keeplen));
/*(*/
- printf(")");
+ ND_PRINT((ndo,")"));
}
}
return;
trunc:
- fputs("[|icmp6]", stdout);
+ ND_PRINT((ndo,"[|icmp6]"));
}
#endif /* INET6 */
+
+/*
+ * Local Variables:
+ * c-style: whitesmith
+ * c-basic-offset: 8
+ * End:
+ */
diff --git a/print-ip6.c b/print-ip6.c
index 97649ca2..23b54316 100644
--- a/print-ip6.c
+++ b/print-ip6.c
@@ -103,8 +103,8 @@ ip6_print(netdissect_options *ndo, const u_char *bp, u_int length)
ND_PRINT((ndo, "IP6 "));
if (IP6_VERSION(ip6) != 6) {
- printf("version error: %u != 6", IP6_VERSION(ip6));
- return;
+ ND_PRINT((ndo,"version error: %u != 6", IP6_VERSION(ip6)));
+ return;
}
payload_len = EXTRACT_16BITS(&ip6->ip6_plen);
diff --git a/print-isoclns.c b/print-isoclns.c
index 2097a855..cc441c11 100644
--- a/print-isoclns.c
+++ b/print-isoclns.c
@@ -686,7 +686,7 @@ void isoclns_print(const u_int8_t *p, u_int length, u_int caplen)
case NLPID_CLNP:
if (!clnp_print(p, length))
- print_unknown_data(p,"\n\t",caplen);
+ print_unknown_data(gndo,p,"\n\t",caplen);
break;
case NLPID_ESIS:
@@ -695,7 +695,7 @@ void isoclns_print(const u_int8_t *p, u_int length, u_int caplen)
case NLPID_ISIS:
if (!isis_print(p, length))
- print_unknown_data(p,"\n\t",caplen);
+ print_unknown_data(gndo,p,"\n\t",caplen);
break;
case NLPID_NULLNS:
@@ -729,7 +729,7 @@ void isoclns_print(const u_int8_t *p, u_int length, u_int caplen)
eflag ? "" : ", ",
length);
if (caplen > 1)
- print_unknown_data(p,"\n\t",caplen);
+ print_unknown_data(gndo,p,"\n\t",caplen);
break;
}
}
@@ -962,11 +962,11 @@ static int clnp_print (const u_int8_t *pptr, u_int length)
*/
default:
- print_unknown_data(tptr,"\n\t ",opli);
+ print_unknown_data(gndo,tptr,"\n\t ",opli);
break;
}
if (vflag > 1)
- print_unknown_data(pptr,"\n\t ",opli);
+ print_unknown_data(gndo,pptr,"\n\t ",opli);
pptr += opli;
}
@@ -990,7 +990,7 @@ static int clnp_print (const u_int8_t *pptr, u_int length)
/* dump the PDU specific data */
if (length-(pptr-optr) > 0) {
printf("\n\t undecoded non-header data, length %u",length-clnp_header->length_indicator);
- print_unknown_data(pptr,"\n\t ",length-(pptr-optr));
+ print_unknown_data(gndo,pptr,"\n\t ",length-(pptr-optr));
}
}
@@ -1096,7 +1096,7 @@ esis_print(const u_int8_t *pptr, u_int length)
printf(", holding time: %us, length indicator: %u",EXTRACT_16BITS(esis_header->holdtime),li);
if (vflag > 1)
- print_unknown_data(optr,"\n\t",sizeof(struct esis_header_t));
+ print_unknown_data(gndo,optr,"\n\t",sizeof(struct esis_header_t));
pptr += sizeof(struct esis_header_t);
li -= sizeof(struct esis_header_t);
@@ -1223,7 +1223,7 @@ esis_print(const u_int8_t *pptr, u_int length)
default:
if (vflag <= 1) {
if (pptr < snapend)
- print_unknown_data(pptr,"\n\t ",snapend-pptr);
+ print_unknown_data(gndo,pptr,"\n\t ",snapend-pptr);
}
return;
}
@@ -1290,11 +1290,11 @@ esis_print(const u_int8_t *pptr, u_int length)
case ESIS_OPTION_SNPA_MASK:
default:
- print_unknown_data(tptr,"\n\t ",opli);
+ print_unknown_data(gndo,tptr,"\n\t ",opli);
break;
}
if (vflag > 1)
- print_unknown_data(pptr,"\n\t ",opli);
+ print_unknown_data(gndo,pptr,"\n\t ",opli);
pptr += opli;
}
trunc:
@@ -1701,7 +1701,7 @@ isis_print_ip_reach_subtlv (const u_int8_t *tptr,int subt,int subl,const char *i
}
break;
default:
- if(!print_unknown_data(tptr,"\n\t\t ",
+ if(!print_unknown_data(gndo,tptr,"\n\t\t ",
subl))
return(0);
break;
@@ -1856,7 +1856,7 @@ isis_print_is_reach_subtlv (const u_int8_t *tptr,u_int subt,u_int subl,const cha
/* there is some optional stuff left to decode but this is as of yet
not specified so just lets hexdump what is left */
if(subl>0){
- if(!print_unknown_data(tptr,"\n\t\t ",
+ if(!print_unknown_data(gndo,tptr,"\n\t\t ",
subl))
return(0);
}
@@ -1864,7 +1864,7 @@ isis_print_is_reach_subtlv (const u_int8_t *tptr,u_int subt,u_int subl,const cha
}
break;
default:
- if(!print_unknown_data(tptr,"\n\t\t ",
+ if(!print_unknown_data(gndo,tptr,"\n\t\t ",
subl))
return(0);
break;
@@ -2230,7 +2230,7 @@ static int isis_print (const u_int8_t *p, u_int length)
isis_header->max_area);
if (vflag > 1) {
- if(!print_unknown_data(optr,"\n\t",8)) /* provide the _o_riginal pointer */
+ if(!print_unknown_data(gndo,optr,"\n\t",8)) /* provide the _o_riginal pointer */
return(0); /* for optionally debugging the common header */
}
@@ -2264,7 +2264,7 @@ static int isis_print (const u_int8_t *p, u_int length)
pdu_len);
if (vflag > 1) {
- if(!print_unknown_data(pptr,"\n\t ",ISIS_IIH_LAN_HEADER_SIZE))
+ if(!print_unknown_data(gndo,pptr,"\n\t ",ISIS_IIH_LAN_HEADER_SIZE))
return(0);
}
@@ -2298,7 +2298,7 @@ static int isis_print (const u_int8_t *p, u_int length)
pdu_len);
if (vflag > 1) {
- if(!print_unknown_data(pptr,"\n\t ",ISIS_IIH_PTP_HEADER_SIZE))
+ if(!print_unknown_data(gndo,pptr,"\n\t ",ISIS_IIH_PTP_HEADER_SIZE))
return(0);
}
@@ -2355,7 +2355,7 @@ static int isis_print (const u_int8_t *p, u_int length)
printf("%s ]", tok2str(isis_lsp_istype_values,"Unknown(0x%x)",ISIS_MASK_LSP_ISTYPE_BITS(header_lsp->typeblock)));
if (vflag > 1) {
- if(!print_unknown_data(pptr,"\n\t ",ISIS_LSP_HEADER_SIZE))
+ if(!print_unknown_data(gndo,pptr,"\n\t ",ISIS_LSP_HEADER_SIZE))
return(0);
}
@@ -2387,7 +2387,7 @@ static int isis_print (const u_int8_t *p, u_int length)
isis_print_id(header_csnp->end_lsp_id, LSP_ID_LEN));
if (vflag > 1) {
- if(!print_unknown_data(pptr,"\n\t ",ISIS_CSNP_HEADER_SIZE))
+ if(!print_unknown_data(gndo,pptr,"\n\t ",ISIS_CSNP_HEADER_SIZE))
return(0);
}
@@ -2415,7 +2415,7 @@ static int isis_print (const u_int8_t *p, u_int length)
pdu_len);
if (vflag > 1) {
- if(!print_unknown_data(pptr,"\n\t ",ISIS_PSNP_HEADER_SIZE))
+ if(!print_unknown_data(gndo,pptr,"\n\t ",ISIS_PSNP_HEADER_SIZE))
return(0);
}
@@ -2424,7 +2424,7 @@ static int isis_print (const u_int8_t *p, u_int length)
break;
default:
- if(!print_unknown_data(pptr,"\n\t ",length))
+ if(!print_unknown_data(gndo,pptr,"\n\t ",length))
return(0);
return (0);
}
@@ -2702,7 +2702,7 @@ static int isis_print (const u_int8_t *p, u_int length)
break;
case ISIS_SUBTLV_AUTH_PRIVATE:
default:
- if(!print_unknown_data(tptr+1,"\n\t\t ",tlv_len-1))
+ if(!print_unknown_data(gndo,tptr+1,"\n\t\t ",tlv_len-1))
return(0);
break;
}
@@ -2966,7 +2966,7 @@ static int isis_print (const u_int8_t *p, u_int length)
case ISIS_SUBTLV_IDRP_LOCAL:
case ISIS_SUBTLV_IDRP_RES:
default:
- if(!print_unknown_data(tptr,"\n\t ",tlv_len-1))
+ if(!print_unknown_data(gndo,tptr,"\n\t ",tlv_len-1))
return(0);
break;
}
@@ -3041,7 +3041,7 @@ static int isis_print (const u_int8_t *p, u_int length)
tptr+=3;
tmp-=3;
if (tmp > 0) /* hexdump the rest */
- if(!print_unknown_data(tptr,"\n\t\t",tmp))
+ if(!print_unknown_data(gndo,tptr,"\n\t\t",tmp))
return(0);
break;
/*
@@ -3057,14 +3057,14 @@ static int isis_print (const u_int8_t *p, u_int length)
default:
if (vflag <= 1) {
- if(!print_unknown_data(pptr,"\n\t\t",tlv_len))
+ if(!print_unknown_data(gndo,pptr,"\n\t\t",tlv_len))
return(0);
}
break;
}
/* do we want to see an additionally hexdump ? */
if (vflag> 1) {
- if(!print_unknown_data(pptr,"\n\t ",tlv_len))
+ if(!print_unknown_data(gndo,pptr,"\n\t ",tlv_len))
return(0);
}
diff --git a/print-ldp.c b/print-ldp.c
index f852004d..58f63247 100644
--- a/print-ldp.c
+++ b/print-ldp.c
@@ -455,7 +455,7 @@ ldp_tlv_print(register const u_char *tptr) {
break;
default:
- print_unknown_data(tptr+2,"\n\t\t ",vc_info_tlv_len-2);
+ print_unknown_data(gndo,tptr+2,"\n\t\t ",vc_info_tlv_len-2);
break;
}
@@ -529,7 +529,7 @@ ldp_tlv_print(register const u_char *tptr) {
default:
if (vflag <= 1)
- print_unknown_data(tptr,"\n\t ",tlv_tlen);
+ print_unknown_data(gndo,tptr,"\n\t ",tlv_tlen);
break;
}
return(tlv_len+4); /* Type & Length fields not included */
@@ -657,12 +657,12 @@ ldp_msg_print(register const u_char *pptr) {
default:
if (vflag <= 1)
- print_unknown_data(msg_tptr,"\n\t ",msg_tlen);
+ print_unknown_data(gndo,msg_tptr,"\n\t ",msg_tlen);
break;
}
/* do we want to see an additionally hexdump ? */
if (vflag > 1 || hexdump==TRUE)
- print_unknown_data(tptr+sizeof(struct ldp_msg_header),"\n\t ",
+ print_unknown_data(gndo,tptr+sizeof(struct ldp_msg_header),"\n\t ",
msg_len);
tptr += msg_len+4;
@@ -674,3 +674,9 @@ trunc:
return 0;
}
+/*
+ * Local Variables:
+ * c-style: whitesmith
+ * c-basic-offset: 8
+ * End:
+ */
diff --git a/print-lldp.c b/print-lldp.c
index 2cbe7d3e..f9acfb5d 100644
--- a/print-lldp.c
+++ b/print-lldp.c
@@ -1052,7 +1052,7 @@ lldp_private_tia_print(const u_char *tptr, u_int tlv_len)
default:
printf("\n\t Location ID ");
- print_unknown_data(tptr+5, "\n\t ", tlv_len-5);
+ print_unknown_data(gndo,tptr+5, "\n\t ", tlv_len-5);
}
break;
@@ -1247,7 +1247,7 @@ lldp_private_dcbx_print(const u_char *pptr, u_int len)
/* do we also want to see a hex dump ? */
if (vflag > 1 || (vflag && hexdump)) {
- print_unknown_data(tptr,"\n\t ", tlv_len);
+ print_unknown_data(gndo,tptr,"\n\t ", tlv_len);
}
tlen -= tlv_len;
@@ -1586,7 +1586,7 @@ lldp_print(register const u_char *pptr, register u_int len) {
/* do we also want to see a hex dump ? */
if (vflag > 1 || (vflag && hexdump)) {
- print_unknown_data(tptr,"\n\t ", tlv_len);
+ print_unknown_data(gndo,tptr,"\n\t ", tlv_len);
}
tlen -= tlv_len;
diff --git a/print-lmp.c b/print-lmp.c
index 614089cd..5a3c4edc 100644
--- a/print-lmp.c
+++ b/print-lmp.c
@@ -866,12 +866,12 @@ lmp_print(register const u_char *pptr, register u_int len) {
default:
if (vflag <= 1)
- print_unknown_data(obj_tptr,"\n\t ",obj_tlen);
+ print_unknown_data(gndo,obj_tptr,"\n\t ",obj_tlen);
break;
}
/* do we want to see an additionally hexdump ? */
if (vflag > 1 || hexdump==TRUE)
- print_unknown_data(tptr+sizeof(struct lmp_object_header),"\n\t ",
+ print_unknown_data(gndo,tptr+sizeof(struct lmp_object_header),"\n\t ",
lmp_obj_len-sizeof(struct lmp_object_header));
tptr+=lmp_obj_len;
@@ -881,3 +881,9 @@ lmp_print(register const u_char *pptr, register u_int len) {
trunc:
printf("\n\t\t packet exceeded snapshot");
}
+/*
+ * Local Variables:
+ * c-style: whitesmith
+ * c-basic-offset: 8
+ * End:
+ */
diff --git a/print-lspping.c b/print-lspping.c
index f51d7ad7..18ff102c 100644
--- a/print-lspping.c
+++ b/print-lspping.c
@@ -768,7 +768,7 @@ lspping_print(register const u_char *pptr, register u_int len) {
}
/* do we want to see an additionally subtlv hexdump ? */
if (vflag > 1 || subtlv_hexdump==TRUE)
- print_unknown_data(tlv_tptr+sizeof(struct lspping_tlv_header), \
+ print_unknown_data(gndo,tlv_tptr+sizeof(struct lspping_tlv_header), \
"\n\t ",
lspping_subtlv_len);
@@ -873,12 +873,12 @@ lspping_print(register const u_char *pptr, register u_int len) {
default:
if (vflag <= 1)
- print_unknown_data(tlv_tptr,"\n\t ",tlv_tlen);
+ print_unknown_data(gndo,tlv_tptr,"\n\t ",tlv_tlen);
break;
}
/* do we want to see an additionally tlv hexdump ? */
if (vflag > 1 || tlv_hexdump==TRUE)
- print_unknown_data(tptr+sizeof(struct lspping_tlv_header),"\n\t ",
+ print_unknown_data(gndo,tptr+sizeof(struct lspping_tlv_header),"\n\t ",
lspping_tlv_len);
@@ -894,3 +894,9 @@ lspping_print(register const u_char *pptr, register u_int len) {
trunc:
printf("\n\t\t packet exceeded snapshot");
}
+/*
+ * Local Variables:
+ * c-style: whitesmith
+ * c-basic-offset: 8
+ * End:
+ */
diff --git a/print-lwapp.c b/print-lwapp.c
index 41b7e08a..8a8c9e0a 100644
--- a/print-lwapp.c
+++ b/print-lwapp.c
@@ -343,7 +343,7 @@ lwapp_data_print(const u_char *pptr, u_int len) {
tlen-=sizeof(const struct lwapp_transport_header);
/* FIX - An IEEE 802.11 frame follows - hexdump for now */
- print_unknown_data(tptr, "\n\t", tlen);
+ print_unknown_data(gndo,tptr, "\n\t", tlen);
return;
diff --git a/print-mpcp.c b/print-mpcp.c
index 47fa7dbf..fcffcf2c 100644
--- a/print-mpcp.c
+++ b/print-mpcp.c
@@ -263,7 +263,7 @@ mpcp_print(register const u_char *pptr, register u_int length) {
default:
/* unknown opcode - hexdump for now */
- print_unknown_data(pptr, "\n\t", length);
+ print_unknown_data(gndo,pptr, "\n\t", length);
break;
}
@@ -272,3 +272,9 @@ mpcp_print(register const u_char *pptr, register u_int length) {
trunc:
printf("\n\t[|MPCP]");
}
+/*
+ * Local Variables:
+ * c-style: whitesmith
+ * c-basic-offset: 8
+ * End:
+ */
diff --git a/print-olsr.c b/print-olsr.c
index 2713c09c..a7fe2197 100644
--- a/print-olsr.c
+++ b/print-olsr.c
@@ -606,7 +606,7 @@ olsr_print (const u_char *pptr, u_int length, int is_ipv6)
*/
case OLSR_POWERINFO_MSG:
default:
- print_unknown_data(msg_data, "\n\t ", msg_tlen);
+ print_unknown_data(gndo,msg_data, "\n\t ", msg_tlen);
break;
} /* switch (msg_type) */
tptr += msg_len;
diff --git a/print-ospf.c b/print-ospf.c
index 55feeba5..efd013ee 100644
--- a/print-ospf.c
+++ b/print-ospf.c
@@ -256,7 +256,7 @@ ospf_print_grace_lsa (const u_int8_t *tptr, u_int ls_length) {
default:
if (vflag <= 1) {
- if(!print_unknown_data(tptr,"\n\t ",tlv_length))
+ if(!print_unknown_data(gndo,tptr,"\n\t ",tlv_length))
return -1;
}
break;
@@ -416,7 +416,7 @@ ospf_print_te_lsa (const u_int8_t *tptr, u_int ls_length) {
default:
if (vflag <= 1) {
- if(!print_unknown_data(tptr,"\n\t\t",subtlv_length))
+ if(!print_unknown_data(gndo,tptr,"\n\t\t",subtlv_length))
return -1;
}
break;
@@ -442,7 +442,7 @@ ospf_print_te_lsa (const u_int8_t *tptr, u_int ls_length) {
default:
if (vflag <= 1) {
- if(!print_unknown_data(tptr,"\n\t ",tlv_length))
+ if(!print_unknown_data(gndo,tptr,"\n\t ",tlv_length))
return -1;
}
break;
@@ -780,7 +780,7 @@ ospf_print_lsa(register const struct lsa *lsap)
break;
default:
if (vflag <= 1) {
- if(!print_unknown_data(tptr,"\n\t ",tlv_length))
+ if(!print_unknown_data(gndo,tptr,"\n\t ",tlv_length))
return(ls_end);
}
break;
@@ -807,7 +807,7 @@ ospf_print_lsa(register const struct lsa *lsap)
default:
if (vflag <= 1) {
- if(!print_unknown_data((u_int8_t *)lsap->lsa_un.un_unknown,
+ if(!print_unknown_data(gndo,(u_int8_t *)lsap->lsa_un.un_unknown,
"\n\t ", ls_length))
return(ls_end);
}
@@ -817,7 +817,7 @@ ospf_print_lsa(register const struct lsa *lsap)
/* do we want to see an additionally hexdump ? */
if (vflag> 1)
- if(!print_unknown_data((u_int8_t *)lsap->lsa_un.un_unknown,
+ if(!print_unknown_data(gndo,(u_int8_t *)lsap->lsa_un.un_unknown,
"\n\t ", ls_length)) {
return(ls_end);
}
diff --git a/print-ospf6.c b/print-ospf6.c
index dba73ab8..f22418b6 100644
--- a/print-ospf6.c
+++ b/print-ospf6.c
@@ -460,7 +460,7 @@ ospf6_print_lsa(register const struct lsa6 *lsap, const u_char *dataend)
break;
default:
- if(!print_unknown_data(tptr,
+ if(!print_unknown_data(gndo,tptr,
"\n\t ",
lsa_length)) {
return (1);
@@ -655,7 +655,7 @@ ospf6_decode_at(const u_char *cp, const u_int len)
/* Authentication Data */
TCHECK2(*cp, authdatalen - OSPF6_AT_HDRLEN);
if (vflag > 1)
- print_unknown_data(cp, "\n\tAuthentication Data ", authdatalen - OSPF6_AT_HDRLEN);
+ print_unknown_data(gndo,cp, "\n\tAuthentication Data ", authdatalen - OSPF6_AT_HDRLEN);
return 0;
trunc:
diff --git a/print-pim.c b/print-pim.c
index 3c6b7d34..157df46f 100644
--- a/print-pim.c
+++ b/print-pim.c
@@ -730,12 +730,12 @@ pimv2_print(register const u_char *bp, register u_int len, u_int cksum)
break;
default:
if (vflag <= 1)
- print_unknown_data(bp,"\n\t ",olen);
+ print_unknown_data(gndo,bp,"\n\t ",olen);
break;
}
/* do we want to see an additionally hexdump ? */
if (vflag> 1)
- print_unknown_data(bp,"\n\t ",olen);
+ print_unknown_data(gndo,bp,"\n\t ",olen);
bp += olen;
}
break;
diff --git a/print-ppp.c b/print-ppp.c
index de49e7e3..d45d4441 100644
--- a/print-ppp.c
+++ b/print-ppp.c
@@ -459,7 +459,7 @@ handle_ctrl_proto(u_int proto, const u_char *pptr, int length)
printf("\n\tencoded length %u (=Option(s) length %u)",len,len-4);
if (vflag>1)
- print_unknown_data(pptr-2,"\n\t",6);
+ print_unknown_data(gndo,pptr-2,"\n\t",6);
switch (code) {
@@ -533,7 +533,7 @@ handle_ctrl_proto(u_int proto, const u_char *pptr, int length)
/* XXX: need to decode Rejected-Information? - hexdump for now */
if (len > 6) {
printf("\n\t Rejected Packet");
- print_unknown_data(tptr+2,"\n\t ",len-2);
+ print_unknown_data(gndo,tptr+2,"\n\t ",len-2);
}
break;
case CPCODES_ECHO_REQ:
@@ -547,7 +547,7 @@ handle_ctrl_proto(u_int proto, const u_char *pptr, int length)
if (len > 8) {
printf("\n\t -----trailing data-----");
TCHECK2(tptr[4], len-8);
- print_unknown_data(tptr+4,"\n\t ",len-8);
+ print_unknown_data(gndo,tptr+4,"\n\t ",len-8);
}
break;
case CPCODES_ID:
@@ -575,7 +575,7 @@ handle_ctrl_proto(u_int proto, const u_char *pptr, int length)
* original pointer passed to the begin
* the PPP packet */
if (vflag <= 1)
- print_unknown_data(pptr-2,"\n\t ",length+2);
+ print_unknown_data(gndo,pptr-2,"\n\t ",length+2);
break;
}
return;
@@ -657,7 +657,7 @@ print_lcp_config_options(const u_char *p, int length)
case PPP_SPAP_OLD:
break;
default:
- print_unknown_data(p,"\n\t",len);
+ print_unknown_data(gndo,p,"\n\t",len);
}
}
break;
@@ -758,12 +758,12 @@ print_lcp_config_options(const u_char *p, int length)
#endif
default:
if(vflag<2)
- print_unknown_data(&p[2],"\n\t ",len-2);
+ print_unknown_data(gndo,&p[2],"\n\t ",len-2);
break;
}
if (vflag>1)
- print_unknown_data(&p[2],"\n\t ",len-2); /* exclude TLV header */
+ print_unknown_data(gndo,&p[2],"\n\t ",len-2); /* exclude TLV header */
return len;
@@ -1085,11 +1085,11 @@ print_ipcp_config_options(const u_char *p, int length)
break;
default:
if(vflag<2)
- print_unknown_data(&p[2],"\n\t ",len-2);
+ print_unknown_data(gndo,&p[2],"\n\t ",len-2);
break;
}
if (vflag>1)
- print_unknown_data(&p[2],"\n\t ",len-2); /* exclude TLV header */
+ print_unknown_data(gndo,&p[2],"\n\t ",len-2); /* exclude TLV header */
return len;
invlen:
@@ -1140,11 +1140,11 @@ print_ip6cp_config_options(const u_char *p, int length)
break;
default:
if(vflag<2)
- print_unknown_data(&p[2],"\n\t ",len-2);
+ print_unknown_data(gndo,&p[2],"\n\t ",len-2);
break;
}
if (vflag>1)
- print_unknown_data(&p[2],"\n\t ",len-2); /* exclude TLV header */
+ print_unknown_data(gndo,&p[2],"\n\t ",len-2); /* exclude TLV header */
return len;
@@ -1203,11 +1203,11 @@ print_ccp_config_options(const u_char *p, int length)
case CCPOPT_RESV:
default:
if(vflag<2)
- print_unknown_data(&p[2],"\n\t ",len-2);
+ print_unknown_data(gndo,&p[2],"\n\t ",len-2);
break;
}
if (vflag>1)
- print_unknown_data(&p[2],"\n\t ",len-2); /* exclude TLV header */
+ print_unknown_data(gndo,&p[2],"\n\t ",len-2); /* exclude TLV header */
return len;
@@ -1249,11 +1249,11 @@ print_bacp_config_options(const u_char *p, int length)
break;
default:
if(vflag<2)
- print_unknown_data(&p[2],"\n\t ",len-2);
+ print_unknown_data(gndo,&p[2],"\n\t ",len-2);
break;
}
if (vflag>1)
- print_unknown_data(&p[2],"\n\t ",len-2); /* exclude TLV header */
+ print_unknown_data(gndo,&p[2],"\n\t ",len-2); /* exclude TLV header */
return len;
@@ -1387,7 +1387,7 @@ handle_ppp(u_int proto, const u_char *p, int length)
break;
default:
printf("%s ", tok2str(ppptype2str, "unknown PPP protocol (0x%04x)", proto));
- print_unknown_data(p,"\n\t",length);
+ print_unknown_data(gndo,p,"\n\t",length);
break;
}
}
diff --git a/print-radius.c b/print-radius.c
index 08922673..d16c794d 100644
--- a/print-radius.c
+++ b/print-radius.c
@@ -880,7 +880,7 @@ radius_attrs_print(register const u_char *attr, u_int length)
}
/* do we also want to see a hex dump ? */
if (vflag> 1)
- print_unknown_data((u_char *)rad_attr+2,"\n\t ",(rad_attr->len)-2);
+ print_unknown_data(gndo,(u_char *)rad_attr+2,"\n\t ",(rad_attr->len)-2);
length-=(rad_attr->len);
rad_attr = (struct radius_attr *)( ((char *)(rad_attr))+rad_attr->len);
diff --git a/print-rip.c b/print-rip.c
index 6310e5da..c0b5f09a 100644
--- a/print-rip.c
+++ b/print-rip.c
@@ -106,14 +106,14 @@ rip_entry_print_v1(register const struct rip_netinfo *ni)
family = EXTRACT_16BITS(&ni->rip_family);
if (family != BSD_AFNUM_INET && family != 0) {
printf("\n\t AFI %s, ", tok2str(bsd_af_values, "Unknown (%u)", family));
- print_unknown_data((u_int8_t *)&ni->rip_family,"\n\t ",RIP_ROUTELEN);
+ print_unknown_data(gndo,(u_int8_t *)&ni->rip_family,"\n\t ",RIP_ROUTELEN);
return;
}
if (EXTRACT_16BITS(&ni->rip_tag) ||
EXTRACT_32BITS(&ni->rip_dest_mask) ||
EXTRACT_32BITS(&ni->rip_router)) {
/* MBZ fields not zero */
- print_unknown_data((u_int8_t *)&ni->rip_family,"\n\t ",RIP_ROUTELEN);
+ print_unknown_data(gndo,(u_int8_t *)&ni->rip_family,"\n\t ",RIP_ROUTELEN);
return;
}
if (family == 0) {
@@ -151,16 +151,16 @@ rip_entry_print_v2(register const struct rip_netinfo *ni, const unsigned remaini
printf(" MBZ %u", EXTRACT_32BITS(&ni->rip_metric));
} else if (auth_type == 1) {
printf("\n\t Auth trailer:");
- print_unknown_data((u_int8_t *)&ni->rip_dest,"\n\t ",remaining);
+ print_unknown_data(gndo,(u_int8_t *)&ni->rip_dest,"\n\t ",remaining);
return remaining; /* AT spans till the packet end */
} else {
printf("\n\t Unknown (%u) Authentication data:",
EXTRACT_16BITS(&ni->rip_tag));
- print_unknown_data((u_int8_t *)&ni->rip_dest,"\n\t ",remaining);
+ print_unknown_data(gndo,(u_int8_t *)&ni->rip_dest,"\n\t ",remaining);
}
} else if (family != BSD_AFNUM_INET && family != 0) {
printf("\n\t AFI %s", tok2str(bsd_af_values, "Unknown (%u)", family));
- print_unknown_data((u_int8_t *)&ni->rip_tag,"\n\t ",RIP_ROUTELEN-2);
+ print_unknown_data(gndo,(u_int8_t *)&ni->rip_tag,"\n\t ",RIP_ROUTELEN-2);
} else { /* BSD_AFNUM_INET or AFI 0 */
printf("\n\t AFI %s, %15s/%-2d, tag 0x%04x, metric: %u, next-hop: ",
tok2str(bsd_af_values, "%u", family),
@@ -215,7 +215,7 @@ rip_print(const u_char *dat, u_int length)
*
* so perhaps we should just dump the packet, in hex.
*/
- print_unknown_data((u_int8_t *)&rp->rip_cmd,"\n\t",length);
+ print_unknown_data(gndo,(u_int8_t *)&rp->rip_cmd,"\n\t",length);
break;
default:
/* dump version and lets see if we know the commands name*/
@@ -258,14 +258,14 @@ rip_print(const u_char *dat, u_int length)
/* fall through */
default:
if (vflag <= 1) {
- if(!print_unknown_data((u_int8_t *)rp,"\n\t",length))
+ if(!print_unknown_data(gndo,(u_int8_t *)rp,"\n\t",length))
return;
}
break;
}
/* do we want to see an additionally hexdump ? */
if (vflag> 1) {
- if(!print_unknown_data((u_int8_t *)rp,"\n\t",length))
+ if(!print_unknown_data(gndo,(u_int8_t *)rp,"\n\t",length))
return;
}
}
diff --git a/print-rpki-rtr.c b/print-rpki-rtr.c
index a7841bbe..c335c3b7 100644
--- a/print-rpki-rtr.c
+++ b/print-rpki-rtr.c
@@ -310,7 +310,7 @@ rpki_rtr_pdu_print (const u_char *tptr, u_int indent)
/* do we also want to see a hex dump ? */
if (vflag > 1 || (vflag && hexdump)) {
- print_unknown_data(tptr,"\n\t ", pdu_len);
+ print_unknown_data(gndo,tptr,"\n\t ", pdu_len);
}
}
diff --git a/print-rsvp.c b/print-rsvp.c
index bec82f5e..ed228d9e 100644
--- a/print-rsvp.c
+++ b/print-rsvp.c
@@ -630,7 +630,7 @@ rsvp_intserv_print(const u_char *tptr, u_short obj_tlen) {
default:
if (vflag <= 1)
- print_unknown_data(tptr+4,"\n\t\t",parameter_length);
+ print_unknown_data(gndo,tptr+4,"\n\t\t",parameter_length);
}
return (parameter_length+4); /* header length 4 bytes */
}
@@ -1612,7 +1612,7 @@ _U_
return-1;
if (*(obj_tptr+1) < 2)
return -1;
- print_unknown_data(obj_tptr+2,"\n\t\t",*(obj_tptr+1)-2);
+ print_unknown_data(gndo,obj_tptr+2,"\n\t\t",*(obj_tptr+1)-2);
obj_tlen-=*(obj_tptr+1);
obj_tptr+=*(obj_tptr+1);
}
@@ -1785,12 +1785,12 @@ _U_
case RSVP_OBJ_PROTECTION:
default:
if (vflag <= 1)
- print_unknown_data(obj_tptr,"\n\t ",obj_tlen); /* FIXME indentation */
+ print_unknown_data(gndo,obj_tptr,"\n\t ",obj_tlen); /* FIXME indentation */
break;
}
/* do we also want to see a hex dump ? */
if (vflag > 1 || hexdump==TRUE)
- print_unknown_data(tptr+sizeof(struct rsvp_object_header),"\n\t ", /* FIXME indentation */
+ print_unknown_data(gndo,tptr+sizeof(struct rsvp_object_header),"\n\t ", /* FIXME indentation */
rsvp_obj_len-sizeof(struct rsvp_object_header));
tptr+=rsvp_obj_len;
@@ -1934,7 +1934,7 @@ rsvp_print(register const u_char *pptr, register u_int len) {
break;
default:
- print_unknown_data(tptr,"\n\t ",tlen);
+ print_unknown_data(gndo,tptr,"\n\t ",tlen);
break;
}
diff --git a/print-sflow.c b/print-sflow.c
index 5c01b669..44e826f9 100644
--- a/print-sflow.c
+++ b/print-sflow.c
@@ -531,7 +531,7 @@ sflow_print_counter_records(const u_char *pointer, u_int len, u_int records) {
break;
default:
if (vflag <= 1)
- print_unknown_data(tptr, "\n\t\t", counter_len);
+ print_unknown_data(gndo,tptr, "\n\t\t", counter_len);
break;
}
}
@@ -732,7 +732,7 @@ sflow_print_flow_records(const u_char *pointer, u_int len, u_int records) {
break;
default:
if (vflag <= 1)
- print_unknown_data(tptr, "\n\t\t", flow_len);
+ print_unknown_data(gndo,tptr, "\n\t\t", flow_len);
break;
}
}
@@ -913,7 +913,7 @@ sflow_print(const u_char *pptr, u_int len) {
default:
if (vflag <= 1)
- print_unknown_data(tptr, "\n\t ", sflow_sample_len);
+ print_unknown_data(gndo,tptr, "\n\t ", sflow_sample_len);
break;
}
tptr += sflow_sample_len;
diff --git a/print-sip.c b/print-sip.c
index c5bc8534..080d5606 100644
--- a/print-sip.c
+++ b/print-sip.c
@@ -55,7 +55,7 @@ sip_print(register const u_char *pptr, register u_int len)
/* do we want to see an additionally hexdump ? */
if (vflag> 1)
- print_unknown_data(pptr,"\n\t",len);
+ print_unknown_data(gndo,pptr,"\n\t",len);
return;
diff --git a/print-slow.c b/print-slow.c
index 8bfe3f18..b4ba2ab9 100644
--- a/print-slow.c
+++ b/print-slow.c
@@ -307,7 +307,7 @@ slow_print(register const u_char *pptr, register u_int len) {
/* unrecognized subtype */
if (print_version == -1) {
- print_unknown_data(pptr, "\n\t", len);
+ print_unknown_data(gndo,pptr, "\n\t", len);
return;
}
@@ -368,7 +368,7 @@ void slow_marker_lacp_print(register const u_char *tptr, register u_int tlen) {
tlv_header->type != LACP_TLV_TERMINATOR &&
tlv_header->type != MARKER_TLV_TERMINATOR) {
printf("\n\t-----trailing data-----");
- print_unknown_data(tptr+sizeof(struct tlv_header_t),"\n\t ",tlen);
+ print_unknown_data(gndo,tptr+sizeof(struct tlv_header_t),"\n\t ",tlen);
return;
}
@@ -436,12 +436,12 @@ void slow_marker_lacp_print(register const u_char *tptr, register u_int tlen) {
default:
if (vflag <= 1)
- print_unknown_data(tlv_tptr,"\n\t ",tlv_tlen);
+ print_unknown_data(gndo,tlv_tptr,"\n\t ",tlv_tlen);
break;
}
/* do we want to see an additional hexdump ? */
if (vflag > 1) {
- print_unknown_data(tptr+sizeof(struct tlv_header_t),"\n\t ",
+ print_unknown_data(gndo,tptr+sizeof(struct tlv_header_t),"\n\t ",
tlv_len-sizeof(struct tlv_header_t));
}
@@ -556,7 +556,7 @@ void slow_oam_print(register const u_char *tptr, register u_int tlen) {
/* do we also want to see a hex dump ? */
if (vflag > 1 || hexdump==TRUE) {
- print_unknown_data(tptr,"\n\t ",
+ print_unknown_data(gndo,tptr,"\n\t ",
ptr.slow_oam_tlv_header->length);
}
@@ -624,7 +624,7 @@ void slow_oam_print(register const u_char *tptr, register u_int tlen) {
/* do we also want to see a hex dump ? */
if (vflag > 1 || hexdump==TRUE) {
- print_unknown_data(tptr,"\n\t ",
+ print_unknown_data(gndo,tptr,"\n\t ",
ptr.slow_oam_tlv_header->length);
}
@@ -653,7 +653,7 @@ void slow_oam_print(register const u_char *tptr, register u_int tlen) {
case SLOW_OAM_CODE_PRIVATE:
default:
if (vflag <= 1) {
- print_unknown_data(tptr,"\n\t ", tlen);
+ print_unknown_data(gndo,tptr,"\n\t ", tlen);
}
break;
}
diff --git a/print-syslog.c b/print-syslog.c
index 07ba2059..89019bf5 100644
--- a/print-syslog.c
+++ b/print-syslog.c
@@ -142,7 +142,7 @@ syslog_print(register const u_char *pptr, register u_int len)
}
if (vflag > 1)
- print_unknown_data(pptr,"\n\t",len);
+ print_unknown_data(gndo,pptr,"\n\t",len);
return;
diff --git a/print-telnet.c b/print-telnet.c
index 4911e5ca..f9e868db 100644
--- a/print-telnet.c
+++ b/print-telnet.c
@@ -244,7 +244,7 @@ telnet_print(const u_char *sp, u_int length)
if (Xflag && 2 < vflag) {
if (first)
printf("\nTelnet:");
- hex_print_with_offset("\n", sp, l, sp - osp);
+ hex_print_with_offset(gndo,"\n", sp, l, sp - osp);
if (l > 8)
printf("\n\t\t\t\t");
else
diff --git a/print-vqp.c b/print-vqp.c
index 9076b905..e3d9ecf2 100644
--- a/print-vqp.c
+++ b/print-vqp.c
@@ -196,7 +196,7 @@ vqp_print(register const u_char *pptr, register u_int len)
break;
default:
if (vflag <= 1)
- print_unknown_data(tptr, "\n\t ", vqp_obj_len);
+ print_unknown_data(gndo,tptr, "\n\t ", vqp_obj_len);
break;
}
tptr += vqp_obj_len;
diff --git a/print-vtp.c b/print-vtp.c
index 61a6f26a..cbc5868e 100644
--- a/print-vtp.c
+++ b/print-vtp.c
@@ -327,7 +327,7 @@ vtp_print (const u_char *pptr, u_int length)
case VTP_VLAN_TRANS_BRIDGED_VLAN:
case VTP_VLAN_ARP_HOP_COUNT:
default:
- print_unknown_data(tptr, "\n\t\t ", 2 + tlv_len*2);
+ print_unknown_data(gndo,tptr, "\n\t\t ", 2 + tlv_len*2);
break;
}
len -= 2 + tlv_len*2;
diff --git a/tcpdump.c b/tcpdump.c
index dded18e0..63e85aed 100644
--- a/tcpdump.c
+++ b/tcpdump.c
@@ -1941,6 +1941,7 @@ print_packet(u_char *user, const struct pcap_pkthdr *h, const u_char *sp)
{
struct print_info *print_info;
u_int hdrlen;
+ netdissect_options *ndo;
++packets_captured;
@@ -1948,25 +1949,26 @@ print_packet(u_char *user, const struct pcap_pkthdr *h, const u_char *sp)
ts_print(&h->ts);
print_info = (struct print_info *)user;
+ ndo = print_info->ndo;
/*
* Some printers want to check that they're not walking off the
* end of the packet.
* Rather than pass it all the way down, we set this global.
*/
- snapend = sp + h->caplen;
+ ndo->ndo_snapend = sp + h->caplen;
if(print_info->ndo_type) {
hdrlen = (*print_info->p.ndo_printer)(print_info->ndo, h, sp);
} else {
hdrlen = (*print_info->p.printer)(h, sp);
}
-
- if (Xflag) {
+
+ if (ndo->ndo_Xflag) {
/*
* Print the raw packet data in hex and ASCII.
*/
- if (Xflag > 1) {
+ if (ndo->ndo_Xflag > 1) {
/*
* Include the link-layer header.
*/
@@ -1981,15 +1983,15 @@ print_packet(u_char *user, const struct pcap_pkthdr *h, const u_char *sp)
hex_and_ascii_print("\n\t", sp + hdrlen,
h->caplen - hdrlen);
}
- } else if (xflag) {
+ } else if (ndo->ndo_xflag) {
/*
* Print the raw packet data in hex.
*/
- if (xflag > 1) {
+ if (ndo->ndo_xflag > 1) {
/*
* Include the link-layer header.
*/
- hex_print("\n\t", sp, h->caplen);
+ hex_print(ndo, "\n\t", sp, h->caplen);
} else {
/*
* Don't include the link-layer header - and if
@@ -1997,14 +1999,14 @@ print_packet(u_char *user, const struct pcap_pkthdr *h, const u_char *sp)
* print nothing.
*/
if (h->caplen > hdrlen)
- hex_print("\n\t", sp + hdrlen,
- h->caplen - hdrlen);
+ hex_print(ndo, "\n\t", sp + hdrlen,
+ h->caplen - hdrlen);
}
- } else if (Aflag) {
+ } else if (ndo->ndo_Aflag) {
/*
* Print the raw packet data in ASCII.
*/
- if (Aflag > 1) {
+ if (ndo->ndo_Aflag > 1) {
/*
* Include the link-layer header.
*/
@@ -2186,3 +2188,9 @@ ndo_warning(netdissect_options *ndo _U_, const char *fmt, ...)
(void)fputc('\n', stderr);
}
}
+/*
+ * Local Variables:
+ * c-style: whitesmith
+ * c-basic-offset: 8
+ * End:
+ */
diff --git a/util.c b/util.c
index d5fe17df..4d25d6f0 100644
--- a/util.c
+++ b/util.c
@@ -259,21 +259,21 @@ relts_print(int secs)
*/
int
-print_unknown_data(const u_char *cp,const char *ident,int len)
+print_unknown_data(netdissect_options *ndo, const u_char *cp,const char *ident,int len)
{
if (len < 0) {
- printf("%sDissector error: print_unknown_data called with negative length",
- ident);
+ ND_PRINT((ndo,"%sDissector error: print_unknown_data called with negative length",
+ ident));
return(0);
}
if (snapend - cp < len)
len = snapend - cp;
if (len < 0) {
- printf("%sDissector error: print_unknown_data called with pointer past end of packet",
- ident);
+ ND_PRINT((ndo,"%sDissector error: print_unknown_data called with pointer past end of packet",
+ ident));
return(0);
}
- hex_print(ident,cp,len);
+ hex_print(ndo, ident,cp,len);
return(1); /* everything is ok */
}