From 71cf57715f3e847fad339adcfdaeab511d42d2f7 Mon Sep 17 00:00:00 2001 From: Jianchuan Wang Date: Thu, 22 Jan 2015 17:35:56 +0800 Subject: ipvsadm: Add version 1.26 (initial recipe) * add ipvs administration tool Signed-off-by: Jianchuan Wang Signed-off-by: Martin Jansa Signed-off-by: Joe MacDonald --- ...001-Modify-the-Makefile-for-cross-compile.patch | 97 ++++++++++++++++++++++ .../0002-Replace-nl_handle-to-nl_sock.patch | 63 ++++++++++++++ .../0003-ipvsadm-remove-dependency-on-bash.patch | 39 +++++++++ .../recipes-support/ipvsadm/ipvsadm_1.26.bb | 35 ++++++++ 4 files changed, 234 insertions(+) create mode 100644 meta-networking/recipes-support/ipvsadm/ipvsadm/0001-Modify-the-Makefile-for-cross-compile.patch create mode 100644 meta-networking/recipes-support/ipvsadm/ipvsadm/0002-Replace-nl_handle-to-nl_sock.patch create mode 100644 meta-networking/recipes-support/ipvsadm/ipvsadm/0003-ipvsadm-remove-dependency-on-bash.patch create mode 100644 meta-networking/recipes-support/ipvsadm/ipvsadm_1.26.bb diff --git a/meta-networking/recipes-support/ipvsadm/ipvsadm/0001-Modify-the-Makefile-for-cross-compile.patch b/meta-networking/recipes-support/ipvsadm/ipvsadm/0001-Modify-the-Makefile-for-cross-compile.patch new file mode 100644 index 0000000000..7c3dfe4a84 --- /dev/null +++ b/meta-networking/recipes-support/ipvsadm/ipvsadm/0001-Modify-the-Makefile-for-cross-compile.patch @@ -0,0 +1,97 @@ +From 58292175115bae7a4c3600d3022e59ea57213025 Mon Sep 17 00:00:00 2001 +From: Jianchuan Wang +Date: Mon, 12 Jan 2015 15:53:23 +0800 +Subject: [PATCH] Modify the Makefile for cross compile. + +Upstream-Status: Inappropriate [embedded specific] + +Signed-off-by: Jianchuan Wang +--- + Makefile | 23 ++++++----------------- + libipvs/Makefile | 3 +-- + 2 files changed, 7 insertions(+), 19 deletions(-) + +diff --git a/Makefile b/Makefile +index e4e03cc..461c021 100644 +--- a/Makefile ++++ b/Makefile +@@ -35,10 +35,9 @@ ARCH = $(shell uname -m) + RPMSOURCEDIR = $(shell rpm --eval '%_sourcedir') + RPMSPECDIR = $(shell rpm --eval '%_specdir') + +-CC = gcc + INCLUDE = + SBIN = $(BUILD_ROOT)/sbin +-MANDIR = usr/man ++MANDIR = usr/share/man + MAN = $(BUILD_ROOT)/$(MANDIR)/man8 + INIT = $(BUILD_ROOT)/etc/rc.d/init.d + MKDIR = mkdir +@@ -62,17 +61,7 @@ RPMBUILD = $(shell \ + echo "/bin/rpm"; \ + fi ) + +-ifeq (,$(FORCE_GETOPT)) +-LIB_SEARCH = /lib64 /usr/lib64 /usr/local/lib64 /lib /usr/lib /usr/local/lib +-POPT_LIB = $(shell for i in $(LIB_SEARCH); do \ +- if [ -f $$i/libpopt.a ]; then \ +- if nm $$i/libpopt.a | fgrep -q poptGetContext; then \ +- echo "-lpopt"; \ +- break; \ +- fi; \ +- fi; \ +-done) +-endif ++POPT_LIB = -lpopt + + ifneq (,$(POPT_LIB)) + POPT_DEFINE = -DHAVE_POPT +@@ -81,7 +70,7 @@ endif + OBJS = ipvsadm.o config_stream.o dynamic_array.o + LIBS = $(POPT_LIB) + ifneq (0,$(HAVE_NL)) +-LIBS += -lnl ++LIBS += -lnl-3 -lnl-genl-3 + endif + DEFINES = -DVERSION=\"$(VERSION)\" -DSCHEDULERS=\"$(SCHEDULERS)\" \ + -DPE_LIST=\"$(PE_LIST)\" $(POPT_DEFINE) +@@ -91,13 +80,13 @@ DEFINES += $(shell if [ ! -f ../ip_vs.h ]; then \ + + .PHONY = all clean install dist distclean rpm rpms + +-all: libs ipvsadm ++all: ipvsadm + + libs: + make -C libipvs + +-ipvsadm: $(OBJS) $(STATIC_LIBS) +- $(CC) $(CFLAGS) -o $@ $^ $(LIBS) ++ipvsadm: $(OBJS) libs ++ $(CC) $(CFLAGS) -o $@ $(OBJS) $(STATIC_LIBS) $(LIBS) + + install: all + if [ ! -d $(SBIN) ]; then $(MKDIR) -p $(SBIN); fi +diff --git a/libipvs/Makefile b/libipvs/Makefile +index a527a7f..b7300ec 100644 +--- a/libipvs/Makefile ++++ b/libipvs/Makefile +@@ -1,6 +1,5 @@ + # Makefile for libipvs + +-CC = gcc + CFLAGS = -Wall -Wunused -Wstrict-prototypes -g -fPIC + ifneq (0,$(HAVE_NL)) + CFLAGS += -DLIBIPVS_USE_NL +@@ -18,7 +17,7 @@ SHARED_LIB = libipvs.so + all: $(STATIC_LIB) $(SHARED_LIB) + + $(STATIC_LIB): libipvs.o ip_vs_nl_policy.o +- ar rv $@ $^ ++ $(AR) rv $@ $^ + + $(SHARED_LIB): libipvs.o ip_vs_nl_policy.o + $(CC) -shared -Wl,-soname,$@ -o $@ $^ +-- +1.9.1 + diff --git a/meta-networking/recipes-support/ipvsadm/ipvsadm/0002-Replace-nl_handle-to-nl_sock.patch b/meta-networking/recipes-support/ipvsadm/ipvsadm/0002-Replace-nl_handle-to-nl_sock.patch new file mode 100644 index 0000000000..7896d6d1ea --- /dev/null +++ b/meta-networking/recipes-support/ipvsadm/ipvsadm/0002-Replace-nl_handle-to-nl_sock.patch @@ -0,0 +1,63 @@ +From 2686213259b15df9cf1d969c5a14d62f14cfbaae Mon Sep 17 00:00:00 2001 +From: Jianchuan Wang +Date: Thu, 8 Jan 2015 17:37:11 +0800 +Subject: [PATCH 2/2] Replace nl_handle to nl_sock. + +The nl_handle was replace with nl_sock in the libnl-3. + +Upstream-Status: Inappropriate [embedded specific] + +Signed-off-by: Jianchuan Wang +--- + libipvs/libipvs.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/libipvs/libipvs.c b/libipvs/libipvs.c +index a157e18..21a9bfa 100644 +--- a/libipvs/libipvs.c ++++ b/libipvs/libipvs.c +@@ -32,7 +32,7 @@ static void* ipvs_func = NULL; + struct ip_vs_getinfo ipvs_info; + + #ifdef LIBIPVS_USE_NL +-static struct nl_handle *sock = NULL; ++static struct nl_sock *sock = NULL; + static int family, try_nl = 1; + #endif + +@@ -73,7 +73,7 @@ int ipvs_nl_send_message(struct nl_msg *msg, nl_recvmsg_msg_cb_t func, void *arg + { + int err = EINVAL; + +- sock = nl_handle_alloc(); ++ sock = nl_socket_alloc(); + if (!sock) { + nlmsg_free(msg); + return -1; +@@ -88,7 +88,7 @@ int ipvs_nl_send_message(struct nl_msg *msg, nl_recvmsg_msg_cb_t func, void *arg + + /* To test connections and set the family */ + if (msg == NULL) { +- nl_handle_destroy(sock); ++ nl_socket_free(sock); + sock = NULL; + return 0; + } +@@ -104,12 +104,12 @@ int ipvs_nl_send_message(struct nl_msg *msg, nl_recvmsg_msg_cb_t func, void *arg + + nlmsg_free(msg); + +- nl_handle_destroy(sock); ++ nl_socket_free(sock); + + return 0; + + fail_genl: +- nl_handle_destroy(sock); ++ nl_socket_free(sock); + sock = NULL; + nlmsg_free(msg); + errno = err; +-- +1.8.3.1 + diff --git a/meta-networking/recipes-support/ipvsadm/ipvsadm/0003-ipvsadm-remove-dependency-on-bash.patch b/meta-networking/recipes-support/ipvsadm/ipvsadm/0003-ipvsadm-remove-dependency-on-bash.patch new file mode 100644 index 0000000000..800114f2ce --- /dev/null +++ b/meta-networking/recipes-support/ipvsadm/ipvsadm/0003-ipvsadm-remove-dependency-on-bash.patch @@ -0,0 +1,39 @@ +From 2f4cdf70cf92d3a9503d8ff045ba277db40bb4e7 Mon Sep 17 00:00:00 2001 +From: Joe MacDonald +Date: Monday, 13 Apr 2015 14:12:37 -0400 +Subject: [PATCH] ipvsadm: remove dependency on bash + +The save/restore scripts are very simple and don't depend on any BASH +features at all, so switch the interpreter to /bin/sh. + +Upstream-Status: Pending + +Signed-off-by: Joe MacDonald +--- + ipvsadm-restore | 2 +- + ipvsadm-save | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ipvsadm-restore b/ipvsadm-restore +index f24e1b3..a9fa8bc 100644 +--- a/ipvsadm-restore ++++ b/ipvsadm-restore +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/bin/sh + # ipvsadm-restore - Restore IPVS rules + # + # A very simple wrapper to restore IPVS rules +diff --git a/ipvsadm-save b/ipvsadm-save +index f4d399e..af51638 100644 +--- a/ipvsadm-save ++++ b/ipvsadm-save +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/bin/sh + # ipvsadm-save - Save IPVS rules + # + # A very simple wrapper to save IPVS rules +-- +1.9.1 + diff --git a/meta-networking/recipes-support/ipvsadm/ipvsadm_1.26.bb b/meta-networking/recipes-support/ipvsadm/ipvsadm_1.26.bb new file mode 100644 index 0000000000..b640a5081d --- /dev/null +++ b/meta-networking/recipes-support/ipvsadm/ipvsadm_1.26.bb @@ -0,0 +1,35 @@ +SUMMARY = "Linux Virtual Server administration Utility" +DESCRIPTION = "Ipvsadm is used to set up, maintain or inspect the virtual server \ +table in the Linux kernel. The Linux Virtual Server can be used to \ +build scalable network services based on a cluster of two or more nodes. \ +The active node of the cluster redirects service requests to a \ +collection of server hosts that will actually perform the services. \ +Supported features include two protocols (TCP and UDP), three packet-forwarding \ +methods (NAT, tunneling, and direct routing), and eight load balancing algorithms \ +(round robin, weighted round robin, least-connec-tion, weighted least-connection, \ +locality-based least-connection, locality-based least-connection with replication, \ +destination-hashing, and source-hashing)." +SECTION = "console/network" +LICENSE = "GPL-2.0" +LIC_FILES_CHKSUM = "file://README;beginline=40;endline=56;md5=a54cba37b64924aa5008881607942892" + +DEPENDS += "libnl popt" + +SRC_URI = "http://www.linuxvirtualserver.org/software/kernel-2.6/${BP}.tar.gz \ + file://0001-Modify-the-Makefile-for-cross-compile.patch \ + file://0002-Replace-nl_handle-to-nl_sock.patch \ + file://0003-ipvsadm-remove-dependency-on-bash.patch \ +" + +SRC_URI[md5sum] = "eac3ba3f62cd4dea2da353aeddd353a8" +SRC_URI[sha256sum] = "6d6c46fecb1c532a892616b4445c73b71730e8790d5630f60269fd9cbee0eb2d" + +do_compile() { + oe_runmake \ + CC="${CC} -I${STAGING_INCDIR} -I${STAGING_INCDIR}/libnl3 -L${STAGING_LIBDIR}" \ + all +} + +do_install() { + oe_runmake 'BUILD_ROOT=${D}' install +} -- cgit 1.2.3-korg