diff options
author | Filip Tehlar <ftehlar@cisco.com> | 2016-10-26 14:31:24 +0200 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2016-12-06 09:30:43 +0000 |
commit | 397fd7d39f023887e428de37a1929c366a99b8d5 (patch) | |
tree | 3a90215e1eab0fab2f3c6765c471591d64852b08 /vnet/vnet/lisp-cp/lisp_types.c | |
parent | b09167f33d3c79e7ccc27e0fc484cc5fbcdb9943 (diff) |
Implement LISP control plane messages
* Map-register
* Map-notify
* RLOC probing
Change-Id: I7f6295376b21cd67805446dfd1c1033acead2d4b
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
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) { |