vswitchd: New column "link_resets".
[sliver-openvswitch.git] / vswitchd / bridge.c
index 1adf06f..d4335c1 100644 (file)
@@ -238,6 +238,7 @@ bridge_init(const char *remote)
     ovsdb_idl_omit_alert(idl, &ovsrec_interface_col_duplex);
     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_mtu);
     ovsdb_idl_omit_alert(idl, &ovsrec_interface_col_ofport);
     ovsdb_idl_omit_alert(idl, &ovsrec_interface_col_statistics);
@@ -1274,11 +1275,6 @@ iface_refresh_status(struct iface *iface)
         ovsrec_interface_set_link_speed(iface->cfg, NULL, 0);
     }
 
-    ovsrec_interface_set_link_state(iface->cfg,
-                                    (netdev_get_carrier(iface->netdev)
-                                     ? "up"
-                                     : "down"));
-
     error = netdev_get_mtu(iface->netdev, &mtu);
     if (!error) {
         mtu_64 = mtu;
@@ -1578,6 +1574,8 @@ bridge_run(void)
             struct iface *iface;
 
             HMAP_FOR_EACH (iface, name_node, &br->iface_by_name) {
+                const char *link_state;
+                int64_t link_resets;
                 int current;
 
                 if (iface_is_synthetic(iface)) {
@@ -1592,6 +1590,12 @@ bridge_run(void)
                 } else {
                     ovsrec_interface_set_lacp_current(iface->cfg, NULL, 0);
                 }
+
+                link_state = netdev_get_carrier(iface->netdev) ? "up" : "down";
+                ovsrec_interface_set_link_state(iface->cfg, link_state);
+
+                link_resets = netdev_get_carrier_resets(iface->netdev);
+                ovsrec_interface_set_link_resets(iface->cfg, &link_resets, 1);
             }
         }