aboutsummaryrefslogtreecommitdiff
path: root/lib/netdev-provider.h
diff options
context:
space:
mode:
authorEthan Jackson <ethan@nicira.com>2011-05-26 14:28:11 -0700
committerEthan Jackson <ethan@nicira.com>2011-05-31 14:34:38 -0700
commitac4d3bcb46fa0acd0b63f79449432df28569f74f (patch)
tree12bf3301160149cf1de1e78d5a7c1d0e6e711cfd /lib/netdev-provider.h
parentb7585d1dffe140a0271ba52acb72493fe6f518a1 (diff)
netdev: New Function netdev_change_seq().
This new function will provide a much simpler replacement for netdev_monitor in the future.
Diffstat (limited to 'lib/netdev-provider.h')
-rw-r--r--lib/netdev-provider.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/netdev-provider.h b/lib/netdev-provider.h
index 23de420f..8ed3bf37 100644
--- a/lib/netdev-provider.h
+++ b/lib/netdev-provider.h
@@ -121,7 +121,10 @@ struct netdev_class {
void (*run)(void);
/* Arranges for poll_block() to wake up if the "run" member function needs
- * to be called. May be null if nothing is needed here. */
+ * to be called. Implementations are additionally required to wake
+ * whenever something changes in any of its netdevs which would cause their
+ * ->change_seq() function to change its result. May be null if nothing is
+ * needed here. */
void (*wait)(void);
/* Attempts to create a network device named 'name' with initial 'args' in
@@ -572,6 +575,17 @@ struct netdev_class {
/* Cancels poll notification for 'notifier'. */
void (*poll_remove)(struct netdev_notifier *notifier);
+
+ /* Returns a sequence number which indicates changes in one of 'netdev''s
+ * properties. The returned sequence number must be nonzero so that
+ * callers have a value which they may use as a reset when tracking
+ * 'netdev'.
+ *
+ * Minimally, the returned sequence number is required to change whenever
+ * 'netdev''s flags, features, ethernet address, or carrier changes. The
+ * returned sequence number is allowed to change even when 'netdev' doesn't
+ * change, although implementations should try to avoid this. */
+ unsigned int (*change_seq)(const struct netdev *netdev);
};
int netdev_register_provider(const struct netdev_class *);