summaryrefslogtreecommitdiff
path: root/ovn
diff options
context:
space:
mode:
authorBen Pfaff <blp@ovn.org>2018-06-11 14:44:11 -0700
committerBen Pfaff <blp@ovn.org>2018-06-12 08:24:26 -0700
commiteaa4ead5493f1c3c4e8c6c8e3869a52de653a8be (patch)
tree9d3ff9b60d2b25f840dd94faaae622e0e8b3e440 /ovn
parent3eae1096fdeea69279b81421966868219ad5a925 (diff)
downloadopenvswitch-eaa4ead5493f1c3c4e8c6c8e3869a52de653a8be.tar.gz
ovn-controller: Drop controller_ctx structure entirely.
The remaining controller_ctx members were ovsdb_idl_txn pointers that could be passed to functions directly, so this commit makes that change and removes the structure. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Han Zhou <hzhou8@ebay.com>
Diffstat (limited to 'ovn')
-rw-r--r--ovn/controller/bfd.h1
-rw-r--r--ovn/controller/binding.c33
-rw-r--r--ovn/controller/binding.h7
-rw-r--r--ovn/controller/chassis.c16
-rw-r--r--ovn/controller/chassis.h7
-rw-r--r--ovn/controller/encaps.c13
-rw-r--r--ovn/controller/encaps.h6
-rw-r--r--ovn/controller/ofctrl.h1
-rw-r--r--ovn/controller/ovn-controller.c58
-rw-r--r--ovn/controller/ovn-controller.h5
-rw-r--r--ovn/controller/patch.c22
-rw-r--r--ovn/controller/patch.h4
-rw-r--r--ovn/controller/physical.h1
-rw-r--r--ovn/controller/pinctrl.c28
-rw-r--r--ovn/controller/pinctrl.h6
15 files changed, 103 insertions, 105 deletions
diff --git a/ovn/controller/bfd.h b/ovn/controller/bfd.h
index bc7615d28..7ea345a3e 100644
--- a/ovn/controller/bfd.h
+++ b/ovn/controller/bfd.h
@@ -16,7 +16,6 @@
#ifndef OVN_BFD_H
#define OVN_BFD_H 1
-struct controller_ctx;
struct hmap;
struct ovsdb_idl;
struct ovsdb_idl_index;
diff --git a/ovn/controller/binding.c b/ovn/controller/binding.c
index 5a3896c1d..2b27f3cbd 100644
--- a/ovn/controller/binding.c
+++ b/ovn/controller/binding.c
@@ -206,7 +206,7 @@ get_qos_params(const struct sbrec_port_binding *pb, struct hmap *queue_map)
}
static const struct ovsrec_qos *
-get_noop_qos(struct controller_ctx *ctx,
+get_noop_qos(struct ovsdb_idl_txn *ovs_idl_txn,
const struct ovsrec_qos_table *qos_table)
{
const struct ovsrec_qos *qos;
@@ -216,25 +216,25 @@ get_noop_qos(struct controller_ctx *ctx,
}
}
- if (!ctx->ovs_idl_txn) {
+ if (!ovs_idl_txn) {
return NULL;
}
- qos = ovsrec_qos_insert(ctx->ovs_idl_txn);
+ qos = ovsrec_qos_insert(ovs_idl_txn);
ovsrec_qos_set_type(qos, "linux-noop");
return qos;
}
static bool
-set_noop_qos(struct controller_ctx *ctx,
+set_noop_qos(struct ovsdb_idl_txn *ovs_idl_txn,
const struct ovsrec_port_table *port_table,
const struct ovsrec_qos_table *qos_table,
struct sset *egress_ifaces)
{
- if (!ctx->ovs_idl_txn) {
+ if (!ovs_idl_txn) {
return false;
}
- const struct ovsrec_qos *noop_qos = get_noop_qos(ctx, qos_table);
+ const struct ovsrec_qos *noop_qos = get_noop_qos(ovs_idl_txn, qos_table);
if (!noop_qos) {
return false;
}
@@ -392,7 +392,8 @@ update_local_lport_ids(struct sset *local_lport_ids,
}
static void
-consider_local_datapath(struct controller_ctx *ctx,
+consider_local_datapath(struct ovsdb_idl_txn *ovnsb_idl_txn,
+ struct ovsdb_idl_txn *ovs_idl_txn,
struct ovsdb_idl_index *sbrec_chassis_by_name,
struct ovsdb_idl_index *sbrec_datapath_binding_by_key,
struct ovsdb_idl_index *sbrec_port_binding_by_datapath,
@@ -422,7 +423,7 @@ consider_local_datapath(struct controller_ctx *ctx,
sbrec_port_binding_by_datapath,
sbrec_port_binding_by_name,
binding_rec->datapath, false, local_datapaths);
- if (iface_rec && qos_map && ctx->ovs_idl_txn) {
+ if (iface_rec && qos_map && ovs_idl_txn) {
get_qos_params(binding_rec, qos_map);
}
/* This port is in our chassis unless it is a localport. */
@@ -480,7 +481,7 @@ consider_local_datapath(struct controller_ctx *ctx,
update_local_lport_ids(local_lport_ids, binding_rec);
}
- if (ctx->ovnsb_idl_txn) {
+ if (ovnsb_idl_txn) {
const char *vif_chassis = smap_get(&binding_rec->options,
"requested-chassis");
bool can_bind = !vif_chassis || !vif_chassis[0]
@@ -545,7 +546,8 @@ consider_localnet_port(const struct sbrec_port_binding *binding_rec,
}
void
-binding_run(struct controller_ctx *ctx,
+binding_run(struct ovsdb_idl_txn *ovnsb_idl_txn,
+ struct ovsdb_idl_txn *ovs_idl_txn,
struct ovsdb_idl_index *sbrec_chassis_by_name,
struct ovsdb_idl_index *sbrec_datapath_binding_by_key,
struct ovsdb_idl_index *sbrec_port_binding_by_datapath,
@@ -578,7 +580,8 @@ binding_run(struct controller_ctx *ctx,
* chassis and update the binding accordingly. This includes both
* directly connected logical ports and children of those ports. */
SBREC_PORT_BINDING_TABLE_FOR_EACH (binding_rec, port_binding_table) {
- consider_local_datapath(ctx, sbrec_chassis_by_name,
+ consider_local_datapath(ovnsb_idl_txn, ovs_idl_txn,
+ sbrec_chassis_by_name,
sbrec_datapath_binding_by_key,
sbrec_port_binding_by_datapath,
sbrec_port_binding_by_name,
@@ -599,7 +602,7 @@ binding_run(struct controller_ctx *ctx,
}
if (!sset_is_empty(&egress_ifaces)
- && set_noop_qos(ctx, port_table, qos_table, &egress_ifaces)) {
+ && set_noop_qos(ovs_idl_txn, port_table, qos_table, &egress_ifaces)) {
const char *entry;
SSET_FOR_EACH (entry, &egress_ifaces) {
setup_qos(entry, &qos_map);
@@ -614,11 +617,11 @@ binding_run(struct controller_ctx *ctx,
/* Returns true if the database is all cleaned up, false if more work is
* required. */
bool
-binding_cleanup(struct controller_ctx *ctx,
+binding_cleanup(struct ovsdb_idl_txn *ovnsb_idl_txn,
const struct sbrec_port_binding_table *port_binding_table,
const struct sbrec_chassis *chassis_rec)
{
- if (!ctx->ovnsb_idl_txn) {
+ if (!ovnsb_idl_txn) {
return false;
}
if (!chassis_rec) {
@@ -626,7 +629,7 @@ binding_cleanup(struct controller_ctx *ctx,
}
ovsdb_idl_txn_add_comment(
- ctx->ovnsb_idl_txn,
+ ovnsb_idl_txn,
"ovn-controller: removing all port bindings for '%s'",
chassis_rec->name);
diff --git a/ovn/controller/binding.h b/ovn/controller/binding.h
index 21d63f577..837e1099f 100644
--- a/ovn/controller/binding.h
+++ b/ovn/controller/binding.h
@@ -19,10 +19,10 @@
#include <stdbool.h>
-struct controller_ctx;
struct hmap;
struct ovsdb_idl;
struct ovsdb_idl_index;
+struct ovsdb_idl_txn;
struct ovsrec_bridge;
struct ovsrec_port_table;
struct ovsrec_qos_table;
@@ -31,7 +31,8 @@ struct sbrec_port_binding_table;
struct sset;
void binding_register_ovs_idl(struct ovsdb_idl *);
-void binding_run(struct controller_ctx *,
+void binding_run(struct ovsdb_idl_txn *ovnsb_idl_txn,
+ struct ovsdb_idl_txn *ovs_idl_txn,
struct ovsdb_idl_index *sbrec_chassis_by_name,
struct ovsdb_idl_index *sbrec_datapath_binding_by_key,
struct ovsdb_idl_index *sbrec_port_binding_by_datapath,
@@ -44,7 +45,7 @@ void binding_run(struct controller_ctx *,
const struct sset *active_tunnels,
struct hmap *local_datapaths,
struct sset *local_lports, struct sset *local_lport_ids);
-bool binding_cleanup(struct controller_ctx *,
+bool binding_cleanup(struct ovsdb_idl_txn *ovnsb_idl_txn,
const struct sbrec_port_binding_table *,
const struct sbrec_chassis *);
diff --git a/ovn/controller/chassis.c b/ovn/controller/chassis.c
index db5d2d03d..797c16c3c 100644
--- a/ovn/controller/chassis.c
+++ b/ovn/controller/chassis.c
@@ -76,13 +76,13 @@ get_cms_options(const struct smap *ext_ids)
/* Returns this chassis's Chassis record, if it is available and is currently
* amenable to a transaction. */
const struct sbrec_chassis *
-chassis_run(struct controller_ctx *ctx,
+chassis_run(struct ovsdb_idl_txn *ovnsb_idl_txn,
struct ovsdb_idl_index *sbrec_chassis_by_name,
const struct ovsrec_open_vswitch_table *ovs_table,
const char *chassis_id,
const struct ovsrec_bridge *br_int)
{
- if (!ctx->ovnsb_idl_txn) {
+ if (!ovnsb_idl_txn) {
return NULL;
}
@@ -209,7 +209,7 @@ chassis_run(struct controller_ctx *ctx,
}
}
- ovsdb_idl_txn_add_comment(ctx->ovnsb_idl_txn,
+ ovsdb_idl_txn_add_comment(ovnsb_idl_txn,
"ovn-controller: registering chassis '%s'",
chassis_id);
@@ -218,7 +218,7 @@ chassis_run(struct controller_ctx *ctx,
smap_add(&ext_ids, "ovn-bridge-mappings", bridge_mappings);
smap_add(&ext_ids, "datapath-type", datapath_type);
smap_add(&ext_ids, "iface-types", iface_types_str);
- chassis_rec = sbrec_chassis_insert(ctx->ovnsb_idl_txn);
+ chassis_rec = sbrec_chassis_insert(ovnsb_idl_txn);
sbrec_chassis_set_name(chassis_rec, chassis_id);
sbrec_chassis_set_hostname(chassis_rec, hostname);
sbrec_chassis_set_external_ids(chassis_rec, &ext_ids);
@@ -232,7 +232,7 @@ chassis_run(struct controller_ctx *ctx,
for (int i = 0; i < n_encaps; i++) {
const char *type = pop_tunnel_name(&req_tunnels);
- encaps[i] = sbrec_encap_insert(ctx->ovnsb_idl_txn);
+ encaps[i] = sbrec_encap_insert(ovnsb_idl_txn);
sbrec_encap_set_type(encaps[i], type);
sbrec_encap_set_ip(encaps[i], encap_ip);
@@ -249,14 +249,14 @@ chassis_run(struct controller_ctx *ctx,
/* Returns true if the database is all cleaned up, false if more work is
* required. */
bool
-chassis_cleanup(struct controller_ctx *ctx,
+chassis_cleanup(struct ovsdb_idl_txn *ovnsb_idl_txn,
const struct sbrec_chassis *chassis_rec)
{
if (!chassis_rec) {
return true;
}
- if (ctx->ovnsb_idl_txn) {
- ovsdb_idl_txn_add_comment(ctx->ovnsb_idl_txn,
+ if (ovnsb_idl_txn) {
+ ovsdb_idl_txn_add_comment(ovnsb_idl_txn,
"ovn-controller: unregistering chassis '%s'",
chassis_rec->name);
sbrec_chassis_delete(chassis_rec);
diff --git a/ovn/controller/chassis.h b/ovn/controller/chassis.h
index f5245c363..6b1c357d2 100644
--- a/ovn/controller/chassis.h
+++ b/ovn/controller/chassis.h
@@ -18,9 +18,9 @@
#include <stdbool.h>
-struct controller_ctx;
struct ovsdb_idl;
struct ovsdb_idl_index;
+struct ovsdb_idl_txn;
struct ovsrec_bridge;
struct ovsrec_open_vswitch_table;
struct sbrec_chassis;
@@ -28,10 +28,11 @@ struct sbrec_chassis_table;
void chassis_register_ovs_idl(struct ovsdb_idl *);
const struct sbrec_chassis *chassis_run(
- struct controller_ctx *,
+ struct ovsdb_idl_txn *ovnsb_idl_txn,
struct ovsdb_idl_index *sbrec_chassis_by_name,
const struct ovsrec_open_vswitch_table *,
const char *chassis_id, const struct ovsrec_bridge *br_int);
-bool chassis_cleanup(struct controller_ctx *, const struct sbrec_chassis *);
+bool chassis_cleanup(struct ovsdb_idl_txn *ovnsb_idl_txn,
+ const struct sbrec_chassis *);
#endif /* ovn/chassis.h */
diff --git a/ovn/controller/encaps.c b/ovn/controller/encaps.c
index edcc86977..fde017586 100644
--- a/ovn/controller/encaps.c
+++ b/ovn/controller/encaps.c
@@ -153,13 +153,13 @@ preferred_encap(const struct sbrec_chassis *chassis_rec)
}
void
-encaps_run(struct controller_ctx *ctx,
+encaps_run(struct ovsdb_idl_txn *ovs_idl_txn,
const struct ovsrec_bridge_table *bridge_table,
const struct ovsrec_bridge *br_int,
const struct sbrec_chassis_table *chassis_table,
const char *chassis_id)
{
- if (!ctx->ovs_idl_txn || !br_int) {
+ if (!ovs_idl_txn || !br_int) {
return;
}
@@ -172,7 +172,7 @@ encaps_run(struct controller_ctx *ctx,
.br_int = br_int
};
- tc.ovs_txn = ctx->ovs_idl_txn;
+ tc.ovs_txn = ovs_idl_txn;
ovsdb_idl_txn_add_comment(tc.ovs_txn,
"ovn-controller: modifying OVS tunnels '%s'",
chassis_id);
@@ -228,7 +228,8 @@ encaps_run(struct controller_ctx *ctx,
/* Returns true if the database is all cleaned up, false if more work is
* required. */
bool
-encaps_cleanup(struct controller_ctx *ctx, const struct ovsrec_bridge *br_int)
+encaps_cleanup(struct ovsdb_idl_txn *ovs_idl_txn,
+ const struct ovsrec_bridge *br_int)
{
if (!br_int) {
return true;
@@ -245,8 +246,8 @@ encaps_cleanup(struct controller_ctx *ctx, const struct ovsrec_bridge *br_int)
}
bool any_changes = n != br_int->n_ports;
- if (any_changes && ctx->ovs_idl_txn) {
- ovsdb_idl_txn_add_comment(ctx->ovs_idl_txn,
+ if (any_changes && ovs_idl_txn) {
+ ovsdb_idl_txn_add_comment(ovs_idl_txn,
"ovn-controller: destroying tunnels");
ovsrec_bridge_verify_ports(br_int);
ovsrec_bridge_set_ports(br_int, ports, n);
diff --git a/ovn/controller/encaps.h b/ovn/controller/encaps.h
index 429643f3f..054bdfa78 100644
--- a/ovn/controller/encaps.h
+++ b/ovn/controller/encaps.h
@@ -18,19 +18,19 @@
#include <stdbool.h>
-struct controller_ctx;
struct ovsdb_idl;
+struct ovsdb_idl_txn;
struct ovsrec_bridge;
struct ovsrec_bridge_table;
struct sbrec_chassis_table;
void encaps_register_ovs_idl(struct ovsdb_idl *);
-void encaps_run(struct controller_ctx *,
+void encaps_run(struct ovsdb_idl_txn *ovs_idl_txn,
const struct ovsrec_bridge_table *,
const struct ovsrec_bridge *br_int,
const struct sbrec_chassis_table *,
const char *chassis_id);
-bool encaps_cleanup(struct controller_ctx *,
+bool encaps_cleanup(struct ovsdb_idl_txn *ovs_idl_txn,
const struct ovsrec_bridge *br_int);
#endif /* ovn/encaps.h */
diff --git a/ovn/controller/ofctrl.h b/ovn/controller/ofctrl.h
index a8b3afc45..886b9bd21 100644
--- a/ovn/controller/ofctrl.h
+++ b/ovn/controller/ofctrl.h
@@ -22,7 +22,6 @@
#include "openvswitch/meta-flow.h"
#include "ovsdb-idl.h"
-struct controller_ctx;
struct ovn_extend_table;
struct hmap;
struct match;
diff --git a/ovn/controller/ovn-controller.c b/ovn/controller/ovn-controller.c
index 11a12fd05..6ee72a9fa 100644
--- a/ovn/controller/ovn-controller.c
+++ b/ovn/controller/ovn-controller.c
@@ -196,29 +196,29 @@ update_sb_monitors(struct ovsdb_idl *ovnsb_idl,
}
static const struct ovsrec_bridge *
-create_br_int(struct controller_ctx *ctx,
+create_br_int(struct ovsdb_idl_txn *ovs_idl_txn,
const struct ovsrec_open_vswitch *cfg,
const char *bridge_name)
{
- if (!ctx->ovs_idl_txn) {
+ if (!ovs_idl_txn) {
return NULL;
}
- ovsdb_idl_txn_add_comment(ctx->ovs_idl_txn,
+ ovsdb_idl_txn_add_comment(ovs_idl_txn,
"ovn-controller: creating integration bridge '%s'", bridge_name);
struct ovsrec_interface *iface;
- iface = ovsrec_interface_insert(ctx->ovs_idl_txn);
+ iface = ovsrec_interface_insert(ovs_idl_txn);
ovsrec_interface_set_name(iface, bridge_name);
ovsrec_interface_set_type(iface, "internal");
struct ovsrec_port *port;
- port = ovsrec_port_insert(ctx->ovs_idl_txn);
+ port = ovsrec_port_insert(ovs_idl_txn);
ovsrec_port_set_name(port, bridge_name);
ovsrec_port_set_interfaces(port, &iface, 1);
struct ovsrec_bridge *bridge;
- bridge = ovsrec_bridge_insert(ctx->ovs_idl_txn);
+ bridge = ovsrec_bridge_insert(ovs_idl_txn);
ovsrec_bridge_set_name(bridge, bridge_name);
ovsrec_bridge_set_fail_mode(bridge, "secure");
const struct smap oc = SMAP_CONST1(&oc, "disable-in-band", "true");
@@ -238,7 +238,7 @@ create_br_int(struct controller_ctx *ctx,
}
static const struct ovsrec_bridge *
-get_br_int(struct controller_ctx *ctx,
+get_br_int(struct ovsdb_idl_txn *ovs_idl_txn,
const struct ovsrec_bridge_table *bridge_table,
const struct ovsrec_open_vswitch_table *ovs_table)
{
@@ -253,7 +253,7 @@ get_br_int(struct controller_ctx *ctx,
const struct ovsrec_bridge *br = get_bridge(bridge_table, br_int_name);
if (!br) {
- return create_br_int(ctx, cfg, br_int_name);
+ return create_br_int(ovs_idl_txn, cfg, br_int_name);
}
return br;
}
@@ -642,10 +642,9 @@ main(int argc, char *argv[])
free(new_ovnsb_remote);
}
- struct controller_ctx ctx = {
- .ovs_idl_txn = ovsdb_idl_loop_run(&ovs_idl_loop),
- .ovnsb_idl_txn = ovsdb_idl_loop_run(&ovnsb_idl_loop),
- };
+ struct ovsdb_idl_txn *ovs_idl_txn = ovsdb_idl_loop_run(&ovs_idl_loop);
+ struct ovsdb_idl_txn *ovnsb_idl_txn
+ = ovsdb_idl_loop_run(&ovnsb_idl_loop);
update_probe_interval(ovsrec_open_vswitch_table_get(ovs_idl_loop.idl),
ovnsb_remote, ovnsb_idl_loop.idl);
@@ -667,21 +666,22 @@ main(int argc, char *argv[])
struct sset active_tunnels = SSET_INITIALIZER(&active_tunnels);
const struct ovsrec_bridge *br_int
- = get_br_int(&ctx, ovsrec_bridge_table_get(ovs_idl_loop.idl),
+ = get_br_int(ovs_idl_txn,
+ ovsrec_bridge_table_get(ovs_idl_loop.idl),
ovsrec_open_vswitch_table_get(ovs_idl_loop.idl));
const char *chassis_id
= get_chassis_id(ovsrec_open_vswitch_table_get(ovs_idl_loop.idl));
const struct sbrec_chassis *chassis = NULL;
if (chassis_id) {
- chassis = chassis_run(&ctx, sbrec_chassis_by_name,
+ chassis = chassis_run(ovnsb_idl_txn, sbrec_chassis_by_name,
ovsrec_open_vswitch_table_get(ovs_idl_loop.idl),
chassis_id, br_int);
- encaps_run(&ctx,
+ encaps_run(ovs_idl_txn,
ovsrec_bridge_table_get(ovs_idl_loop.idl), br_int,
sbrec_chassis_table_get(ovnsb_idl_loop.idl), chassis_id);
bfd_calculate_active_tunnels(br_int, &active_tunnels);
- binding_run(&ctx, sbrec_chassis_by_name,
+ binding_run(ovnsb_idl_txn, ovs_idl_txn, sbrec_chassis_by_name,
sbrec_datapath_binding_by_key,
sbrec_port_binding_by_datapath,
sbrec_port_binding_by_name,
@@ -700,7 +700,7 @@ main(int argc, char *argv[])
port_groups_init(sbrec_port_group_table_get(ovnsb_idl_loop.idl),
&port_groups);
- patch_run(&ctx,
+ patch_run(ovs_idl_txn,
ovsrec_bridge_table_get(ovs_idl_loop.idl),
ovsrec_open_vswitch_table_get(ovs_idl_loop.idl),
ovsrec_port_table_get(ovs_idl_loop.idl),
@@ -710,7 +710,7 @@ main(int argc, char *argv[])
enum mf_field_id mff_ovn_geneve = ofctrl_run(br_int,
&pending_ct_zones);
- pinctrl_run(&ctx, sbrec_chassis_by_name,
+ pinctrl_run(ovnsb_idl_txn, sbrec_chassis_by_name,
sbrec_datapath_binding_by_key,
sbrec_port_binding_by_datapath,
sbrec_port_binding_by_key,
@@ -721,7 +721,7 @@ main(int argc, char *argv[])
&local_datapaths, &active_tunnels);
update_ct_zones(&local_lports, &local_datapaths, &ct_zones,
ct_zone_bitmap, &pending_ct_zones);
- if (ctx.ovs_idl_txn) {
+ if (ovs_idl_txn) {
if (ofctrl_can_put()) {
stopwatch_start(CONTROLLER_LOOP_STOPWATCH_NAME,
time_msec());
@@ -767,7 +767,7 @@ main(int argc, char *argv[])
hmap_destroy(&flow_table);
}
- if (ctx.ovnsb_idl_txn) {
+ if (ovnsb_idl_txn) {
int64_t cur_cfg = ofctrl_get_cur_cfg();
if (cur_cfg && cur_cfg != chassis->nb_cfg) {
sbrec_chassis_set_nb_cfg(chassis, cur_cfg);
@@ -827,7 +827,7 @@ main(int argc, char *argv[])
if (br_int) {
ofctrl_wait();
- pinctrl_wait(&ctx);
+ pinctrl_wait(ovnsb_idl_txn);
}
ovsdb_idl_loop_commit_and_wait(&ovnsb_idl_loop);
@@ -851,10 +851,9 @@ main(int argc, char *argv[])
/* It's time to exit. Clean up the databases. */
bool done = false;
while (!done) {
- struct controller_ctx ctx = {
- .ovs_idl_txn = ovsdb_idl_loop_run(&ovs_idl_loop),
- .ovnsb_idl_txn = ovsdb_idl_loop_run(&ovnsb_idl_loop),
- };
+ struct ovsdb_idl_txn *ovs_idl_txn = ovsdb_idl_loop_run(&ovs_idl_loop);
+ struct ovsdb_idl_txn *ovnsb_idl_txn
+ = ovsdb_idl_loop_run(&ovnsb_idl_loop);
const struct ovsrec_bridge_table *bridge_table
= ovsrec_bridge_table_get(ovs_idl_loop.idl);
@@ -864,7 +863,8 @@ main(int argc, char *argv[])
const struct sbrec_port_binding_table *port_binding_table
= sbrec_port_binding_table_get(ovnsb_idl_loop.idl);
- const struct ovsrec_bridge *br_int = get_br_int(&ctx, bridge_table,
+ const struct ovsrec_bridge *br_int = get_br_int(ovs_idl_txn,
+ bridge_table,
ovs_table);
const char *chassis_id = get_chassis_id(ovs_table);
const struct sbrec_chassis *chassis
@@ -874,9 +874,9 @@ main(int argc, char *argv[])
/* Run all of the cleanup functions, even if one of them returns false.
* We're done if all of them return true. */
- done = binding_cleanup(&ctx, port_binding_table, chassis);
- done = chassis_cleanup(&ctx, chassis) && done;
- done = encaps_cleanup(&ctx, br_int) && done;
+ done = binding_cleanup(ovnsb_idl_txn, port_binding_table, chassis);
+ done = chassis_cleanup(ovnsb_idl_txn, chassis) && done;
+ done = encaps_cleanup(ovs_idl_txn, br_int) && done;
if (done) {
poll_immediate_wake();
}
diff --git a/ovn/controller/ovn-controller.h b/ovn/controller/ovn-controller.h
index c57340e34..3b15620ae 100644
--- a/ovn/controller/ovn-controller.h
+++ b/ovn/controller/ovn-controller.h
@@ -25,11 +25,6 @@ struct ovsrec_bridge_table;
/* Linux supports a maximum of 64K zones, which seems like a fine default. */
#define MAX_CT_ZONES 65535
-struct controller_ctx {
- struct ovsdb_idl_txn *ovnsb_idl_txn;
- struct ovsdb_idl_txn *ovs_idl_txn;
-};
-
/* States to move through when a new conntrack zone has been allocated. */
enum ct_zone_pending_state {
CT_ZONE_OF_QUEUED, /* Waiting to send conntrack flush command. */
diff --git a/ovn/controller/patch.c b/ovn/controller/patch.c
index 2e747e955..a6770c6d5 100644
--- a/ovn/controller/patch.c
+++ b/ovn/controller/patch.c
@@ -56,7 +56,7 @@ match_patch_port(const struct ovsrec_port *port, const char *peer)
*
* If such a patch port already exists, removes it from 'existing_ports'. */
static void
-create_patch_port(struct controller_ctx *ctx,
+create_patch_port(struct ovsdb_idl_txn *ovs_idl_txn,
const char *key, const char *value,
const struct ovsrec_bridge *src, const char *src_name,
const struct ovsrec_bridge *dst, const char *dst_name,
@@ -70,19 +70,19 @@ create_patch_port(struct controller_ctx *ctx,
}
}
- ovsdb_idl_txn_add_comment(ctx->ovs_idl_txn,
+ ovsdb_idl_txn_add_comment(ovs_idl_txn,
"ovn-controller: creating patch port '%s' from '%s' to '%s'",
src_name, src->name, dst->name);
struct ovsrec_interface *iface;
- iface = ovsrec_interface_insert(ctx->ovs_idl_txn);
+ iface = ovsrec_interface_insert(ovs_idl_txn);
ovsrec_interface_set_name(iface, src_name);
ovsrec_interface_set_type(iface, "patch");
const struct smap options = SMAP_CONST1(&options, "peer", dst_name);
ovsrec_interface_set_options(iface, &options);
struct ovsrec_port *port;
- port = ovsrec_port_insert(ctx->ovs_idl_txn);
+ port = ovsrec_port_insert(ovs_idl_txn);
ovsrec_port_set_name(port, src_name);
ovsrec_port_set_interfaces(port, &iface, 1);
const struct smap ids = SMAP_CONST1(&ids, key, value);
@@ -133,7 +133,7 @@ remove_port(const struct ovsrec_bridge_table *bridge_table,
* the local bridge mappings. Removes any patch ports for bridge mappings that
* already existed from 'existing_ports'. */
static void
-add_bridge_mappings(struct controller_ctx *ctx,
+add_bridge_mappings(struct ovsdb_idl_txn *ovs_idl_txn,
const struct ovsrec_bridge_table *bridge_table,
const struct ovsrec_open_vswitch_table *ovs_table,
const struct sbrec_port_binding_table *port_binding_table,
@@ -214,9 +214,9 @@ add_bridge_mappings(struct controller_ctx *ctx,
char *name1 = patch_port_name(br_int->name, binding->logical_port);
char *name2 = patch_port_name(binding->logical_port, br_int->name);
- create_patch_port(ctx, patch_port_id, binding->logical_port,
+ create_patch_port(ovs_idl_txn, patch_port_id, binding->logical_port,
br_int, name1, br_ln, name2, existing_ports);
- create_patch_port(ctx, patch_port_id, binding->logical_port,
+ create_patch_port(ovs_idl_txn, patch_port_id, binding->logical_port,
br_ln, name2, br_int, name1, existing_ports);
free(name1);
free(name2);
@@ -226,7 +226,7 @@ add_bridge_mappings(struct controller_ctx *ctx,
}
void
-patch_run(struct controller_ctx *ctx,
+patch_run(struct ovsdb_idl_txn *ovs_idl_txn,
const struct ovsrec_bridge_table *bridge_table,
const struct ovsrec_open_vswitch_table *ovs_table,
const struct ovsrec_port_table *port_table,
@@ -234,7 +234,7 @@ patch_run(struct controller_ctx *ctx,
const struct ovsrec_bridge *br_int,
const struct sbrec_chassis *chassis)
{
- if (!ctx->ovs_idl_txn) {
+ if (!ovs_idl_txn) {
return;
}
@@ -258,8 +258,8 @@ patch_run(struct controller_ctx *ctx,
/* Create in the database any patch ports that should exist. Remove from
* 'existing_ports' any patch ports that do exist in the database and
* should be there. */
- add_bridge_mappings(ctx, bridge_table, ovs_table, port_binding_table,
- br_int, &existing_ports, chassis);
+ add_bridge_mappings(ovs_idl_txn, bridge_table, ovs_table,
+ port_binding_table, br_int, &existing_ports, chassis);
/* Now 'existing_ports' only still contains patch ports that exist in the
* database but shouldn't. Delete them from the database. */
diff --git a/ovn/controller/patch.h b/ovn/controller/patch.h
index 601f5bf06..dd052cfd8 100644
--- a/ovn/controller/patch.h
+++ b/ovn/controller/patch.h
@@ -22,8 +22,8 @@
* This module adds and removes patch ports between the integration bridge and
* physical bridges, as directed by other-config:ovn-bridge-mappings. */
-struct controller_ctx;
struct hmap;
+struct ovsdb_idl_txn;
struct ovsrec_bridge;
struct ovsrec_bridge_table;
struct ovsrec_open_vswitch_table;
@@ -31,7 +31,7 @@ struct ovsrec_port_table;
struct sbrec_port_binding_table;
struct sbrec_chassis;
-void patch_run(struct controller_ctx *,
+void patch_run(struct ovsdb_idl_txn *ovs_idl_txn,
const struct ovsrec_bridge_table *,
const struct ovsrec_open_vswitch_table *,
const struct ovsrec_port_table *,
diff --git a/ovn/controller/physical.h b/ovn/controller/physical.h
index 8b737d171..a7a4def37 100644
--- a/ovn/controller/physical.h
+++ b/ovn/controller/physical.h
@@ -27,7 +27,6 @@
#include "openvswitch/meta-flow.h"
-struct controller_ctx;
struct hmap;
struct ovsdb_idl_index;
struct ovsrec_bridge;
diff --git a/ovn/controller/pinctrl.c b/ovn/controller/pinctrl.c
index fbb90252a..a0bf602cd 100644
--- a/ovn/controller/pinctrl.c
+++ b/ovn/controller/pinctrl.c
@@ -67,11 +67,11 @@ static void pinctrl_handle_put_mac_binding(const struct flow *md,
static void init_put_mac_bindings(void);
static void destroy_put_mac_bindings(void);
static void run_put_mac_bindings(
- struct controller_ctx *,
+ struct ovsdb_idl_txn *ovnsb_idl_txn,
struct ovsdb_idl_index *sbrec_datapath_binding_by_key,
struct ovsdb_idl_index *sbrec_port_binding_by_key,
const struct sbrec_mac_binding_table *);
-static void wait_put_mac_bindings(struct controller_ctx *);
+static void wait_put_mac_bindings(struct ovsdb_idl_txn *ovnsb_idl_txn);
static void flush_put_mac_bindings(void);
static void init_send_garps(void);
@@ -1245,7 +1245,7 @@ pinctrl_recv(const struct sbrec_dns_table *dns_table,
}
void
-pinctrl_run(struct controller_ctx *ctx,
+pinctrl_run(struct ovsdb_idl_txn *ovnsb_idl_txn,
struct ovsdb_idl_index *sbrec_chassis_by_name,
struct ovsdb_idl_index *sbrec_datapath_binding_by_key,
struct ovsdb_idl_index *sbrec_port_binding_by_datapath,
@@ -1292,7 +1292,7 @@ pinctrl_run(struct controller_ctx *ctx,
ofpbuf_delete(msg);
}
- run_put_mac_bindings(ctx, sbrec_datapath_binding_by_key,
+ run_put_mac_bindings(ovnsb_idl_txn, sbrec_datapath_binding_by_key,
sbrec_port_binding_by_key, mac_binding_table);
send_garp_run(sbrec_chassis_by_name, sbrec_port_binding_by_datapath,
sbrec_port_binding_by_name, br_int, chassis,
@@ -1593,9 +1593,9 @@ send_ipv6_ras(struct ovsdb_idl_index *sbrec_port_binding_by_datapath,
}
void
-pinctrl_wait(struct controller_ctx *ctx)
+pinctrl_wait(struct ovsdb_idl_txn *ovnsb_idl_txn)
{
- wait_put_mac_bindings(ctx);
+ wait_put_mac_bindings(ovnsb_idl_txn);
rconn_run_wait(swconn);
rconn_recv_wait(swconn);
send_garp_wait();
@@ -1617,7 +1617,7 @@ pinctrl_destroy(void)
* updating the MAC_Binding table in the southbound database.
*
* This code could be a lot simpler if the database could always be updated,
- * but in fact we can only update it when ctx->ovnsb_idl_txn is nonnull. Thus,
+ * but in fact we can only update it when 'ovnsb_idl_txn' is nonnull. Thus,
* we buffer up a few put_mac_bindings (but we don't keep them longer
* than 1 second) and apply them whenever a database transaction is
* available. */
@@ -1703,7 +1703,7 @@ pinctrl_handle_put_mac_binding(const struct flow *md,
}
static void
-run_put_mac_binding(struct controller_ctx *ctx,
+run_put_mac_binding(struct ovsdb_idl_txn *ovnsb_idl_txn,
struct ovsdb_idl_index *sbrec_datapath_binding_by_key,
struct ovsdb_idl_index *sbrec_port_binding_by_key,
const struct sbrec_mac_binding_table *mac_binding_table,
@@ -1746,7 +1746,7 @@ run_put_mac_binding(struct controller_ctx *ctx,
}
/* Add new IP-MAC binding for this logical port. */
- b = sbrec_mac_binding_insert(ctx->ovnsb_idl_txn);
+ b = sbrec_mac_binding_insert(ovnsb_idl_txn);
sbrec_mac_binding_set_logical_port(b, pb->logical_port);
sbrec_mac_binding_set_ip(b, pmb->ip_s);
sbrec_mac_binding_set_mac(b, mac_string);
@@ -1754,27 +1754,27 @@ run_put_mac_binding(struct controller_ctx *ctx,
}
static void
-run_put_mac_bindings(struct controller_ctx *ctx,
+run_put_mac_bindings(struct ovsdb_idl_txn *ovnsb_idl_txn,
struct ovsdb_idl_index *sbrec_datapath_binding_by_key,
struct ovsdb_idl_index *sbrec_port_binding_by_key,
const struct sbrec_mac_binding_table *mac_binding_table)
{
- if (!ctx->ovnsb_idl_txn) {
+ if (!ovnsb_idl_txn) {
return;
}
const struct put_mac_binding *pmb;
HMAP_FOR_EACH (pmb, hmap_node, &put_mac_bindings) {
- run_put_mac_binding(ctx, sbrec_datapath_binding_by_key,
+ run_put_mac_binding(ovnsb_idl_txn, sbrec_datapath_binding_by_key,
sbrec_port_binding_by_key, mac_binding_table, pmb);
}
flush_put_mac_bindings();
}
static void
-wait_put_mac_bindings(struct controller_ctx *ctx)
+wait_put_mac_bindings(struct ovsdb_idl_txn *ovnsb_idl_txn)
{
- if (ctx->ovnsb_idl_txn && !hmap_is_empty(&put_mac_bindings)) {
+ if (ovnsb_idl_txn && !hmap_is_empty(&put_mac_bindings)) {
poll_immediate_wake();
}
}
diff --git a/ovn/controller/pinctrl.h b/ovn/controller/pinctrl.h
index 19bfa88c8..60014ebe3 100644
--- a/ovn/controller/pinctrl.h
+++ b/ovn/controller/pinctrl.h
@@ -22,17 +22,17 @@
#include "lib/sset.h"
#include "openvswitch/meta-flow.h"
-struct controller_ctx;
struct hmap;
struct lport_index;
struct ovsdb_idl_index;
+struct ovsdb_idl_txn;
struct ovsrec_bridge;
struct sbrec_chassis;
struct sbrec_dns_table;
struct sbrec_mac_binding_table;
void pinctrl_init(void);
-void pinctrl_run(struct controller_ctx *,
+void pinctrl_run(struct ovsdb_idl_txn *ovnsb_idl_txn,
struct ovsdb_idl_index *sbrec_chassis_by_name,
struct ovsdb_idl_index *sbrec_datapath_binding_by_key,
struct ovsdb_idl_index *sbrec_port_binding_by_datapath,
@@ -43,7 +43,7 @@ void pinctrl_run(struct controller_ctx *,
const struct ovsrec_bridge *, const struct sbrec_chassis *,
const struct hmap *local_datapaths,
const struct sset *active_tunnels);
-void pinctrl_wait(struct controller_ctx *);
+void pinctrl_wait(struct ovsdb_idl_txn *ovnsb_idl_txn);
void pinctrl_destroy(void);
#endif /* ovn/pinctrl.h */