X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/5c2027db88176ff4073d552a887429a3c9d3acee..1bcd37991fa57d9e966a6f96e7cbff59b16c28bd:/netdissect.h diff --git a/netdissect.h b/netdissect.h index b774ae63..854fb8a5 100644 --- a/netdissect.h +++ b/netdissect.h @@ -194,6 +194,9 @@ struct netdissect_saved_packet_info { struct netdissect_saved_packet_info *ndspi_prev; /* previous buffer on the stack */ }; +/* 'val' value(s) for longjmp */ +#define ND_TRUNCATED 1 + struct netdissect_options { int ndo_bflag; /* print 4 byte ASes in ASDOT notation */ int ndo_eflag; /* print ethernet header */ @@ -213,7 +216,7 @@ struct netdissect_options { */ int ndo_Hflag; /* dissect 802.11s draft mesh standard */ const char *ndo_protocol; /* protocol */ - jmp_buf ndo_truncated; /* jmp_buf for setjmp()/longjmp() */ + jmp_buf ndo_early_end; /* jmp_buf for setjmp()/longjmp() */ void *ndo_last_mem_p; /* pointer to the last allocated memory chunk */ int ndo_packet_number; /* print a packet number in the beginning of line */ int ndo_suppress_default_print; /* don't use default_print() for unknown packet types */ @@ -359,7 +362,11 @@ extern void nd_pop_all_packet_info(netdissect_options *); #define ND_TTEST_SIZE(p) ND_TTEST_LEN(p, sizeof(*(p))) /* Bail out if "l" bytes from "p" were not captured */ +#ifdef ND_LONGJMP_FROM_TCHECK +#define ND_TCHECK_LEN(p, l) if (!ND_TTEST_LEN(p, l)) nd_trunc_longjmp(ndo) +#else #define ND_TCHECK_LEN(p, l) if (!ND_TTEST_LEN(p, l)) goto trunc +#endif /* Bail out if "*(p)" was not captured */ #define ND_TCHECK_SIZE(p) ND_TCHECK_LEN(p, sizeof(*(p))) @@ -388,6 +395,7 @@ extern int nd_print(netdissect_options *, const u_char *, const u_char *); extern u_int nd_printztn(netdissect_options *, const u_char *, u_int, const u_char *); extern int nd_printn(netdissect_options *, const u_char *, u_int, const u_char *); extern int nd_printzp(netdissect_options *, const u_char *, u_int, const u_char *); +extern void nd_printjnp(netdissect_options *, const u_char *, u_int); /* * Flags for txtproto_print(). @@ -444,9 +452,18 @@ extern int unaligned_memcmp(const void *, const void *, size_t); extern const char *tok2strary_internal(const char **, int, const char *, int); #define tok2strary(a,f,i) tok2strary_internal(a, sizeof(a)/sizeof(a[0]),f,i) +struct uint_tokary +{ + u_int uintval; + const struct tok *tokary; +}; + +extern const struct tok *uint2tokary_internal(const struct uint_tokary[], const size_t, const u_int); +#define uint2tokary(a, i) uint2tokary_internal(a, sizeof(a)/sizeof(a[0]), i) + extern if_printer lookup_printer(int); -#define ND_DEBUG {printf(" [%s:%d %s] ", __FILE__, __LINE__, __FUNCTION__); fflush(stdout);} +#define ND_DEBUG {printf(" [%s:%d %s] ", __FILE__, __LINE__, __func__); fflush(stdout);} /* The DLT printer routines */ @@ -534,7 +551,7 @@ struct lladdr_info { extern void aarp_print(netdissect_options *, const u_char *, u_int); extern int ah_print(netdissect_options *, const u_char *); -extern void ahcp_print(netdissect_options *, const u_char *, const u_int); +extern void ahcp_print(netdissect_options *, const u_char *, u_int); extern void aodv_print(netdissect_options *, const u_char *, u_int, int); extern void aoe_print(netdissect_options *, const u_char *, const u_int); extern int arista_ethertype_print(netdissect_options *,const u_char *, u_int); @@ -609,7 +626,7 @@ extern u_int llap_print(netdissect_options *, const u_char *, u_int); extern int llc_print(netdissect_options *, const u_char *, u_int, u_int, const struct lladdr_info *, const struct lladdr_info *); extern void lldp_print(netdissect_options *, const u_char *, u_int); extern void lmp_print(netdissect_options *, const u_char *, u_int); -extern void loopback_print(netdissect_options *, const u_char *, const u_int); +extern void loopback_print(netdissect_options *, const u_char *, u_int); extern void lspping_print(netdissect_options *, const u_char *, u_int); extern void lwapp_control_print(netdissect_options *, const u_char *, u_int, int); extern void lwapp_data_print(netdissect_options *, const u_char *, u_int); @@ -639,7 +656,7 @@ extern void nsh_print(netdissect_options *, const u_char *, u_int); extern void ntp_print(netdissect_options *, const u_char *, u_int); extern void oam_print(netdissect_options *, const u_char *, u_int, u_int); extern void olsr_print(netdissect_options *, const u_char *, u_int, int); -extern void openflow_print(netdissect_options *, const u_char *, const u_int); +extern void openflow_print(netdissect_options *, const u_char *, u_int); extern void ospf6_print(netdissect_options *, const u_char *, u_int); extern void ospf_print(netdissect_options *, const u_char *, u_int, const u_char *); extern int ospf_grace_lsa_print(netdissect_options *, const u_char *, u_int);