summaryrefslogtreecommitdiffstats
path: root/src/vnet/interface_api.c
diff options
context:
space:
mode:
authorJohn Lo <loj@cisco.com>2017-10-31 14:31:10 -0400
committerDave Barach <openvpp@barachs.net>2017-10-31 20:03:11 +0000
commit62fcc0ac6151b57b1177ac8b346341fc4dac3bb3 (patch)
tree6c80cd59df8fafe9b1fcef87ee262e7c2b726213 /src/vnet/interface_api.c
parentca3b6f1b4116010b1acbbb29a945767cb5443914 (diff)
Fix set interface mac address API to be endian neutral
Store and pass MAC address as 6 byte u8 array instead of u64 to make MAC address handling in set interface MAC endian neutral. The previous API handler only works for little endian. Change-Id: Ie4ec33a840bc5122ab1f17e25977e58f3466253b Signed-off-by: John Lo <loj@cisco.com>
Diffstat (limited to 'src/vnet/interface_api.c')
-rw-r--r--src/vnet/interface_api.c11
1 files changed, 2 insertions, 9 deletions
diff --git a/src/vnet/interface_api.c b/src/vnet/interface_api.c
index a6414bc9ac6..bd11d45d853 100644
--- a/src/vnet/interface_api.c
+++ b/src/vnet/interface_api.c
@@ -881,21 +881,14 @@ static void vl_api_sw_interface_set_mac_address_t_handler
vnet_main_t *vnm = vnet_get_main ();
u32 sw_if_index = ntohl (mp->sw_if_index);
vnet_sw_interface_t *si;
- u64 mac;
clib_error_t *error;
int rv = 0;
VALIDATE_SW_IF_INDEX (mp);
- mac = ((u64) mp->mac_address[0] << (8 * 0)
- | (u64) mp->mac_address[1] << (8 * 1)
- | (u64) mp->mac_address[2] << (8 * 2)
- | (u64) mp->mac_address[3] << (8 * 3)
- | (u64) mp->mac_address[4] << (8 * 4)
- | (u64) mp->mac_address[5] << (8 * 5));
-
si = vnet_get_sw_interface (vnm, sw_if_index);
- error = vnet_hw_interface_change_mac_address (vnm, si->hw_if_index, mac);
+ error = vnet_hw_interface_change_mac_address (vnm, si->hw_if_index,
+ mp->mac_address);
if (error)
{
rv = VNET_API_ERROR_UNIMPLEMENTED;