Signed-off-by: Simon Horman <ho...@verge.net.au>

---

v4
* Initial post
---
 lib/ofp-util.c | 4 ++--
 lib/ofp-util.h | 2 +-
 lib/rconn.c    | 7 ++++++-
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/lib/ofp-util.c b/lib/ofp-util.c
index 1efa466..4baae73 100644
--- a/lib/ofp-util.c
+++ b/lib/ofp-util.c
@@ -3483,12 +3483,12 @@ ofputil_decode_stats_msg_flags(const struct ofp_header 
*oh)
 
 /* Creates and returns an OFPT_ECHO_REQUEST message with an empty payload. */
 struct ofpbuf *
-make_echo_request(void)
+make_echo_request(uint8_t ofp_version)
 {
     struct ofp_header *rq;
     struct ofpbuf *out = ofpbuf_new(sizeof *rq);
     rq = ofpbuf_put_uninit(out, sizeof *rq);
-    rq->version = OFP10_VERSION;
+    rq->version = ofp_version;
     rq->type = OFPT_ECHO_REQUEST;
     rq->length = htons(sizeof *rq);
     rq->xid = htonl(0);
diff --git a/lib/ofp-util.h b/lib/ofp-util.h
index a1a5150..538278f 100644
--- a/lib/ofp-util.h
+++ b/lib/ofp-util.h
@@ -570,7 +570,7 @@ uint32_t ofputil_decode_stats_msg_subtype(const struct 
ofp_header *);
 uint16_t ofputil_decode_stats_msg_flags(const struct ofp_header *);
 
 /* Encoding simple OpenFlow messages. */
-struct ofpbuf *make_echo_request(void);
+struct ofpbuf *make_echo_request(uint8_t ofp_version);
 struct ofpbuf *make_echo_reply(const struct ofp_header *rq);
 
 struct ofpbuf *ofputil_encode_barrier_request(uint8_t ofp_version);
diff --git a/lib/rconn.c b/lib/rconn.c
index 2ddfc69..c4cf371 100644
--- a/lib/rconn.c
+++ b/lib/rconn.c
@@ -434,14 +434,19 @@ run_ACTIVE(struct rconn *rc)
 {
     if (timed_out(rc)) {
         unsigned int base = MAX(rc->last_received, rc->state_entered);
+        int version;
+
         VLOG_DBG("%s: idle %u seconds, sending inactivity probe",
                  rc->name, (unsigned int) (time_now() - base));
 
+        version = rconn_get_version(rc);
+        assert(version >= 0 && version <= 0xff);
+
         /* Ordering is important here: rconn_send() can transition to BACKOFF,
          * and we don't want to transition back to IDLE if so, because then we
          * can end up queuing a packet with vconn == NULL and then *boom*. */
         state_transition(rc, S_IDLE);
-        rconn_send(rc, make_echo_request(), NULL);
+        rconn_send(rc, make_echo_request(version), NULL);
         return;
     }
 
-- 
1.7.10.2.484.gcd07cc5

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to