sample: bpf: xdp_router_ipv4: Allow the kernel to send arp requests
authorLorenzo Bianconi <lorenzo@kernel.org>
Wed, 25 May 2022 09:44:27 +0000 (11:44 +0200)
committerAndrii Nakryiko <andrii@kernel.org>
Thu, 2 Jun 2022 23:26:54 +0000 (16:26 -0700)
Forward the packet to the kernel if the gw router mac address is missing
in to trigger ARP discovery.

Fixes: 85bf1f51691c ("samples: bpf: Convert xdp_router_ipv4 to XDP samples helper")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/60bde5496d108089080504f58199bcf1143ea938.1653471558.git.lorenzo@kernel.org
samples/bpf/xdp_router_ipv4.bpf.c

index 248119c..0643330 100644 (file)
@@ -150,6 +150,15 @@ int xdp_router_ipv4_prog(struct xdp_md *ctx)
 
                                dest_mac = bpf_map_lookup_elem(&arp_table,
                                                               &prefix_value->gw);
+                               if (!dest_mac) {
+                                       /* Forward the packet to the kernel in
+                                        * order to trigger ARP discovery for
+                                        * the default gw.
+                                        */
+                                       if (rec)
+                                               NO_TEAR_INC(rec->xdp_pass);
+                                       return XDP_PASS;
+                               }
                        }
                }