vhost: use_custom_mac set in create_vhost_user_if_v2 73/35873/7
authorFahad Naeem <fahadnaeemkhan@gmail.com>
Mon, 4 Apr 2022 14:31:04 +0000 (10:31 -0400)
committerDamjan Marion <dmarion@me.com>
Wed, 4 May 2022 15:18:18 +0000 (15:18 +0000)
Type: fix

set use_custom_mac for args in create_vhost_user_if_v2 API
Add testcase for custom mac-address

Signed-off-by: Fahad Naeem <fahadnaeemkhan@gmail.com>
Change-Id: Iac64d818e0f1e6d36187fe769ee33d202aaafd05
Signed-off-by: Fahad Naeem <fahadnaeemkhan@gmail.com>
src/vnet/devices/virtio/vhost_user_api.c
test/test_vhost.py

index df6768d..6dd9da0 100644 (file)
@@ -168,6 +168,7 @@ vl_api_create_vhost_user_if_v2_t_handler (vl_api_create_vhost_user_if_v2_t *
   if (mp->use_custom_mac)
     mac_address_decode (mp->mac_address, (mac_address_t *) args.hwaddr);
 
+  args.use_custom_mac = mp->use_custom_mac;
   args.is_server = mp->is_server;
   args.sock_filename = (char *) mp->sock_filename;
   args.renumber = mp->renumber;
index e8cb27d..aefae90 100644 (file)
@@ -119,5 +119,33 @@ class TesVhostInterface(VppTestCase):
         events = self.vapi.collect_events()
         self.assert_equal(len(events), 0, "number of events")
 
+    def test_vhost_interface_custom_mac_addr(self):
+        """ Vhost User interface custom mac address test """
+
+        mac_addr = "aa:bb:cc:dd:ee:ff"
+        vhost_if = VppVhostInterface(self,
+                                     sock_filename='/tmp/sock1',
+                                     use_custom_mac=1,
+                                     mac_address=mac_addr)
+
+        # create vhost interface
+        vhost_if.add_vpp_config()
+        self.sleep(0.1)
+
+        # verify mac in the dump
+        if_dump_list = self.vapi.sw_interface_dump(
+            sw_if_index=vhost_if.sw_if_index
+        )
+        self.assert_equal(len(if_dump_list), 1, "if dump length")
+
+        [if_dump] = if_dump_list
+        self.assert_equal(
+            if_dump.l2_address.mac_string, mac_addr, "MAC Address"
+        )
+
+        # delete VirtualEthernet
+        self.logger.info("Deleting VirtualEthernet")
+        vhost_if.remove_vpp_config()
+
 if __name__ == '__main__':
     unittest.main(testRunner=VppTestRunner)