|  | /* 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 */ |