18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * SR-IPv6 implementation 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Authors: 68c2ecf20Sopenharmony_ci * David Lebrun <david.lebrun@uclouvain.be> 78c2ecf20Sopenharmony_ci * eBPF support: Mathieu Xhonneux <m.xhonneux@gmail.com> 88c2ecf20Sopenharmony_ci */ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#ifndef _NET_SEG6_LOCAL_H 118c2ecf20Sopenharmony_ci#define _NET_SEG6_LOCAL_H 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#include <linux/percpu.h> 148c2ecf20Sopenharmony_ci#include <linux/net.h> 158c2ecf20Sopenharmony_ci#include <linux/ipv6.h> 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ciextern int seg6_lookup_nexthop(struct sk_buff *skb, struct in6_addr *nhaddr, 188c2ecf20Sopenharmony_ci u32 tbl_id); 198c2ecf20Sopenharmony_ciextern bool seg6_bpf_has_valid_srh(struct sk_buff *skb); 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_cistruct seg6_bpf_srh_state { 228c2ecf20Sopenharmony_ci struct ipv6_sr_hdr *srh; 238c2ecf20Sopenharmony_ci u16 hdrlen; 248c2ecf20Sopenharmony_ci bool valid; 258c2ecf20Sopenharmony_ci}; 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ciDECLARE_PER_CPU(struct seg6_bpf_srh_state, seg6_bpf_srh_states); 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci#endif 30