mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 00:48:50 +00:00
e0f9f0e073
-----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEH7ZpcWbFyOOp6OJbrB3Eaf9PW7cFAmU8x1wACgkQrB3Eaf9P W7eP7A//QaUgDJXR5ZrkU9SPp5GXufFew7Zq7F4ODQNR+2l/llNkvfVyp0W0va4D Keu1pEGTLfis2pc3nR1zezTJU+ZTk0Y+AshqasvYE5uSCcn8BNLaaV+4AmVEHtp5 i3C+guevUnQ66IXhVu/sdPNduDUhMj/tSr3y9pT30oSINT4nsYY2Z8VZezrzdWrr j+rRuqtrg0avuEkbbuXT5zS396ngEsrHd6RKQVN/eST0U787Xb2D+8hobvW6I9At tWTa8la/qSTP/ez/m7Z/c6YDFECzRUPrY7S9dW7e3DOpJmAE48RZj/odE9wDZJKW pu8EaCGGasDnYA3jWD8L65+/Mold9PbUc1m6HBGHYdCFR6UKpD7Eahl6kZ+p/9Wn TjaVFqBKZkB38H5Opedr8V8vQUR/3dQ8MON+PscnG1SI1ZRGlZLc3+gS3c1zOIVC iJG2GUaKTySmBEOL6YZbAzKA9nD4JdWMObZvxM8CwQ0q5AWR2Xzv187IVLF+NWMx aEyyrIpy7BBAEoWjcXmuBceCcdUdsDmiIWplSUbEdTaSJfjFvxezK0GhiPCibUr+ FHvexPF1kuQAaNo+VNVLL5170RmxD1PoIcH3YIy1MLfv7sk+P3nd5EDmXAolrpXh hFg247odTiRehOF/y3VEUnHTHErakM39jFzkwf43elVlwlnMWmY= =slHB -----END PGP SIGNATURE----- Merge tag 'ipsec-next-2023-10-28' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec-next Steffen Klassert says: ==================== pull request (net-next): ipsec-next 2023-10-28 1) Remove unused function declarations of xfrm4_extract_input and xfrm6_extract_input. From Yue Haibing. 2) Annotate struct xfrm_sec_ctx with __counted_by. From Kees Cook. 3) Support GRO decapsulation for ESP in UDP encapsulation. From Antony Antony et all. 4) Replace the xfrm session decode with flow dissector. From Florian Westphal. 5) Fix a use after free in __xfrm6_udp_encap_rcv. 6) Fix the layer 4 flowi decoding. From Florian Westphal. * tag 'ipsec-next-2023-10-28' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec-next: xfrm: policy: fix layer 4 flowi decoding xfrm Fix use after free in __xfrm6_udp_encap_rcv. xfrm: policy: replace session decode with flow dissector xfrm: move mark and oif flowi decode into common code xfrm: pass struct net to xfrm_decode_session wrappers xfrm: Support GRO for IPv6 ESP in UDP encapsulation xfrm: Support GRO for IPv4 ESP in UDP encapsulation xfrm: Use the XFRM_GRO to indicate a GRO call on input xfrm: Annotate struct xfrm_sec_ctx with __counted_by xfrm: Remove unused function declarations ==================== Link: https://lore.kernel.org/r/20231028084328.3119236-1-steffen.klassert@secunet.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
99 lines
3.7 KiB
C
99 lines
3.7 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _IPV6_STUBS_H
|
|
#define _IPV6_STUBS_H
|
|
|
|
#include <linux/in6.h>
|
|
#include <linux/netdevice.h>
|
|
#include <linux/skbuff.h>
|
|
#include <net/dst.h>
|
|
#include <net/flow.h>
|
|
#include <net/neighbour.h>
|
|
#include <net/sock.h>
|
|
|
|
/* structs from net/ip6_fib.h */
|
|
struct fib6_info;
|
|
struct fib6_nh;
|
|
struct fib6_config;
|
|
struct fib6_result;
|
|
|
|
/* This is ugly, ideally these symbols should be built
|
|
* into the core kernel.
|
|
*/
|
|
struct ipv6_stub {
|
|
int (*ipv6_sock_mc_join)(struct sock *sk, int ifindex,
|
|
const struct in6_addr *addr);
|
|
int (*ipv6_sock_mc_drop)(struct sock *sk, int ifindex,
|
|
const struct in6_addr *addr);
|
|
struct dst_entry *(*ipv6_dst_lookup_flow)(struct net *net,
|
|
const struct sock *sk,
|
|
struct flowi6 *fl6,
|
|
const struct in6_addr *final_dst);
|
|
int (*ipv6_route_input)(struct sk_buff *skb);
|
|
|
|
struct fib6_table *(*fib6_get_table)(struct net *net, u32 id);
|
|
int (*fib6_lookup)(struct net *net, int oif, struct flowi6 *fl6,
|
|
struct fib6_result *res, int flags);
|
|
int (*fib6_table_lookup)(struct net *net, struct fib6_table *table,
|
|
int oif, struct flowi6 *fl6,
|
|
struct fib6_result *res, int flags);
|
|
void (*fib6_select_path)(const struct net *net, struct fib6_result *res,
|
|
struct flowi6 *fl6, int oif, bool oif_match,
|
|
const struct sk_buff *skb, int strict);
|
|
u32 (*ip6_mtu_from_fib6)(const struct fib6_result *res,
|
|
const struct in6_addr *daddr,
|
|
const struct in6_addr *saddr);
|
|
|
|
int (*fib6_nh_init)(struct net *net, struct fib6_nh *fib6_nh,
|
|
struct fib6_config *cfg, gfp_t gfp_flags,
|
|
struct netlink_ext_ack *extack);
|
|
void (*fib6_nh_release)(struct fib6_nh *fib6_nh);
|
|
void (*fib6_nh_release_dsts)(struct fib6_nh *fib6_nh);
|
|
void (*fib6_update_sernum)(struct net *net, struct fib6_info *rt);
|
|
int (*ip6_del_rt)(struct net *net, struct fib6_info *rt, bool skip_notify);
|
|
void (*fib6_rt_update)(struct net *net, struct fib6_info *rt,
|
|
struct nl_info *info);
|
|
|
|
void (*udpv6_encap_enable)(void);
|
|
void (*ndisc_send_na)(struct net_device *dev, const struct in6_addr *daddr,
|
|
const struct in6_addr *solicited_addr,
|
|
bool router, bool solicited, bool override, bool inc_opt);
|
|
#if IS_ENABLED(CONFIG_XFRM)
|
|
void (*xfrm6_local_rxpmtu)(struct sk_buff *skb, u32 mtu);
|
|
int (*xfrm6_udp_encap_rcv)(struct sock *sk, struct sk_buff *skb);
|
|
struct sk_buff *(*xfrm6_gro_udp_encap_rcv)(struct sock *sk,
|
|
struct list_head *head,
|
|
struct sk_buff *skb);
|
|
int (*xfrm6_rcv_encap)(struct sk_buff *skb, int nexthdr, __be32 spi,
|
|
int encap_type);
|
|
#endif
|
|
struct neigh_table *nd_tbl;
|
|
|
|
int (*ipv6_fragment)(struct net *net, struct sock *sk, struct sk_buff *skb,
|
|
int (*output)(struct net *, struct sock *, struct sk_buff *));
|
|
struct net_device *(*ipv6_dev_find)(struct net *net, const struct in6_addr *addr,
|
|
struct net_device *dev);
|
|
};
|
|
extern const struct ipv6_stub *ipv6_stub __read_mostly;
|
|
|
|
/* A stub used by bpf helpers. Similarly ugly as ipv6_stub */
|
|
struct ipv6_bpf_stub {
|
|
int (*inet6_bind)(struct sock *sk, struct sockaddr *uaddr, int addr_len,
|
|
u32 flags);
|
|
struct sock *(*udp6_lib_lookup)(struct net *net,
|
|
const struct in6_addr *saddr, __be16 sport,
|
|
const struct in6_addr *daddr, __be16 dport,
|
|
int dif, int sdif, struct udp_table *tbl,
|
|
struct sk_buff *skb);
|
|
int (*ipv6_setsockopt)(struct sock *sk, int level, int optname,
|
|
sockptr_t optval, unsigned int optlen);
|
|
int (*ipv6_getsockopt)(struct sock *sk, int level, int optname,
|
|
sockptr_t optval, sockptr_t optlen);
|
|
int (*ipv6_dev_get_saddr)(struct net *net,
|
|
const struct net_device *dst_dev,
|
|
const struct in6_addr *daddr,
|
|
unsigned int prefs,
|
|
struct in6_addr *saddr);
|
|
};
|
|
extern const struct ipv6_bpf_stub *ipv6_bpf_stub __read_mostly;
|
|
|
|
#endif
|