When a packet is sent to the controller, dl_type is not stored in the 'ofputil_packet_in_private'. When the packet is resumed, the flow's dl_type is 0 and this leads to invalid value in ct_orig_tuple in the pkt_metadata.
This patch adds the dl_type to the metadata so that conntrack information can be interpreted correctly when packets are resumed. Reported-by: Daniel Alvarez Sanchez <[email protected]> Reported-at: https://mail.openvswitch.org/pipermail/ovs-dev/2017-October/339868.html Signed-off-by: Daniel Alvarez <[email protected]> Signed-off-by: Numan Siddique <[email protected]> --- lib/flow.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/flow.c b/lib/flow.c index b2b10aa48..4d2b7747a 100644 --- a/lib/flow.c +++ b/lib/flow.c @@ -1073,6 +1073,9 @@ flow_get_metadata(const struct flow *flow, struct match *flow_metadata) if (flow->ct_state != 0) { match_set_ct_state(flow_metadata, flow->ct_state); + /* Match dl_type since it is required for the later interpretation of + * the conntrack metadata. */ + match_set_dl_type(flow_metadata, flow->dl_type); if (is_ct_valid(flow, NULL, NULL) && flow->ct_nw_proto != 0) { if (flow->dl_type == htons(ETH_TYPE_IP)) { match_set_ct_nw_src(flow_metadata, flow->ct_nw_src); -- 2.13.5 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
