2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-29 05:18:13 +00:00

bridge: Store the 'mac_in_use' for interfaces in OVSDB.

It can be useful to remotely determine the MAC addresses of attached
interfaces without going through OpenFlow.  This adds the MAC address to
a new 'mac_in_use' column on the Interface table.

Feature #15551

Requested-by: Paul Ingram <paul@nicira.com>
Signed-off-by: Justin Pettit <jpettit@nicira.com>
This commit is contained in:
Justin Pettit 2013-03-12 14:47:22 -07:00
parent 8d6db33e35
commit df867eda40
3 changed files with 23 additions and 2 deletions

View File

@ -345,6 +345,7 @@ bridge_init(const char *remote)
ovsdb_idl_omit_alert(idl, &ovsrec_interface_col_link_speed);
ovsdb_idl_omit_alert(idl, &ovsrec_interface_col_link_state);
ovsdb_idl_omit_alert(idl, &ovsrec_interface_col_link_resets);
ovsdb_idl_omit_alert(idl, &ovsrec_interface_col_mac_in_use);
ovsdb_idl_omit_alert(idl, &ovsrec_interface_col_mtu);
ovsdb_idl_omit_alert(idl, &ovsrec_interface_col_ofport);
ovsdb_idl_omit_alert(idl, &ovsrec_interface_col_statistics);
@ -1698,6 +1699,7 @@ iface_refresh_status(struct iface *iface)
int64_t bps;
int mtu;
int64_t mtu_64;
uint8_t mac[ETH_ADDR_LEN];
int error;
if (iface_is_synthetic(iface)) {
@ -1733,6 +1735,16 @@ iface_refresh_status(struct iface *iface)
} else {
ovsrec_interface_set_mtu(iface->cfg, NULL, 0);
}
error = netdev_get_etheraddr(iface->netdev, mac);
if (!error) {
char mac_string[32];
sprintf(mac_string, ETH_ADDR_FMT, ETH_ADDR_ARGS(mac));
ovsrec_interface_set_mac_in_use(iface->cfg, mac_string);
} else {
ovsrec_interface_set_mac_in_use(iface->cfg, NULL);
}
}
/* Writes 'iface''s CFM statistics to the database. 'iface' must not be
@ -3330,6 +3342,7 @@ iface_clear_db_record(const struct ovsrec_interface *if_cfg)
ovsrec_interface_set_duplex(if_cfg, NULL);
ovsrec_interface_set_link_speed(if_cfg, NULL, 0);
ovsrec_interface_set_link_state(if_cfg, NULL);
ovsrec_interface_set_mac_in_use(if_cfg, NULL);
ovsrec_interface_set_mtu(if_cfg, NULL, 0);
ovsrec_interface_set_cfm_fault(if_cfg, NULL, 0);
ovsrec_interface_set_cfm_fault_status(if_cfg, NULL, 0);

View File

@ -1,6 +1,6 @@
{"name": "Open_vSwitch",
"version": "7.0.0",
"cksum": "3537583872 17299",
"version": "7.1.0",
"cksum": "2234055133 17444",
"tables": {
"Open_vSwitch": {
"columns": {
@ -174,6 +174,10 @@
"ingress_policing_burst": {
"type": {"key": {"type": "integer",
"minInteger": 0}}},
"mac_in_use": {
"type": {"key": {"type": "string"},
"min": 0, "max": 1},
"ephemeral": true},
"mac": {
"type": {"key": {"type": "string"},
"min": 0, "max": 1}},

View File

@ -1131,6 +1131,10 @@
on a host.
</column>
<column name="mac_in_use">
The MAC address in use by this interface.
</column>
<column name="mac">
<p>Ethernet address to set for this interface. If unset then the
default MAC address is used:</p>