Hi Amit, your patch is corrupted. (It is double-spaced, at least.) Please re-send in a form that can be applied directly, e.g. try emailing it to yourself then applying with "git am".
On Wed, Jul 04, 2012 at 07:05:39AM +0000, Amit Tewari wrote: > Hi Ben, > > > > I am sending patch for generating OFPERR_OFPBRC_BAD_VERSION error in case of > version mismatch in > > openflow packets from controller to switch. This patch is for latest release > 1.6.1. > > > > I have also patched lib/ofp-errors.c file so that OFPERR_OFPBRC_BAD_VERSION > error packet contains switch > > supported version i.e OFP10_VERSION. > > > > Design description and rationale - > > --------------------------------------- > > We are returning OFPERR_OFPBRC_BAD_VERSION error in vconn.c file in do_recv > routine > > for version mismatch for all openflow packets from controller and we prevent > reset of > > connection in rconn.c file in rconn_recv routine by checking for > OFPERR_OFPBRC_BAD_VERSION > > error from do_recv routine. > > Then we are checking the version mismatch between openflow packets in ofp > util.c ofputil_lookup_openflow_message routine, > > this routine was returning earlier BAD_SUBTYPE error so we put a check for > version mistmatch in this routine and > > return BAD_VERSION error and if version matches and if header type doesn't > matches then still it returns BAD_SUBTYPE error. > > > > When we return BAD_VERSION error the error packet was having version of > controller request packet and > > not switch supported version, so we put a check in ofp-errors.c file for > setting version in error packet to switch > > supported version i.e OFP10_VERSION for BAD_VERSION error. > > > > Testing after merging patch in OVS 1.6.1 > > ------------------------------------------------- > > 1. Verify OFPET_BAD_REQUEST OFPBRC_BAD_VERSION code message from > > switch to controller for all openflow packets mentioned in file > ofproto.c > > in handle_openflow__ routine when there is "version mismatch". > > 2. Verify request and reply message from controller to switch for all > openflow packets > > mentioned in file ofproto.c in handle_openflow__ routine when there is > "version matches". > > > > Patch > > --------- > > lib/ofp-util.c | 3 +++ > > lib/vconn.c | 2 ++ > > lib/rconn.c | 3 ++- > > lib/ofp-errorc.c | 3 +++ > > 4 files changed, 10 insertions(+), 1 deletions(-) > > > > diff --git a/lib/ofp-util.c b/lib/ofp-util.c > > index 15340f6..7591f0f 100644 > > --- a/lib/ofp-util.c > > +++ b/lib/ofp-util.c > > @@ -355,6 +355,9 @@ ofputil_lookup_openflow_message(const struct > ofputil_msg_category *cat, > > } > > } > > > > + if (version != type->ofp_version) { > > + return OFPERR_OFPBRC_BAD_VERSION; > > + } > > VLOG_WARN_RL(&bad_ofmsg_rl, "received %s of unknown type %"PRIu32, > > cat->name, value); > > return cat->missing_error; > > > > diff --git a/lib/vconn.c b/lib/vconn.c > > index 5da5026..47622c6 100644 > > --- a/lib/vconn.c > > +++ b/lib/vconn.c > > @@ -555,6 +555,8 @@ do_recv(struct vconn *vconn, struct ofpbuf **msgp) > > "%s: received OpenFlow version 0x%02"PRIx8" " > > "!= expected %02x", > > vconn->name, oh->version, vconn->version); > > + retval = OFPERR_OFPBRC_BAD_VERSION; > > + return retval; > > } > > ofpbuf_delete(*msgp); > > retval = EPROTO; > > > > diff --git a/lib/rconn.c b/lib/rconn.c > > index 1b69b8f..097d5ae 100644 > > --- a/lib/rconn.c > > +++ b/lib/rconn.c > > @@ -24,6 +24,7 @@ > > #include "coverage.h" > > #include "ofp-util.h" > > #include "ofpbuf.h" > > +#include "ofp-errors.h" > > #include "openflow/openflow.h" > > #include "poll-loop.h" > > #include "sat-math.h" > > @@ -521,7 +522,7 @@ rconn_recv(struct rconn *rc) > > if (rc->state & (S_ACTIVE | S_IDLE)) { > > struct ofpbuf *buffer; > > int error = vconn_recv(rc->vconn, &buffer); > > - if (!error) { > > + if (!error || error == OFPERR_OFPBRC_BAD_VERSION) { > > copy_to_monitor(rc, buffer); > > if (rc->probably_admitted || is_admitted_msg(buffer) > > || time_now() - rc->last_connected >= 30) { > > > > > > diff --git a/lib/ofp-errors.c b/lib/ofp-errors.c > > index 028475e..2af01ff 100644 > > --- a/lib/ofp-errors.c > > +++ b/lib/ofp-errors.c > > @@ -187,6 +187,9 @@ ofperr_encode_reply(enum ofperr error, const struct > ofp_header *oh) > > uint16_t len = ntohs(oh->length); > > > > domain = ofperr_domain_from_version(oh->version); > > + if (error == OFPERR_OFPBRC_BAD_VERSION) { > > + domain = ofperr_domain_from_version(OFP10_VERSION); > > + } > > return ofperr_encode_msg__(error, domain, oh->xid, oh, MIN(len, 64)); > > } > > > > > > > > Regards > > Amit Tewari > > NEC HCL ST > > > > -----Original Message----- > > From: discuss-boun...@openvswitch.org > [mailto:discuss-boun...@openvswitch.org] On Behalf Of Ben Pfaff > > Sent: Thursday, June 28, 2012 8:54 PM > > To: Amit Tewari > > Cc: 'b...@openvswitch.org'; 'discuss@openvswitch.org' > > Subject: Re: [ovs-discuss] [PATCH] ofproto/ofproto.c, lib/vconn.c:: > OFPBRC_BAD_VERSION generated from switch when there is version mismatch. > > > > On Thu, Jun 28, 2012 at 06:16:06AM +0000, Amit Tewari wrote: > > > As per our analysis and requirement we provided the patch for selected > > openflow messages which carry useful data in data field for controller from > > switch. > > > > > > Please confirm whether you have applied the patch we provided earlier? > > > > No. It doesn't make sense to add a special case for every message in > > the middle of the code. If we need to handle this at all, we should > > handle it in a single place without duplicate special cases. > > > > Also, your patch was against an old version of Open vSwitch. We only > > accept patches against the newest version. > > > > > Please let me know if am missing any openflow message. > > > > See, that's the problem. You *can* miss some messages if you do it your > > way. > > _______________________________________________ > > discuss mailing list > > discuss@openvswitch.org > > http://openvswitch.org/mailman/listinfo/discuss > > > > DISCLAIMER: > > ----------------------------------------------------------------------------------------------------------------------- > > The contents of this e-mail and any attachment(s) are confidential and > intended > > for the named recipient(s) only. > > It shall not attach any liability on the originator or NECHCL or its > > affiliates. Any views or opinions presented in > > this email are solely those of the author and may not necessarily reflect the > > opinions of NECHCL or its affiliates. > > Any form of reproduction, dissemination, copying, disclosure, modification, > > distribution and / or publication of > > this message without the prior written consent of the author of this e-mail is > > strictly prohibited. If you have > > received this email in error please delete it and notify the sender > > immediately. . > > ----------------------------------------------------------------------------------------------------------------------- _______________________________________________ discuss mailing list discuss@openvswitch.org http://openvswitch.org/mailman/listinfo/discuss