#ifndef _NET_INETPEER_H
#define _NET_INETPEER_H
#include <linux/types.h>
#include <linux/init.h>
#include <linux/jiffies.h>
#include <linux/spinlock.h>
#include <linux/rtnetlink.h>
#include <net/ipv6.h>
#include <linux/atomic.h>
struct ipv4_addr_key { … };
#define INETPEER_MAXKEYSZ …
struct inetpeer_addr { … };
struct inet_peer { … };
struct inet_peer_base { … };
void inet_peer_base_init(struct inet_peer_base *);
void inet_initpeers(void) __init;
#define INETPEER_METRICS_NEW …
static inline void inetpeer_set_addr_v4(struct inetpeer_addr *iaddr, __be32 ip)
{ … }
static inline __be32 inetpeer_get_addr_v4(struct inetpeer_addr *iaddr)
{ … }
static inline void inetpeer_set_addr_v6(struct inetpeer_addr *iaddr,
struct in6_addr *in6)
{ … }
static inline struct in6_addr *inetpeer_get_addr_v6(struct inetpeer_addr *iaddr)
{ … }
struct inet_peer *inet_getpeer(struct inet_peer_base *base,
const struct inetpeer_addr *daddr,
int create);
static inline struct inet_peer *inet_getpeer_v4(struct inet_peer_base *base,
__be32 v4daddr,
int vif, int create)
{ … }
static inline struct inet_peer *inet_getpeer_v6(struct inet_peer_base *base,
const struct in6_addr *v6daddr,
int create)
{ … }
static inline int inetpeer_addr_cmp(const struct inetpeer_addr *a,
const struct inetpeer_addr *b)
{ … }
void inet_putpeer(struct inet_peer *p);
bool inet_peer_xrlim_allow(struct inet_peer *peer, int timeout);
void inetpeer_invalidate_tree(struct inet_peer_base *);
#endif