aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/interface.h
diff options
context:
space:
mode:
authorMatthew Smith <mgsmith@netgate.com>2019-07-12 11:48:24 -0500
committerDamjan Marion <dmarion@me.com>2019-10-09 10:30:05 +0000
commite0792fdff6a9cc141f1cb4c6c1d2ac478cf44ee2 (patch)
treeba4d3e098043531cc5957f34e793dd29b0ee851d /src/vnet/interface.h
parent6a6af6ea1a77b5818e717047b5d01251ef6d024a (diff)
interface: callback to manage extra MAC addresses
Type: feature New callback vnet_hw_interface_add_del_mac_address(). Add or delete secondary MAC addresses on a hardware interface. This will allow packets to be processed which have a destination MAC address other than the primary programmed MAC address without needing to put the device into promiscuous mode. Change-Id: I6beecbcb8932fc1fe45b567f76fa3706feefae2c Signed-off-by: Matthew Smith <mgsmith@netgate.com>
Diffstat (limited to 'src/vnet/interface.h')
-rw-r--r--src/vnet/interface.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/vnet/interface.h b/src/vnet/interface.h
index 7d73c5f6473..e6450f5bf59 100644
--- a/src/vnet/interface.h
+++ b/src/vnet/interface.h
@@ -74,6 +74,10 @@ typedef clib_error_t *(vnet_interface_set_mac_address_function_t)
(struct vnet_hw_interface_t * hi,
const u8 * old_address, const u8 * new_address);
+/* Interface add/del additional mac address callback */
+typedef clib_error_t *(vnet_interface_add_del_mac_address_function_t)
+ (struct vnet_hw_interface_t * hi, const u8 * address, u8 is_add);
+
/* Interface set rx mode callback. */
typedef clib_error_t *(vnet_interface_set_rx_mode_function_t)
(struct vnet_main_t * vnm, u32 if_index, u32 queue_id,
@@ -266,6 +270,9 @@ typedef struct _vnet_device_class
/* Function to set mac address. */
vnet_interface_set_mac_address_function_t *mac_addr_change_function;
+
+ /* Function to add/delete additional MAC addresses */
+ vnet_interface_add_del_mac_address_function_t *mac_addr_add_del_function;
} vnet_device_class_t;
#ifndef CLIB_MARCH_VARIANT
@@ -392,6 +399,9 @@ typedef struct _vnet_hw_interface_class
/* Function to call when link MAC changes. */
vnet_interface_set_mac_address_function_t *mac_addr_change_function;
+ /* Function to add/delete additional MAC addresses */
+ vnet_interface_add_del_mac_address_function_t *mac_addr_add_del_function;
+
/* Format function to display interface name. */
format_function_t *format_interface_name;