X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=vnet%2Fvnet%2Flisp-cp%2Flisp_types.c;h=62900ec795c8172618bcdf3c19c9e3f4b5229b97;hb=1b1ee4f2e550d2cf98e5e5f718ad5543389c8c37;hp=25a8271e929c099e85461932e939877823f2e564;hpb=137c7c612641b5056bc20e64e8ef75df0c775629;p=vpp.git diff --git a/vnet/vnet/lisp-cp/lisp_types.c b/vnet/vnet/lisp-cp/lisp_types.c index 25a8271e929..62900ec795c 100644 --- a/vnet/vnet/lisp-cp/lisp_types.c +++ b/vnet/vnet/lisp-cp/lisp_types.c @@ -192,11 +192,31 @@ format_gid_address (u8 * s, va_list * args) uword unformat_gid_address (unformat_input_t * input, va_list * args) { + u32 vni; gid_address_t * a = va_arg(*args, gid_address_t *); - if (unformat (input, "%U", unformat_ip_prefix, &gid_address_ippref(a))) - gid_address_type(a) = GID_ADDR_IP_PREFIX; - else - return 0; + u8 mac[6] = {0}; + ip_prefix_t ippref; + + memset (&ippref, 0, sizeof (ippref)); + memset (a, 0, sizeof (a[0])); + + while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) + { + if (unformat (input, "%U", unformat_ip_prefix, &ippref)) + { + clib_memcpy (&gid_address_ippref(a), &ippref, sizeof (ippref)); + gid_address_type(a) = GID_ADDR_IP_PREFIX; + } + else if (unformat (input, "%U", unformat_mac_address, mac)) + { + clib_memcpy (gid_address_mac(a), mac, sizeof (mac)); + gid_address_type(a) = GID_ADDR_MAC; + } + else if (unformat (input, "[%d]", &vni)) + gid_address_vni(a) = vni; + else + return 0; + } return 1; }