On Wed, Aug 08, 2012 at 06:49:44AM +0900, Simon Horman wrote: > Signed-off-by: Simon Horman <ho...@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. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev