]> The Tcpdump Group git mirrors - tcpdump/commitdiff
ndo-ize print-ascii: hex_print_with_offset()
authorMichael Richardson <[email protected]>
Thu, 2 Jan 2014 01:43:45 +0000 (20:43 -0500)
committerMichael Richardson <[email protected]>
Thu, 2 Jan 2014 02:31:18 +0000 (21:31 -0500)
40 files changed:
interface.h
netdissect.h
print-ascii.c
print-bfd.c
print-bgp.c
print-bootp.c
print-cdp.c
print-cfm.c
print-chdlc.c
print-eigrp.c
print-forces.c
print-fr.c
print-icmp.c
print-icmp6.c
print-ip6.c
print-isoclns.c
print-ldp.c
print-lldp.c
print-lmp.c
print-lspping.c
print-lwapp.c
print-mpcp.c
print-olsr.c
print-ospf.c
print-ospf6.c
print-pim.c
print-ppp.c
print-radius.c
print-rip.c
print-rpki-rtr.c
print-rsvp.c
print-sflow.c
print-sip.c
print-slow.c
print-syslog.c
print-telnet.c
print-vqp.c
print-vtp.c
tcpdump.c
util.c

index 7bc2c84dd6399c1fab067610ae0005c0fa24fa15..7c3a4683e6d20acd3e224385cdcb602724ded7bd 100644 (file)
@@ -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 *);
index 4fd47264cb9ccf3e0de8775df3bc0778282ceb4a..f82027c37dfb0c5f4af0409a7ad0522d7b7426ce 100644 (file)
@@ -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 *,
index fa8793cb0641b6227506d9875f78a77593576dc8..c672ca8cdeb3e7af6fd1cfb57e5930da02d6555a 100644 (file)
@@ -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
index 0020222d5a6b01779a3fb096218e7480918c169d..dc03a8b48203794db676cc7be61d8a8c9f86ba32 100644 (file)
@@ -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:
+ */
index 974903fc0576b85788c598d650dd9ac83903db61..5acdbc31143aeb396de5732a8f1dcd16494b3968 100644 (file)
@@ -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;
index 499f9785e2cfdc862f7d53974ae42b9b1a5907eb..c46015675d72d888eeb44f156d9dcacb7d678091 100644 (file)
@@ -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;
index da3f10b426f71585852c0d930dcb45b0250f04c7..12f2d4bf51262925c6797ac8ec420b5bdaaf9b56 100644 (file)
@@ -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;
                     }
                 }
index b71014db8e97710df612de099ce6b0a853effef5..81f2df6507d364e35ba951cf9a6982197dbcfeeb 100644 (file)
@@ -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;
index 79eaaa9e097c38ffb38248854c56efe4186c44b9..5685cc136d7f00440296a0fd3b72d13d3422f97d 100644 (file)
@@ -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:
index 86288450eee55db9f0411bb2a56709132736e4fb..4177564db16abba0a69b0900753a030703bbac10 100644 (file)
@@ -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;
index 49c26ae00e867f3b49155cbc330ca828eedaa60b..5a19890e50b0bc94b882f57265e136494e76ef3b 100644 (file)
@@ -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:
+ */
index ba134d29b16bfbcf089b8b1c9e23e1ea874dd25a..56cc47deb3aee6e803e2a6c060127792e303651a 100644 (file)
@@ -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:
+ */
index 135b9a449a7903b3193325a1880604053d0badcd..cbc342b36e84d946b499299bde6c4ce29cd547b8 100644 (file)
@@ -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:
+ */
index 4953340f1d032c2053c2a92cb8a3843832c0d1b4..011702bc4c2f36bfc751005f68d55b22c944ef9e 100644 (file)
@@ -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:
+ */
index 97649ca25890d2eb9aa3f977b426b234371df018..23b54316d4ca2ae25d910a3cfff1472e8b9cf019 100644 (file)
@@ -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);
index 2097a8559136969d0b8523f3a19f579a7e3aa16b..cc441c11409f38e881a2aace5d68ddaf22f39cc7 100644 (file)
@@ -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);
         }
 
index f852004d81c47258ab2ea42cc79e2a9af8617e08..58f632472c24f3e5019d17cb3752f05cd151afc6 100644 (file)
@@ -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:
+ */
index 2cbe7d3e405eb97bcf84c88efe75b6c13a2a4ebc..f9acfb5db93a68511cd6fce3b8aea8e91abba541 100644 (file)
@@ -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;
index 614089cd12ea0366562346931b740d71227dabf7..5a3c4edc0ea1c7dac60f8eb3a871653d4c5bc242 100644 (file)
@@ -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:
+ */
index f51d7ad75f6a995e2baed89b35d6316160084a79..18ff102c1f82ee56ddb03a4436aa54a5e216272c 100644 (file)
@@ -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:
+ */
index 41b7e08a037ef07aa8ad49cd9a0b1976f005b893..8a8c9e0afd55fcc2f565da14d5748b0844f9e575 100644 (file)
@@ -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;
 
index 47fa7dbf2c8cc06dcb04ea0a76d2d16568aba441..fcffcf2c52d6e75ae7af556359f038c5e1fbffa9 100644 (file)
@@ -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:
+ */
index 2713c09ca31bb526c68a06a3fe8eff72963567e5..a7fe219784f32df73b32750f0bb58287e7cf862f 100644 (file)
@@ -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;
index 55feeba5d8740c204181f66f9e3661bf56ae0547..efd013eeea25a9786b693bba5df5b66e6c9b3089 100644 (file)
@@ -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);
             }
index dba73ab815ffa86dfff8d82d33393c14524af7f2..f22418b6753b2e923b869d273bd620220767dc0e 100644 (file)
@@ -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:
index 3c6b7d345ffcddf952ce75b7c274ab7a7c7f926a..157df46f778191bf77444f862d7e2bfafd063f3d 100644 (file)
@@ -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;
index de49e7e3a1e6333d1268fc9b1e6c9831155db6f1..d45d44418823ba466af6d4809ee7cc204a850c07 100644 (file)
@@ -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;
        }
 }
index 089226735f6c123e8264c83faab67b3d921a94b0..d16c794dc07697f52cd4d0844b06e87a06fdc87b 100644 (file)
@@ -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);
index 6310e5dac49e604de6a3c050062d806c05a7c816..c0b5f09a1ed47bfe39dc9c617ca5811fcdf0be6b 100644 (file)
@@ -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;
                 }
         }
index a7841bbe5f3cc942520d252edf4107e1c0473912..c335c3b716cd8786b067d60a4d35c9fa29dd03d1 100644 (file)
@@ -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);
     }
 }
 
index bec82f5ef0bac014cec80d12674182b70dc4e20e..ed228d9e8e4522af2a1b18968e8b9f5a3394bf1f 100644 (file)
@@ -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;
     }
 
index 5c01b6692b49aabeb3bc26fc332c3c85fdeab7c8..44e826f975c4b85d6d3cbcdc996e5b82d4162079 100644 (file)
@@ -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;
index c5bc8534daaa784443d8fb45fb430d1173717831..080d5606a0689cf00717d39bf0e7d23e5b0a85f3 100644 (file)
@@ -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;
 
index 8bfe3f189d7e17dc1e30fd46f11662890480e69d..b4ba2ab91783407d912c3fcceb346baee9703be3 100644 (file)
@@ -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;
     }
index 07ba20591fdebd1048a0cb1b243243af580f2174..89019bf54b532bcecde22c7a87386a7a02805f22 100644 (file)
@@ -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;
 
index 4911e5caf2385375daae78d32a592216342f8c7c..f9e868db7db89a6d1d6d8299a560f96959a38041 100644 (file)
@@ -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
index 9076b905bb26bcc432a21f3fd78feffcee87bfa0..e3d9ecf20963f30b80edacfe57e39a756cc005d3 100644 (file)
@@ -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;
index 61a6f26a8b5821abd0b407e35c546800077f88e9..cbc5868e25bce7147f75949d24b2bab983809f94 100644 (file)
@@ -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;
index dded18e005d1c91b619d388faea6925f754a8710..63e85aed10f06d56019aaced5e458deae7bbc561 100644 (file)
--- 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 d5fe17df4b6aab5f38c52186b3bda5e281d200c7..4d25d6f0c4a99ca174e61f6ba264ac2cc648be72 100644 (file)
--- 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 */
 }