[ovs-dev] [PATCH] ovn-controller: Disable probes by default for unix sockets.
Han Zhou
zhouhan at gmail.com
Tue May 2 20:22:35 UTC 2017
Normally the OVS JSON-RPC library does not probe idle connections across
Unix domain sockets, since the kernel can tell OVS whether the connections
are truly connected without probes, but ovn-controller carelessly
overrode that.
(This should not be an issue in typical OVN deployments, because the OVN SB
database is normally accessed via TCP or SSL.)
CC: Nirapada Ghosh <nghosh at us.ibm.com>
Fixes: 715038b6b222 ("ovn-controller: reload configured SB probe timer")
Signed-off-by: Han Zhou <zhouhan at gmail.com>
Co-authored-by: Ben Pfaff <blp at ovn.org>
---
ovn/controller/ovn-controller.c | 24 ++++++++++++++++--------
1 file changed, 16 insertions(+), 8 deletions(-)
diff --git a/ovn/controller/ovn-controller.c b/ovn/controller/ovn-controller.c
index 5fa900d..c18582a 100644
--- a/ovn/controller/ovn-controller.c
+++ b/ovn/controller/ovn-controller.c
@@ -64,7 +64,8 @@ static unixctl_cb_func inject_pkt;
#define DEFAULT_BRIDGE_NAME "br-int"
#define DEFAULT_PROBE_INTERVAL_MSEC 5000
-static void update_probe_interval(struct controller_ctx *);
+static void update_probe_interval(struct controller_ctx *,
+ const char *ovnsb_remote);
static void parse_options(int argc, char *argv[]);
OVS_NO_RETURN static void usage(void);
@@ -594,7 +595,7 @@ main(int argc, char *argv[])
.ovnsb_idl_txn = ovsdb_idl_loop_run(&ovnsb_idl_loop),
};
- update_probe_interval(&ctx);
+ update_probe_interval(&ctx, ovnsb_remote);
update_ssl_config(ctx.ovs_idl);
@@ -925,14 +926,21 @@ inject_pkt(struct unixctl_conn *conn, int argc OVS_UNUSED,
/* Get the desired SB probe timer from the OVS database and configure it into
* the SB database. */
static void
-update_probe_interval(struct controller_ctx *ctx)
+update_probe_interval(struct controller_ctx *ctx, const char *ovnsb_remote)
{
const struct ovsrec_open_vswitch *cfg
= ovsrec_open_vswitch_first(ctx->ovs_idl);
- int interval = (cfg
- ? smap_get_int(&cfg->external_ids,
- "ovn-remote-probe-interval",
- DEFAULT_PROBE_INTERVAL_MSEC)
- : DEFAULT_PROBE_INTERVAL_MSEC);
+ int interval = -1;
+ if (cfg) {
+ interval = smap_get_int(&cfg->external_ids,
+ "ovn-remote-probe-interval",
+ -1);
+ }
+ if (interval == -1) {
+ interval = stream_or_pstream_needs_probes(ovnsb_remote)
+ ? DEFAULT_PROBE_INTERVAL_MSEC
+ : 0;
+ }
+
ovsdb_idl_set_probe_interval(ctx->ovnsb_idl, interval);
}
--
2.1.0
More information about the dev
mailing list