summaryrefslogtreecommitdiffstats
path: root/sys/netpfil
diff options
context:
space:
mode:
authorphilip <philip@FreeBSD.org>2013-09-28 15:49:36 +0000
committerphilip <philip@FreeBSD.org>2013-09-28 15:49:36 +0000
commiteb3631100bf76c92971c7d24886264812747a789 (patch)
treedfeb35be8af1476e04cd4bb7bcda05039840c74f /sys/netpfil
parente112eec6740938d02c6e7edf9c4f4dba3282eacd (diff)
downloadFreeBSD-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.c11
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;
OpenPOWER on IntegriCloud