From eb3631100bf76c92971c7d24886264812747a789 Mon Sep 17 00:00:00 2001 From: philip Date: Sat, 28 Sep 2013 15:49:36 +0000 Subject: Use the correct EtherType for logging IPv6 packets. Reviewed by: melifaro Approved by: re (kib, glebius) MFC after: 3 days --- sys/netpfil/ipfw/ip_fw_log.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'sys/netpfil') diff --git a/sys/netpfil/ipfw/ip_fw_log.c b/sys/netpfil/ipfw/ip_fw_log.c index 0eb918b..b1e6dff 100644 --- a/sys/netpfil/ipfw/ip_fw_log.c +++ b/sys/netpfil/ipfw/ip_fw_log.c @@ -255,11 +255,18 @@ ipfw_log(struct ip_fw *f, u_int hlen, struct ip_fw_args *args, if (args->eh) /* layer2, use orig hdr */ BPF_MTAP2(log_if, args->eh, ETHER_HDR_LEN, m); - else + else { /* Add fake header. Later we will store * more info in the header. */ - BPF_MTAP2(log_if, "DDDDDDSSSSSS\x08\x00", ETHER_HDR_LEN, m); + if (ip->ip_v == 4) + BPF_MTAP2(log_if, "DDDDDDSSSSSS\x08\x00", ETHER_HDR_LEN, m); + else if (ip->ip_v == 6) + BPF_MTAP2(log_if, "DDDDDDSSSSSS\x86\xdd", ETHER_HDR_LEN, m); + else + /* Obviously bogus EtherType. */ + BPF_MTAP2(log_if, "DDDDDDSSSSSS\xff\xff", ETHER_HDR_LEN, m); + } LOGIF_RUNLOCK(); #endif /* !WITHOUT_BPF */ return; -- cgit v1.1