X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/480af1cdceda69d49bbc8e6a9d88db8eb9dfae79..07268a08a0a997b6082f77e9ec6c59812ce217f4:/print-juniper.c diff --git a/print-juniper.c b/print-juniper.c index b059d6bb..db7f2e15 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 @@ -466,7 +483,7 @@ juniper_ggsn_if_print(netdissect_options *ndo, const struct juniper_ggsn_header *gh; uint8_t proto; - ndo->ndo_protocol = "juniper_ggsn_if"; + ndo->ndo_protocol = "juniper_ggsn"; l2info.pictype = DLT_JUNIPER_GGSN; if (juniper_parse_header(ndo, p, h, &l2info) == 0) return l2info.header_len; @@ -498,8 +515,8 @@ juniper_ggsn_if_print(netdissect_options *ndo, return l2info.header_len; trunc: - nd_print_trunc(ndo); - return l2info.header_len; + nd_print_trunc(ndo); + return l2info.header_len; } #endif @@ -520,7 +537,7 @@ juniper_es_if_print(netdissect_options *ndo, u_int rewrite_len,es_type_bundle; const struct juniper_ipsec_header *ih; - ndo->ndo_protocol = "juniper_es_if"; + ndo->ndo_protocol = "juniper_es"; l2info.pictype = DLT_JUNIPER_ES; if (juniper_parse_header(ndo, p, h, &l2info) == 0) return l2info.header_len; @@ -576,8 +593,8 @@ juniper_es_if_print(netdissect_options *ndo, return l2info.header_len; trunc: - nd_print_trunc(ndo); - return l2info.header_len; + nd_print_trunc(ndo); + return l2info.header_len; } #endif @@ -595,7 +612,7 @@ juniper_monitor_if_print(netdissect_options *ndo, }; const struct juniper_monitor_header *mh; - ndo->ndo_protocol = "juniper_monitor_if"; + ndo->ndo_protocol = "juniper_monitor"; l2info.pictype = DLT_JUNIPER_MONITOR; if (juniper_parse_header(ndo, p, h, &l2info) == 0) return l2info.header_len; @@ -616,8 +633,8 @@ juniper_monitor_if_print(netdissect_options *ndo, return l2info.header_len; trunc: - nd_print_trunc(ndo); - return l2info.header_len; + nd_print_trunc(ndo); + return l2info.header_len; } #endif @@ -636,7 +653,7 @@ juniper_services_if_print(netdissect_options *ndo, }; const struct juniper_services_header *sh; - ndo->ndo_protocol = "juniper_services_if"; + ndo->ndo_protocol = "juniper_services"; l2info.pictype = DLT_JUNIPER_SERVICES; if (juniper_parse_header(ndo, p, h, &l2info) == 0) return l2info.header_len; @@ -658,8 +675,8 @@ juniper_services_if_print(netdissect_options *ndo, return l2info.header_len; trunc: - nd_print_trunc(ndo); - return l2info.header_len; + nd_print_trunc(ndo); + return l2info.header_len; } #endif @@ -670,7 +687,7 @@ juniper_pppoe_if_print(netdissect_options *ndo, { struct juniper_l2info_t l2info; - ndo->ndo_protocol = "juniper_pppoe_if"; + ndo->ndo_protocol = "juniper_pppoe"; l2info.pictype = DLT_JUNIPER_PPPOE; if (juniper_parse_header(ndo, p, h, &l2info) == 0) return l2info.header_len; @@ -689,7 +706,7 @@ juniper_ether_if_print(netdissect_options *ndo, { struct juniper_l2info_t l2info; - ndo->ndo_protocol = "juniper_ether_if"; + ndo->ndo_protocol = "juniper_ether"; l2info.pictype = DLT_JUNIPER_ETHER; if (juniper_parse_header(ndo, p, h, &l2info) == 0) return l2info.header_len; @@ -708,7 +725,7 @@ juniper_ppp_if_print(netdissect_options *ndo, { struct juniper_l2info_t l2info; - ndo->ndo_protocol = "juniper_ppp_if"; + ndo->ndo_protocol = "juniper_ppp"; l2info.pictype = DLT_JUNIPER_PPP; if (juniper_parse_header(ndo, p, h, &l2info) == 0) return l2info.header_len; @@ -727,7 +744,7 @@ juniper_frelay_if_print(netdissect_options *ndo, { struct juniper_l2info_t l2info; - ndo->ndo_protocol = "juniper_frelay_if"; + ndo->ndo_protocol = "juniper_frelay"; l2info.pictype = DLT_JUNIPER_FRELAY; if (juniper_parse_header(ndo, p, h, &l2info) == 0) return l2info.header_len; @@ -746,7 +763,7 @@ juniper_chdlc_if_print(netdissect_options *ndo, { struct juniper_l2info_t l2info; - ndo->ndo_protocol = "juniper_chdlc_if"; + ndo->ndo_protocol = "juniper_chdlc"; l2info.pictype = DLT_JUNIPER_CHDLC; if (juniper_parse_header(ndo, p, h, &l2info) == 0) return l2info.header_len; @@ -764,9 +781,9 @@ juniper_pppoe_atm_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h, const u_char *p) { struct juniper_l2info_t l2info; - uint16_t extracted_ethertype; + uint16_t extracted_ethertype; - ndo->ndo_protocol = "juniper_pppoe_atm_if"; + ndo->ndo_protocol = "juniper_pppoe_atm"; l2info.pictype = DLT_JUNIPER_PPPOE_ATM; if (juniper_parse_header(ndo, p, h, &l2info) == 0) return l2info.header_len; @@ -788,8 +805,8 @@ juniper_pppoe_atm_if_print(netdissect_options *ndo, return l2info.header_len; trunc: - nd_print_trunc(ndo); - return l2info.header_len; + nd_print_trunc(ndo); + return l2info.header_len; } #endif @@ -800,7 +817,7 @@ juniper_mlppp_if_print(netdissect_options *ndo, { struct juniper_l2info_t l2info; - ndo->ndo_protocol = "juniper_mlppp_if"; + ndo->ndo_protocol = "juniper_mlppp"; l2info.pictype = DLT_JUNIPER_MLPPP; if (juniper_parse_header(ndo, p, h, &l2info) == 0) return l2info.header_len; @@ -861,7 +878,7 @@ juniper_mfr_if_print(netdissect_options *ndo, { struct juniper_l2info_t l2info; - ndo->ndo_protocol = "juniper_mfr_if"; + ndo->ndo_protocol = "juniper_mfr"; memset(&l2info, 0, sizeof(l2info)); l2info.pictype = DLT_JUNIPER_MFR; if (juniper_parse_header(ndo, p, h, &l2info) == 0) @@ -924,7 +941,7 @@ juniper_mlfr_if_print(netdissect_options *ndo, { struct juniper_l2info_t l2info; - ndo->ndo_protocol = "juniper_mlfr_if"; + ndo->ndo_protocol = "juniper_mlfr"; l2info.pictype = DLT_JUNIPER_MLFR; if (juniper_parse_header(ndo, p, h, &l2info) == 0) return l2info.header_len; @@ -970,7 +987,7 @@ juniper_atm1_if_print(netdissect_options *ndo, struct juniper_l2info_t l2info; - ndo->ndo_protocol = "juniper_atm1_if"; + ndo->ndo_protocol = "juniper_atm1"; l2info.pictype = DLT_JUNIPER_ATM1; if (juniper_parse_header(ndo, p, h, &l2info) == 0) return l2info.header_len; @@ -1000,11 +1017,11 @@ juniper_atm1_if_print(netdissect_options *ndo, if (ip_heuristic_guess(ndo, p, l2info.length) != 0) /* last try - vcmux encaps ? */ return l2info.header_len; - return l2info.header_len; + return l2info.header_len; trunc: - nd_print_trunc(ndo); - return l2info.header_len; + nd_print_trunc(ndo); + return l2info.header_len; } #endif @@ -1025,7 +1042,7 @@ juniper_atm2_if_print(netdissect_options *ndo, struct juniper_l2info_t l2info; - ndo->ndo_protocol = "juniper_atm2_if"; + ndo->ndo_protocol = "juniper_atm2"; l2info.pictype = DLT_JUNIPER_ATM2; if (juniper_parse_header(ndo, p, h, &l2info) == 0) return l2info.header_len; @@ -1064,14 +1081,12 @@ juniper_atm2_if_print(netdissect_options *ndo, if (ip_heuristic_guess(ndo, p, l2info.length) != 0) /* last try - vcmux encaps ? */ return l2info.header_len; - return l2info.header_len; + return l2info.header_len; trunc: - nd_print_trunc(ndo); - return l2info.header_len; + 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, @@ -1119,8 +1135,8 @@ ip_heuristic_guess(netdissect_options *ndo, case 0x4d: case 0x4e: case 0x4f: - ip_print(ndo, p, length); - break; + ip_print(ndo, p, length); + break; case 0x60: case 0x61: case 0x62: @@ -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; @@ -1518,3 +1536,11 @@ trunc: nd_print_trunc(ndo); return 0; } +#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) */