X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fmap%2Fmap_api.c;h=654e17930645e6a8a9beca3ebe372662485fb6c8;hb=33a58171e5995d9e649b414bfc77f2aab26e4c58;hp=b4f1467d1ac68e0df3895e9ffb6c7fc9df86140c;hpb=2500c79423c7d8d35b4e7b8f50060c09f2f857be;p=vpp.git diff --git a/src/plugins/map/map_api.c b/src/plugins/map/map_api.c index b4f1467d1ac..654e1793064 100644 --- a/src/plugins/map/map_api.c +++ b/src/plugins/map/map_api.c @@ -17,6 +17,7 @@ *------------------------------------------------------------------ */ +#include #include #include #include @@ -54,15 +55,16 @@ vl_api_map_add_domain_t_handler (vl_api_map_add_domain_t * mp) u32 index; u8 flags = 0; + u8 *tag = format (0, "%s", mp->tag); rv = - map_create_domain ((ip4_address_t *) & mp->ip4_prefix.prefix, + map_create_domain ((ip4_address_t *) & mp->ip4_prefix.address, mp->ip4_prefix.len, - (ip6_address_t *) & mp->ip6_prefix.prefix, + (ip6_address_t *) & mp->ip6_prefix.address, mp->ip6_prefix.len, - (ip6_address_t *) & mp->ip6_src.prefix, + (ip6_address_t *) & mp->ip6_src.address, mp->ip6_src.len, mp->ea_bits_len, mp->psid_offset, - mp->psid_length, &index, ntohs (mp->mtu), flags); - + mp->psid_length, &index, ntohs (mp->mtu), flags, tag); + vec_free (tag); /* *INDENT-OFF* */ REPLY_MACRO2(VL_API_MAP_ADD_DOMAIN_REPLY, ({ @@ -103,7 +105,9 @@ vl_api_map_domain_dump_t_handler (vl_api_map_domain_dump_t * mp) vl_api_map_domain_details_t *rmp; map_main_t *mm = &map_main; map_domain_t *d; + map_domain_extra_t *de; vl_api_registration_t *reg; + u32 map_domain_index; if (pool_elts (mm->domains) == 0) return; @@ -115,14 +119,19 @@ vl_api_map_domain_dump_t_handler (vl_api_map_domain_dump_t * mp) /* *INDENT-OFF* */ pool_foreach(d, mm->domains, ({ + map_domain_index = d - mm->domains; + de = vec_elt_at_index(mm->domain_extras, map_domain_index); + int tag_len = clib_min(ARRAY_LEN(rmp->tag), vec_len(de->tag) + 1); + /* Make sure every field is initiated (or don't skip the clib_memset()) */ - rmp = vl_msg_api_alloc (sizeof (*rmp)); + rmp = vl_msg_api_alloc (sizeof (*rmp) + tag_len); + rmp->_vl_msg_id = htons(VL_API_MAP_DOMAIN_DETAILS + mm->msg_id_base); rmp->context = mp->context; - rmp->domain_index = htonl(d - mm->domains); - clib_memcpy(&rmp->ip6_prefix.prefix, &d->ip6_prefix, sizeof(rmp->ip6_prefix.prefix)); - clib_memcpy(&rmp->ip4_prefix.prefix, &d->ip4_prefix, sizeof(rmp->ip4_prefix.prefix)); - clib_memcpy(&rmp->ip6_src.prefix, &d->ip6_src, sizeof(rmp->ip6_src.prefix)); + rmp->domain_index = htonl(map_domain_index); + clib_memcpy(&rmp->ip6_prefix.address, &d->ip6_prefix, sizeof(rmp->ip6_prefix.address)); + clib_memcpy(&rmp->ip4_prefix.address, &d->ip4_prefix, sizeof(rmp->ip4_prefix.address)); + clib_memcpy(&rmp->ip6_src.address, &d->ip6_src, sizeof(rmp->ip6_src.address)); rmp->ip6_prefix.len = d->ip6_prefix_len; rmp->ip4_prefix.len = d->ip4_prefix_len; rmp->ip6_src.len = d->ip6_src_len; @@ -131,6 +140,8 @@ vl_api_map_domain_dump_t_handler (vl_api_map_domain_dump_t * mp) rmp->psid_length = d->psid_length; rmp->flags = d->flags; rmp->mtu = htons(d->mtu); + memcpy(rmp->tag, de->tag, tag_len-1); + rmp->tag[tag_len-1] = '\0'; vl_api_send_msg (reg, (u8 *) rmp); })); @@ -451,7 +462,7 @@ static void int rv; f64 ht_ratio; - ht_ratio = (f64) clib_net_to_host_u64 (mp->ht_ratio); + ht_ratio = (f64) clib_net_to_host_f64 (mp->ht_ratio); if (ht_ratio == ~0) ht_ratio = MAP_IP6_REASS_CONF_HT_RATIO_MAX + 1; @@ -513,7 +524,7 @@ static void vl_api_map_param_set_traffic_class_reply_t *rmp; int rv; - rv = map_param_set_traffic_class (mp->copy, mp->class); + rv = map_param_set_traffic_class (mp->copy, mp->tc_class); REPLY_MACRO (VL_API_MAP_PARAM_SET_TRAFFIC_CLASS_REPLY); } @@ -577,15 +588,13 @@ vl_api_map_param_get_t_handler (vl_api_map_param_get_t * mp) clib_net_to_host_u16 (mm->ip4_reass_conf_lifetime_ms); rmp->ip4_pool_size = clib_net_to_host_u16 (mm->ip4_reass_conf_pool_size); rmp->ip4_buffers = clib_net_to_host_u32 (mm->ip4_reass_conf_buffers); - rmp->ip4_ht_ratio = - clib_net_to_host_u64 ((u64) mm->ip4_reass_conf_ht_ratio); + rmp->ip4_ht_ratio = clib_net_to_host_f64 (mm->ip4_reass_conf_ht_ratio); rmp->ip6_lifetime_ms = clib_net_to_host_u16 (mm->ip6_reass_conf_lifetime_ms); rmp->ip6_pool_size = clib_net_to_host_u16 (mm->ip6_reass_conf_pool_size); rmp->ip6_buffers = clib_net_to_host_u32 (mm->ip6_reass_conf_buffers); - rmp->ip6_ht_ratio = - clib_net_to_host_u64 ((u64) mm->ip6_reass_conf_ht_ratio); + rmp->ip6_ht_ratio = clib_net_to_host_f64 (mm->ip6_reass_conf_ht_ratio); rmp->sec_check_enable = mm->sec_check; rmp->sec_check_fragments = mm->sec_check_frag;