return 0;
}
}
+
+/* Sets the "probe interval" for 'idl->session' to 'probe_interval', in
+ * milliseconds.
+ */
+void
+ovsdb_idl_set_probe_interval(const struct ovsdb_idl *idl, int probe_interval)
+{
+ jsonrpc_session_set_probe_interval(idl->session, probe_interval);
+}
\f
static unsigned char *
ovsdb_idl_get_mode(struct ovsdb_idl *idl,
bool ovsdb_idl_is_alive(const struct ovsdb_idl *);
int ovsdb_idl_get_last_error(const struct ovsdb_idl *);
+
+void ovsdb_idl_set_probe_interval(const struct ovsdb_idl *, int probe_interval);
\f
/* Choosing columns and tables to replicate. */
</p>
</dd>
+ <dt><code>external_ids:ovn-remote-probe-interval</code></dt>
+ <dd>
+ <p>
+ The inactivity probe interval of the connection to the OVN database,
+ in milliseconds.
+ If the value is zero, it disables the connection keepalive feature.
+ </p>
+
+ <p>
+ If the value is nonzero, then it will be forced to a value of
+ at least 1000 ms.
+ </p>
+ </dd>
+
<dt><code>external_ids:ovn-encap-type</code></dt>
<dd>
<p>
}
}
+/* Retrieves the OVN Southbound remote's json session probe interval from the
+ * "external-ids:ovn-remote-probe-interval" key in 'ovs_idl' and returns it.
+ *
+ * This function must be called after get_ovnsb_remote(). */
+static bool
+get_ovnsb_remote_probe_interval(struct ovsdb_idl *ovs_idl, int *value)
+{
+ const struct ovsrec_open_vswitch *cfg = ovsrec_open_vswitch_first(ovs_idl);
+ if (!cfg) {
+ return false;
+ }
+
+ const char *probe_interval =
+ smap_get(&cfg->external_ids, "ovn-remote-probe-interval");
+ if (probe_interval) {
+ if (str_to_int(probe_interval, 10, value)) {
+ return true;
+ }
+
+ VLOG_WARN("Invalid value for OVN remote probe interval: %s",
+ probe_interval);
+ }
+
+ return false;
+}
+
int
main(int argc, char *argv[])
{
ovsdb_idl_create(ovnsb_remote, &sbrec_idl_class, true, true));
ovsdb_idl_get_initial_snapshot(ovnsb_idl_loop.idl);
+ int probe_interval = 0;
+ if (get_ovnsb_remote_probe_interval(ovs_idl_loop.idl, &probe_interval)) {
+ ovsdb_idl_set_probe_interval(ovnsb_idl_loop.idl, probe_interval);
+ }
+
/* Initialize connection tracking zones. */
struct simap ct_zones = SIMAP_INITIALIZER(&ct_zones);
unsigned long ct_zone_bitmap[BITMAP_N_LONGS(MAX_CT_ZONES)];