Signed-off-by: Vladislav Odintsov <[email protected]>

> On 19 Mar 2023, at 02:50, Vladislav Odintsov <[email protected]> wrote:
> 
> ovn-northd and ovn-controller had similar code to configure inactivity
> probe interval.  This patch moves common logic to lib/ovn-util module.
> ---
> controller/ovn-controller.c |  8 ++------
> lib/ovn-util.c              | 22 ++++++++++++++++++++++
> lib/ovn-util.h              |  4 ++++
> northd/ovn-northd.c         | 30 +++++-------------------------
> 4 files changed, 33 insertions(+), 31 deletions(-)
> 
> diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c
> index 7dcbfd252..2c09551cf 100644
> --- a/controller/ovn-controller.c
> +++ b/controller/ovn-controller.c
> @@ -104,7 +104,6 @@ static unixctl_cb_func debug_ignore_startup_delay;
> 
> #define DEFAULT_BRIDGE_NAME "br-int"
> #define DEFAULT_DATAPATH "system"
> -#define DEFAULT_PROBE_INTERVAL_MSEC 5000
> #define OFCTRL_DEFAULT_PROBE_INTERVAL_SEC 0
> 
> #define CONTROLLER_LOOP_STOPWATCH_NAME "flow-generation"
> @@ -595,13 +594,10 @@ update_sb_db(struct ovsdb_idl *ovs_idl, struct 
> ovsdb_idl *ovnsb_idl,
>     ovsdb_idl_set_remote(ovnsb_idl, remote, true);
> 
>     /* Set probe interval, based on user configuration and the remote. */
> -    int default_interval = (remote && !stream_or_pstream_needs_probes(remote)
> -                            ? 0 : DEFAULT_PROBE_INTERVAL_MSEC);
>     int interval =
>         get_chassis_external_id_value_int(
> -            &cfg->external_ids, chassis_id,
> -            "ovn-remote-probe-interval", default_interval);
> -    ovsdb_idl_set_probe_interval(ovnsb_idl, interval);
> +            &cfg->external_ids, chassis_id, "ovn-remote-probe-interval", -1);
> +    set_idl_probe_interval(ovnsb_idl, remote, interval);
> 
>     bool monitor_all =
>         get_chassis_external_id_value_bool(
> diff --git a/lib/ovn-util.c b/lib/ovn-util.c
> index 561e82093..13ae0dcce 100644
> --- a/lib/ovn-util.c
> +++ b/lib/ovn-util.c
> @@ -27,12 +27,16 @@
> #include "ovn-dirs.h"
> #include "ovn-nb-idl.h"
> #include "ovn-sb-idl.h"
> +#include "ovsdb-idl.h"
> #include "socket-util.h"
> +#include "stream.h"
> #include "svec.h"
> #include "unixctl.h"
> 
> VLOG_DEFINE_THIS_MODULE(ovn_util);
> 
> +#define DEFAULT_PROBE_INTERVAL_MSEC 5000
> +
> void ovn_conn_show(struct unixctl_conn *conn, int argc OVS_UNUSED,
>                    const char *argv[] OVS_UNUSED, void *idl_)
> {
> @@ -43,6 +47,24 @@ void ovn_conn_show(struct unixctl_conn *conn, int argc 
> OVS_UNUSED,
>         ovsdb_idl_is_connected(idl) ? "connected": "not connected");
> }
> 
> +/* Set inactivity probe interval for 'idl' and 'remote' to 'interval'.
> + * If 'interval' < 0 (no preference from daemon settings), set it to 5000ms;
> + * if 'remote' needs probing, disable otherwise.
> + * 'interval' value of 0 disables probing.
> + */
> +void set_idl_probe_interval(struct ovsdb_idl *idl, const char *remote,
> +                            int interval)
> +{
> +    if (interval < 0) {
> +        interval = (remote && !stream_or_pstream_needs_probes(remote)
> +                    ? 0 : DEFAULT_PROBE_INTERVAL_MSEC);
> +    } else if (interval > 0 && interval < 1000) {
> +        interval = 1000;
> +    }
> +
> +    ovsdb_idl_set_probe_interval(idl, interval);
> +}
> +
> static void
> add_ipv4_netaddr(struct lport_addresses *laddrs, ovs_be32 addr,
>                  unsigned int plen)
> diff --git a/lib/ovn-util.h b/lib/ovn-util.h
> index a1a418a24..7cf861dbc 100644
> --- a/lib/ovn-util.h
> +++ b/lib/ovn-util.h
> @@ -16,6 +16,7 @@
> #ifndef OVN_UTIL_H
> #define OVN_UTIL_H 1
> 
> +#include "ovsdb-idl.h"
> #include "lib/packets.h"
> #include "include/ovn/version.h"
> 
> @@ -140,6 +141,9 @@ uint32_t ovn_logical_flow_hash_datapath(const struct uuid 
> *logical_datapath,
> void ovn_conn_show(struct unixctl_conn *conn, int argc OVS_UNUSED,
>                    const char *argv[] OVS_UNUSED, void *idl_);
> 
> +void set_idl_probe_interval(struct ovsdb_idl *idl, const char *remote,
> +                            int interval);
> +
> #define OVN_MAX_DP_KEY ((1u << 24) - 1)
> #define OVN_MAX_DP_GLOBAL_NUM ((1u << 16) - 1)
> #define OVN_MIN_DP_KEY_LOCAL 1
> diff --git a/northd/ovn-northd.c b/northd/ovn-northd.c
> index 5f895b053..116b6e801 100644
> --- a/northd/ovn-northd.c
> +++ b/northd/ovn-northd.c
> @@ -71,11 +71,6 @@ static const char *ssl_private_key_file;
> static const char *ssl_certificate_file;
> static const char *ssl_ca_cert_file;
> 
> -/* Default probe interval for NB and SB DB connections. */
> -#define DEFAULT_PROBE_INTERVAL_MSEC 5000
> -static int northd_probe_interval_nb = 0;
> -static int northd_probe_interval_sb = 0;
> -
> static const char *rbac_chassis_auth[] =
>     {"name"};
> static const char *rbac_chassis_update[] =
> @@ -684,20 +679,6 @@ update_ssl_config(void)
>     }
> }
> 
> -static int
> -get_probe_interval(const char *db, const struct nbrec_nb_global *nb)
> -{
> -    int default_interval = (db && !stream_or_pstream_needs_probes(db)
> -                            ? 0 : DEFAULT_PROBE_INTERVAL_MSEC);
> -    int interval = smap_get_int(&nb->options,
> -                                "northd_probe_interval", default_interval);
> -
> -    if (interval > 0 && interval < 1000) {
> -        interval = 1000;
> -    }
> -    return interval;
> -}
> -
> static struct ovsdb_idl_txn *
> run_idl_loop(struct ovsdb_idl_loop *idl_loop, const char *name)
> {
> @@ -1014,14 +995,13 @@ main(int argc, char *argv[])
>         const struct nbrec_nb_global *nb =
>             nbrec_nb_global_first(ovnnb_idl_loop.idl);
>         /* Update the probe interval. */
> +        int interval = -1;
>         if (nb) {
> -            northd_probe_interval_nb = get_probe_interval(ovnnb_db, nb);
> -            northd_probe_interval_sb = get_probe_interval(ovnsb_db, nb);
> +            interval = smap_get_int(&nb->options, "northd_probe_interval",
> +                                    interval);
>         }
> -        ovsdb_idl_set_probe_interval(ovnnb_idl_loop.idl,
> -                                     northd_probe_interval_nb);
> -        ovsdb_idl_set_probe_interval(ovnsb_idl_loop.idl,
> -                                     northd_probe_interval_sb);
> +        set_idl_probe_interval(ovnnb_idl_loop.idl, ovnnb_db, interval);
> +        set_idl_probe_interval(ovnsb_idl_loop.idl, ovnsb_db, interval);
> 
>         if (reset_ovnsb_idl_min_index) {
>             VLOG_INFO("Resetting southbound database cluster state");
> -- 
> 2.36.1
> 




Regards,
Vladislav Odintsov

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to