Message ID | 20230710110517.128560-2-amusil@redhat.com |
---|---|
State | Superseded |
Headers | show |
Series | Add MAC binding aging timestamp refresh mechanism | expand |
Context | Check | Description |
---|---|---|
ovsrobot/apply-robot | success | apply and check: success |
ovsrobot/github-robot-_Build_and_Test | fail | github build: failed |
ovsrobot/github-robot-_ovn-kubernetes | fail | github build: failed |
Acked-by: Mark Michelson <mmichels@redhat.com> On 7/10/23 07:05, Ales Musil wrote: > The mac_cache_use is just resubmit to MAC use cache table, > which will be later on used by the timestamp refresh > mechanism. > > This is a preparation for the MAC binding refresh mechanism. > > Signed-off-by: Ales Musil <amusil@redhat.com> > --- > include/ovn/actions.h | 3 +++ > lib/actions.c | 17 +++++++++++++++++ > ovn-sb.xml | 8 ++++++++ > tests/ovn.at | 4 ++++ > tests/test-ovn.c | 1 + > utilities/ovn-trace.c | 2 ++ > 6 files changed, 35 insertions(+) > > diff --git a/include/ovn/actions.h b/include/ovn/actions.h > index 23a919049..04bb6ffd0 100644 > --- a/include/ovn/actions.h > +++ b/include/ovn/actions.h > @@ -126,6 +126,7 @@ struct collector_set_ids; > OVNACT(COMMIT_LB_AFF, ovnact_commit_lb_aff) \ > OVNACT(CHK_LB_AFF, ovnact_result) \ > OVNACT(SAMPLE, ovnact_sample) \ > + OVNACT(MAC_CACHE_USE, ovnact_null) \ > > /* enum ovnact_type, with a member OVNACT_<ENUM> for each action. */ > enum OVS_PACKED_ENUM ovnact_type { > @@ -879,6 +880,8 @@ struct ovnact_encode_params { > sends packets to controller. */ > uint32_t common_nat_ct_zone; /* When performing NAT in a common CT zone, > this determines which CT zone to use */ > + uint32_t mac_cache_use_table; /* OpenFlow table for 'mac_cache_use' > + * to resubmit. */ > }; > > void ovnacts_encode(const struct ovnact[], size_t ovnacts_len, > diff --git a/lib/actions.c b/lib/actions.c > index 037172e60..4f67df13f 100644 > --- a/lib/actions.c > +++ b/lib/actions.c > @@ -5224,6 +5224,20 @@ encode_CHK_LB_AFF(const struct ovnact_result *res, > MLF_USE_LB_AFF_SESSION_BIT, ofpacts); > } > > +static void > +format_MAC_CACHE_USE(const struct ovnact_null *null OVS_UNUSED, struct ds *s) > +{ > + ds_put_cstr(s, "mac_cache_use;"); > +} > + > +static void > +encode_MAC_CACHE_USE(const struct ovnact_null *null OVS_UNUSED, > + const struct ovnact_encode_params *ep, > + struct ofpbuf *ofpacts) > +{ > + emit_resubmit(ofpacts, ep->mac_cache_use_table); > +} > + > /* Parses an assignment or exchange or put_dhcp_opts action. */ > static void > parse_set_action(struct action_context *ctx) > @@ -5429,9 +5443,12 @@ parse_action(struct action_context *ctx) > parse_commit_lb_aff(ctx, ovnact_put_COMMIT_LB_AFF(ctx->ovnacts)); > } else if (lexer_match_id(ctx->lexer, "sample")) { > parse_sample(ctx); > + } else if (lexer_match_id(ctx->lexer, "mac_cache_use")) { > + ovnact_put_MAC_CACHE_USE(ctx->ovnacts); > } else { > lexer_syntax_error(ctx->lexer, "expecting action"); > } > + > lexer_force_match(ctx->lexer, LEX_T_SEMICOLON); > return !ctx->lexer->error; > } > diff --git a/ovn-sb.xml b/ovn-sb.xml > index f9dd13602..46aedf973 100644 > --- a/ovn-sb.xml > +++ b/ovn-sb.xml > @@ -2790,6 +2790,14 @@ tcp.flags = RST; > </dd> > </dl> > </dd> > + > + <dt><code>mac_cache_use;</code></dt> > + <dd> > + <p> > + This action resubmits to corresponding table which updates the > + use statistics of MAC cache. > + </p> > + </dd> > </dl> > </column> > > diff --git a/tests/ovn.at b/tests/ovn.at > index cd6d4b9ff..7fee42acf 100644 > --- a/tests/ovn.at > +++ b/tests/ovn.at > @@ -2253,6 +2253,10 @@ sample(probability=0,collector_set=200,obs_domain=300,obs_point=foo); > sample(probability=10,foo=bar,obs_domain=0,obs_point=1000); > Syntax error at `foo' unknown argument. > > +# mac_cache_use > +mac_cache_use; > + encodes as resubmit(,79) > + > # Miscellaneous negative tests. > ; > Syntax error at `;'. > diff --git a/tests/test-ovn.c b/tests/test-ovn.c > index 6c7754eac..1f1e27b51 100644 > --- a/tests/test-ovn.c > +++ b/tests/test-ovn.c > @@ -1374,6 +1374,7 @@ test_parse_actions(struct ovs_cmdl_context *ctx OVS_UNUSED) > .common_nat_ct_zone = MFF_LOG_DNAT_ZONE, > .in_port_sec_ptable = OFTABLE_CHK_IN_PORT_SEC, > .out_port_sec_ptable = OFTABLE_CHK_OUT_PORT_SEC, > + .mac_cache_use_table = OFTABLE_MAC_CACHE_USE, > .lflow_uuid.parts = > { 0xaaaaaaaa, 0xbbbbbbbb, 0xcccccccc, 0xdddddddd}, > .dp_key = 0xabcdef, > diff --git a/utilities/ovn-trace.c b/utilities/ovn-trace.c > index fb54ed060..e6b161850 100644 > --- a/utilities/ovn-trace.c > +++ b/utilities/ovn-trace.c > @@ -3353,6 +3353,8 @@ trace_actions(const struct ovnact *ovnacts, size_t ovnacts_len, > break; > case OVNACT_SAMPLE: > break; > + case OVNACT_MAC_CACHE_USE: > + break; > } > } > ofpbuf_uninit(&stack);
diff --git a/include/ovn/actions.h b/include/ovn/actions.h index 23a919049..04bb6ffd0 100644 --- a/include/ovn/actions.h +++ b/include/ovn/actions.h @@ -126,6 +126,7 @@ struct collector_set_ids; OVNACT(COMMIT_LB_AFF, ovnact_commit_lb_aff) \ OVNACT(CHK_LB_AFF, ovnact_result) \ OVNACT(SAMPLE, ovnact_sample) \ + OVNACT(MAC_CACHE_USE, ovnact_null) \ /* enum ovnact_type, with a member OVNACT_<ENUM> for each action. */ enum OVS_PACKED_ENUM ovnact_type { @@ -879,6 +880,8 @@ struct ovnact_encode_params { sends packets to controller. */ uint32_t common_nat_ct_zone; /* When performing NAT in a common CT zone, this determines which CT zone to use */ + uint32_t mac_cache_use_table; /* OpenFlow table for 'mac_cache_use' + * to resubmit. */ }; void ovnacts_encode(const struct ovnact[], size_t ovnacts_len, diff --git a/lib/actions.c b/lib/actions.c index 037172e60..4f67df13f 100644 --- a/lib/actions.c +++ b/lib/actions.c @@ -5224,6 +5224,20 @@ encode_CHK_LB_AFF(const struct ovnact_result *res, MLF_USE_LB_AFF_SESSION_BIT, ofpacts); } +static void +format_MAC_CACHE_USE(const struct ovnact_null *null OVS_UNUSED, struct ds *s) +{ + ds_put_cstr(s, "mac_cache_use;"); +} + +static void +encode_MAC_CACHE_USE(const struct ovnact_null *null OVS_UNUSED, + const struct ovnact_encode_params *ep, + struct ofpbuf *ofpacts) +{ + emit_resubmit(ofpacts, ep->mac_cache_use_table); +} + /* Parses an assignment or exchange or put_dhcp_opts action. */ static void parse_set_action(struct action_context *ctx) @@ -5429,9 +5443,12 @@ parse_action(struct action_context *ctx) parse_commit_lb_aff(ctx, ovnact_put_COMMIT_LB_AFF(ctx->ovnacts)); } else if (lexer_match_id(ctx->lexer, "sample")) { parse_sample(ctx); + } else if (lexer_match_id(ctx->lexer, "mac_cache_use")) { + ovnact_put_MAC_CACHE_USE(ctx->ovnacts); } else { lexer_syntax_error(ctx->lexer, "expecting action"); } + lexer_force_match(ctx->lexer, LEX_T_SEMICOLON); return !ctx->lexer->error; } diff --git a/ovn-sb.xml b/ovn-sb.xml index f9dd13602..46aedf973 100644 --- a/ovn-sb.xml +++ b/ovn-sb.xml @@ -2790,6 +2790,14 @@ tcp.flags = RST; </dd> </dl> </dd> + + <dt><code>mac_cache_use;</code></dt> + <dd> + <p> + This action resubmits to corresponding table which updates the + use statistics of MAC cache. + </p> + </dd> </dl> </column> diff --git a/tests/ovn.at b/tests/ovn.at index cd6d4b9ff..7fee42acf 100644 --- a/tests/ovn.at +++ b/tests/ovn.at @@ -2253,6 +2253,10 @@ sample(probability=0,collector_set=200,obs_domain=300,obs_point=foo); sample(probability=10,foo=bar,obs_domain=0,obs_point=1000); Syntax error at `foo' unknown argument. +# mac_cache_use +mac_cache_use; + encodes as resubmit(,79) + # Miscellaneous negative tests. ; Syntax error at `;'. diff --git a/tests/test-ovn.c b/tests/test-ovn.c index 6c7754eac..1f1e27b51 100644 --- a/tests/test-ovn.c +++ b/tests/test-ovn.c @@ -1374,6 +1374,7 @@ test_parse_actions(struct ovs_cmdl_context *ctx OVS_UNUSED) .common_nat_ct_zone = MFF_LOG_DNAT_ZONE, .in_port_sec_ptable = OFTABLE_CHK_IN_PORT_SEC, .out_port_sec_ptable = OFTABLE_CHK_OUT_PORT_SEC, + .mac_cache_use_table = OFTABLE_MAC_CACHE_USE, .lflow_uuid.parts = { 0xaaaaaaaa, 0xbbbbbbbb, 0xcccccccc, 0xdddddddd}, .dp_key = 0xabcdef, diff --git a/utilities/ovn-trace.c b/utilities/ovn-trace.c index fb54ed060..e6b161850 100644 --- a/utilities/ovn-trace.c +++ b/utilities/ovn-trace.c @@ -3353,6 +3353,8 @@ trace_actions(const struct ovnact *ovnacts, size_t ovnacts_len, break; case OVNACT_SAMPLE: break; + case OVNACT_MAC_CACHE_USE: + break; } } ofpbuf_uninit(&stack);
The mac_cache_use is just resubmit to MAC use cache table, which will be later on used by the timestamp refresh mechanism. This is a preparation for the MAC binding refresh mechanism. Signed-off-by: Ales Musil <amusil@redhat.com> --- include/ovn/actions.h | 3 +++ lib/actions.c | 17 +++++++++++++++++ ovn-sb.xml | 8 ++++++++ tests/ovn.at | 4 ++++ tests/test-ovn.c | 1 + utilities/ovn-trace.c | 2 ++ 6 files changed, 35 insertions(+)