forked from Minki/linux
a7a29f9c36
This patch adds functionality to configure routes for RPL source routing functionality. There is no IPIP functionality yet implemented which can be added later when the cases when to use IPv6 encapuslation comes more clear. Signed-off-by: Alexander Aring <alex.aring@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
47 lines
1.1 KiB
C
47 lines
1.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* RPL implementation
|
|
*
|
|
* Author:
|
|
* (C) 2020 Alexander Aring <alex.aring@gmail.com>
|
|
*/
|
|
|
|
#ifndef _NET_RPL_H
|
|
#define _NET_RPL_H
|
|
|
|
#include <linux/rpl.h>
|
|
|
|
#if IS_ENABLED(CONFIG_IPV6_RPL_LWTUNNEL)
|
|
extern int rpl_init(void);
|
|
extern void rpl_exit(void);
|
|
#else
|
|
static inline int rpl_init(void)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline void rpl_exit(void) {}
|
|
#endif
|
|
|
|
/* Worst decompression memory usage ipv6 address (16) + pad 7 */
|
|
#define IPV6_RPL_SRH_WORST_SWAP_SIZE (sizeof(struct in6_addr) + 7)
|
|
|
|
static inline size_t ipv6_rpl_srh_alloc_size(unsigned char n)
|
|
{
|
|
return sizeof(struct ipv6_rpl_sr_hdr) +
|
|
((n + 1) * sizeof(struct in6_addr));
|
|
}
|
|
|
|
size_t ipv6_rpl_srh_size(unsigned char n, unsigned char cmpri,
|
|
unsigned char cmpre);
|
|
|
|
void ipv6_rpl_srh_decompress(struct ipv6_rpl_sr_hdr *outhdr,
|
|
const struct ipv6_rpl_sr_hdr *inhdr,
|
|
const struct in6_addr *daddr, unsigned char n);
|
|
|
|
void ipv6_rpl_srh_compress(struct ipv6_rpl_sr_hdr *outhdr,
|
|
const struct ipv6_rpl_sr_hdr *inhdr,
|
|
const struct in6_addr *daddr, unsigned char n);
|
|
|
|
#endif /* _NET_RPL_H */
|