diff options
Diffstat (limited to 'vnet/vnet/lisp-cp/lisp_types.c')
-rw-r--r-- | vnet/vnet/lisp-cp/lisp_types.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/vnet/vnet/lisp-cp/lisp_types.c b/vnet/vnet/lisp-cp/lisp_types.c index 04b8462e4fc..d206e6bccef 100644 --- a/vnet/vnet/lisp-cp/lisp_types.c +++ b/vnet/vnet/lisp-cp/lisp_types.c @@ -270,6 +270,31 @@ unformat_fid_address (unformat_input_t * i, va_list * args) } uword +unformat_hmac_key_id (unformat_input_t * input, va_list * args) +{ + u32 *key_id = va_arg (*args, u32 *); + u8 *s = 0; + + if (unformat (input, "%s", &s)) + { + if (!strcmp ((char *) s, "sha1")) + key_id[0] = HMAC_SHA_1_96; + else if (!strcmp ((char *) s, "sha256")) + key_id[0] = HMAC_SHA_256_128; + else + { + clib_warning ("invalid key_id: '%s'", s); + key_id[0] = HMAC_NO_KEY; + } + } + else + return 0; + + vec_free (s); + return 1; +} + +uword unformat_gid_address (unformat_input_t * input, va_list * args) { gid_address_t *a = va_arg (*args, gid_address_t *); @@ -334,6 +359,24 @@ unformat_negative_mapping_action (unformat_input_t * input, va_list * args) } u8 * +format_hmac_key_id (u8 * s, va_list * args) +{ + lisp_key_type_t key_id = va_arg (*args, lisp_key_type_t); + + switch (key_id) + { + case HMAC_SHA_1_96: + return format (0, "sha1"); + case HMAC_SHA_256_128: + return format (0, "sha256"); + default: + return 0; + } + + return 0; +} + +u8 * format_negative_mapping_action (u8 * s, va_list * args) { lisp_action_e action = va_arg (*args, lisp_action_e); @@ -678,6 +721,14 @@ gid_address_free (gid_address_t * a) (*lcaf_free_fcts[lcaf_type]) (lcaf); } +void +gid_address_from_ip (gid_address_t * g, ip_address_t * ip) +{ + memset (g, 0, sizeof (g[0])); + ip_address_set (&gid_address_ip (g), ip, ip_addr_version (ip)); + gid_address_ippref_len (g) = 32; +} + int ip_address_cmp (const ip_address_t * ip1, const ip_address_t * ip2) { |