From 86e0e9fcfb2e75acda7bc0947181800b838755a1 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Aug 02 2019 00:43:51 +0000 Subject: import ipvsadm-1.29-8.el8 --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3d3e2c0 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/ipvsadm-1.29.tar.gz diff --git a/.ipvsadm.metadata b/.ipvsadm.metadata new file mode 100644 index 0000000..e754326 --- /dev/null +++ b/.ipvsadm.metadata @@ -0,0 +1 @@ +ec2ab7537d9bfa0de6c5bb69730da37099270cc8 SOURCES/ipvsadm-1.29.tar.gz diff --git a/SOURCES/0001-ipvsadm-catch-the-original-errno-from-netlink-answer.patch b/SOURCES/0001-ipvsadm-catch-the-original-errno-from-netlink-answer.patch new file mode 100644 index 0000000..a9ffeec --- /dev/null +++ b/SOURCES/0001-ipvsadm-catch-the-original-errno-from-netlink-answer.patch @@ -0,0 +1,80 @@ +From f8cff0808a24b1dd141e86cc8039108aa1763071 Mon Sep 17 00:00:00 2001 +From: Julian Anastasov +Date: Sat, 5 Aug 2017 14:38:28 +0300 +Subject: [PATCH 1/2] ipvsadm: catch the original errno from netlink answer + +nl_recvmsgs_default() returns NLE_* error codes and not +errno values. As result, attempt to delete virtual service +returns NLE_OBJ_NOTFOUND (12) which matches the ENOMEM value. + +Problem as reported by Emanuele Rocca: + +ipvsadm -D -t example.org:80 +Memory allocation problem + +Fix it by providing generic error handler to catch the errno +value as returned in netlink answer. By this way all netlink +commands will get proper error string. The problem is present +only when ipvsadm is compiled with libnl. + +ipvsadm -D -t example.org:80 +No such service + +Reported-by: Emanuele Rocca +Signed-off-by: Julian Anastasov +Signed-off-by: Jesper Dangaard Brouer +--- + libipvs/libipvs.c | 22 +++++++++++++++++++++- + 1 file changed, 21 insertions(+), 1 deletion(-) + +diff --git a/libipvs/libipvs.c b/libipvs/libipvs.c +index 180ea42..d271c48 100644 +--- a/libipvs/libipvs.c ++++ b/libipvs/libipvs.c +@@ -74,9 +74,23 @@ static int ipvs_nl_noop_cb(struct nl_msg *msg, void *arg) + return NL_OK; + } + ++struct cb_err_data { ++ int err; ++}; ++ ++static int ipvs_nl_err_cb(struct sockaddr_nl *nla, struct nlmsgerr *nlerr, ++ void *arg) ++{ ++ struct cb_err_data *data = arg; ++ ++ data->err = nlerr->error; ++ return -nl_syserr2nlerr(nlerr->error); ++} ++ + int ipvs_nl_send_message(struct nl_msg *msg, nl_recvmsg_msg_cb_t func, void *arg) + { + int err = EINVAL; ++ struct cb_err_data err_data = { .err = 0 }; + + sock = nl_socket_alloc(); + if (!sock) { +@@ -100,12 +114,18 @@ int ipvs_nl_send_message(struct nl_msg *msg, nl_recvmsg_msg_cb_t func, void *arg + + if (nl_socket_modify_cb(sock, NL_CB_VALID, NL_CB_CUSTOM, func, arg) != 0) + goto fail_genl; ++ if (nl_socket_modify_err_cb(sock, NL_CB_CUSTOM, ipvs_nl_err_cb, ++ &err_data) != 0) ++ goto fail_genl; + + if (nl_send_auto_complete(sock, msg) < 0) + goto fail_genl; + +- if ((err = -nl_recvmsgs_default(sock)) > 0) ++ if (nl_recvmsgs_default(sock) < 0) { ++ if (err_data.err) ++ err = -err_data.err; + goto fail_genl; ++ } + + nlmsg_free(msg); + +-- +2.14.3 + diff --git a/SOURCES/0002-libipvs-discrepancy-with-libnl-genlmsg_put.patch b/SOURCES/0002-libipvs-discrepancy-with-libnl-genlmsg_put.patch new file mode 100644 index 0000000..09e0b3d --- /dev/null +++ b/SOURCES/0002-libipvs-discrepancy-with-libnl-genlmsg_put.patch @@ -0,0 +1,40 @@ +From 76c1270148161242f240d9a00746cf06d916b3e3 Mon Sep 17 00:00:00 2001 +From: Arthur Gautier +Date: Wed, 27 Sep 2017 15:31:05 +0000 +Subject: [PATCH 2/2] libipvs: discrepancy with libnl genlmsg_put + +There is a mixup between NL_AUTO_PORT and NL_AUTO_PID. The +first should be used with genlmsg_put while the second with +nlmsg_put. + +This is not a problem, because both NL_AUTO_PORT and NL_AUTO_PID +have the same value, but still a discrepancy with libnl documentation. + +see documentation of genlmsg_put here: + http://www.infradead.org/~tgr/libnl/doc/api/group__genl.html#ga9a86a71bbba6961d41b8a75f62f9e946 + +Cc: Julian Anastasov +Cc: Simon Horman +Cc: Jesper Dangaard Brouer +Signed-off-by: Arthur Gautier +Signed-off-by: Jesper Dangaard Brouer +--- + libipvs/libipvs.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libipvs/libipvs.c b/libipvs/libipvs.c +index d271c48..a843243 100644 +--- a/libipvs/libipvs.c ++++ b/libipvs/libipvs.c +@@ -63,7 +63,7 @@ struct nl_msg *ipvs_nl_message(int cmd, int flags) + if (!msg) + return NULL; + +- genlmsg_put(msg, NL_AUTO_PID, NL_AUTO_SEQ, family, 0, flags, ++ genlmsg_put(msg, NL_AUTO_PORT, NL_AUTO_SEQ, family, 0, flags, + cmd, IPVS_GENL_VERSION); + + return msg; +-- +2.14.3 + diff --git a/SOURCES/0003-ipvsadm-use-CFLAGS-and-LDFLAGS-environment-variables.patch b/SOURCES/0003-ipvsadm-use-CFLAGS-and-LDFLAGS-environment-variables.patch new file mode 100644 index 0000000..20e0cbe --- /dev/null +++ b/SOURCES/0003-ipvsadm-use-CFLAGS-and-LDFLAGS-environment-variables.patch @@ -0,0 +1,52 @@ +From 25d7aa2faef0c36f053ee1ba418fe14022ef6f7c Mon Sep 17 00:00:00 2001 +From: Ryan O'Hara +Date: Tue, 27 Feb 2018 11:49:44 -0600 +Subject: [PATCH] ipvsadm: use CFLAGS and LDFLAGS environment variables + +Signed-off-by: Ryan O'Hara +--- + Makefile | 6 +++--- + libipvs/Makefile | 2 +- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/Makefile b/Makefile +index 91a2991..2a1d179 100644 +--- a/Makefile ++++ b/Makefile +@@ -46,9 +46,9 @@ INSTALL = install + STATIC_LIBS = libipvs/libipvs.a + + ifeq "${ARCH}" "sparc64" +- CFLAGS = -Wall -Wunused -Wstrict-prototypes -g -m64 -pipe -mcpu=ultrasparc -mcmodel=medlow ++ CFLAGS += -Wall -Wunused -Wstrict-prototypes -g -m64 -pipe -mcpu=ultrasparc -mcmodel=medlow + else +- CFLAGS = -Wall -Wunused -Wstrict-prototypes -g ++ CFLAGS += -Wall -Wunused -Wstrict-prototypes -g + endif + + +@@ -87,7 +87,7 @@ libs: + make -C libipvs + + ipvsadm: $(OBJS) $(STATIC_LIBS) +- $(CC) $(CFLAGS) -o $@ $^ $(LIBS) ++ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) + + install: all + if [ ! -d $(SBIN) ]; then $(MKDIR) -p $(SBIN); fi +diff --git a/libipvs/Makefile b/libipvs/Makefile +index f845c8b..780f3f3 100644 +--- a/libipvs/Makefile ++++ b/libipvs/Makefile +@@ -1,7 +1,7 @@ + # Makefile for libipvs + + CC = gcc +-CFLAGS = -Wall -Wunused -Wstrict-prototypes -g -fPIC ++CFLAGS += -Wall -Wunused -Wstrict-prototypes -g -fPIC + ifneq (0,$(HAVE_NL)) + CFLAGS += -DLIBIPVS_USE_NL + CFLAGS += $(shell \ +-- +2.14.3 + diff --git a/SOURCES/ipvsadm-config b/SOURCES/ipvsadm-config new file mode 100644 index 0000000..34251a3 --- /dev/null +++ b/SOURCES/ipvsadm-config @@ -0,0 +1,23 @@ +# Unload modules on restart and stop +# Value: yes|no, default: yes +# This option has to be 'yes' to get to a sane state for a ipvs +# restart or stop. Only set to 'no' if there are problems unloading ipvs +# modules. +IPVS_MODULES_UNLOAD="yes" + +# Save current ipvs rules on stop. +# Value: yes|no, default: no +# Saves all ipvs rules to /etc/sysconfig/ipvsadm if ipvsadm gets stopped +# (e.g. on system shutdown). +IPVS_SAVE_ON_STOP="no" + +# Save current ipvs rules on restart. +# Value: yes|no, default: no +# Saves all ipvs rules to /etc/sysconfig/ipvsadm if ipvsadm gets +# restarted. +IPVS_SAVE_ON_RESTART="no" + +# Numeric status output +# Value: yes|no, default: yes +# Print IP addresses and port numbers in numeric format in the status output. +IPVS_STATUS_NUMERIC="yes" diff --git a/SOURCES/ipvsadm.service b/SOURCES/ipvsadm.service new file mode 100644 index 0000000..a1d497f --- /dev/null +++ b/SOURCES/ipvsadm.service @@ -0,0 +1,14 @@ +[Unit] +Description=Initialise the Linux Virtual Server +After=syslog.target network.target + +[Service] +Type=oneshot +ExecStart=/bin/bash -c "exec /sbin/ipvsadm-restore < /etc/sysconfig/ipvsadm" +ExecStop=/bin/bash -c "exec /sbin/ipvsadm-save -n > /etc/sysconfig/ipvsadm" +ExecStop=/sbin/ipvsadm -C +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target + diff --git a/SPECS/ipvsadm.spec b/SPECS/ipvsadm.spec new file mode 100644 index 0000000..4addadd --- /dev/null +++ b/SPECS/ipvsadm.spec @@ -0,0 +1,300 @@ +Name: ipvsadm +Summary: Utility to administer the Linux Virtual Server +Version: 1.29 +Release: 8%{?dist} +License: GPLv2+ +URL: https://kernel.org/pub/linux/utils/kernel/ipvsadm/ + +Source0: https://kernel.org/pub/linux/utils/kernel/ipvsadm/%{name}-%{version}.tar.gz +Source1: ipvsadm.service +Source2: ipvsadm-config + +Patch1: 0001-ipvsadm-catch-the-original-errno-from-netlink-answer.patch +Patch2: 0002-libipvs-discrepancy-with-libnl-genlmsg_put.patch +Patch3: 0003-ipvsadm-use-CFLAGS-and-LDFLAGS-environment-variables.patch + +BuildRequires: gcc +Buildrequires: libnl3-devel +Buildrequires: popt-devel +BuildRequires: systemd + +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd + +%description +ipvsadm is used to setup, maintain, and 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 transport layer (layer-4) protocols (TCP and UDP) + - three packet-forwarding methods (NAT, tunneling, and direct routing) + - eight load balancing algorithms (round robin, weighted round robin, + least-connection, weighted least-connection, locality-based + least-connection, locality-based least-connection with + replication, destination-hashing, and source-hashing) + +%prep +%setup -q +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 + +%build +%set_build_flags +%{__make} + +%install +%{__rm} -rf %{buildroot} +%{__mkdir_p} %{buildroot}%{_sysconfdir}/rc.d/init.d +%{__make} install BUILD_ROOT=%{buildroot}%{_prefix} SBIN=%{buildroot}%{_sbindir} MANDIR=%{buildroot}%{_mandir} MAN=%{buildroot}%{_mandir}/man8 INIT=%{buildroot}%{_sysconfdir}/rc.d/init.d + +%{__rm} -f %{buildroot}%{_sysconfdir}/rc.d/init.d/%{name} +%{__install} -p -D -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service +%{__install} -p -D -m 0600 %{SOURCE2} %{buildroot}%{_sysconfdir}/sysconfig/%{name}-config + +%post +%systemd_post %{name}.service + +%preun +%systemd_preun %{name}.service + +%postun +%systemd_postun_with_restart %{name}.service + +%files +%defattr(-,root,root,-) +%doc MAINTAINERS README +%{_unitdir}/%{name}.service +%config(noreplace) %{_sysconfdir}/sysconfig/%{name}-config +%{_sbindir}/%{name} +%{_sbindir}/%{name}-restore +%{_sbindir}/%{name}-save +%{_mandir}/man8/%{name}.8* +%{_mandir}/man8/%{name}-restore.8* +%{_mandir}/man8/%{name}-save.8* + +%changelog +* Tue Feb 27 2018 Ryan O'Hara - 1.29-8 +- Use CFLAGS and LDFLAGS environment variables (#1543790) + +* Fri Feb 23 2018 Ryan O'Hara - 1.29-7 +- Add %set_build_flags (#1543790) + +* Wed Feb 07 2018 Fedora Release Engineering - 1.29-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Mon Feb 05 2018 Ryan O'Hara - 1.29-5 +- Catch the original errno from netlink answer (#1526813) + +* Wed Aug 02 2017 Fedora Release Engineering - 1.29-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 1.29-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Feb 10 2017 Fedora Release Engineering - 1.29-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Dec 29 2016 Ryan O'Hara - 1.29-1 +- Update to 1.29 (#1408437) + +* Thu Feb 04 2016 Fedora Release Engineering - 1.28-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Jun 17 2015 Fedora Release Engineering - 1.28-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Mon Feb 09 2015 Ryan O'Hara - 1.28-1 +- Update to 1.28 + +* Sat Aug 16 2014 Fedora Release Engineering - 1.27-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 1.27-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed May 21 2014 Ryan O'Hara - 1.27-5 +- Fix ipvsadm to show backup sync daemon + +* Tue May 20 2014 Ryan O'Hara - 1.27-4 +- Fix compiler warnings + +* Mon May 19 2014 Ryan O'Hara - 1.27-3 +- Update spec file and fix install paths + +* Fri Nov 22 2013 Xose Vazquez Perez - 1.27-2 +- Link with libnl3 + +* Fri Sep 06 2013 Ryan O'Hara - 1.27-1 +- Update to 1.27 + +* Sat Aug 03 2013 Fedora Release Engineering - 1.26-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Wed Mar 20 2013 Ryan O'Hara - 1.26-8 +- Use new systemd-rpm macros in ipvsadm spec file (#850168). + +* Thu Feb 14 2013 Fedora Release Engineering - 1.26-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Thu Jul 19 2012 Fedora Release Engineering - 1.26-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Mon Jul 9 2012 Ryan O'Hara - 1.26-5 +- Fix list_daemon to not assume sync daemon status is ordered (#805208). + +* Thu Apr 19 2012 Jon Ciesla - 1.26-4 +- Migrate to systemd, BZ 720175. + +* Fri Jan 13 2012 Fedora Release Engineering - 1.26-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Mon Jul 11 2011 Matthias Saou 1.26-2 +- Backport the init script from RHEL6, which contains lots of changes to make + it behave simlarly to the iptables init script (#593276). + +* Sat Jul 9 2011 Matthias Saou 1.26-1 +- Update to 1.26 (#676167). +- Remove upstreamed Makefile and activeconns patchs, rebase popt patch. + +* Wed Feb 09 2011 Fedora Release Engineering - 1.25-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Thu Apr 29 2010 Matthias Saou 1.25-5 +- Include patch to fix activeconns when using the netlink interface (#573921). + +* Fri Jul 24 2009 Fedora Release Engineering - 1.25-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Wed Feb 25 2009 Fedora Release Engineering - 1.25-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Wed Dec 24 2008 Matthias Saou 1.25-2 +- Fork the included init script to be (mostly) LSB compliant (#246955). + +* Mon Dec 22 2008 Matthias Saou 1.25-1 +- Prepare update to 1.25 for when devel will update to kernel 2.6.28. +- Build require libnl-devel and popt-devel (+ patch to fix popt detection). + +* Tue Feb 19 2008 Fedora Release Engineering +- Autorebuild for GCC 4.3 + +* Mon Oct 22 2007 Matthias Saou 1.24-10 +- Update to latest upstream sources. Same filename, but updated content! +- Update kernhdr patch for it to still apply, update ip_vs.h from 1.2.0 to + 1.2.1 from kernel 2.6.23.1. + +* Fri Aug 24 2007 Matthias Saou 1.24-9 +- Spec file cleanup. +- Update License field. +- Don't "chkconfig --del" upon update. +- Add missing kernel-headers build requirement. +- Update URL and Source locations. +- Remove outdated piranha obsoletes, it has never been part of any Fedora. +- No longer mark init script as config. +- Include Makefile patch to prevent stripping and install init script. +- The init script could use a rewrite... leave that one for later. + +* Wed Jul 12 2006 Jesse Keating - 1.24-8.1 +- rebuild + +* Mon May 15 2006 Phil Knirsch - 1.24-8 +- Added missing prereq to chkconfig + +* Fri Feb 10 2006 Jesse Keating - 1.24-7.2.1 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 1.24-7.2 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Mon Mar 14 2005 Lon Hohberger 1.24-7 +- rebuilt + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Tue Mar 16 2004 Mike McLean 1.24-4.2.ipvs120 +- bump release + +* Tue Mar 02 2004 Mike McLean 1.24-4.1.ipvs120 +- update to new version for 2.6 kernel + +* Thu Jan 08 2004 Mike McLean 1.21-10.ipvs108 +- fixing a minor bug/typo in output format processing + +* Wed Aug 06 2003 Mike McLean 1.21-9.ipvs108 +- Dropping kernel-source BuildRequires and including a local copy of + net/ip_vs.h to compensate. +- Incorporating some upstream changes, most notably the --sort option. + +* Fri Jun 13 2003 Mike McLean 1.21-8 +- dropping ppc from excluded arches + +* Fri Apr 4 2003 Mike McLean 1.21-7 +- changing %%ExcludeArch + +* Fri Apr 4 2003 Mike McLean 1.21-6 +- added BuildRequires: kernel-source +- escaped all %% characters in %%changelog + +* Mon Dec 2 2002 Mike McLean 1.21-5 +- Improved the description in the ipvsadm initscript. +- fixed Buildroot to use _tmppath + +* Wed Aug 21 2002 Philip Copeland 1.21-4 +- Argh,.. %%docdir was defined which overrode what I'd + intended to happen + +* Thu Aug 1 2002 Philip Copeland +- Ah... the manuals were being pushed into /usr/man + instead of /usr/share/man. Fixed. + +* Tue Jul 16 2002 Philip Copeland +- Minor Makefile tweak so that we do a minimal hunt for to find + the ip_vs.h file location + +* Sun Dec 16 2001 Wensong Zhang +- Changed to install ipvsadm man pages according to the %%{_mandir} + +* Sat Dec 30 2000 Wensong Zhang +- update the %%file section + +* Sun Dec 17 2000 Wensong Zhang +- Added a if-condition to keep both new or old rpm utility building + the package happily. + +* Tue Dec 12 2000 P.opeland +- Small modifications to make the compiler happy in RH7 and the Alpha +- Fixed the documentation file that got missed off in building + the rpm +- Made a number of -pedantic mods though popt will not compile with + -pedantic + +* Wed Aug 9 2000 Horms +- Removed Obseletes tag as ipvsadm is back in /sbin where it belongs + as it is more or less analogous to both route and ipchains both of + which reside in /sbin. +- Create directory to install init script into. Init scripts won't install + into build directory unless this is done + +* Thu Jul 6 2000 Wensong Zhang +- Changed to build rpms on the ipvsadm tar ball directly + +* Wed Jun 21 2000 P.Copeland +- fixed silly install permission settings + +* Mon Jun 19 2000 P.Copeland +- Added 'dist' and 'rpms' to the Makefile +- Added Obsoletes tag since there were early versions + of ipvsadm-*.rpm that installed in /sbin +- Obsolete tag was a bit vicious re: piranha + +* Mon Apr 10 2000 Horms +- created for version 1.9 +