X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fnetdev-linux.c;h=8329f22640d628512fe8dd409cca6a87fe0713c5;hb=82172632ad99204b58859edc93d5a76e63d4d73f;hp=fb46561b7b923b93590b819f0c0a7f17600400f8;hpb=3a1831242856a975d57c875b8f8987b819e8dd39;p=sliver-openvswitch.git diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c index fb46561b7..8329f2264 100644 --- a/lib/netdev-linux.c +++ b/lib/netdev-linux.c @@ -366,6 +366,7 @@ struct netdev_dev_linux { struct in6_addr in6; int mtu; bool carrier; + long long int carrier_resets; uint32_t kbits_rate; /* Policing data. */ uint32_t kbits_burst; bool have_vport_stats; @@ -505,6 +506,7 @@ netdev_linux_cache_cb(const struct rtnetlink_link_change *change, if (dev->carrier != change->running) { dev->carrier = change->running; + dev->carrier_resets++; } netdev_dev_linux_changed(dev); @@ -524,6 +526,7 @@ netdev_linux_cache_cb(const struct rtnetlink_link_change *change, get_carrier_via_sysfs(node->name, &carrier); if (dev->carrier != carrier) { dev->carrier = carrier; + dev->carrier_resets++; } netdev_dev_linux_changed(dev); @@ -1041,6 +1044,12 @@ netdev_linux_get_carrier(const struct netdev *netdev_, bool *carrier) return 0; } +static long long int +netdev_linux_get_carrier_resets(const struct netdev *netdev) +{ + return netdev_dev_linux_cast(netdev_get_dev(netdev))->carrier_resets; +} + static int netdev_linux_do_miimon(const char *name, int cmd, const char *cmd_name, struct mii_ioctl_data *data) @@ -2315,6 +2324,7 @@ netdev_linux_change_seq(const struct netdev *netdev) netdev_linux_set_mtu, \ netdev_linux_get_ifindex, \ netdev_linux_get_carrier, \ + netdev_linux_get_carrier_resets, \ netdev_linux_set_miimon_interval, \ GET_STATS, \ SET_STATS, \