-static int
-api_netmap_create (vat_main_t * vam)
-{
- unformat_input_t *i = vam->input;
- vl_api_netmap_create_t *mp;
- u8 *if_name = 0;
- u8 hw_addr[6];
- u8 random_hw_addr = 1;
- u8 is_pipe = 0;
- u8 is_master = 0;
- int ret;
-
- clib_memset (hw_addr, 0, sizeof (hw_addr));
-
- while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT)
- {
- if (unformat (i, "name %s", &if_name))
- vec_add1 (if_name, 0);
- else if (unformat (i, "hw_addr %U", unformat_ethernet_address, hw_addr))
- random_hw_addr = 0;
- else if (unformat (i, "pipe"))
- is_pipe = 1;
- else if (unformat (i, "master"))
- is_master = 1;
- else if (unformat (i, "slave"))
- is_master = 0;
- else
- break;
- }
-
- if (!vec_len (if_name))
- {
- errmsg ("interface name must be specified");
- return -99;
- }
-
- if (vec_len (if_name) > 64)
- {
- errmsg ("interface name too long");
- return -99;
- }
-
- M (NETMAP_CREATE, mp);
-
- clib_memcpy (mp->netmap_if_name, if_name, vec_len (if_name));
- clib_memcpy (mp->hw_addr, hw_addr, 6);
- mp->use_random_hw_addr = random_hw_addr;
- mp->is_pipe = is_pipe;
- mp->is_master = is_master;
- vec_free (if_name);
-
- S (mp);
- W (ret);
- return ret;
-}
-
-static int
-api_netmap_delete (vat_main_t * vam)
-{
- unformat_input_t *i = vam->input;
- vl_api_netmap_delete_t *mp;
- u8 *if_name = 0;
- int ret;
-
- while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT)
- {
- if (unformat (i, "name %s", &if_name))
- vec_add1 (if_name, 0);
- else
- break;
- }
-
- if (!vec_len (if_name))
- {
- errmsg ("interface name must be specified");
- return -99;
- }
-
- if (vec_len (if_name) > 64)
- {
- errmsg ("interface name too long");
- return -99;
- }
-
- M (NETMAP_DELETE, mp);
-
- clib_memcpy (mp->netmap_if_name, if_name, vec_len (if_name));
- vec_free (if_name);
-
- S (mp);
- W (ret);
- return ret;
-}
-