sh->sctp_csum = old_csum ^ old_correct_csum ^ new_csum;
}
-/* If 'packet' is a TCP packet, returns the TCP flags. Otherwise, returns 0.
- *
- * 'flow' must be the flow corresponding to 'packet' and 'packet''s header
- * pointers must be properly initialized (e.g. with flow_extract()). */
-uint16_t
-packet_get_tcp_flags(const struct ofpbuf *packet, const struct flow *flow)
-{
- if (dl_type_is_ip_any(flow->dl_type) &&
- flow->nw_proto == IPPROTO_TCP && packet->l7) {
- const struct tcp_header *tcp = packet->l4;
- return TCP_FLAGS(tcp->tcp_ctl);
- } else {
- return 0;
- }
-}
-
const char *
packet_tcp_flag_to_string(uint32_t flag)
{
}
/* Appends a string representation of the TCP flags value 'tcp_flags'
- * (e.g. obtained via packet_get_tcp_flags() or TCP_FLAGS) to 's', in the
+ * (e.g. from struct flow.tcp_flags or obtained via TCP_FLAGS) to 's', in the
* format used by tcpdump. */
void
packet_format_tcp_flags(struct ds *s, uint16_t tcp_flags)
ds_put_cstr(s, "[800]");
}
}
-
-void pkt_metadata_init(struct pkt_metadata *md, const struct flow_tnl *tnl,
- const uint32_t skb_priority,
- const uint32_t pkt_mark,
- const union flow_in_port *in_port)
-{
-
- tnl ? memcpy(&md->tunnel, tnl, sizeof(md->tunnel))
- : memset(&md->tunnel, 0, sizeof(md->tunnel));
-
- md->skb_priority = skb_priority;
- md->pkt_mark = pkt_mark;
- md->in_port.odp_port = in_port ? in_port->odp_port : ODPP_NONE;
-}
-
-void pkt_metadata_from_flow(struct pkt_metadata *md, const struct flow *flow)
-{
- pkt_metadata_init(md, &flow->tunnel, flow->skb_priority,
- flow->pkt_mark, &flow->in_port);
-}