import ipvsadm-1.29-8.el8

This commit is contained in:
CentOS Sources 2019-05-07 08:27:16 -04:00 committed by Andrew Lukoshko
commit 825b1a0d02
8 changed files with 511 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
SOURCES/ipvsadm-1.29.tar.gz

1
.ipvsadm.metadata Normal file
View File

@ -0,0 +1 @@
ec2ab7537d9bfa0de6c5bb69730da37099270cc8 SOURCES/ipvsadm-1.29.tar.gz

View File

@ -0,0 +1,80 @@
From f8cff0808a24b1dd141e86cc8039108aa1763071 Mon Sep 17 00:00:00 2001
From: Julian Anastasov <ja@ssi.bg>
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 <ema@wikimedia.org>
Signed-off-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
---
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

View File

@ -0,0 +1,40 @@
From 76c1270148161242f240d9a00746cf06d916b3e3 Mon Sep 17 00:00:00 2001
From: Arthur Gautier <baloo@gandi.net>
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 <ja@ssi.bg>
Cc: Simon Horman <horms@verge.net.au>
Cc: Jesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: Arthur Gautier <baloo@gandi.net>
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
---
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

View File

@ -0,0 +1,52 @@
From 25d7aa2faef0c36f053ee1ba418fe14022ef6f7c Mon Sep 17 00:00:00 2001
From: Ryan O'Hara <rohara@redhat.com>
Date: Tue, 27 Feb 2018 11:49:44 -0600
Subject: [PATCH] ipvsadm: use CFLAGS and LDFLAGS environment variables
Signed-off-by: Ryan O'Hara <rohara@redhat.com>
---
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

23
SOURCES/ipvsadm-config Normal file
View File

@ -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"

14
SOURCES/ipvsadm.service Normal file
View File

@ -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

300
SPECS/ipvsadm.spec Normal file
View File

@ -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 <rohara@redhat.com> - 1.29-8
- Use CFLAGS and LDFLAGS environment variables (#1543790)
* Fri Feb 23 2018 Ryan O'Hara <rohara@redhat.com> - 1.29-7
- Add %set_build_flags (#1543790)
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.29-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Mon Feb 05 2018 Ryan O'Hara <rohara@redhat.com> - 1.29-5
- Catch the original errno from netlink answer (#1526813)
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.29-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.29-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.29-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Thu Dec 29 2016 Ryan O'Hara <rohara@redhat.com> - 1.29-1
- Update to 1.29 (#1408437)
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.28-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.28-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Mon Feb 09 2015 Ryan O'Hara <rohara@redhat.com> - 1.28-1
- Update to 1.28
* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.27-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.27-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Wed May 21 2014 Ryan O'Hara <rohara@redhat.com> - 1.27-5
- Fix ipvsadm to show backup sync daemon
* Tue May 20 2014 Ryan O'Hara <rohara@redhat.com> - 1.27-4
- Fix compiler warnings
* Mon May 19 2014 Ryan O'Hara <rohara@redhat.com> - 1.27-3
- Update spec file and fix install paths
* Fri Nov 22 2013 Xose Vazquez Perez <xose.vazquez@gmail.com> - 1.27-2
- Link with libnl3
* Fri Sep 06 2013 Ryan O'Hara <rohara@redhat.com> - 1.27-1
- Update to 1.27
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.26-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Wed Mar 20 2013 Ryan O'Hara <rohara@redhat.com> - 1.26-8
- Use new systemd-rpm macros in ipvsadm spec file (#850168).
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.26-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.26-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Mon Jul 9 2012 Ryan O'Hara <rohara@redhat.com> - 1.26-5
- Fix list_daemon to not assume sync daemon status is ordered (#805208).
* Thu Apr 19 2012 Jon Ciesla <limburgher@gmail.com> - 1.26-4
- Migrate to systemd, BZ 720175.
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.26-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
* Mon Jul 11 2011 Matthias Saou <http://freshrpms.net/> 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 <http://freshrpms.net/> 1.26-1
- Update to 1.26 (#676167).
- Remove upstreamed Makefile and activeconns patchs, rebase popt patch.
* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.25-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Thu Apr 29 2010 Matthias Saou <http://freshrpms.net/> 1.25-5
- Include patch to fix activeconns when using the netlink interface (#573921).
* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.25-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
* Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.25-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
* Wed Dec 24 2008 Matthias Saou <http://freshrpms.net/> 1.25-2
- Fork the included init script to be (mostly) LSB compliant (#246955).
* Mon Dec 22 2008 Matthias Saou <http://freshrpms.net/> 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 <rel-eng@fedoraproject.org>
- Autorebuild for GCC 4.3
* Mon Oct 22 2007 Matthias Saou <http://freshrpms.net/> 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 <http://freshrpms.net/> 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 <jkeating@redhat.com> - 1.24-8.1
- rebuild
* Mon May 15 2006 Phil Knirsch <pknirsch@redhat.com> - 1.24-8
- Added missing prereq to chkconfig
* Fri Feb 10 2006 Jesse Keating <jkeating@redhat.com> - 1.24-7.2.1
- bump again for double-long bug on ppc(64)
* Tue Feb 07 2006 Jesse Keating <jkeating@redhat.com> - 1.24-7.2
- rebuilt for new gcc4.1 snapshot and glibc changes
* Fri Dec 09 2005 Jesse Keating <jkeating@redhat.com>
- rebuilt
* Mon Mar 14 2005 Lon Hohberger <lhh@redhat.com> 1.24-7
- rebuilt
* Tue Jun 15 2004 Elliot Lee <sopwith@redhat.com>
- rebuilt
* Tue Mar 16 2004 Mike McLean <mikem@redhat.com> 1.24-4.2.ipvs120
- bump release
* Tue Mar 02 2004 Mike McLean <mikem@redhat.com> 1.24-4.1.ipvs120
- update to new version for 2.6 kernel
* Thu Jan 08 2004 Mike McLean <mikem@redhat.com> 1.21-10.ipvs108
- fixing a minor bug/typo in output format processing
* Wed Aug 06 2003 Mike McLean <mikem@redhat.com> 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 <mikem@redhat.com> 1.21-8
- dropping ppc from excluded arches
* Fri Apr 4 2003 Mike McLean <mikem@redhat.com> 1.21-7
- changing %%ExcludeArch
* Fri Apr 4 2003 Mike McLean <mikem@redhat.com> 1.21-6
- added BuildRequires: kernel-source
- escaped all %% characters in %%changelog
* Mon Dec 2 2002 Mike McLean <mikem@redhat.com> 1.21-5
- Improved the description in the ipvsadm initscript.
- fixed Buildroot to use _tmppath
* Wed Aug 21 2002 Philip Copeland <bryce@redhat.com> 1.21-4
- Argh,.. %%docdir was defined which overrode what I'd
intended to happen
* Thu Aug 1 2002 Philip Copeland <bryce@redhat.com>
- Ah... the manuals were being pushed into /usr/man
instead of /usr/share/man. Fixed.
* Tue Jul 16 2002 Philip Copeland <bryce@redhat.com>
- 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 <wensong@linuxvirtualserver.org>
- Changed to install ipvsadm man pages according to the %%{_mandir}
* Sat Dec 30 2000 Wensong Zhang <wensong@linuxvirtualserver.org>
- update the %%file section
* Sun Dec 17 2000 Wensong Zhang <wensong@linuxvirtualserver.org>
- Added a if-condition to keep both new or old rpm utility building
the package happily.
* Tue Dec 12 2000 P.opeland <bryce@redhat.com>
- 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 <horms@vergenet.net>
- 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 <wensong@linuxvirtualserver.org>
- Changed to build rpms on the ipvsadm tar ball directly
* Wed Jun 21 2000 P.Copeland <copeland@redhat.com>
- fixed silly install permission settings
* Mon Jun 19 2000 P.Copeland <copeland@redhat.com>
- 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 <horms@vergenet.net>
- created for version 1.9