};
struct juniper_cookie_table_t {
- u_int32_t pictype; /* pic type */
- u_int8_t cookie_len; /* cookie len */
+ uint32_t pictype; /* pic type */
+ uint8_t cookie_len; /* cookie len */
const char *s; /* pic name */
};
};
struct juniper_l2info_t {
- u_int32_t length;
- u_int32_t caplen;
- u_int32_t pictype;
- u_int8_t direction;
- u_int8_t header_len;
- u_int8_t cookie_len;
- u_int8_t cookie_type;
- u_int8_t cookie[8];
- u_int8_t bundle;
- u_int16_t proto;
- u_int8_t flags;
+ uint32_t length;
+ uint32_t caplen;
+ uint32_t pictype;
+ uint8_t direction;
+ uint8_t header_len;
+ uint8_t cookie_len;
+ uint8_t cookie_type;
+ uint8_t cookie[8];
+ uint8_t bundle;
+ uint16_t proto;
+ uint8_t flags;
};
#define LS_COOKIE_ID 0x54
};
static int ip_heuristic_guess(netdissect_options *, register const u_char *, u_int);
-static int juniper_ppp_heuristic_guess(register const u_char *, u_int);
+static int juniper_ppp_heuristic_guess(netdissect_options *, register const u_char *, u_int);
static int juniper_parse_header(netdissect_options *, const u_char *, const struct pcap_pkthdr *, struct juniper_l2info_t *);
#ifdef DLT_JUNIPER_GGSN
{
struct juniper_l2info_t l2info;
struct juniper_ggsn_header {
- u_int8_t svc_id;
- u_int8_t flags_len;
- u_int8_t proto;
- u_int8_t flags;
- u_int8_t vlan_id[2];
- u_int8_t res[2];
+ uint8_t svc_id;
+ uint8_t flags_len;
+ uint8_t proto;
+ uint8_t flags;
+ uint8_t vlan_id[2];
+ uint8_t res[2];
};
const struct juniper_ggsn_header *gh;
case JUNIPER_PROTO_IPV4:
ip_print(ndo, p, l2info.length);
break;
-#ifdef INET6
case JUNIPER_PROTO_IPV6:
ip6_print(ndo, p, l2info.length);
break;
-#endif /* INET6 */
default:
if (!ndo->ndo_eflag)
ND_PRINT((ndo, "unknown GGSN proto (%u)", gh->proto));
{
struct juniper_l2info_t l2info;
struct juniper_ipsec_header {
- u_int8_t sa_index[2];
- u_int8_t ttl;
- u_int8_t type;
- u_int8_t spi[4];
- u_int8_t src_ip[4];
- u_int8_t dst_ip[4];
+ uint8_t sa_index[2];
+ uint8_t ttl;
+ uint8_t type;
+ uint8_t spi[4];
+ uint8_t src_ip[4];
+ uint8_t dst_ip[4];
};
u_int rewrite_len,es_type_bundle;
const struct juniper_ipsec_header *ih;
tok2str(juniper_ipsec_type_values,"Unknown",ih->type),
ih->type,
EXTRACT_32BITS(&ih->spi),
- ipaddr_string(&ih->src_ip),
- ipaddr_string(&ih->dst_ip),
+ ipaddr_string(ndo, &ih->src_ip),
+ ipaddr_string(ndo, &ih->dst_ip),
l2info.length));
} else {
ND_PRINT((ndo, "ES SA, index %u, ttl %u type %s (%u), length %u\n",
{
struct juniper_l2info_t l2info;
struct juniper_monitor_header {
- u_int8_t pkt_type;
- u_int8_t padding;
- u_int8_t iif[2];
- u_int8_t service_id[4];
+ uint8_t pkt_type;
+ uint8_t padding;
+ uint8_t iif[2];
+ uint8_t service_id[4];
};
const struct juniper_monitor_header *mh;
{
struct juniper_l2info_t l2info;
struct juniper_services_header {
- u_int8_t svc_id;
- u_int8_t flags_len;
- u_int8_t svc_set_id[2];
- u_int8_t dir_iif[4];
+ uint8_t svc_id;
+ uint8_t flags_len;
+ uint8_t svc_set_id[2];
+ uint8_t dir_iif[4];
};
const struct juniper_services_header *sh;
p+=l2info.header_len;
/* this DLT contains nothing but raw ppp frames */
- ppp_print(p, l2info.length);
+ ppp_print(ndo, p, l2info.length);
return l2info.header_len;
}
#endif
const struct pcap_pkthdr *h, register const u_char *p)
{
struct juniper_l2info_t l2info;
- u_int16_t extracted_ethertype;
+ uint16_t extracted_ethertype;
l2info.pictype = DLT_JUNIPER_PPPOE_ATM;
if (juniper_parse_header(ndo, p, h, &l2info) == 0)
* -> this must be incoming IS-IS over PPP
*/
if (l2info.cookie[4] == (JUNIPER_LSQ_COOKIE_RE|JUNIPER_LSQ_COOKIE_DIR))
- ppp_print(p, l2info.length);
+ ppp_print(ndo, p, l2info.length);
else
ip_print(ndo, p, l2info.length);
return l2info.header_len;
-#ifdef INET6
case JUNIPER_LSQ_L3_PROTO_IPV6:
ip6_print(ndo, p,l2info.length);
return l2info.header_len;
-#endif
case JUNIPER_LSQ_L3_PROTO_MPLS:
mpls_print(ndo, p, l2info.length);
return l2info.header_len;
/* zero length cookie ? */
switch (EXTRACT_16BITS(&l2info.cookie)) {
case PPP_OSI:
- ppp_print(p-2,l2info.length+2);
+ ppp_print(ndo, p - 2, l2info.length + 2);
break;
case (PPP_ADDRESS << 8 | PPP_CONTROL): /* fall through */
default:
- ppp_print(p,l2info.length);
+ ppp_print(ndo, p, l2info.length);
break;
}
case JUNIPER_LSQ_L3_PROTO_IPV4:
ip_print(ndo, p, l2info.length);
return l2info.header_len;
-#ifdef INET6
case JUNIPER_LSQ_L3_PROTO_IPV6:
ip6_print(ndo, p,l2info.length);
return l2info.header_len;
-#endif
case JUNIPER_LSQ_L3_PROTO_MPLS:
mpls_print(ndo, p, l2info.length);
return l2info.header_len;
juniper_atm1_print(netdissect_options *ndo,
const struct pcap_pkthdr *h, register const u_char *p)
{
- u_int16_t extracted_ethertype;
+ uint16_t extracted_ethertype;
struct juniper_l2info_t l2info;
juniper_atm2_print(netdissect_options *ndo,
const struct pcap_pkthdr *h, register const u_char *p)
{
- u_int16_t extracted_ethertype;
+ uint16_t extracted_ethertype;
struct juniper_l2info_t l2info;
return l2info.header_len;
}
- if(juniper_ppp_heuristic_guess(p, l2info.length) != 0) /* PPPoA vcmux encaps ? */
+ if(juniper_ppp_heuristic_guess(ndo, p, l2info.length) != 0) /* PPPoA vcmux encaps ? */
return l2info.header_len;
if (ip_heuristic_guess(ndo, p, l2info.length) != 0) /* last try - vcmux encaps ? */
/* try to guess, based on all PPP protos that are supported in
* a juniper router if the payload data is encapsulated using PPP */
static int
-juniper_ppp_heuristic_guess(register const u_char *p, u_int length) {
+juniper_ppp_heuristic_guess(netdissect_options *ndo,
+ register const u_char *p, u_int length) {
switch(EXTRACT_16BITS(p)) {
case PPP_IP :
case PPP_IPV6 :
case PPP_IPV6CP :
#endif
- ppp_print(p, length);
+ ppp_print(ndo, p, length);
break;
default:
case 0x4f:
ip_print(ndo, p, length);
break;
-#ifdef INET6
case 0x60:
case 0x61:
case 0x62:
case 0x6f:
ip6_print(ndo, p, length);
break;
-#endif
default:
return 0; /* did not find a ip header */
break;
const struct juniper_cookie_table_t *lp = juniper_cookie_table;
u_int idx, jnx_ext_len, jnx_header_len = 0;
- u_int8_t tlv_type,tlv_len;
- u_int32_t control_word;
+ uint8_t tlv_type,tlv_len;
+ uint32_t control_word;
int tlv_value;
const u_char *tptr;