Current-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: npf bug(?)
On Apr 3, 7:49am, 6bone%6bone.informatik.uni-leipzig.de@localhost (6bone%6bone.informatik.uni-leipzig.de@localhost) wrote:
-- Subject: Re: npf bug(?)
| On Sun, 2 Apr 2017, Christos Zoulas wrote:
|
| >
| > I am trying to understand the use case here:
| > 1. you want to have V4 DNS and 6to4 service that can generate V4 fragments
| > 2. you want V4 fragments dropped.
| > 3. you can't put V4 rules in your firewall to restrict traffic to only
| > those services.
| >
| > Is that correct?
|
| That is not completely right. I want to filter IPv6 with npf. IPv4 should
| not be filtered. After the activation of npf the statistics shows:
|
| Fragmentation:
| 1296 fragments
| 1104 reassembled
| 7160 failed reassembly
|
| Since IPv6 is no longer reassambling, it must be IPv4 packets. I want to
| make sure that the reassembly errors do not lead to packet losses,
| especially at 6to4.
Here's a rough patch that kills v4 processing.
christos
Index: npf.h
===================================================================
RCS file: /cvsroot/src/sys/net/npf/npf.h,v
retrieving revision 1.54
diff -u -u -r1.54 npf.h
--- npf.h 29 Jan 2017 00:15:54 -0000 1.54
+++ npf.h 3 Apr 2017 15:08:08 -0000
@@ -142,6 +142,7 @@
#define NPC_ICMP_ID 0x80 /* ICMP with query ID. */
#define NPC_ALG_EXEC 0x100 /* ALG execution. */
+#define NPC_IGNORE 0x200 /* Don't process */
#define NPC_IP46 (NPC_IP4|NPC_IP6)
Index: npf_handler.c
===================================================================
RCS file: /cvsroot/src/sys/net/npf/npf_handler.c,v
retrieving revision 1.37
diff -u -u -r1.37 npf_handler.c
--- npf_handler.c 19 Feb 2017 20:27:22 -0000 1.37
+++ npf_handler.c 3 Apr 2017 15:08:08 -0000
@@ -156,6 +156,10 @@
/* Cache everything. Determine whether it is an IP fragment. */
flags = npf_cache_all(&npc);
+
+ if (__predict_false(flags & NPC_IGNORE))
+ return 0;
+
if (__predict_false(flags & NPC_IPFRAG)) {
/*
* We pass IPv6 fragments unconditionally
Index: npf_inet.c
===================================================================
RCS file: /cvsroot/src/sys/net/npf/npf_inet.c,v
retrieving revision 1.37
diff -u -u -r1.37 npf_inet.c
--- npf_inet.c 19 Feb 2017 20:27:22 -0000 1.37
+++ npf_inet.c 3 Apr 2017 15:08:08 -0000
@@ -324,6 +324,7 @@
switch (ver >> 4) {
case IPVERSION: {
+#if 0
struct ip *ip;
ip = nbuf_ensure_contig(nbuf, sizeof(struct ip));
@@ -349,6 +350,9 @@
npc->npc_ip.v4 = ip;
flags |= NPC_IP4;
+#else
+ flags |= NPC_IGNORE;
+#endif
break;
}
Home |
Main Index |
Thread Index |
Old Index