if (!packet->size) {
flow_compose(packet, flow);
} else {
- union flow_in_port in_port = flow->in_port;
- struct pkt_metadata md;
+ struct pkt_metadata md = PKT_METADATA_INITIALIZER_FLOW(flow);
/* Use the metadata from the flow and the packet argument
* to reconstruct the flow. */
- pkt_metadata_init(&md, NULL, flow->skb_priority,
- flow->pkt_mark, &in_port);
-
flow_extract(packet, &md, flow);
}
}
}
if (rule || ofpacts) {
- uint16_t tcp_flags;
-
- tcp_flags = packet ? packet_get_tcp_flags(packet, flow) : 0;
trace.result = ds;
trace.flow = *flow;
- xlate_in_init(&trace.xin, ofproto, flow, rule, tcp_flags, packet);
+ xlate_in_init(&trace.xin, ofproto, flow, rule, ntohs(flow->tcp_flags),
+ packet);
if (ofpacts) {
trace.xin.ofpacts = ofpacts;
trace.xin.ofpacts_len = ofpacts_len;