#include <linux/kernel.h>
#include <linux/percpu.h>
#include <net/dst_cache.h>
#include <net/route.h>
#if IS_ENABLED(CONFIG_IPV6)
#include <net/ip6_fib.h>
#endif
#include <uapi/linux/in.h>
struct dst_cache_pcpu { … };
static void dst_cache_per_cpu_dst_set(struct dst_cache_pcpu *dst_cache,
struct dst_entry *dst, u32 cookie)
{ … }
static struct dst_entry *dst_cache_per_cpu_get(struct dst_cache *dst_cache,
struct dst_cache_pcpu *idst)
{ … }
struct dst_entry *dst_cache_get(struct dst_cache *dst_cache)
{ … }
EXPORT_SYMBOL_GPL(…);
struct rtable *dst_cache_get_ip4(struct dst_cache *dst_cache, __be32 *saddr)
{ … }
EXPORT_SYMBOL_GPL(…);
void dst_cache_set_ip4(struct dst_cache *dst_cache, struct dst_entry *dst,
__be32 saddr)
{ … }
EXPORT_SYMBOL_GPL(…);
#if IS_ENABLED(CONFIG_IPV6)
void dst_cache_set_ip6(struct dst_cache *dst_cache, struct dst_entry *dst,
const struct in6_addr *saddr)
{ … }
EXPORT_SYMBOL_GPL(…);
struct dst_entry *dst_cache_get_ip6(struct dst_cache *dst_cache,
struct in6_addr *saddr)
{ … }
EXPORT_SYMBOL_GPL(…);
#endif
int dst_cache_init(struct dst_cache *dst_cache, gfp_t gfp)
{ … }
EXPORT_SYMBOL_GPL(…);
void dst_cache_destroy(struct dst_cache *dst_cache)
{ … }
EXPORT_SYMBOL_GPL(…);
void dst_cache_reset_now(struct dst_cache *dst_cache)
{ … }
EXPORT_SYMBOL_GPL(…);