Message ID | 1564097054-72663-7-git-send-email-yihung.wei@gmail.com |
---|---|
State | Changes Requested |
Headers | show |
Series | Support zone-based conntrack timeout policy | expand |
On Thu, Jul 25, 2019 at 04:24:08PM -0700, Yi-Hung Wei wrote: > These functions will be useful in the following patches. > > Signed-off-by: Yi-Hung Wei <yihung.wei@gmail.com> > --- > lib/ct-dpif.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ > lib/ct-dpif.h | 3 +++ > 2 files changed, 56 insertions(+) > > diff --git a/lib/ct-dpif.c b/lib/ct-dpif.c > index ae347a9bb46d..1625754e2441 100644 > --- a/lib/ct-dpif.c > +++ b/lib/ct-dpif.c > @@ -761,6 +761,59 @@ ct_dpif_format_zone_limits(uint32_t default_limit, > } > } > > +static const char *const ct_dpif_tp_attr_string[] = { > +#define CT_DPIF_TP_TCP_ATTR(ATTR) \ > + [CT_DPIF_TP_ATTR_TCP_##ATTR] = "TCP_"#ATTR, > + CT_DPIF_TP_TCP_ATTRS > +#undef CT_DPIF_TP_TCP_ATTR > +#define CT_DPIF_TP_UDP_ATTR(ATTR) \ > + [CT_DPIF_TP_ATTR_UDP_##ATTR] = "UDP_"#ATTR, > + CT_DPIF_TP_UDP_ATTRS > +#undef CT_DPIF_TP_UDP_ATTR > +#define CT_DPIF_TP_ICMP_ATTR(ATTR) \ > + [CT_DPIF_TP_ATTR_ICMP_##ATTR] = "ICMP_"#ATTR, > + CT_DPIF_TP_ICMP_ATTRS > +#undef CT_DPIF_TP_ICMP_ATTR > +}; > + > +static bool > +ct_dpif_set_timeout_policy_attr(struct ct_dpif_timeout_policy *tp, > + uint32_t attr, uint32_t value) There is a little mis-aligned above. Otherwise LGTM Acked-by: William Tu <u9012063@gmail.com> > +{ > + if (tp->present & (1 << attr) && tp->attrs[attr] == value) { > + return false; > + } > + tp->attrs[attr] = value; > + tp->present |= 1 << attr; > + return true; > +} > + > +/* Sets a timeout value identified by '*name' to 'value'. > + * Returns true if the attribute is changed */ > +bool > +ct_dpif_set_timeout_policy_attr_by_name(struct ct_dpif_timeout_policy *tp, > + const char *name, uint32_t value) > +{ > + uint32_t i; > + > + for (i = 0; i < CT_DPIF_TP_ATTR_MAX; ++i) { > + if (!strcasecmp(name, ct_dpif_tp_attr_string[i])) { > + return ct_dpif_set_timeout_policy_attr(tp, i, value); > + } > + } > + return false; > +} > + > +bool > +ct_dpif_timeout_policy_support_ipproto(uint8_t ipproto) > +{ > + if (ipproto == IPPROTO_TCP || ipproto == IPPROTO_UDP || > + ipproto == IPPROTO_ICMP || ipproto == IPPROTO_ICMPV6) { > + return true; > + } > + return false; > +} > + > int > ct_dpif_add_timeout_policy(struct dpif *dpif, bool is_default, > const struct ct_dpif_timeout_policy *tp) > diff --git a/lib/ct-dpif.h b/lib/ct-dpif.h > index 9dc33bede527..de032cc416ce 100644 > --- a/lib/ct-dpif.h > +++ b/lib/ct-dpif.h > @@ -305,6 +305,9 @@ bool ct_dpif_parse_zone_limit_tuple(const char *s, uint16_t *pzone, > uint32_t *plimit, struct ds *); > void ct_dpif_format_zone_limits(uint32_t default_limit, > const struct ovs_list *, struct ds *); > +bool ct_dpif_set_timeout_policy_attr_by_name(struct ct_dpif_timeout_policy *tp, > + const char *key, uint32_t value); > +bool ct_dpif_timeout_policy_support_ipproto(uint8_t ipproto); > int ct_dpif_add_timeout_policy(struct dpif *dpif, bool is_default, > const struct ct_dpif_timeout_policy *tp); > int ct_dpif_get_timeout_policy(struct dpif *dpif, bool is_default, > -- > 2.7.4 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
On Fri, Jul 26, 2019 at 9:04 AM William Tu <u9012063@gmail.com> wrote: > > --- a/lib/ct-dpif.c > > +++ b/lib/ct-dpif.c > > +static bool > > +ct_dpif_set_timeout_policy_attr(struct ct_dpif_timeout_policy *tp, > > + uint32_t attr, uint32_t value) > > There is a little mis-aligned above. > > Otherwise LGTM > Acked-by: William Tu <u9012063@gmail.com> Thanks for review, I will fix the indention issue in v2. -Yi-Hung
diff --git a/lib/ct-dpif.c b/lib/ct-dpif.c index ae347a9bb46d..1625754e2441 100644 --- a/lib/ct-dpif.c +++ b/lib/ct-dpif.c @@ -761,6 +761,59 @@ ct_dpif_format_zone_limits(uint32_t default_limit, } } +static const char *const ct_dpif_tp_attr_string[] = { +#define CT_DPIF_TP_TCP_ATTR(ATTR) \ + [CT_DPIF_TP_ATTR_TCP_##ATTR] = "TCP_"#ATTR, + CT_DPIF_TP_TCP_ATTRS +#undef CT_DPIF_TP_TCP_ATTR +#define CT_DPIF_TP_UDP_ATTR(ATTR) \ + [CT_DPIF_TP_ATTR_UDP_##ATTR] = "UDP_"#ATTR, + CT_DPIF_TP_UDP_ATTRS +#undef CT_DPIF_TP_UDP_ATTR +#define CT_DPIF_TP_ICMP_ATTR(ATTR) \ + [CT_DPIF_TP_ATTR_ICMP_##ATTR] = "ICMP_"#ATTR, + CT_DPIF_TP_ICMP_ATTRS +#undef CT_DPIF_TP_ICMP_ATTR +}; + +static bool +ct_dpif_set_timeout_policy_attr(struct ct_dpif_timeout_policy *tp, + uint32_t attr, uint32_t value) +{ + if (tp->present & (1 << attr) && tp->attrs[attr] == value) { + return false; + } + tp->attrs[attr] = value; + tp->present |= 1 << attr; + return true; +} + +/* Sets a timeout value identified by '*name' to 'value'. + * Returns true if the attribute is changed */ +bool +ct_dpif_set_timeout_policy_attr_by_name(struct ct_dpif_timeout_policy *tp, + const char *name, uint32_t value) +{ + uint32_t i; + + for (i = 0; i < CT_DPIF_TP_ATTR_MAX; ++i) { + if (!strcasecmp(name, ct_dpif_tp_attr_string[i])) { + return ct_dpif_set_timeout_policy_attr(tp, i, value); + } + } + return false; +} + +bool +ct_dpif_timeout_policy_support_ipproto(uint8_t ipproto) +{ + if (ipproto == IPPROTO_TCP || ipproto == IPPROTO_UDP || + ipproto == IPPROTO_ICMP || ipproto == IPPROTO_ICMPV6) { + return true; + } + return false; +} + int ct_dpif_add_timeout_policy(struct dpif *dpif, bool is_default, const struct ct_dpif_timeout_policy *tp) diff --git a/lib/ct-dpif.h b/lib/ct-dpif.h index 9dc33bede527..de032cc416ce 100644 --- a/lib/ct-dpif.h +++ b/lib/ct-dpif.h @@ -305,6 +305,9 @@ bool ct_dpif_parse_zone_limit_tuple(const char *s, uint16_t *pzone, uint32_t *plimit, struct ds *); void ct_dpif_format_zone_limits(uint32_t default_limit, const struct ovs_list *, struct ds *); +bool ct_dpif_set_timeout_policy_attr_by_name(struct ct_dpif_timeout_policy *tp, + const char *key, uint32_t value); +bool ct_dpif_timeout_policy_support_ipproto(uint8_t ipproto); int ct_dpif_add_timeout_policy(struct dpif *dpif, bool is_default, const struct ct_dpif_timeout_policy *tp); int ct_dpif_get_timeout_policy(struct dpif *dpif, bool is_default,
These functions will be useful in the following patches. Signed-off-by: Yi-Hung Wei <yihung.wei@gmail.com> --- lib/ct-dpif.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ lib/ct-dpif.h | 3 +++ 2 files changed, 56 insertions(+)