#include <linux/err.h>
#include <linux/kernel.h>
#include <linux/inetdevice.h>
#include <net/dst.h>
#include <net/xfrm.h>
#include <net/ip.h>
#include <net/l3mdev.h>
static struct dst_entry *__xfrm4_dst_lookup(struct net *net, struct flowi4 *fl4,
int tos, int oif,
const xfrm_address_t *saddr,
const xfrm_address_t *daddr,
u32 mark)
{ … }
static struct dst_entry *xfrm4_dst_lookup(struct net *net, int tos, int oif,
const xfrm_address_t *saddr,
const xfrm_address_t *daddr,
u32 mark)
{ … }
static int xfrm4_get_saddr(struct net *net, int oif,
xfrm_address_t *saddr, xfrm_address_t *daddr,
u32 mark)
{ … }
static int xfrm4_fill_dst(struct xfrm_dst *xdst, struct net_device *dev,
const struct flowi *fl)
{ … }
static void xfrm4_update_pmtu(struct dst_entry *dst, struct sock *sk,
struct sk_buff *skb, u32 mtu,
bool confirm_neigh)
{ … }
static void xfrm4_redirect(struct dst_entry *dst, struct sock *sk,
struct sk_buff *skb)
{ … }
static void xfrm4_dst_destroy(struct dst_entry *dst)
{ … }
static struct dst_ops xfrm4_dst_ops_template = …;
static const struct xfrm_policy_afinfo xfrm4_policy_afinfo = …;
#ifdef CONFIG_SYSCTL
static struct ctl_table xfrm4_policy_table[] = …;
static __net_init int xfrm4_net_sysctl_init(struct net *net)
{ … }
static __net_exit void xfrm4_net_sysctl_exit(struct net *net)
{ … }
#else
static inline int xfrm4_net_sysctl_init(struct net *net)
{
return 0;
}
static inline void xfrm4_net_sysctl_exit(struct net *net)
{
}
#endif
static int __net_init xfrm4_net_init(struct net *net)
{ … }
static void __net_exit xfrm4_net_exit(struct net *net)
{ … }
static struct pernet_operations __net_initdata xfrm4_net_ops = …;
static void __init xfrm4_policy_init(void)
{ … }
void __init xfrm4_init(void)
{ … }