[ovs-dev] [PATCH 09/41] ofp-util: Prepare Packet Out decoder for other Open Flow versions

Simon Horman horms at verge.net.au
Thu Aug 9 00:05:43 UTC 2012


On Wed, Aug 08, 2012 at 05:00:02PM -0700, Ben Pfaff wrote:
> On Thu, Aug 09, 2012 at 08:56:10AM +0900, Simon Horman wrote:
> > On Wed, Aug 08, 2012 at 04:42:30PM -0700, Ben Pfaff wrote:
> > > On Wed, Aug 08, 2012 at 06:49:44AM +0900, Simon Horman wrote:
> > > > Signed-off-by: Simon Horman <horms at verge.net.au>
> > > >  {
> > > > -    const struct ofp_packet_out *opo;
> > > > -    enum ofperr error;
> > > >      enum ofpraw raw;
> > > >      struct ofpbuf b;
> > > > +    enum ofperr bad_in_port_err = OFPERR_OFPET_BAD_REQUEST;
> > > >  
> > > >      ofpbuf_use_const(&b, oh, ntohs(oh->length));
> > > >      raw = ofpraw_pull_assert(&b);
> > > > -    assert(raw == OFPRAW_OFPT10_PACKET_OUT);
> > > >  
> > > > -    opo = ofpbuf_pull(&b, sizeof *opo);
> > > > -    po->buffer_id = ntohl(opo->buffer_id);
> > > > -    po->in_port = ntohs(opo->in_port);
> > > > +    if (raw == OFPRAW_OFPT10_PACKET_OUT) {
> > > > +        enum ofperr error;
> > > > +        const struct ofp_packet_out *opo = ofpbuf_pull(&b, sizeof *opo);
> > > > +
> > > > +        po->buffer_id = ntohl(opo->buffer_id);
> > > > +        po->in_port = ntohs(opo->in_port);
> > > > +
> > > > +        error = ofpacts_pull_openflow10(&b, ntohs(opo->actions_len), ofpacts);
> > > > +        if (error) {
> > > > +            return error;
> > > > +        }
> > > > +        bad_in_port_err = OFPERR_NXBRC_BAD_IN_PORT;
> > > > +    } else {
> > > > +        NOT_REACHED();
> > > > +    }
> > > 
> > > I think that we should consistently use OFPERR_NXBRC_BAD_IN_PORT.
> > > OFPERR_OFPET_BAD_REQUEST isn't a good substitute because it isn't
> > > encodable as an error at all (it is an error category, not an error
> > > itself).
> > > 
> > > If there's a better choice for a standard error code in some OpenFlow
> > > version then I'm happy to use that.
> > 
> > I'm comfortable with using OFPERR_NXBRC_BAD_IN_PORT if you are.
> 
> Thanks.
> 
> This is what I ended up with:

Thanks, looks good.



More information about the dev mailing list