diff options
author | Ole Troan <ot@cisco.com> | 2019-06-12 14:28:14 +0200 |
---|---|---|
committer | Paul Vinciguerra <pvinci@vinciconsulting.com> | 2019-06-18 11:47:21 +0000 |
commit | 283cd2e9afcab1407d5614d79da4354790fa059a (patch) | |
tree | 21ff50ec22a5f9989bfdee76fcbb418ada91232f /src/plugins/map/map.c | |
parent | a8c0b62a88494e9a8562c57dfd3fd75818a629a7 (diff) |
api: string type to convert to vector
Previous use of strndup() required user to remember to call free().
Now return a vector pointing directly to the API message string.
Of course user must remember to copy the string out if lifetime
is longer than API message lifetime.
Change-Id: Ib5e2b3d52d258e1a42ea9ea9a9e04abbe360e2bf
Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
Diffstat (limited to 'src/plugins/map/map.c')
-rw-r--r-- | src/plugins/map/map.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/src/plugins/map/map.c b/src/plugins/map/map.c index c2e821aa2e0..9d89382ad17 100644 --- a/src/plugins/map/map.c +++ b/src/plugins/map/map.c @@ -60,15 +60,14 @@ map_main_t map_main; /* - * Save usre-assigned MAP domain names ("tags") in a vector of + * Save user-assigned MAP domain names ("tags") in a vector of * extra domain information. */ static void -map_save_extras (u32 map_domain_index, char *tag) +map_save_extras (u32 map_domain_index, u8 * tag) { map_main_t *mm = &map_main; map_domain_extra_t *de; - u32 len; if (map_domain_index == ~0) return; @@ -80,9 +79,7 @@ map_save_extras (u32 map_domain_index, char *tag) if (!tag) return; - len = strlen (tag) + 1; - de->tag = clib_mem_alloc (len); - clib_memcpy (de->tag, tag, len); + de->tag = vec_dup (tag); } @@ -91,7 +88,7 @@ map_free_extras (u32 map_domain_index) { map_main_t *mm = &map_main; map_domain_extra_t *de; - char *tag; + u8 *tag; if (map_domain_index == ~0) return; @@ -101,7 +98,7 @@ map_free_extras (u32 map_domain_index) if (!tag) return; - clib_mem_free (tag); + vec_free (tag); de->tag = 0; } @@ -116,7 +113,7 @@ map_create_domain (ip4_address_t * ip4_prefix, u8 ea_bits_len, u8 psid_offset, u8 psid_length, - u32 * map_domain_index, u16 mtu, u8 flags, char *tag) + u32 * map_domain_index, u16 mtu, u8 flags, u8 * tag) { u8 suffix_len, suffix_shift; map_main_t *mm = &map_main; @@ -566,7 +563,7 @@ map_add_domain_command_fn (vlib_main_t * vm, num_m_args++; else if (unformat (line_input, "mtu %d", &mtu)) num_m_args++; - else if (unformat (line_input, "tag %s", &tag)) + else if (unformat (line_input, "tag %v", &tag)) ; else { @@ -585,7 +582,7 @@ map_add_domain_command_fn (vlib_main_t * vm, map_create_domain (&ip4_prefix, ip4_prefix_len, &ip6_prefix, ip6_prefix_len, &ip6_src, ip6_src_len, ea_bits_len, psid_offset, psid_length, &map_domain_index, - mtu, flags, (char *) tag); + mtu, flags, tag); done: unformat_free (line_input); @@ -938,7 +935,7 @@ format_map_domain (u8 * s, va_list * args) de = vec_elt_at_index (mm->domain_extras, map_domain_index); s = format (s, - "[%d] tag {%s} ip4-pfx %U/%d ip6-pfx %U/%d ip6-src %U/%d " + "[%d] tag {%v} ip4-pfx %U/%d ip6-pfx %U/%d ip6-src %U/%d " "ea-bits-len %d psid-offset %d psid-len %d mtu %d %s", map_domain_index, de->tag, format_ip4_address, &d->ip4_prefix, d->ip4_prefix_len, |