xref: /openbmc/linux/include/net/seg6_local.h (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*2874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
21c1e761eSMathieu Xhonneux /*
31c1e761eSMathieu Xhonneux  *  SR-IPv6 implementation
41c1e761eSMathieu Xhonneux  *
51c1e761eSMathieu Xhonneux  *  Authors:
61c1e761eSMathieu Xhonneux  *  David Lebrun <david.lebrun@uclouvain.be>
71c1e761eSMathieu Xhonneux  *  eBPF support: Mathieu Xhonneux <m.xhonneux@gmail.com>
81c1e761eSMathieu Xhonneux  */
91c1e761eSMathieu Xhonneux 
101c1e761eSMathieu Xhonneux #ifndef _NET_SEG6_LOCAL_H
111c1e761eSMathieu Xhonneux #define _NET_SEG6_LOCAL_H
121c1e761eSMathieu Xhonneux 
13fe94cc29SMathieu Xhonneux #include <linux/percpu.h>
141c1e761eSMathieu Xhonneux #include <linux/net.h>
151c1e761eSMathieu Xhonneux #include <linux/ipv6.h>
161c1e761eSMathieu Xhonneux 
171c1e761eSMathieu Xhonneux extern int seg6_lookup_nexthop(struct sk_buff *skb, struct in6_addr *nhaddr,
181c1e761eSMathieu Xhonneux 			       u32 tbl_id);
19486cdf21SMathieu Xhonneux extern bool seg6_bpf_has_valid_srh(struct sk_buff *skb);
201c1e761eSMathieu Xhonneux 
21fe94cc29SMathieu Xhonneux struct seg6_bpf_srh_state {
22486cdf21SMathieu Xhonneux 	struct ipv6_sr_hdr *srh;
23fe94cc29SMathieu Xhonneux 	u16 hdrlen;
24486cdf21SMathieu Xhonneux 	bool valid;
25fe94cc29SMathieu Xhonneux };
26fe94cc29SMathieu Xhonneux 
27fe94cc29SMathieu Xhonneux DECLARE_PER_CPU(struct seg6_bpf_srh_state, seg6_bpf_srh_states);
28fe94cc29SMathieu Xhonneux 
291c1e761eSMathieu Xhonneux #endif
30