diff options
author | philip <philip@FreeBSD.org> | 2013-09-28 15:49:36 +0000 |
---|---|---|
committer | philip <philip@FreeBSD.org> | 2013-09-28 15:49:36 +0000 |
commit | eb3631100bf76c92971c7d24886264812747a789 (patch) | |
tree | dfeb35be8af1476e04cd4bb7bcda05039840c74f /sys/netpfil | |
parent | e112eec6740938d02c6e7edf9c4f4dba3282eacd (diff) | |
download | FreeBSD-src-eb3631100bf76c92971c7d24886264812747a789.zip FreeBSD-src-eb3631100bf76c92971c7d24886264812747a789.tar.gz |
Use the correct EtherType for logging IPv6 packets.
Reviewed by: melifaro
Approved by: re (kib, glebius)
MFC after: 3 days
Diffstat (limited to 'sys/netpfil')
-rw-r--r-- | sys/netpfil/ipfw/ip_fw_log.c | 11 |
1 files changed, 9 insertions, 2 deletions
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; |