Commit
11460e2316b88f0bd0ea0005d94338d800ea16bd
(flow: Enable retrieval of TCP flags from IPv6 traffic.) updated
one of the TCP flags extraction functions in userspace but missed
the other. This updates that function and converts the other to
use it to reduce duplication.
Bug #10194
Signed-off-by: Jesse Gross <jesse@nicira.com>
long long int used; /* Last used time, in monotonic msecs. */
long long int packet_count; /* Number of packets matched. */
long long int byte_count; /* Number of bytes matched. */
long long int used; /* Last used time, in monotonic msecs. */
long long int packet_count; /* Number of packets matched. */
long long int byte_count; /* Number of bytes matched. */
- ovs_be16 tcp_ctl; /* Bitwise-OR of seen tcp_ctl values. */
+ ovs_be16 tcp_flags; /* Bitwise-OR of seen tcp_flags values. */
/* Actions. */
struct nlattr *actions;
/* Actions. */
struct nlattr *actions;
stats->n_packets = flow->packet_count;
stats->n_bytes = flow->byte_count;
stats->used = flow->used;
stats->n_packets = flow->packet_count;
stats->n_bytes = flow->byte_count;
stats->used = flow->used;
- stats->tcp_flags = TCP_FLAGS(flow->tcp_ctl);
+ stats->tcp_flags = flow->tcp_flags;
flow->used = 0;
flow->packet_count = 0;
flow->byte_count = 0;
flow->used = 0;
flow->packet_count = 0;
flow->byte_count = 0;
flow->used = time_msec();
flow->packet_count++;
flow->byte_count += packet->size;
flow->used = time_msec();
flow->packet_count++;
flow->byte_count += packet->size;
- if ((key->dl_type == htons(ETH_TYPE_IP) ||
- key->dl_type == htons(ETH_TYPE_IPV6)) &&
- key->nw_proto == IPPROTO_TCP && packet->l7) {
- struct tcp_header *th = packet->l4;
- flow->tcp_ctl |= th->tcp_ctl;
- }
+ flow->tcp_flags |= packet_get_tcp_flags(packet, key);
uint8_t
packet_get_tcp_flags(const struct ofpbuf *packet, const struct flow *flow)
{
uint8_t
packet_get_tcp_flags(const struct ofpbuf *packet, const struct flow *flow)
{
- /* XXX IPv6? */
- if (flow->dl_type == htons(ETH_TYPE_IP) && packet->l4
- && flow->nw_proto == IPPROTO_TCP && packet->l7) {
+ if ((flow->dl_type == htons(ETH_TYPE_IP) ||
+ flow->dl_type == htons(ETH_TYPE_IPV6)) &&
+ flow->nw_proto == IPPROTO_TCP && packet->l7) {
const struct tcp_header *tcp = packet->l4;
return TCP_FLAGS(tcp->tcp_ctl);
} else {
const struct tcp_header *tcp = packet->l4;
return TCP_FLAGS(tcp->tcp_ctl);
} else {