From: Paul Blakey <[email protected]> To be used later for offloading rules matching on tcp_flags.
Signed-off-by: Paul Blakey <[email protected]> Reviewed-by: Roi Dayan <[email protected]> --- lib/tc.c | 11 +++++++++++ lib/tc.h | 1 + 2 files changed, 12 insertions(+) diff --git a/lib/tc.c b/lib/tc.c index ce3e070..bf12a5b 100644 --- a/lib/tc.c +++ b/lib/tc.c @@ -200,6 +200,10 @@ static const struct nl_policy tca_flower_policy[] = { .optional = true, }, [TCA_FLOWER_KEY_IP_TTL_MASK] = { .type = NL_A_U8, .optional = true, }, + [TCA_FLOWER_KEY_TCP_FLAGS] = { .type = NL_A_U16, + .optional = true, }, + [TCA_FLOWER_KEY_TCP_FLAGS_MASK] = { .type = NL_A_U16, + .optional = true, }, }; static void @@ -325,6 +329,12 @@ nl_parse_flower_ip(struct nlattr **attrs, struct tc_flower *flower) { mask->tcp_dst = nl_attr_get_be16(attrs[TCA_FLOWER_KEY_TCP_DST_MASK]); } + if (attrs[TCA_FLOWER_KEY_TCP_FLAGS_MASK]) { + key->tcp_flags = + nl_attr_get_be16(attrs[TCA_FLOWER_KEY_TCP_FLAGS]); + mask->tcp_flags = + nl_attr_get_be16(attrs[TCA_FLOWER_KEY_TCP_FLAGS_MASK]); + } } else if (ip_proto == IPPROTO_UDP) { if (attrs[TCA_FLOWER_KEY_UDP_SRC_MASK]) { key->udp_src = nl_attr_get_be16(attrs[TCA_FLOWER_KEY_UDP_SRC]); @@ -1037,6 +1047,7 @@ nl_msg_put_flower_options(struct ofpbuf *request, struct tc_flower *flower) } else if (flower->key.ip_proto == IPPROTO_TCP) { FLOWER_PUT_MASKED_VALUE(tcp_src, TCA_FLOWER_KEY_TCP_SRC); FLOWER_PUT_MASKED_VALUE(tcp_dst, TCA_FLOWER_KEY_TCP_DST); + FLOWER_PUT_MASKED_VALUE(tcp_flags, TCA_FLOWER_KEY_TCP_FLAGS); } else if (flower->key.ip_proto == IPPROTO_SCTP) { FLOWER_PUT_MASKED_VALUE(sctp_src, TCA_FLOWER_KEY_SCTP_SRC); FLOWER_PUT_MASKED_VALUE(sctp_dst, TCA_FLOWER_KEY_SCTP_DST); diff --git a/lib/tc.h b/lib/tc.h index 362e751..6c69b79 100644 --- a/lib/tc.h +++ b/lib/tc.h @@ -78,6 +78,7 @@ struct tc_flower_key { ovs_be16 tcp_src; ovs_be16 tcp_dst; + ovs_be16 tcp_flags; ovs_be16 udp_src; ovs_be16 udp_dst; -- 2.8.0 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
