/* Defines BPF extensions for Npcap */
#include <npcap-bpf.h>
#endif
- #ifdef INET6
#if defined(__MINGW32__) && defined(DEFINE_ADDITIONAL_IPV6_STUFF)
/* IPv6 address */
struct in6_addr
};
#endif /* EAI_ADDRFAMILY */
#endif /* defined(__MINGW32__) && defined(DEFINE_ADDITIONAL_IPV6_STUFF) */
- #endif /* INET6 */
#else /* _WIN32 */
#include <netdb.h> /* for "struct addrinfo" */
#endif /* _WIN32 */
static struct block *gen_llc_linktype(compiler_state_t *, bpf_u_int32);
static struct block *gen_hostop(compiler_state_t *, bpf_u_int32, bpf_u_int32,
int, u_int, u_int);
-#ifdef INET6
static struct block *gen_hostop6(compiler_state_t *, struct in6_addr *,
struct in6_addr *, int, u_int, u_int);
-#endif
static struct block *gen_ahostop(compiler_state_t *, const uint8_t, int);
static struct block *gen_wlanhostop(compiler_state_t *, const u_char *, int);
static unsigned char is_mac48_linktype(const int);
static struct block *gen_mpls_linktype(compiler_state_t *, bpf_u_int32);
static struct block *gen_host(compiler_state_t *, bpf_u_int32, bpf_u_int32,
int, int, int);
-#ifdef INET6
static struct block *gen_host6(compiler_state_t *, struct in6_addr *,
struct in6_addr *, int, int, int);
-#endif
static struct block *gen_gateway(compiler_state_t *, const u_char *,
struct addrinfo *, int);
static struct block *gen_ip_proto(compiler_state_t *, const uint8_t);
return gen_mcmp(cstate, OR_LINKPL, offset, BPF_W, addr, mask);
}
-#ifdef INET6
static struct block *
gen_hostop6(compiler_state_t *cstate, struct in6_addr *addr,
struct in6_addr *mask, int dir, u_int src_off, u_int dst_off)
}
return b1 ? b1 : gen_true(cstate);
}
-#endif
/*
* Like gen_mac48host(), but for DLT_IEEE802_11 (802.11 wireless LAN) and
/*NOTREACHED*/
}
-#ifdef INET6
static struct block *
gen_host6(compiler_state_t *cstate, struct in6_addr *addr,
struct in6_addr *mask, int proto, int dir, int type)
type == Q_NET ? "ip6 net" : "ip6 host");
/*NOTREACHED*/
}
-#endif
static unsigned char
is_mac48_linktype(const int linktype)
struct addrinfo hints, *res, *ai;
int error;
struct sockaddr_in *in4;
-#ifdef INET6
struct sockaddr_in6 *in6;
-#endif
int port = -1;
/*
port = ntohs(in4->sin_port);
break;
}
-#ifdef INET6
if (ai->ai_addr->sa_family == AF_INET6) {
in6 = (struct sockaddr_in6 *)ai->ai_addr;
port = ntohs(in6->sin6_port);
break;
}
-#endif
}
}
freeaddrinfo(res);
bpf_u_int32 mask, addr;
struct addrinfo *res, *res0;
struct sockaddr_in *sin4;
-#ifdef INET6
int tproto6;
struct sockaddr_in6 *sin6;
struct in6_addr mask128;
-#endif /*INET6*/
struct block *b, *tmp;
int port, real_proto;
bpf_u_int32 port1, port2;
*/
bpf_error(cstate, "invalid DECnet address '%s'", name);
} else {
-#ifdef INET6
memset(&mask128, 0xff, sizeof(mask128));
-#endif
res0 = res = pcap_nametoaddrinfo(name);
if (res == NULL)
bpf_error(cstate, "unknown host '%s'", name);
cstate->ai = res;
b = tmp = NULL;
tproto = proto;
-#ifdef INET6
tproto6 = proto;
-#endif
if (cstate->off_linktype.constant_part == OFFSET_NOT_SET &&
tproto == Q_DEFAULT) {
tproto = Q_IP;
-#ifdef INET6
tproto6 = Q_IPV6;
-#endif
}
for (res = res0; res; res = res->ai_next) {
switch (res->ai_family) {
case AF_INET:
-#ifdef INET6
if (tproto == Q_IPV6)
continue;
-#endif
sin4 = (struct sockaddr_in *)
res->ai_addr;
tmp = gen_host(cstate, ntohl(sin4->sin_addr.s_addr),
0xffffffff, tproto, dir, q.addr);
break;
-#ifdef INET6
case AF_INET6:
if (tproto6 == Q_IP)
continue;
tmp = gen_host6(cstate, &sin6->sin6_addr,
&mask128, tproto6, dir, q.addr);
break;
-#endif
default:
continue;
}
/*NOTREACHED*/
}
-#ifdef INET6
struct block *
gen_mcode6(compiler_state_t *cstate, const char *s, bpf_u_int32 masklen,
struct qual q)
/*NOTREACHED*/
}
}
-#endif /*INET6*/
struct block *
gen_ecode(compiler_state_t *cstate, const char *s, struct qual q)