summaryrefslogtreecommitdiffstats
path: root/src/plugins/lb
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/lb')
-rw-r--r--src/plugins/lb/api.c12
-rw-r--r--src/plugins/lb/lb.api9
-rw-r--r--src/plugins/lb/lb_test.c2
3 files changed, 16 insertions, 7 deletions
diff --git a/src/plugins/lb/api.c b/src/plugins/lb/api.c
index 07476be70fd..953654cd956 100644
--- a/src/plugins/lb/api.c
+++ b/src/plugins/lb/api.c
@@ -16,6 +16,7 @@
#include <lb/lb.h>
#include <vppinfra/byte_order.h>
+#include <vppinfra/string.h>
#include <vlibapi/api.h>
#include <vlibapi/api.h>
#include <vlibmemory/api.h>
@@ -79,8 +80,15 @@ vl_api_lb_conf_t_handler
vl_api_lb_conf_reply_t * rmp;
int rv = 0;
+ if (mp->sticky_buckets_per_core == ~0) {
+ mp->sticky_buckets_per_core = lbm->per_cpu_sticky_buckets;
+ }
+ if (mp->flow_timeout == ~0) {
+ mp->flow_timeout = lbm->flow_timeout;
+ }
+
rv = lb_conf((ip4_address_t *)&mp->ip4_src_address,
- (ip6_address_t *)mp->ip6_src_address,
+ (ip6_address_t *)&mp->ip6_src_address,
mp->sticky_buckets_per_core,
mp->flow_timeout);
@@ -93,7 +101,7 @@ static void *vl_api_lb_conf_t_print
u8 * s;
s = format (0, "SCRIPT: lb_conf ");
s = format (s, "%U ", format_ip4_address, (ip4_address_t *)&mp->ip4_src_address);
- s = format (s, "%U ", format_ip6_address, (ip6_address_t *)mp->ip6_src_address);
+ s = format (s, "%U ", format_ip6_address, (ip6_address_t *)&mp->ip6_src_address);
s = format (s, "%u ", mp->sticky_buckets_per_core);
s = format (s, "%u ", mp->flow_timeout);
FINISH;
diff --git a/src/plugins/lb/lb.api b/src/plugins/lb/lb.api
index d36f857f5de..190e32011b3 100644
--- a/src/plugins/lb/lb.api
+++ b/src/plugins/lb/lb.api
@@ -1,6 +1,7 @@
option version = "1.0.0";
+import "vnet/ip/ip_types.api";
-/** \brief Configure Load-Balancer global parameters
+/** \brief Configure Load-Balancer global parameters (unlike the CLI, both ip4_src_address and ip6_src_address need to be specified.
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param ip4_src_address - IPv4 address to be used as source for IPv4 traffic(applicable in GRE4/GRE6/NAT4/NAT6 mode only).
@@ -14,8 +15,8 @@ autoreply define lb_conf
{
u32 client_index;
u32 context;
- u32 ip4_src_address;
- u8 ip6_src_address[16];
+ vl_api_ip4_address_t ip4_src_address;
+ vl_api_ip6_address_t ip6_src_address;
u32 sticky_buckets_per_core;
u32 flow_timeout;
};
@@ -26,7 +27,7 @@ autoreply define lb_conf
@param ip_prefix - IP address (IPv4 in lower order 32 bits).
@param prefix_length - IP prefix length (96 + 'IPv4 prefix length' for IPv4).
@param protocol - tcp or udp.
- @param port - destination port.
+ @param port - destination port. (0) means 'all-port VIP'
@param encap - Encap is ip4 GRE(0) or ip6 GRE(1) or L3DSR(2) or NAT4(3) or NAT6(4).
@param dscp - DSCP bit corresponding to VIP(applicable in L3DSR mode only).
@param type - service type(applicable in NAT4/NAT6 mode only).
diff --git a/src/plugins/lb/lb_test.c b/src/plugins/lb/lb_test.c
index f6016db7e13..cf55aec614f 100644
--- a/src/plugins/lb/lb_test.c
+++ b/src/plugins/lb/lb_test.c
@@ -161,7 +161,7 @@ static int api_lb_conf (vat_main_t * vam)
M(LB_CONF, mp);
clib_memcpy (&(mp->ip4_src_address), &ip4_src_address, sizeof (ip4_src_address));
- clib_memcpy (mp->ip6_src_address, &ip6_src_address, sizeof (ip6_src_address));
+ clib_memcpy (&(mp->ip6_src_address), &ip6_src_address, sizeof (ip6_src_address));
mp->sticky_buckets_per_core = htonl (sticky_buckets_per_core);
mp->flow_timeout = htonl (flow_timeout);