debian: Avoid implying that Linux 2.6.9 is supported.
[openvswitch] / lib / ofp-util.h
index bba366300eb1ef9f94e0152d355f3d279f8273df..f7490a6ebdb3e917e384a900409b78fc9ffb9ed5 100644 (file)
@@ -163,14 +163,27 @@ struct ofputil_flow_stats {
     uint32_t duration_nsec;
     uint16_t idle_timeout;
     uint16_t hard_timeout;
-    uint64_t packet_count;
-    uint64_t byte_count;
+    uint64_t packet_count;      /* Packet count, UINT64_MAX if unknown. */
+    uint64_t byte_count;        /* Byte count, UINT64_MAX if unknown. */
     union ofp_action *actions;
     size_t n_actions;
 };
 
 int ofputil_decode_flow_stats_reply(struct ofputil_flow_stats *,
                                     struct ofpbuf *msg);
+void ofputil_append_flow_stats_reply(const struct ofputil_flow_stats *,
+                                     struct list *replies);
+
+/* Aggregate stats reply, independent of flow format. */
+struct ofputil_aggregate_stats {
+    uint64_t packet_count;      /* Packet count, UINT64_MAX if unknown. */
+    uint64_t byte_count;        /* Byte count, UINT64_MAX if unknown. */
+    uint32_t flow_count;
+};
+
+struct ofpbuf *ofputil_encode_aggregate_stats_reply(
+    const struct ofputil_aggregate_stats *stats,
+    const struct ofp_stats_msg *request);
 
 /* Flow removed message, independent of flow format. */
 struct ofputil_flow_removed {
@@ -180,8 +193,8 @@ struct ofputil_flow_removed {
     uint32_t duration_sec;
     uint32_t duration_nsec;
     uint16_t idle_timeout;
-    uint64_t packet_count;
-    uint64_t byte_count;
+    uint64_t packet_count;      /* Packet count, UINT64_MAX if unknown. */
+    uint64_t byte_count;        /* Byte count, UINT64_MAX if unknown. */
 };
 
 int ofputil_decode_flow_removed(struct ofputil_flow_removed *,
@@ -221,10 +234,16 @@ void *put_nxmsg_xid(size_t openflow_len, uint32_t subtype, ovs_be32 xid,
 
 void update_openflow_length(struct ofpbuf *);
 
-void *ofputil_make_stats_request(size_t body_len, uint16_t type,
-                                 struct ofpbuf **);
-void *ofputil_make_nxstats_request(size_t openflow_len, uint32_t subtype,
-                                   struct ofpbuf **);
+void *ofputil_make_stats_request(size_t openflow_len, uint16_t type,
+                                 uint32_t subtype, struct ofpbuf **);
+void *ofputil_make_stats_reply(size_t openflow_len,
+                               const struct ofp_stats_msg *request,
+                               struct ofpbuf **);
+
+void ofputil_start_stats_reply(const struct ofp_stats_msg *request,
+                               struct list *);
+struct ofpbuf *ofputil_reserve_stats_reply(size_t len, struct list *);
+void *ofputil_append_stats_reply(size_t len, struct list *);
 
 const void *ofputil_stats_body(const struct ofp_header *);
 size_t ofputil_stats_body_len(const struct ofp_header *);
@@ -272,6 +291,10 @@ bool action_outputs_to_port(const union ofp_action *, ovs_be16 port);
 
 int ofputil_pull_actions(struct ofpbuf *, unsigned int actions_len,
                          union ofp_action **, size_t *);
+
+bool ofputil_actions_equal(const union ofp_action *a, size_t n_a,
+                           const union ofp_action *b, size_t n_b);
+union ofp_action *ofputil_actions_clone(const union ofp_action *, size_t n);
 \f
 /* OpenFlow vendors.
  *