diff mbox series

[ovs-dev,RFC,PATCHv2,13/13] xdp: early drop ipv6 packet.

Message ID 1531568345-80246-14-git-send-email-u9012063@gmail.com
State RFC
Headers show
Series OVS eBPF datapath. | expand

Commit Message

William Tu July 14, 2018, 11:39 a.m. UTC
If not using ipv6, drop it in XDP.

Signed-off-by: William Tu <u9012063@gmail.com>
---
 bpf/xdp.h | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
diff mbox series

Patch

diff --git a/bpf/xdp.h b/bpf/xdp.h
index 2d2102a6ba28..e71b268370c6 100644
--- a/bpf/xdp.h
+++ b/bpf/xdp.h
@@ -23,8 +23,26 @@  __section("xdp")
 static int xdp_ingress(struct xdp_md *ctx OVS_UNUSED)
 {
     /* TODO: see p4c-xdp project */
+#ifdef BPF_ENABLE_IPV6
     printt("return XDP_PASS\n");
     return XDP_PASS;
+#else
+    /* Early drop ipv6 */
+    void *data_end = (void *)(long)ctx->data_end;
+    void *data = (void *)(long)ctx->data;
+    struct ethhdr *eth = data;
+    __u16 h_proto;
+
+    if ((char *)eth + 14 > (char *)data_end)
+        return XDP_DROP;
+
+    h_proto = eth->h_proto;
+
+    if (h_proto == bpf_htons(ETH_P_IPV6)) {
+        printt("drop ipv6\n");
+        return XDP_DROP;
+    }
+#endif
 }
 
 __section("af_xdp")