Implement OpenFlow 1.3 queue stats duration feature.
[sliver-openvswitch.git] / lib / netdev.h
index 86924aa..eb1870b 100644 (file)
@@ -33,6 +33,9 @@ extern "C" {
  * The PORTING file at the top of the source tree has more information in the
  * "Writing a netdev Provider" section. */
 
+struct netdev;
+struct netdev_class;
+struct netdev_rx;
 struct netdev_saved_flags;
 struct ofpbuf;
 struct in_addr;
@@ -99,16 +102,15 @@ struct netdev_tunnel_config {
     bool dont_fragment;
 };
 
-struct netdev;
-struct netdev_class;
-
 void netdev_run(void);
 void netdev_wait(void);
 
 void netdev_enumerate_types(struct sset *types);
+bool netdev_is_reserved_name(const char *name);
 
 /* Open and close. */
 int netdev_open(const char *name, const char *type, struct netdev **);
+struct netdev *netdev_ref(const struct netdev *);
 void netdev_close(struct netdev *);
 
 void netdev_parse_name(const char *netdev_name, char **name, char **type);
@@ -127,12 +129,17 @@ int netdev_get_mtu(const struct netdev *, int *mtup);
 int netdev_set_mtu(const struct netdev *, int mtu);
 int netdev_get_ifindex(const struct netdev *);
 
-/* Packet send and receive. */
-int netdev_listen(struct netdev *);
-int netdev_recv(struct netdev *, struct ofpbuf *);
-void netdev_recv_wait(struct netdev *);
-int netdev_drain(struct netdev *);
+/* Packet reception. */
+int netdev_rx_open(struct netdev *, struct netdev_rx **);
+void netdev_rx_close(struct netdev_rx *);
+
+const char *netdev_rx_get_name(const struct netdev_rx *);
 
+int netdev_rx_recv(struct netdev_rx *, struct ofpbuf *);
+void netdev_rx_wait(struct netdev_rx *);
+int netdev_rx_drain(struct netdev_rx *);
+
+/* Packet transmission. */
 int netdev_send(struct netdev *, const struct ofpbuf *);
 void netdev_send_wait(struct netdev *);
 
@@ -220,6 +227,9 @@ struct netdev_queue_stats {
     uint64_t tx_bytes;
     uint64_t tx_packets;
     uint64_t tx_errors;
+
+    /* Time at which the queue was created, in msecs, LLONG_MIN if unknown. */
+    long long int created;
 };
 
 int netdev_set_policing(struct netdev *, uint32_t kbits_rate,