^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * SR-IPv6 implementation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Authors:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * David Lebrun <david.lebrun@uclouvain.be>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * eBPF support: Mathieu Xhonneux <m.xhonneux@gmail.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #ifndef _NET_SEG6_LOCAL_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #define _NET_SEG6_LOCAL_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #include <linux/percpu.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #include <linux/net.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #include <linux/ipv6.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) extern int seg6_lookup_nexthop(struct sk_buff *skb, struct in6_addr *nhaddr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) u32 tbl_id);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) extern bool seg6_bpf_has_valid_srh(struct sk_buff *skb);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) struct seg6_bpf_srh_state {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) struct ipv6_sr_hdr *srh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) u16 hdrlen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) bool valid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) DECLARE_PER_CPU(struct seg6_bpf_srh_state, seg6_bpf_srh_states);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #endif