#define KMSG_COMPONENT …
#define pr_fmt(fmt) …
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/skbuff.h>
#include <linux/in.h>
#include <linux/ip.h>
#include <linux/netfilter.h>
#include <linux/slab.h>
#include <net/net_namespace.h>
#include <net/protocol.h>
#include <net/tcp.h>
#include <linux/stat.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/mutex.h>
#include <net/ip_vs.h>
EXPORT_SYMBOL(…);
EXPORT_SYMBOL(…);
EXPORT_SYMBOL(…);
static DEFINE_MUTEX(__ip_vs_app_mutex);
static inline int ip_vs_app_get(struct ip_vs_app *app)
{ … }
static inline void ip_vs_app_put(struct ip_vs_app *app)
{ … }
static void ip_vs_app_inc_destroy(struct ip_vs_app *inc)
{ … }
static void ip_vs_app_inc_rcu_free(struct rcu_head *head)
{ … }
static int
ip_vs_app_inc_new(struct netns_ipvs *ipvs, struct ip_vs_app *app, __u16 proto,
__u16 port)
{ … }
static void
ip_vs_app_inc_release(struct netns_ipvs *ipvs, struct ip_vs_app *inc)
{ … }
int ip_vs_app_inc_get(struct ip_vs_app *inc)
{ … }
void ip_vs_app_inc_put(struct ip_vs_app *inc)
{ … }
int
register_ip_vs_app_inc(struct netns_ipvs *ipvs, struct ip_vs_app *app, __u16 proto,
__u16 port)
{ … }
struct ip_vs_app *register_ip_vs_app(struct netns_ipvs *ipvs, struct ip_vs_app *app)
{ … }
void unregister_ip_vs_app(struct netns_ipvs *ipvs, struct ip_vs_app *app)
{ … }
int ip_vs_bind_app(struct ip_vs_conn *cp,
struct ip_vs_protocol *pp)
{ … }
void ip_vs_unbind_app(struct ip_vs_conn *cp)
{ … }
static inline void vs_fix_seq(const struct ip_vs_seq *vseq, struct tcphdr *th)
{ … }
static inline void
vs_fix_ack_seq(const struct ip_vs_seq *vseq, struct tcphdr *th)
{ … }
static inline void vs_seq_update(struct ip_vs_conn *cp, struct ip_vs_seq *vseq,
unsigned int flag, __u32 seq, int diff)
{ … }
static inline int app_tcp_pkt_out(struct ip_vs_conn *cp, struct sk_buff *skb,
struct ip_vs_app *app,
struct ip_vs_iphdr *ipvsh)
{ … }
int ip_vs_app_pkt_out(struct ip_vs_conn *cp, struct sk_buff *skb,
struct ip_vs_iphdr *ipvsh)
{ … }
static inline int app_tcp_pkt_in(struct ip_vs_conn *cp, struct sk_buff *skb,
struct ip_vs_app *app,
struct ip_vs_iphdr *ipvsh)
{ … }
int ip_vs_app_pkt_in(struct ip_vs_conn *cp, struct sk_buff *skb,
struct ip_vs_iphdr *ipvsh)
{ … }
#ifdef CONFIG_PROC_FS
static struct ip_vs_app *ip_vs_app_idx(struct netns_ipvs *ipvs, loff_t pos)
{ … }
static void *ip_vs_app_seq_start(struct seq_file *seq, loff_t *pos)
{ … }
static void *ip_vs_app_seq_next(struct seq_file *seq, void *v, loff_t *pos)
{ … }
static void ip_vs_app_seq_stop(struct seq_file *seq, void *v)
{ … }
static int ip_vs_app_seq_show(struct seq_file *seq, void *v)
{ … }
static const struct seq_operations ip_vs_app_seq_ops = …;
#endif
int __net_init ip_vs_app_net_init(struct netns_ipvs *ipvs)
{ … }
void __net_exit ip_vs_app_net_cleanup(struct netns_ipvs *ipvs)
{ … }