- uint32_t *current, uint32_t *advertised,
- uint32_t *supported, uint32_t *peer);
-uint64_t netdev_features_to_bps(uint32_t features);
-bool netdev_features_is_full_duplex(uint32_t features);
-int netdev_set_advertisements(struct netdev *, uint32_t advertise);
+ enum netdev_features *current,
+ enum netdev_features *advertised,
+ enum netdev_features *supported,
+ enum netdev_features *peer);
+uint64_t netdev_features_to_bps(enum netdev_features features,
+ uint64_t default_bps);
+bool netdev_features_is_full_duplex(enum netdev_features features);
+int netdev_set_advertisements(struct netdev *, enum netdev_features advertise);
+
+/* Flags. */
+enum netdev_flags {
+ NETDEV_UP = 0x0001, /* Device enabled? */
+ NETDEV_PROMISC = 0x0002, /* Promiscuous mode? */
+ NETDEV_LOOPBACK = 0x0004 /* This is a loopback device. */
+};
+
+int netdev_get_flags(const struct netdev *, enum netdev_flags *);
+int netdev_set_flags(struct netdev *, enum netdev_flags,
+ struct netdev_saved_flags **);
+int netdev_turn_flags_on(struct netdev *, enum netdev_flags,
+ struct netdev_saved_flags **);
+int netdev_turn_flags_off(struct netdev *, enum netdev_flags,
+ struct netdev_saved_flags **);
+
+void netdev_restore_flags(struct netdev_saved_flags *);