X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fnetdev-provider.h;h=9d8e67f3ad81968972deb914ac3df5c4e74883af;hb=28c5588e8e1a8d091c5d2275232c35f2968a97fa;hp=f233c0cb8e77ac3e8e6a01d28fce1550776dfa2b;hpb=55c955bd8aecc90273ffa93114c1c38f4f9b78ec;p=sliver-openvswitch.git diff --git a/lib/netdev-provider.h b/lib/netdev-provider.h index f233c0cb8..9d8e67f3a 100644 --- a/lib/netdev-provider.h +++ b/lib/netdev-provider.h @@ -19,8 +19,10 @@ /* Generic interface to network devices. */ +#include "connectivity.h" #include "netdev.h" #include "list.h" +#include "seq.h" #include "shash.h" #include "smap.h" @@ -38,6 +40,14 @@ struct netdev { const struct netdev_class *netdev_class; /* Functions to control this device. */ + /* A sequence number which indicates changes in one of 'netdev''s + * properties. It must be nonzero so that users have a value which + * they may use as a reset when tracking 'netdev'. + * + * Minimally, the sequence number is required to change whenever + * 'netdev''s flags, features, ethernet address, or carrier changes. */ + uint64_t change_seq; + /* The following are protected by 'netdev_mutex' (internal to netdev.c). */ int n_rxq; int ref_cnt; /* Times this devices was opened. */ @@ -45,6 +55,16 @@ struct netdev { struct list saved_flags_list; /* Contains "struct netdev_saved_flags". */ }; +static void +netdev_change_seq_changed(struct netdev *netdev) +{ + seq_change(connectivity_seq_get()); + netdev->change_seq++; + if (!netdev->change_seq) { + netdev->change_seq++; + } +} + const char *netdev_get_type(const struct netdev *); const struct netdev_class *netdev_get_class(const struct netdev *); const char *netdev_get_name(const struct netdev *);