X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fofp-util.h;h=f7490a6ebdb3e917e384a900409b78fc9ffb9ed5;hb=e5b2afdbde9b7d6dc8d2f1bc641b6bcd3a1c7395;hp=bba366300eb1ef9f94e0152d355f3d279f8273df;hpb=7286b1e13dbf358ea6071d04b311474208308ad6;p=openvswitch diff --git a/lib/ofp-util.h b/lib/ofp-util.h index bba36630..f7490a6e 100644 --- a/lib/ofp-util.h +++ b/lib/ofp-util.h @@ -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); /* OpenFlow vendors. *