aboutsummaryrefslogtreecommitdiffstats
path: root/vpp
diff options
context:
space:
mode:
authorAndrej Kozemcak <akozemca@cisco.com>2016-07-27 10:33:38 +0200
committerFlorin Coras <florin.coras@gmail.com>2016-07-27 13:23:24 +0000
commita8691754d2f7cdd960c3d8dc5fbff6367e9c36b8 (patch)
treeb1715a03db89657278630c21b6e4363a905e55e4 /vpp
parent683d3ee1b136060ef38290b6ab3a21c9a4730c4f (diff)
VAT add_locator_set api support multiple locators
Change-Id: I22df3d4407bd7fdd953783f00605380a2d6fb46e Signed-off-by: Andrej Kozemcak <akozemca@cisco.com>
Diffstat (limited to 'vpp')
-rw-r--r--vpp/vpp-api/api.c27
-rw-r--r--vpp/vpp-api/vpe.api2
2 files changed, 28 insertions, 1 deletions
diff --git a/vpp/vpp-api/api.c b/vpp/vpp-api/api.c
index 822b9906..076d16a3 100644
--- a/vpp/vpp-api/api.c
+++ b/vpp/vpp-api/api.c
@@ -4777,27 +4777,52 @@ static void vl_api_vxlan_gpe_tunnel_dump_t_handler
}
}
+/** Used for transferring locators via VPP API */
+typedef CLIB_PACKED(struct
+{
+ u32 sw_if_index; /**< locator sw_if_index */
+ u8 priority; /**< locator priority */
+ u8 weight; /**< locator weight */
+}) ls_locator_t;
+
static void
vl_api_lisp_add_del_locator_set_t_handler(vl_api_lisp_add_del_locator_set_t *mp)
{
vl_api_lisp_add_del_locator_set_reply_t *rmp;
int rv = 0;
vnet_lisp_add_del_locator_set_args_t _a, *a = &_a;
+ locator_t locator;
+ ls_locator_t *ls_loc;
u32 ls_index = ~0;
u8 *locator_name = NULL;
+ int i;
memset(a, 0, sizeof(a[0]));
locator_name = format(0, "%s", mp->locator_set_name);
a->name = locator_name;
- a->locators = NULL;
a->is_add = mp->is_add;
a->local = 1;
+ memset(&locator, 0, sizeof(locator));
+ for (i = 0; i < mp->locator_num; i++) {
+ ls_loc = &((ls_locator_t *) mp->locators)[i];
+ VALIDATE_SW_IF_INDEX(ls_loc);
+
+ locator.sw_if_index = htonl(ls_loc->sw_if_index);
+ locator.priority = ls_loc->priority;
+ locator.weight = ls_loc->weight;
+ locator.local = 1;
+ vec_add1(a->locators, locator);
+ }
+
rv = vnet_lisp_add_del_locator_set(a, &ls_index);
+ BAD_SW_IF_INDEX_LABEL;
+
vec_free(locator_name);
+ vec_free(a->locators);
REPLY_MACRO(VL_API_LISP_ADD_DEL_LOCATOR_SET_REPLY);
}
diff --git a/vpp/vpp-api/vpe.api b/vpp/vpp-api/vpe.api
index 4571c92d..6aa22138 100644
--- a/vpp/vpp-api/vpe.api
+++ b/vpp/vpp-api/vpe.api
@@ -2163,6 +2163,8 @@ define lisp_add_del_locator_set {
u32 context;
u8 is_add;
u8 locator_set_name[64];
+ u32 locator_num;
+ u8 locators[0];
};
/** \brief Reply for locator_set add/del