#define KMSG_COMPONENT …
#define pr_fmt(fmt) …
#include <linux/ip.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/skbuff.h>
#include <linux/jiffies.h>
#include <linux/hash.h>
#include <linux/fs.h>
#include <linux/sysctl.h>
#include <net/ip_vs.h>
#define CHECK_EXPIRE_INTERVAL …
#define ENTRY_TIMEOUT …
#define DEFAULT_EXPIRATION …
#define COUNT_FOR_FULL_EXPIRATION …
#ifndef CONFIG_IP_VS_LBLC_TAB_BITS
#define CONFIG_IP_VS_LBLC_TAB_BITS …
#endif
#define IP_VS_LBLC_TAB_BITS …
#define IP_VS_LBLC_TAB_SIZE …
#define IP_VS_LBLC_TAB_MASK …
struct ip_vs_lblc_entry { … };
struct ip_vs_lblc_table { … };
#ifdef CONFIG_SYSCTL
static struct ctl_table vs_vars_table[] = …;
#endif
static void ip_vs_lblc_rcu_free(struct rcu_head *head)
{ … }
static inline void ip_vs_lblc_del(struct ip_vs_lblc_entry *en)
{ … }
static inline unsigned int
ip_vs_lblc_hashkey(int af, const union nf_inet_addr *addr)
{ … }
static void
ip_vs_lblc_hash(struct ip_vs_lblc_table *tbl, struct ip_vs_lblc_entry *en)
{ … }
static inline struct ip_vs_lblc_entry *
ip_vs_lblc_get(int af, struct ip_vs_lblc_table *tbl,
const union nf_inet_addr *addr)
{ … }
static inline struct ip_vs_lblc_entry *
ip_vs_lblc_new(struct ip_vs_lblc_table *tbl, const union nf_inet_addr *daddr,
u16 af, struct ip_vs_dest *dest)
{ … }
static void ip_vs_lblc_flush(struct ip_vs_service *svc)
{ … }
static int sysctl_lblc_expiration(struct ip_vs_service *svc)
{ … }
static inline void ip_vs_lblc_full_check(struct ip_vs_service *svc)
{ … }
static void ip_vs_lblc_check_expire(struct timer_list *t)
{ … }
static int ip_vs_lblc_init_svc(struct ip_vs_service *svc)
{ … }
static void ip_vs_lblc_done_svc(struct ip_vs_service *svc)
{ … }
static inline struct ip_vs_dest *
__ip_vs_lblc_schedule(struct ip_vs_service *svc)
{ … }
static inline int
is_overloaded(struct ip_vs_dest *dest, struct ip_vs_service *svc)
{ … }
static struct ip_vs_dest *
ip_vs_lblc_schedule(struct ip_vs_service *svc, const struct sk_buff *skb,
struct ip_vs_iphdr *iph)
{ … }
static struct ip_vs_scheduler ip_vs_lblc_scheduler = …;
#ifdef CONFIG_SYSCTL
static int __net_init __ip_vs_lblc_init(struct net *net)
{ … }
static void __net_exit __ip_vs_lblc_exit(struct net *net)
{ … }
#else
static int __net_init __ip_vs_lblc_init(struct net *net) { return 0; }
static void __net_exit __ip_vs_lblc_exit(struct net *net) { }
#endif
static struct pernet_operations ip_vs_lblc_ops = …;
static int __init ip_vs_lblc_init(void)
{ … }
static void __exit ip_vs_lblc_cleanup(void)
{ … }
module_init(…) …;
module_exit(ip_vs_lblc_cleanup);
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;