keepalived/RHEL-7699.patch
Christine Caulfield fe27bc8135 * Fri Jan 31 2025 Christine Caulfield <ccaulfie@redhat.com> - 2.1.5-11
- ipvs: Allow real servers to be specified with a weight of 0
  Resolves: RHEL-7699
- vrrp: Fix using VMACs with unicast peers
  Resolves: RHEL-7694
- lvs: if lost misc check child register checker again
  Resolves: RHEL-66742
2025-01-31 10:00:03 +00:00

41 lines
1.3 KiB
Diff

commit e2b4d108d68ada3af8ad437e2e291fcac1fd0ff7
Author: Quentin Armitage <quentin@armitage.org.uk>
Date: Tue Oct 20 11:24:48 2020 +0100
ipvs: Allow real servers to be specified with a weight of 0
This currently only really makes sense when also having a FILE_CHECK
with non-zero weight configured, or a MISC_CHECK with "misc_dynamic",
since otherwise there is no way that the weight of the real server can
be changed to be non-zero.
Signed-off-by: Quentin Armitage <quentin@armitage.org.uk>
diff --git a/keepalived/check/ipwrapper.c b/keepalived/check/ipwrapper.c
index a4c40d6c..4b9ccb6f 100644
--- a/keepalived/check/ipwrapper.c
+++ b/keepalived/check/ipwrapper.c
@@ -410,8 +410,8 @@ init_service_rs(virtual_server_t *vs)
rs->num_failed_checkers++;
}
- if (rs->effective_weight < 1)
- rs->weight = 1;
+ if (rs->effective_weight < 0)
+ rs->weight = 0;
else if (rs->effective_weight > IPVS_WEIGHT_MAX - 1)
rs->weight = IPVS_WEIGHT_MAX - 1;
else
@@ -667,9 +667,8 @@ update_svr_wgt(int weight, virtual_server_t * vs, real_server_t * rs
{
rs->effective_weight = weight;
-/* TODO - handle weight = 0 - ? affects quorum */
- if (weight <= 0)
- weight = 1;
+ if (weight < 0)
+ weight = 0;
#if IPVS_WEIGHT_MAX != INT_MAX
else if (weight > IPVS_WEIGHT_MAX)
weight = IPVS_WEIGHT_MAX;