diff options
author | Ben Pfaff <blp@ovn.org> | 2018-06-11 14:44:11 -0700 |
---|---|---|
committer | Ben Pfaff <blp@ovn.org> | 2018-06-12 08:24:26 -0700 |
commit | eaa4ead5493f1c3c4e8c6c8e3869a52de653a8be (patch) | |
tree | 9d3ff9b60d2b25f840dd94faaae622e0e8b3e440 /ovn | |
parent | 3eae1096fdeea69279b81421966868219ad5a925 (diff) | |
download | openvswitch-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.h | 1 | ||||
-rw-r--r-- | ovn/controller/binding.c | 33 | ||||
-rw-r--r-- | ovn/controller/binding.h | 7 | ||||
-rw-r--r-- | ovn/controller/chassis.c | 16 | ||||
-rw-r--r-- | ovn/controller/chassis.h | 7 | ||||
-rw-r--r-- | ovn/controller/encaps.c | 13 | ||||
-rw-r--r-- | ovn/controller/encaps.h | 6 | ||||
-rw-r--r-- | ovn/controller/ofctrl.h | 1 | ||||
-rw-r--r-- | ovn/controller/ovn-controller.c | 58 | ||||
-rw-r--r-- | ovn/controller/ovn-controller.h | 5 | ||||
-rw-r--r-- | ovn/controller/patch.c | 22 | ||||
-rw-r--r-- | ovn/controller/patch.h | 4 | ||||
-rw-r--r-- | ovn/controller/physical.h | 1 | ||||
-rw-r--r-- | ovn/controller/pinctrl.c | 28 | ||||
-rw-r--r-- | ovn/controller/pinctrl.h | 6 |
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 */ |