From a0ae0b6e8360116c8843325922c3346ab8f208c7 Mon Sep 17 00:00:00 2001 From: Simon Horman Date: Wed, 1 Aug 2012 16:01:47 +0900 Subject: [PATCH] ofp-util: Allow encoding of Open Flow 1.1 & 1.2 Barrier Request Messages Signed-off-by: Simon Horman Signed-off-by: Ben Pfaff --- lib/ofp-util.c | 20 ++++++++++++++++++-- lib/ofp-util.h | 2 +- lib/vconn.c | 2 +- utilities/ovs-ofctl.c | 2 +- 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/lib/ofp-util.c b/lib/ofp-util.c index 5d92e9f2..c1e8ce4e 100644 --- a/lib/ofp-util.c +++ b/lib/ofp-util.c @@ -2996,9 +2996,25 @@ make_echo_reply(const struct ofp_header *rq) } struct ofpbuf * -ofputil_encode_barrier_request(void) +ofputil_encode_barrier_request(enum ofp_version ofp_version) { - return ofpraw_alloc(OFPRAW_OFPT10_BARRIER_REQUEST, OFP10_VERSION, 0); + enum ofpraw type; + + switch (ofp_version) { + case OFP12_VERSION: + case OFP11_VERSION: + type = OFPRAW_OFPT11_BARRIER_REQUEST; + break; + + case OFP10_VERSION: + type = OFPRAW_OFPT10_BARRIER_REQUEST; + break; + + default: + NOT_REACHED(); + } + + return ofpraw_alloc(type, ofp_version, 0); } const char * diff --git a/lib/ofp-util.h b/lib/ofp-util.h index 032b156d..18cee7a3 100644 --- a/lib/ofp-util.h +++ b/lib/ofp-util.h @@ -497,7 +497,7 @@ void ofputil_append_port_desc_stats_reply(enum ofp_version ofp_version, struct ofpbuf *make_echo_request(void); struct ofpbuf *make_echo_reply(const struct ofp_header *rq); -struct ofpbuf *ofputil_encode_barrier_request(void); +struct ofpbuf *ofputil_encode_barrier_request(enum ofp_version); const char *ofputil_frag_handling_to_string(enum ofp_config_flags); bool ofputil_frag_handling_from_string(const char *, enum ofp_config_flags *); diff --git a/lib/vconn.c b/lib/vconn.c index cbe3c771..b2d81e93 100644 --- a/lib/vconn.c +++ b/lib/vconn.c @@ -756,7 +756,7 @@ vconn_transact_noreply(struct vconn *vconn, struct ofpbuf *request, } /* Send barrier. */ - barrier = ofputil_encode_barrier_request(); + barrier = ofputil_encode_barrier_request(vconn_get_version(vconn)); barrier_xid = ((struct ofp_header *) barrier->data)->xid; error = vconn_send_block(vconn, barrier); if (error) { diff --git a/utilities/ovs-ofctl.c b/utilities/ovs-ofctl.c index 61d02669..b4f44835 100644 --- a/utilities/ovs-ofctl.c +++ b/utilities/ovs-ofctl.c @@ -1217,7 +1217,7 @@ ofctl_barrier(struct unixctl_conn *conn, int argc OVS_UNUSED, return; } - msg = ofputil_encode_barrier_request(); + msg = ofputil_encode_barrier_request(vconn_get_version(aux->vconn)); error = vconn_send_block(aux->vconn, msg); if (error) { ofpbuf_delete(msg); -- 2.30.2