From a5ff88230bb2584c81bbfef36d142203f8a2277d Mon Sep 17 00:00:00 2001 From: Simon Horman Date: Fri, 12 Oct 2012 09:26:27 +0900 Subject: [PATCH] ofp-util: Correct setting of Flow Mod cookie on encode When the command of a Flow Mod messages is ADD the cookie should be set as fm->new_cookie, this is the new cookie value to be set. Otherwise it should be set as fm->cookie, internally this is the cookie value to match. Also remove 'XXX' marker from the matching code in the decoder. I am now comfortable with the implementation. Signed-off-by: Simon Horman Signed-off-by: Ben Pfaff --- lib/ofp-util.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/ofp-util.c b/lib/ofp-util.c index 0f49cdcf..9527d2cb 100644 --- a/lib/ofp-util.c +++ b/lib/ofp-util.c @@ -1157,7 +1157,6 @@ ofputil_decode_flow_mod(struct ofputil_flow_mod *fm, fm->cookie_mask = htonll(0); fm->new_cookie = ofm->cookie; } else { - /* XXX */ fm->cookie = ofm->cookie; fm->cookie_mask = ofm->cookie_mask; fm->new_cookie = htonll(UINT64_MAX); @@ -1284,7 +1283,11 @@ ofputil_encode_flow_mod(const struct ofputil_flow_mod *fm, msg = ofpraw_alloc(OFPRAW_OFPT11_FLOW_MOD, OFP12_VERSION, NXM_TYPICAL_LEN + fm->ofpacts_len); ofm = ofpbuf_put_zeros(msg, sizeof *ofm); - ofm->cookie = fm->new_cookie; + if (fm->command == OFPFC_ADD) { + ofm->cookie = fm->new_cookie; + } else { + ofm->cookie = fm->cookie; + } ofm->cookie_mask = fm->cookie_mask; ofm->table_id = fm->table_id; ofm->command = fm->command; -- 2.30.2