diff options
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/lb/api.c | 12 | ||||
-rw-r--r-- | src/plugins/lb/lb.api | 9 | ||||
-rw-r--r-- | src/plugins/lb/lb_test.c | 2 |
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); |