Compare commits
No commits in common. "d3b87d575341998cf98b7658203a3a6c0ce370b1" and "b1ba6466332f78b35a18b2a8e87a138ef5c1a3bc" have entirely different histories.
d3b87d5753
...
b1ba646633
BIN
ipvsadm-1.29.tar.gz
Normal file
BIN
ipvsadm-1.29.tar.gz
Normal file
Binary file not shown.
Binary file not shown.
80
ipvsadm-catch-the-original-errno-from-netlink-answer.patch
Normal file
80
ipvsadm-catch-the-original-errno-from-netlink-answer.patch
Normal 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
|
||||||
|
|
||||||
@ -1,23 +0,0 @@
|
|||||||
# 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"
|
|
||||||
47
ipvsadm.spec
47
ipvsadm.spec
@ -1,14 +1,15 @@
|
|||||||
Name: ipvsadm
|
Name: ipvsadm
|
||||||
Version: 1.31
|
Version: 1.29
|
||||||
Release: 6
|
Release: 11
|
||||||
Summary: A utility to administer the IP virtual server services
|
Summary: A utility to administer the IP virtual server services
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
URL: https://kernel.org/pub/linux/utils/kernel/ipvsadm/
|
URL: https://kernel.org/pub/linux/utils/kernel/ipvsadm/
|
||||||
Source0: https://kernel.org/pub/linux/utils/kernel/ipvsadm/%{name}-%{version}.tar.gz
|
Source0: https://kernel.org/pub/linux/utils/kernel/ipvsadm/%{name}-%{version}.tar.gz
|
||||||
Source1: ipvsadm.service
|
Source1: ipvsadm.service
|
||||||
Source2: ipvsadm-config
|
|
||||||
|
|
||||||
Patch6000: ipvsadm-use-CFLAGS-and-LDFLAGS-environment-variables.patch
|
Patch6000: ipvsadm-catch-the-original-errno-from-netlink-answer.patch
|
||||||
|
Patch6001: libipvs-discrepancy-with-libnl-genlmsg_put.patch
|
||||||
|
Patch6002: ipvsadm-use-CFLAGS-and-LDFLAGS-environment-variables.patch
|
||||||
|
|
||||||
BuildRequires: gcc libnl3-devel popt-devel systemd
|
BuildRequires: gcc libnl3-devel popt-devel systemd
|
||||||
Requires(post): systemd
|
Requires(post): systemd
|
||||||
@ -26,11 +27,7 @@ offered by the Linux kernel with IP virtual server support.
|
|||||||
|
|
||||||
%build
|
%build
|
||||||
%set_build_flags
|
%set_build_flags
|
||||||
%if "%{?toolchain}" == "clang"
|
make
|
||||||
%global make_opts CC=clang CXX=clang++
|
|
||||||
%endif
|
|
||||||
|
|
||||||
make %{?make_opts}
|
|
||||||
|
|
||||||
%install
|
%install
|
||||||
rm -rf %{buildroot}
|
rm -rf %{buildroot}
|
||||||
@ -38,7 +35,6 @@ 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
|
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}
|
rm -f %{buildroot}%{_sysconfdir}/rc.d/init.d/%{name}
|
||||||
install -p -D -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service
|
install -p -D -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service
|
||||||
install -p -D -m 0600 %{SOURCE2} %{buildroot}%{_sysconfdir}/sysconfig/%{name}-config
|
|
||||||
|
|
||||||
%preun
|
%preun
|
||||||
%systemd_preun %{name}.service
|
%systemd_preun %{name}.service
|
||||||
@ -54,42 +50,11 @@ install -p -D -m 0600 %{SOURCE2} %{buildroot}%{_sysconfdir}/sysconfig/%{name}-co
|
|||||||
%doc MAINTAINERS README
|
%doc MAINTAINERS README
|
||||||
%{_sbindir}/ipvsadm*
|
%{_sbindir}/ipvsadm*
|
||||||
%{_unitdir}/ipvsadm.service
|
%{_unitdir}/ipvsadm.service
|
||||||
%config(noreplace) %{_sysconfdir}/sysconfig/%{name}-config
|
|
||||||
|
|
||||||
%files help
|
%files help
|
||||||
%{_mandir}/man8/*8*
|
%{_mandir}/man8/*8*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Fri Apr 14 2023 jammyjellyfish <jammyjellyfish255@outlook.com> - 1.31-6
|
|
||||||
- Type: requirement
|
|
||||||
- ID: NA
|
|
||||||
- SUG: NA
|
|
||||||
- DESC: Support specify CC
|
|
||||||
|
|
||||||
* Fri Apr 22 2022 kwb0523 <kwb0523@163.com> - 1.31-5
|
|
||||||
- Type: requirement
|
|
||||||
- ID: NA
|
|
||||||
- SUG: NA
|
|
||||||
- DESC: update to 1.31-5
|
|
||||||
|
|
||||||
* Mon Jul 27 2020 zhouxuodng <zhouxudong8@huawei.com> - 1.31-2
|
|
||||||
- Type: requirement
|
|
||||||
- ID: NA
|
|
||||||
- SUG: NA
|
|
||||||
- DESC: add yaml
|
|
||||||
|
|
||||||
* Mon Apr 20 2020 zhouxudong <zhouxudong8@huawei.com> - 1.31-1
|
|
||||||
- Type: requirement
|
|
||||||
- ID: NA
|
|
||||||
- SUG: NA
|
|
||||||
- DESC: update to 1.31
|
|
||||||
|
|
||||||
* Mon Mar 02 2020 wangxiaopeng <wangxiaopeng7@huawei.com> - 1.29-12
|
|
||||||
- Type:bugfix
|
|
||||||
- ID:NA
|
|
||||||
- SUG:NA
|
|
||||||
- DESC:sync ipvsadm for next branch
|
|
||||||
|
|
||||||
* Mon Dec 30 2019 openEuler Buildteam <buildteam@openeuler.org> - 1.29-11
|
* Mon Dec 30 2019 openEuler Buildteam <buildteam@openeuler.org> - 1.29-11
|
||||||
- Type:bugfix
|
- Type:bugfix
|
||||||
- ID:NA
|
- ID:NA
|
||||||
|
|||||||
@ -1,4 +0,0 @@
|
|||||||
version_control: git
|
|
||||||
src_repo: https://git.kernel.org/pub/scm/utils/kernel/ipvsadm/ipvsadm.git
|
|
||||||
tag_prefix: ^v
|
|
||||||
seperator: .
|
|
||||||
40
libipvs-discrepancy-with-libnl-genlmsg_put.patch
Normal file
40
libipvs-discrepancy-with-libnl-genlmsg_put.patch
Normal 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
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user