2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-31 14:25:26 +00:00

flow: New function flow_clear_conntrack().

This will have a new user in an upcoming commit.

Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Miguel Angel Ajo <majopela@redhat.com>
This commit is contained in:
Ben Pfaff
2017-04-18 11:22:05 -07:00
parent b02e6cf86a
commit 6846e91e6f
3 changed files with 23 additions and 17 deletions

View File

@@ -1024,6 +1024,27 @@ ct_state_from_string(const char *s)
return 0;
}
/* Clears the fields in 'flow' associated with connection tracking. */
void
flow_clear_conntrack(struct flow *flow)
{
flow->ct_state = 0;
flow->ct_zone = 0;
flow->ct_mark = 0;
flow->ct_label = OVS_U128_ZERO;
flow->ct_nw_proto = 0;
flow->ct_tp_src = 0;
flow->ct_tp_dst = 0;
if (flow->dl_type == htons(ETH_TYPE_IP)) {
flow->ct_nw_src = 0;
flow->ct_nw_dst = 0;
} else if (flow->dl_type == htons(ETH_TYPE_IPV6)) {
memset(&flow->ct_ipv6_src, 0, sizeof flow->ct_ipv6_src);
memset(&flow->ct_ipv6_dst, 0, sizeof flow->ct_ipv6_dst);
}
}
char *
flow_to_string(const struct flow *flow)
{

View File

@@ -74,6 +74,7 @@ void flow_get_metadata(const struct flow *, struct match *flow_metadata);
const char *ct_state_to_string(uint32_t state);
uint32_t ct_state_from_string(const char *);
void flow_clear_conntrack(struct flow *);
char *flow_to_string(const struct flow *);
void format_flags(struct ds *ds, const char *(*bit_to_string)(uint32_t),

View File

@@ -3216,23 +3216,7 @@ static void
clear_conntrack(struct xlate_ctx *ctx)
{
ctx->conntracked = false;
struct flow *flow = &ctx->xin->flow;
flow->ct_state = 0;
flow->ct_zone = 0;
flow->ct_mark = 0;
flow->ct_label = OVS_U128_ZERO;
flow->ct_nw_proto = 0;
flow->ct_tp_src = 0;
flow->ct_tp_dst = 0;
if (flow->dl_type == htons(ETH_TYPE_IP)) {
flow->ct_nw_src = 0;
flow->ct_nw_dst = 0;
} if (flow->dl_type == htons(ETH_TYPE_IPV6)) {
memset(&flow->ct_ipv6_src, 0, sizeof flow->ct_ipv6_src);
memset(&flow->ct_ipv6_dst, 0, sizeof flow->ct_ipv6_dst);
}
flow_clear_conntrack(&ctx->xin->flow);
}
static bool