- errmsg ("profile name too long");
- return -99;
- }
-
- M (IKEV2_SET_SA_LIFETIME, mp);
-
- clib_memcpy (mp->name, name, vec_len (name));
- vec_free (name);
- mp->lifetime = lifetime;
- mp->lifetime_jitter = lifetime_jitter;
- mp->handover = handover;
- mp->lifetime_maxdata = lifetime_maxdata;
-
- S (mp);
- W (ret);
- return ret;
-}
-
-static int
-api_ikev2_initiate_sa_init (vat_main_t * vam)
-{
- unformat_input_t *i = vam->input;
- vl_api_ikev2_initiate_sa_init_t *mp;
- int ret;
- u8 *name = 0;
-
- const char *valid_chars = "a-zA-Z0-9_";
-
- while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT)
- {
- if (unformat (i, "%U", unformat_token, valid_chars, &name))
- vec_add1 (name, 0);
- else
- {
- errmsg ("parse error '%U'", format_unformat_error, i);
- return -99;
- }
- }
-
- if (!vec_len (name))
- {
- errmsg ("profile name must be specified");
- return -99;
- }
-
- if (vec_len (name) > 64)
- {
- errmsg ("profile name too long");
- return -99;
- }
-
- M (IKEV2_INITIATE_SA_INIT, mp);
-
- clib_memcpy (mp->name, name, vec_len (name));
- vec_free (name);
-
- S (mp);
- W (ret);
- return ret;
-}
-
-static int
-api_ikev2_initiate_del_ike_sa (vat_main_t * vam)
-{
- unformat_input_t *i = vam->input;
- vl_api_ikev2_initiate_del_ike_sa_t *mp;
- int ret;
- u64 ispi;
-
-
- while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT)
- {
- if (unformat (i, "%lx", &ispi))
- ;
- else
- {
- errmsg ("parse error '%U'", format_unformat_error, i);
- return -99;
- }
- }
-
- M (IKEV2_INITIATE_DEL_IKE_SA, mp);
-
- mp->ispi = ispi;
-
- S (mp);
- W (ret);
- return ret;
-}
-
-static int
-api_ikev2_initiate_del_child_sa (vat_main_t * vam)
-{
- unformat_input_t *i = vam->input;
- vl_api_ikev2_initiate_del_child_sa_t *mp;
- int ret;
- u32 ispi;
-
-
- while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT)
- {
- if (unformat (i, "%x", &ispi))
- ;
- else
- {
- errmsg ("parse error '%U'", format_unformat_error, i);
- return -99;
- }
- }
-
- M (IKEV2_INITIATE_DEL_CHILD_SA, mp);
-
- mp->ispi = ispi;
-
- S (mp);
- W (ret);
- return ret;
-}
-
-static int
-api_ikev2_initiate_rekey_child_sa (vat_main_t * vam)
-{
- unformat_input_t *i = vam->input;
- vl_api_ikev2_initiate_rekey_child_sa_t *mp;
- int ret;
- u32 ispi;
-
-
- while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT)
- {
- if (unformat (i, "%x", &ispi))
- ;
- else
- {
- errmsg ("parse error '%U'", format_unformat_error, i);
- return -99;
- }
- }
-
- M (IKEV2_INITIATE_REKEY_CHILD_SA, mp);
-
- mp->ispi = ispi;
-
- S (mp);
- W (ret);
- return ret;
-}
-
-/*
- * MAP
- */
-static int
-api_map_add_domain (vat_main_t * vam)
-{
- unformat_input_t *i = vam->input;
- vl_api_map_add_domain_t *mp;
-
- ip4_address_t ip4_prefix;
- ip6_address_t ip6_prefix;
- ip6_address_t ip6_src;
- u32 num_m_args = 0;
- u32 ip6_prefix_len = 0, ip4_prefix_len = 0, ea_bits_len = 0, psid_offset =
- 0, psid_length = 0;
- u8 is_translation = 0;
- u32 mtu = 0;
- u32 ip6_src_len = 128;
- int ret;
-
- while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT)
- {
- if (unformat (i, "ip4-pfx %U/%d", unformat_ip4_address,
- &ip4_prefix, &ip4_prefix_len))
- num_m_args++;
- else if (unformat (i, "ip6-pfx %U/%d", unformat_ip6_address,
- &ip6_prefix, &ip6_prefix_len))
- num_m_args++;
- else
- if (unformat
- (i, "ip6-src %U/%d", unformat_ip6_address, &ip6_src,
- &ip6_src_len))
- num_m_args++;
- else if (unformat (i, "ip6-src %U", unformat_ip6_address, &ip6_src))
- num_m_args++;
- else if (unformat (i, "ea-bits-len %d", &ea_bits_len))
- num_m_args++;
- else if (unformat (i, "psid-offset %d", &psid_offset))
- num_m_args++;
- else if (unformat (i, "psid-len %d", &psid_length))
- num_m_args++;
- else if (unformat (i, "mtu %d", &mtu))
- num_m_args++;
- else if (unformat (i, "map-t"))
- is_translation = 1;
- else
- {
- clib_warning ("parse error '%U'", format_unformat_error, i);
- return -99;
- }
- }
-
- if (num_m_args < 3)
- {
- errmsg ("mandatory argument(s) missing");
- return -99;
- }
-
- /* Construct the API message */
- M (MAP_ADD_DOMAIN, mp);
-
- clib_memcpy (mp->ip4_prefix, &ip4_prefix, sizeof (ip4_prefix));
- mp->ip4_prefix_len = ip4_prefix_len;
-
- clib_memcpy (mp->ip6_prefix, &ip6_prefix, sizeof (ip6_prefix));
- mp->ip6_prefix_len = ip6_prefix_len;