X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/546558eabd81cfc36a81a4df728fdfea0d83b41a..fb97fcea2a5c7f1663a9ef7b4dbd64f821c977b5:/print-juniper.c diff --git a/print-juniper.c b/print-juniper.c index 28ce37f3..843488b8 100644 --- a/print-juniper.c +++ b/print-juniper.c @@ -39,6 +39,17 @@ __RCSID("NetBSD: print-juniper.c,v 1.3 2007/07/25 06:31:32 dogcow Exp "); #include "ethertype.h" #include "atm.h" +/* + * If none of the Juniper DLT_s are defined, there's nothing to do. + */ +#if defined(DLT_JUNIPER_GGSN) || defined(DLT_JUNIPER_ES) || \ + defined(DLT_JUNIPER_MONITOR) || defined(DLT_JUNIPER_SERVICES) || \ + defined(DLT_JUNIPER_PPPOE) || defined(DLT_JUNIPER_ETHER) || \ + defined(DLT_JUNIPER_PPP) || defined(DLT_JUNIPER_FRELAY) || \ + defined(DLT_JUNIPER_CHDLC) || defined(DLT_JUNIPER_PPPOE_ATM) || \ + defined(DLT_JUNIPER_MLPPP) || defined(DLT_JUNIPER_MFR) || \ + defined(DLT_JUNIPER_MLFR) || defined(DLT_JUNIPER_ATM1) || \ + defined(DLT_JUNIPER_ATM2) #define JUNIPER_BPF_OUT 0 /* Outgoing packet */ #define JUNIPER_BPF_IN 1 /* Incoming packet */ #define JUNIPER_BPF_PKT_IN 0x1 /* Incoming packet */ @@ -64,6 +75,7 @@ __RCSID("NetBSD: print-juniper.c,v 1.3 2007/07/25 06:31:32 dogcow Exp "); #define JUNIPER_IPSEC_O_AH_AUTHENTICATION_TYPE 4 #define JUNIPER_IPSEC_O_ESP_ENCRYPTION_TYPE 5 +#ifdef DLT_JUNIPER_ES static const struct tok juniper_ipsec_type_values[] = { { JUNIPER_IPSEC_O_ESP_ENCRYPT_ESP_AUTHEN_TYPE, "ESP ENCR-AUTH" }, { JUNIPER_IPSEC_O_ESP_ENCRYPT_AH_AUTHEN_TYPE, "ESP ENCR-AH AUTH" }, @@ -72,6 +84,7 @@ static const struct tok juniper_ipsec_type_values[] = { { JUNIPER_IPSEC_O_ESP_ENCRYPTION_TYPE, "ESP ENCR" }, { 0, NULL} }; +#endif static const struct tok juniper_direction_values[] = { { JUNIPER_BPF_IN, "In"}, @@ -438,15 +451,19 @@ struct juniper_l2info_t { #define MFR_BE_MASK 0xc0 +#ifdef DLT_JUNIPER_GGSN static const struct tok juniper_protocol_values[] = { { JUNIPER_PROTO_NULL, "Null" }, { JUNIPER_PROTO_IPV4, "IPv4" }, { JUNIPER_PROTO_IPV6, "IPv6" }, { 0, NULL} }; +#endif static int ip_heuristic_guess(netdissect_options *, const u_char *, u_int); +#ifdef DLT_JUNIPER_ATM2 static int juniper_ppp_heuristic_guess(netdissect_options *, const u_char *, u_int); +#endif static int juniper_parse_header(netdissect_options *, const u_char *, const struct pcap_pkthdr *, struct juniper_l2info_t *); #ifdef DLT_JUNIPER_GGSN @@ -498,7 +515,7 @@ juniper_ggsn_if_print(netdissect_options *ndo, return l2info.header_len; trunc: - ND_PRINT("[|juniper_services]"); + nd_print_trunc(ndo); return l2info.header_len; } #endif @@ -576,7 +593,7 @@ juniper_es_if_print(netdissect_options *ndo, return l2info.header_len; trunc: - ND_PRINT("[|juniper_services]"); + nd_print_trunc(ndo); return l2info.header_len; } #endif @@ -616,7 +633,7 @@ juniper_monitor_if_print(netdissect_options *ndo, return l2info.header_len; trunc: - ND_PRINT("[|juniper_services]"); + nd_print_trunc(ndo); return l2info.header_len; } #endif @@ -658,7 +675,7 @@ juniper_services_if_print(netdissect_options *ndo, return l2info.header_len; trunc: - ND_PRINT("[|juniper_services]"); + nd_print_trunc(ndo); return l2info.header_len; } #endif @@ -788,7 +805,7 @@ juniper_pppoe_atm_if_print(netdissect_options *ndo, return l2info.header_len; trunc: - ND_PRINT("[|juniper_pppoe_atm]"); + nd_print_trunc(ndo); return l2info.header_len; } #endif @@ -1003,7 +1020,7 @@ juniper_atm1_if_print(netdissect_options *ndo, return l2info.header_len; trunc: - ND_PRINT("[|juniper_atm1]"); + nd_print_trunc(ndo); return l2info.header_len; } #endif @@ -1067,11 +1084,9 @@ juniper_atm2_if_print(netdissect_options *ndo, return l2info.header_len; trunc: - ND_PRINT("[|juniper_atm2]"); + nd_print_trunc(ndo); return l2info.header_len; } -#endif - /* try to guess, based on all PPP protos that are supported in * a juniper router if the payload data is encapsulated using PPP */ @@ -1102,6 +1117,7 @@ juniper_ppp_heuristic_guess(netdissect_options *ndo, } return 1; /* we printed a ppp packet */ } +#endif static int ip_heuristic_guess(netdissect_options *ndo, @@ -1200,7 +1216,9 @@ juniper_parse_header(netdissect_options *ndo, const struct juniper_cookie_table_t *lp = juniper_cookie_table; u_int idx, jnx_ext_len, jnx_header_len = 0; uint8_t tlv_type,tlv_len; +#ifdef DLT_JUNIPER_ATM2 uint32_t control_word; +#endif int tlv_value; const u_char *tptr; @@ -1514,15 +1532,15 @@ juniper_parse_header(netdissect_options *ndo, ND_PRINT("hlen %u, proto 0x%04x, ", l2info->header_len, l2info->proto); return 1; /* everything went ok so far. continue parsing */ - trunc: - ND_PRINT("[|juniper_hdr], length %u", h->len); +trunc: + nd_print_trunc(ndo); return 0; } - - -/* - * Local Variables: - * c-style: whitesmith - * c-basic-offset: 4 - * End: - */ +#endif /* defined(DLT_JUNIPER_GGSN) || defined(DLT_JUNIPER_ES) || \ + defined(DLT_JUNIPER_MONITOR) || defined(DLT_JUNIPER_SERVICES) || \ + defined(DLT_JUNIPER_PPPOE) || defined(DLT_JUNIPER_ETHER) || \ + defined(DLT_JUNIPER_PPP) || defined(DLT_JUNIPER_FRELAY) || \ + defined(DLT_JUNIPER_CHDLC) || defined(DLT_JUNIPER_PPPOE_ATM) || \ + defined(DLT_JUNIPER_MLPPP) || defined(DLT_JUNIPER_MFR) || \ + defined(DLT_JUNIPER_MLFR) || defined(DLT_JUNIPER_ATM1) || \ + defined(DLT_JUNIPER_ATM2) */