X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=vnet%2Fvnet%2Finterface_cli.c;h=03b51332bae27649e63242c28cf10361942c54fe;hb=c631f2de6dd06b4cbb92bf8398839b882344fd25;hp=f7d42a722d55f72607637cd37f380fb4e2fc0b9c;hpb=ab3e42b08db051eca5c4516e80ae6c428615a8f9;p=vpp.git diff --git a/vnet/vnet/interface_cli.c b/vnet/vnet/interface_cli.c index f7d42a722d5..03b51332bae 100644 --- a/vnet/vnet/interface_cli.c +++ b/vnet/vnet/interface_cli.c @@ -636,7 +636,6 @@ create_sub_interfaces (vlib_main_t * vm, else if (unformat (input, "%d-%d", &id_min, &id_max)) { template.sub.eth.flags.one_tag = 1; - template.sub.eth.outer_vlan_id = id_min; template.sub.eth.flags.exact_match = 1; if (id_min > id_max) goto id_error; @@ -689,6 +688,9 @@ create_sub_interfaces (vlib_main_t * vm, template.type = VNET_SW_INTERFACE_TYPE_SUB; template.sup_sw_if_index = hi->sw_if_index; template.sub.id = id; + if (id_min < id_max) + template.sub.eth.outer_vlan_id = id; + error = vnet_create_sw_interface (vnm, &template, &sw_if_index); if (error) goto done; @@ -1025,6 +1027,54 @@ VLIB_CLI_COMMAND (set_interface_mtu_cmd, static) = { }; /* *INDENT-ON* */ +static clib_error_t * +set_interface_mac_address (vlib_main_t * vm, unformat_input_t * input, + vlib_cli_command_t * cmd) +{ + vnet_main_t *vnm = vnet_get_main (); + clib_error_t *error = 0; + u32 sw_if_index = ~0; + u64 mac = 0; + + if (!unformat_user (input, unformat_vnet_sw_interface, vnm, &sw_if_index)) + { + error = clib_error_return (0, "unknown interface `%U'", + format_unformat_error, input); + goto done; + } + if (!unformat_user (input, unformat_ethernet_address, &mac)) + { + error = clib_error_return (0, "expected mac address `%U'", + format_unformat_error, input); + goto done; + } + error = vnet_hw_interface_change_mac_address (vnm, sw_if_index, mac); +done: + return error; +} + +/*? + * The 'set interface mac address ' command allows to set MAC address of given interface. + * In case of NIC interfaces the one has to support MAC address change. A side effect of MAC address + * change are changes of MAC addresses in FIB tables (ipv4 and ipv6). + * + * @cliexpar + * @parblock + * Example of how to change MAC Address of interface: + * @cliexcmd{set interface mac address GigabitEthernet0/8/0 aa:bb:cc:dd:ee:01} + * @cliexcmd{set interface mac address host-vpp0 aa:bb:cc:dd:ee:02} + * @cliexcmd{set interface mac address tap-0 aa:bb:cc:dd:ee:03} + * @cliexcmd{set interface mac address pg0 aa:bb:cc:dd:ee:04} + * @endparblock +?*/ +/* *INDENT-OFF* */ +VLIB_CLI_COMMAND (set_interface_mac_address_cmd, static) = { + .path = "set interface mac address", + .short_help = "set interface mac address ", + .function = set_interface_mac_address, +}; +/* *INDENT-ON* */ + /* * fd.io coding-style-patch-verification: ON *