#include <linux/kernel.h>
#include <linux/ip.h>
#include <linux/sctp.h>
#include <net/ip.h>
#include <net/ip6_checksum.h>
#include <linux/netfilter.h>
#include <linux/netfilter_ipv4.h>
#include <net/sctp/checksum.h>
#include <net/ip_vs.h>
static int
sctp_csum_check(int af, struct sk_buff *skb, struct ip_vs_protocol *pp);
static int
sctp_conn_schedule(struct netns_ipvs *ipvs, int af, struct sk_buff *skb,
struct ip_vs_proto_data *pd,
int *verdict, struct ip_vs_conn **cpp,
struct ip_vs_iphdr *iph)
{ … }
static void sctp_nat_csum(struct sk_buff *skb, struct sctphdr *sctph,
unsigned int sctphoff)
{ … }
static int
sctp_snat_handler(struct sk_buff *skb, struct ip_vs_protocol *pp,
struct ip_vs_conn *cp, struct ip_vs_iphdr *iph)
{ … }
static int
sctp_dnat_handler(struct sk_buff *skb, struct ip_vs_protocol *pp,
struct ip_vs_conn *cp, struct ip_vs_iphdr *iph)
{ … }
static int
sctp_csum_check(int af, struct sk_buff *skb, struct ip_vs_protocol *pp)
{ … }
enum ipvs_sctp_event_t { … };
static __u8 sctp_events[] = …;
#define sNO …
#define sI1 …
#define sIN …
#define sCS …
#define sCR …
#define sCW …
#define sCO …
#define sCE …
#define sES …
#define sSS …
#define sSR …
#define sSA …
#define sRJ …
#define sCL …
static const __u8 sctp_states
[IP_VS_DIR_LAST][IP_VS_SCTP_EVENT_LAST][IP_VS_SCTP_S_LAST] = …;
#define IP_VS_SCTP_MAX_RTO …
static const int sctp_timeouts[IP_VS_SCTP_S_LAST + 1] = …;
static const char *sctp_state_name_table[IP_VS_SCTP_S_LAST + 1] = …;
static const char *sctp_state_name(int state)
{ … }
static inline void
set_sctp_state(struct ip_vs_proto_data *pd, struct ip_vs_conn *cp,
int direction, const struct sk_buff *skb)
{ … }
static void
sctp_state_transition(struct ip_vs_conn *cp, int direction,
const struct sk_buff *skb, struct ip_vs_proto_data *pd)
{ … }
static inline __u16 sctp_app_hashkey(__be16 port)
{ … }
static int sctp_register_app(struct netns_ipvs *ipvs, struct ip_vs_app *inc)
{ … }
static void sctp_unregister_app(struct netns_ipvs *ipvs, struct ip_vs_app *inc)
{ … }
static int sctp_app_conn_bind(struct ip_vs_conn *cp)
{ … }
static int __ip_vs_sctp_init(struct netns_ipvs *ipvs, struct ip_vs_proto_data *pd)
{ … }
static void __ip_vs_sctp_exit(struct netns_ipvs *ipvs, struct ip_vs_proto_data *pd)
{ … }
struct ip_vs_protocol ip_vs_protocol_sctp = …;