1 /* SPDX-License-Identifier: GPL-2.0 */
6 #include <linux/netdevice.h>
7 #include <linux/skbuff.h>
10 #include <net/neighbour.h>
13 /* structs from net/ip6_fib.h */
19 /* This is ugly, ideally these symbols should be built
20 * into the core kernel.
23 int (*ipv6_sock_mc_join
)(struct sock
*sk
, int ifindex
,
24 const struct in6_addr
*addr
);
25 int (*ipv6_sock_mc_drop
)(struct sock
*sk
, int ifindex
,
26 const struct in6_addr
*addr
);
27 int (*ipv6_dst_lookup
)(struct net
*net
, struct sock
*sk
,
28 struct dst_entry
**dst
, struct flowi6
*fl6
);
29 int (*ipv6_route_input
)(struct sk_buff
*skb
);
31 struct fib6_table
*(*fib6_get_table
)(struct net
*net
, u32 id
);
32 int (*fib6_lookup
)(struct net
*net
, int oif
, struct flowi6
*fl6
,
33 struct fib6_result
*res
, int flags
);
34 int (*fib6_table_lookup
)(struct net
*net
, struct fib6_table
*table
,
35 int oif
, struct flowi6
*fl6
,
36 struct fib6_result
*res
, int flags
);
37 void (*fib6_select_path
)(const struct net
*net
, struct fib6_result
*res
,
38 struct flowi6
*fl6
, int oif
, bool oif_match
,
39 const struct sk_buff
*skb
, int strict
);
40 u32 (*ip6_mtu_from_fib6
)(const struct fib6_result
*res
,
41 const struct in6_addr
*daddr
,
42 const struct in6_addr
*saddr
);
44 int (*fib6_nh_init
)(struct net
*net
, struct fib6_nh
*fib6_nh
,
45 struct fib6_config
*cfg
, gfp_t gfp_flags
,
46 struct netlink_ext_ack
*extack
);
47 void (*fib6_nh_release
)(struct fib6_nh
*fib6_nh
);
48 void (*udpv6_encap_enable
)(void);
49 void (*ndisc_send_na
)(struct net_device
*dev
, const struct in6_addr
*daddr
,
50 const struct in6_addr
*solicited_addr
,
51 bool router
, bool solicited
, bool override
, bool inc_opt
);
52 struct neigh_table
*nd_tbl
;
54 extern const struct ipv6_stub
*ipv6_stub __read_mostly
;
56 /* A stub used by bpf helpers. Similarly ugly as ipv6_stub */
57 struct ipv6_bpf_stub
{
58 int (*inet6_bind
)(struct sock
*sk
, struct sockaddr
*uaddr
, int addr_len
,
59 bool force_bind_address_no_port
, bool with_lock
);
60 struct sock
*(*udp6_lib_lookup
)(struct net
*net
,
61 const struct in6_addr
*saddr
, __be16 sport
,
62 const struct in6_addr
*daddr
, __be16 dport
,
63 int dif
, int sdif
, struct udp_table
*tbl
,
66 extern const struct ipv6_bpf_stub
*ipv6_bpf_stub __read_mostly
;