Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 409a1966 authored by Julius Volz's avatar Julius Volz Committed by Simon Horman
Browse files

IPVS: Integrate ESP protocol into ip_vs_proto_ah.c



Rename all ah_* functions to ah_esp_* (and adjust comments). Move ESP
protocol definition into ip_vs_proto_ah.c and remove all usage of
ip_vs_proto_esp.c.

Make the compilation of ip_vs_proto_ah.c dependent on a new config
variable, IP_VS_PROTO_AH_ESP, which is selected either by
IP_VS_PROTO_ESP or IP_VS_PROTO_AH. Only compile the selected protocols'
structures within this file.

Signed-off-by: default avatarJulius Volz <juliusv@google.com>
Signed-off-by: default avatarSimon Horman <horms@verge.net.au>
parent f728bafb
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -71,14 +71,20 @@ config IP_VS_PROTO_UDP
	  This option enables support for load balancing UDP transport
	  protocol. Say Y if unsure.

config	IP_VS_PROTO_AH_ESP
	bool
	depends on UNDEFINED

config	IP_VS_PROTO_ESP
	bool "ESP load balancing support"
	select IP_VS_PROTO_AH_ESP
	---help---
	  This option enables support for load balancing ESP (Encapsulation
	  Security Payload) transport protocol. Say Y if unsure.

config	IP_VS_PROTO_AH
	bool "AH load balancing support"
	select IP_VS_PROTO_AH_ESP
	---help---
	  This option enables support for load balancing AH (Authentication
	  Header) transport protocol. Say Y if unsure.
+1 −2
Original line number Diff line number Diff line
@@ -6,8 +6,7 @@
ip_vs_proto-objs-y :=
ip_vs_proto-objs-$(CONFIG_IP_VS_PROTO_TCP) += ip_vs_proto_tcp.o
ip_vs_proto-objs-$(CONFIG_IP_VS_PROTO_UDP) += ip_vs_proto_udp.o
ip_vs_proto-objs-$(CONFIG_IP_VS_PROTO_ESP) += ip_vs_proto_esp.o
ip_vs_proto-objs-$(CONFIG_IP_VS_PROTO_AH) += ip_vs_proto_ah.o
ip_vs_proto-objs-$(CONFIG_IP_VS_PROTO_AH_ESP) += ip_vs_proto_ah.o

ip_vs-objs :=	ip_vs_conn.o ip_vs_core.o ip_vs_ctl.o ip_vs_sched.o	   \
		ip_vs_xmit.o ip_vs_app.o ip_vs_sync.o	   		   \
+47 −22
Original line number Diff line number Diff line
/*
 * ip_vs_proto_ah.c:	AH IPSec load balancing support for IPVS
 * ip_vs_proto_ah_esp.c:	AH/ESP IPSec load balancing support for IPVS
 *
 * Authors:	Julian Anastasov <ja@ssi.bg>, February 2002
 *		Wensong Zhang <wensong@linuxvirtualserver.org>
@@ -39,7 +39,7 @@ struct isakmp_hdr {


static struct ip_vs_conn *
ah_conn_in_get(const struct sk_buff *skb,
ah_esp_conn_in_get(const struct sk_buff *skb,
		   struct ip_vs_protocol *pp,
		   const struct iphdr *iph,
		   unsigned int proto_off,
@@ -79,7 +79,7 @@ ah_conn_in_get(const struct sk_buff *skb,


static struct ip_vs_conn *
ah_conn_out_get(const struct sk_buff *skb, struct ip_vs_protocol *pp,
ah_esp_conn_out_get(const struct sk_buff *skb, struct ip_vs_protocol *pp,
		    const struct iphdr *iph, unsigned int proto_off, int inverse)
{
	struct ip_vs_conn *cp;
@@ -112,12 +112,12 @@ ah_conn_out_get(const struct sk_buff *skb, struct ip_vs_protocol *pp,


static int
ah_conn_schedule(struct sk_buff *skb,
ah_esp_conn_schedule(struct sk_buff *skb,
		     struct ip_vs_protocol *pp,
		     int *verdict, struct ip_vs_conn **cpp)
{
	/*
	 * AH is only related traffic. Pass the packet to IP stack.
	 * AH/ESP is only related traffic. Pass the packet to IP stack.
	 */
	*verdict = NF_ACCEPT;
	return 0;
@@ -125,7 +125,7 @@ ah_conn_schedule(struct sk_buff *skb,


static void
ah_debug_packet(struct ip_vs_protocol *pp, const struct sk_buff *skb,
ah_esp_debug_packet(struct ip_vs_protocol *pp, const struct sk_buff *skb,
		    int offset, const char *msg)
{
	char buf[256];
@@ -143,28 +143,29 @@ ah_debug_packet(struct ip_vs_protocol *pp, const struct sk_buff *skb,
}


static void ah_init(struct ip_vs_protocol *pp)
static void ah_esp_init(struct ip_vs_protocol *pp)
{
	/* nothing to do now */
}


static void ah_exit(struct ip_vs_protocol *pp)
static void ah_esp_exit(struct ip_vs_protocol *pp)
{
	/* nothing to do now */
}


#ifdef CONFIG_IP_VS_PROTO_AH
struct ip_vs_protocol ip_vs_protocol_ah = {
	.name =			"AH",
	.protocol =		IPPROTO_AH,
	.num_states =		1,
	.dont_defrag =		1,
	.init =			ah_init,
	.exit =			ah_exit,
	.conn_schedule =	ah_conn_schedule,
	.conn_in_get =		ah_conn_in_get,
	.conn_out_get =		ah_conn_out_get,
	.init =			ah_esp_init,
	.exit =			ah_esp_exit,
	.conn_schedule =	ah_esp_conn_schedule,
	.conn_in_get =		ah_esp_conn_in_get,
	.conn_out_get =		ah_esp_conn_out_get,
	.snat_handler =		NULL,
	.dnat_handler =		NULL,
	.csum_check =		NULL,
@@ -172,7 +173,31 @@ struct ip_vs_protocol ip_vs_protocol_ah = {
	.register_app =		NULL,
	.unregister_app =	NULL,
	.app_conn_bind =	NULL,
	.debug_packet =		ah_debug_packet,
	.debug_packet =		ah_esp_debug_packet,
	.timeout_change =	NULL,		/* ISAKMP */
	.set_state_timeout =	NULL,
};
#endif

#ifdef CONFIG_IP_VS_PROTO_ESP
struct ip_vs_protocol ip_vs_protocol_esp = {
	.name =			"ESP",
	.protocol =		IPPROTO_ESP,
	.num_states =		1,
	.dont_defrag =		1,
	.init =			ah_esp_init,
	.exit =			ah_esp_exit,
	.conn_schedule =	ah_esp_conn_schedule,
	.conn_in_get =		ah_esp_conn_in_get,
	.conn_out_get =		ah_esp_conn_out_get,
	.snat_handler =		NULL,
	.dnat_handler =		NULL,
	.csum_check =		NULL,
	.state_transition =	NULL,
	.register_app =		NULL,
	.unregister_app =	NULL,
	.app_conn_bind =	NULL,
	.debug_packet =		ah_esp_debug_packet,
	.timeout_change =	NULL,		/* ISAKMP */
};
#endif