Signed-off-by: Simon Horman <ho...@verge.net.au> ---
v7 * Manual rebase v6 * No change v5 * No change v4 * No change v3 * Manual rebase * Correct title: This patch relates to Packet Out not Packet In * Use OFPT_PACKET_OUT instead of OFPT11_PACKET_OUT, it seems easier to use a single code and differentiate using the version in the ofp_header * Return error value returned by ofputil_port_from_ofp11() rather than OFPERR_OFPBMC_BAD_VALUE. v2 * No change Conflicts: lib/ofp-util.c --- lib/ofp-util.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/ofp-util.c b/lib/ofp-util.c index a2ac943..f015929 100644 --- a/lib/ofp-util.c +++ b/lib/ofp-util.c @@ -2179,7 +2179,24 @@ ofputil_decode_packet_out(struct ofputil_packet_out *po, ofpbuf_use_const(&b, oh, ntohs(oh->length)); raw = ofpraw_pull_assert(&b); - if (raw == OFPRAW_OFPT10_PACKET_OUT) { + if (raw == OFPRAW_OFPT11_PACKET_OUT) { + enum ofperr error; + const struct ofp11_packet_out *opo = ofpbuf_pull(&b, sizeof *opo); + + po->buffer_id = ntohl(opo->buffer_id); + error = ofputil_port_from_ofp11(opo->in_port, &po->in_port); + if (error) { + return error; + } + + error = ofpacts_pull_openflow11_actions(&b, ntohs(opo->actions_len), + ofpacts); + if (error) { + return error; + } + + bad_in_port_err = OFPERR_NXBRC_BAD_IN_PORT; + } else if (raw == OFPRAW_OFPT10_PACKET_OUT) { enum ofperr error; const struct ofp_packet_out *opo = ofpbuf_pull(&b, sizeof *opo); -- 1.7.10.2.484.gcd07cc5 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev