#include <linux/rpl_iptunnel.h>
#include <net/dst_cache.h>
#include <net/ip6_route.h>
#include <net/lwtunnel.h>
#include <net/ipv6.h>
#include <net/rpl.h>
struct rpl_iptunnel_encap { … };
struct rpl_lwt { … };
static inline struct rpl_lwt *rpl_lwt_lwtunnel(struct lwtunnel_state *lwt)
{ … }
static inline struct rpl_iptunnel_encap *
rpl_encap_lwtunnel(struct lwtunnel_state *lwt)
{ … }
static const struct nla_policy rpl_iptunnel_policy[RPL_IPTUNNEL_MAX + 1] = …;
static bool rpl_validate_srh(struct net *net, struct ipv6_rpl_sr_hdr *srh,
size_t seglen)
{ … }
static int rpl_build_state(struct net *net, struct nlattr *nla,
unsigned int family, const void *cfg,
struct lwtunnel_state **ts,
struct netlink_ext_ack *extack)
{ … }
static void rpl_destroy_state(struct lwtunnel_state *lwt)
{ … }
static int rpl_do_srh_inline(struct sk_buff *skb, const struct rpl_lwt *rlwt,
const struct ipv6_rpl_sr_hdr *srh)
{ … }
static int rpl_do_srh(struct sk_buff *skb, const struct rpl_lwt *rlwt)
{ … }
static int rpl_output(struct net *net, struct sock *sk, struct sk_buff *skb)
{ … }
static int rpl_input(struct sk_buff *skb)
{ … }
static int nla_put_rpl_srh(struct sk_buff *skb, int attrtype,
struct rpl_iptunnel_encap *tuninfo)
{ … }
static int rpl_fill_encap_info(struct sk_buff *skb,
struct lwtunnel_state *lwtstate)
{ … }
static int rpl_encap_nlsize(struct lwtunnel_state *lwtstate)
{ … }
static int rpl_encap_cmp(struct lwtunnel_state *a, struct lwtunnel_state *b)
{ … }
static const struct lwtunnel_encap_ops rpl_ops = …;
int __init rpl_init(void)
{ … }
void rpl_exit(void)
{ … }