struct juniper_cookie_table_t {
uint32_t pictype; /* pic type */
- uint8_t cookie_len; /* cookie len */
+ uint8_t cookie_len; /* cookie len */
const char *s; /* pic name */
};
{ 0, NULL}
};
-static int ip_heuristic_guess(netdissect_options *, register const u_char *, u_int);
-static int juniper_ppp_heuristic_guess(netdissect_options *, register const u_char *, u_int);
+static int ip_heuristic_guess(netdissect_options *, const u_char *, u_int);
+static int juniper_ppp_heuristic_guess(netdissect_options *, 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
u_int
juniper_ggsn_if_print(netdissect_options *ndo,
- const struct pcap_pkthdr *h, register const u_char *p)
+ const struct pcap_pkthdr *h, const u_char *p)
{
struct juniper_l2info_t l2info;
struct juniper_ggsn_header {
- uint8_t svc_id;
- uint8_t flags_len;
- uint8_t proto;
- uint8_t flags;
- uint8_t vlan_id[2];
- uint8_t res[2];
+ nd_uint8_t svc_id;
+ nd_uint8_t flags_len;
+ nd_uint8_t proto;
+ nd_uint8_t flags;
+ nd_uint16_t vlan_id;
+ nd_byte res[2];
};
const struct juniper_ggsn_header *gh;
+ uint8_t proto;
l2info.pictype = DLT_JUNIPER_GGSN;
if (juniper_parse_header(ndo, p, h, &l2info) == 0)
gh = (struct juniper_ggsn_header *)&l2info.cookie;
ND_TCHECK(*gh);
+ proto = EXTRACT_U_1(gh->proto);
if (ndo->ndo_eflag) {
ND_PRINT((ndo, "proto %s (%u), vlan %u: ",
- tok2str(juniper_protocol_values,"Unknown",gh->proto),
- gh->proto,
- EXTRACT_BE_U_2(&gh->vlan_id[0])));
+ tok2str(juniper_protocol_values,"Unknown",proto),
+ proto,
+ EXTRACT_BE_U_2(gh->vlan_id)));
}
- switch (gh->proto) {
+ switch (proto) {
case JUNIPER_PROTO_IPV4:
ip_print(ndo, p, l2info.length);
break;
break;
default:
if (!ndo->ndo_eflag)
- ND_PRINT((ndo, "unknown GGSN proto (%u)", gh->proto));
+ ND_PRINT((ndo, "unknown GGSN proto (%u)", proto));
}
return l2info.header_len;
#ifdef DLT_JUNIPER_ES
u_int
juniper_es_if_print(netdissect_options *ndo,
- const struct pcap_pkthdr *h, register const u_char *p)
+ const struct pcap_pkthdr *h, const u_char *p)
{
struct juniper_l2info_t l2info;
struct juniper_ipsec_header {
- 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];
+ nd_uint16_t sa_index;
+ nd_uint8_t ttl;
+ nd_uint8_t type;
+ nd_uint32_t spi;
+ nd_ipv4 src_ip;
+ nd_ipv4 dst_ip;
};
u_int rewrite_len,es_type_bundle;
const struct juniper_ipsec_header *ih;
ih = (const struct juniper_ipsec_header *)p;
ND_TCHECK(*ih);
- switch (ih->type) {
+ switch (EXTRACT_U_1(ih->type)) {
case JUNIPER_IPSEC_O_ESP_ENCRYPT_ESP_AUTHEN_TYPE:
case JUNIPER_IPSEC_O_ESP_ENCRYPT_AH_AUTHEN_TYPE:
rewrite_len = 0;
break;
default:
ND_PRINT((ndo, "ES Invalid type %u, length %u",
- ih->type,
+ EXTRACT_U_1(ih->type),
l2info.length));
return l2info.header_len;
}
if (ndo->ndo_eflag) {
if (!es_type_bundle) {
ND_PRINT((ndo, "ES SA, index %u, ttl %u type %s (%u), spi %u, Tunnel %s > %s, length %u\n",
- EXTRACT_BE_U_2(&ih->sa_index),
- ih->ttl,
- tok2str(juniper_ipsec_type_values,"Unknown",ih->type),
- ih->type,
- EXTRACT_BE_U_4(&ih->spi),
+ EXTRACT_BE_U_2(ih->sa_index),
+ EXTRACT_U_1(ih->ttl),
+ tok2str(juniper_ipsec_type_values,"Unknown",EXTRACT_U_1(ih->type)),
+ EXTRACT_U_1(ih->type),
+ EXTRACT_BE_U_4(ih->spi),
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",
- EXTRACT_BE_U_2(&ih->sa_index),
- ih->ttl,
- tok2str(juniper_ipsec_type_values,"Unknown",ih->type),
- ih->type,
+ EXTRACT_BE_U_2(ih->sa_index),
+ EXTRACT_U_1(ih->ttl),
+ tok2str(juniper_ipsec_type_values,"Unknown",EXTRACT_U_1(ih->type)),
+ EXTRACT_U_1(ih->type),
l2info.length));
}
}
#ifdef DLT_JUNIPER_MONITOR
u_int
juniper_monitor_if_print(netdissect_options *ndo,
- const struct pcap_pkthdr *h, register const u_char *p)
+ const struct pcap_pkthdr *h, const u_char *p)
{
struct juniper_l2info_t l2info;
struct juniper_monitor_header {
- uint8_t pkt_type;
- uint8_t padding;
- uint8_t iif[2];
- uint8_t service_id[4];
+ nd_uint8_t pkt_type;
+ nd_byte padding;
+ nd_uint16_t iif;
+ nd_uint32_t service_id;
};
const struct juniper_monitor_header *mh;
ND_TCHECK(*mh);
if (ndo->ndo_eflag)
ND_PRINT((ndo, "service-id %u, iif %u, pkt-type %u: ",
- EXTRACT_BE_U_4(&mh->service_id),
- EXTRACT_BE_U_2(&mh->iif),
- mh->pkt_type));
+ EXTRACT_BE_U_4(mh->service_id),
+ EXTRACT_BE_U_2(mh->iif),
+ EXTRACT_U_1(mh->pkt_type)));
/* no proto field - lets guess by first byte of IP header*/
ip_heuristic_guess (ndo, p, l2info.length);
#ifdef DLT_JUNIPER_SERVICES
u_int
juniper_services_if_print(netdissect_options *ndo,
- const struct pcap_pkthdr *h, register const u_char *p)
+ const struct pcap_pkthdr *h, const u_char *p)
{
struct juniper_l2info_t l2info;
struct juniper_services_header {
- uint8_t svc_id;
- uint8_t flags_len;
- uint8_t svc_set_id[2];
- uint8_t dir_iif[4];
+ nd_uint8_t svc_id;
+ nd_uint8_t flags_len;
+ nd_uint16_t svc_set_id;
+ nd_byte pad;
+ nd_uint24_t dir_iif;
};
const struct juniper_services_header *sh;
ND_TCHECK(*sh);
if (ndo->ndo_eflag)
ND_PRINT((ndo, "service-id %u flags 0x%02x service-set-id 0x%04x iif %u: ",
- sh->svc_id,
- sh->flags_len,
- EXTRACT_BE_U_2(&sh->svc_set_id),
- EXTRACT_BE_U_3(&sh->dir_iif[1])));
+ EXTRACT_U_1(sh->svc_id),
+ EXTRACT_U_1(sh->flags_len),
+ EXTRACT_BE_U_2(sh->svc_set_id),
+ EXTRACT_BE_U_3(sh->dir_iif)));
/* no proto field - lets guess by first byte of IP header*/
ip_heuristic_guess (ndo, p, l2info.length);
#ifdef DLT_JUNIPER_PPPOE
u_int
juniper_pppoe_if_print(netdissect_options *ndo,
- const struct pcap_pkthdr *h, register const u_char *p)
+ const struct pcap_pkthdr *h, const u_char *p)
{
struct juniper_l2info_t l2info;
#ifdef DLT_JUNIPER_ETHER
u_int
juniper_ether_if_print(netdissect_options *ndo,
- const struct pcap_pkthdr *h, register const u_char *p)
+ const struct pcap_pkthdr *h, const u_char *p)
{
struct juniper_l2info_t l2info;
#ifdef DLT_JUNIPER_PPP
u_int
juniper_ppp_if_print(netdissect_options *ndo,
- const struct pcap_pkthdr *h, register const u_char *p)
+ const struct pcap_pkthdr *h, const u_char *p)
{
struct juniper_l2info_t l2info;
#ifdef DLT_JUNIPER_FRELAY
u_int
juniper_frelay_if_print(netdissect_options *ndo,
- const struct pcap_pkthdr *h, register const u_char *p)
+ const struct pcap_pkthdr *h, const u_char *p)
{
struct juniper_l2info_t l2info;
#ifdef DLT_JUNIPER_CHDLC
u_int
juniper_chdlc_if_print(netdissect_options *ndo,
- const struct pcap_pkthdr *h, register const u_char *p)
+ const struct pcap_pkthdr *h, const u_char *p)
{
struct juniper_l2info_t l2info;
#ifdef DLT_JUNIPER_PPPOE_ATM
u_int
juniper_pppoe_atm_if_print(netdissect_options *ndo,
- const struct pcap_pkthdr *h, register const u_char *p)
+ const struct pcap_pkthdr *h, const u_char *p)
{
struct juniper_l2info_t l2info;
uint16_t extracted_ethertype;
#ifdef DLT_JUNIPER_MLPPP
u_int
juniper_mlppp_if_print(netdissect_options *ndo,
- const struct pcap_pkthdr *h, register const u_char *p)
+ const struct pcap_pkthdr *h, const u_char *p)
{
struct juniper_l2info_t l2info;
#ifdef DLT_JUNIPER_MFR
u_int
juniper_mfr_if_print(netdissect_options *ndo,
- const struct pcap_pkthdr *h, register const u_char *p)
+ const struct pcap_pkthdr *h, const u_char *p)
{
struct juniper_l2info_t l2info;
#ifdef DLT_JUNIPER_MLFR
u_int
juniper_mlfr_if_print(netdissect_options *ndo,
- const struct pcap_pkthdr *h, register const u_char *p)
+ const struct pcap_pkthdr *h, const u_char *p)
{
struct juniper_l2info_t l2info;
#ifdef DLT_JUNIPER_ATM1
u_int
juniper_atm1_if_print(netdissect_options *ndo,
- const struct pcap_pkthdr *h, register const u_char *p)
+ const struct pcap_pkthdr *h, const u_char *p)
{
int llc_hdrlen;
#ifdef DLT_JUNIPER_ATM2
u_int
juniper_atm2_if_print(netdissect_options *ndo,
- const struct pcap_pkthdr *h, register const u_char *p)
+ const struct pcap_pkthdr *h, const u_char *p)
{
int llc_hdrlen;
* a juniper router if the payload data is encapsulated using PPP */
static int
juniper_ppp_heuristic_guess(netdissect_options *ndo,
- register const u_char *p, u_int length)
+ const u_char *p, u_int length)
{
switch(EXTRACT_BE_U_2(p)) {
case PPP_IP :
static int
ip_heuristic_guess(netdissect_options *ndo,
- register const u_char *p, u_int length)
+ const u_char *p, u_int length)
{
switch(EXTRACT_U_1(p)) {
case 0x45:
if (tlv_type < 128) {
switch (tlv_len) {
case 1:
- tlv_value = *p;
+ tlv_value = EXTRACT_U_1(p);
break;
case 2:
tlv_value = EXTRACT_LE_U_2(p);
/* TLVs >= 128 are big endian encoded */
switch (tlv_len) {
case 1:
- tlv_value = *p;
+ tlv_value = EXTRACT_U_1(p);
break;
case 2:
tlv_value = EXTRACT_BE_U_2(p);
l2info->length = h->len;
l2info->caplen = h->caplen;
ND_TCHECK_4(p);
- l2info->flags = p[3];
- l2info->direction = p[3]&JUNIPER_BPF_PKT_IN;
+ l2info->flags = EXTRACT_U_1(p + 3);
+ l2info->direction = EXTRACT_U_1(p + 3) & JUNIPER_BPF_PKT_IN;
if (EXTRACT_BE_U_3(p) != JUNIPER_MGC_NUMBER) { /* magic number found ? */
ND_PRINT((ndo, "no magic-number found!"));
if (ndo->ndo_vflag > 1)
ND_PRINT((ndo, ", PCAP Extension(s) total length %u", jnx_ext_len));
- ND_TCHECK2(tptr[0], jnx_ext_len);
+ ND_TCHECK_LEN(tptr, jnx_ext_len);
while (jnx_ext_len > JUNIPER_EXT_TLV_OVERHEAD) {
tlv_type = EXTRACT_U_1(tptr);
tptr++;
l2info->caplen -= l2info->header_len;
/* search through the cookie table and copy values matching for our PIC type */
- ND_TCHECK(p[0]);
+ ND_TCHECK_1(p);
while (lp->s != NULL) {
if (lp->pictype == l2info->pictype) {
l2info->cookie_len));
if (l2info->cookie_len > 0) {
- ND_TCHECK2(p[0], l2info->cookie_len);
+ ND_TCHECK_LEN(p, l2info->cookie_len);
if (ndo->ndo_eflag)
ND_PRINT((ndo, ", cookie 0x"));
for (idx = 0; idx < l2info->cookie_len; idx++) {
- l2info->cookie[idx] = p[idx]; /* copy cookie data */
+ l2info->cookie[idx] = EXTRACT_U_1(p + idx); /* copy cookie data */
if (ndo->ndo_eflag) ND_PRINT((ndo, "%02x", EXTRACT_U_1(p + idx)));
}
}