Replace individual global service monitor address parameters with unified svc_monitor_addresses structure to simplify function signatures.
Signed-off-by: Alexandra Rukomoinikova <[email protected]> --- northd/en-global-config.c | 47 +++++++++++--------- northd/en-global-config.h | 29 ++++++------ northd/en-lflow.c | 3 +- northd/en-northd.c | 8 +--- northd/en-sync-sb.c | 4 +- northd/northd.c | 94 +++++++++++++++------------------------ northd/northd.h | 8 +--- 7 files changed, 84 insertions(+), 109 deletions(-) diff --git a/northd/en-global-config.c b/northd/en-global-config.c index 2556b2888..bad1bcf68 100644 --- a/northd/en-global-config.c +++ b/northd/en-global-config.c @@ -124,14 +124,17 @@ en_global_config_run(struct engine_node *node , void *data) const char *mac_addr_prefix = set_mac_prefix(smap_get(&nb->options, "mac_prefix")); + struct svc_monitor_addresses *svc_addresses = + &config_data->svc_global_addresses; + const char *monitor_mac = smap_get(&nb->options, "svc_monitor_mac"); if (monitor_mac) { if (eth_addr_from_string(monitor_mac, - &config_data->svc_monitor_mac_ea)) { - snprintf(config_data->svc_monitor_mac, - sizeof config_data->svc_monitor_mac, + &svc_addresses->mac_ea_src)) { + snprintf(svc_addresses->mac_src, + sizeof svc_addresses->mac_src, ETH_ADDR_FMT, - ETH_ADDR_ARGS(config_data->svc_monitor_mac_ea)); + ETH_ADDR_ARGS(svc_addresses->mac_ea_src)); } else { monitor_mac = NULL; } @@ -141,22 +144,22 @@ en_global_config_run(struct engine_node *node , void *data) "svc_monitor_mac_dst"); if (dst_monitor_mac) { if (eth_addr_from_string(dst_monitor_mac, - &config_data->svc_monitor_mac_ea_dst)) { - snprintf(config_data->svc_monitor_mac_dst, - sizeof config_data->svc_monitor_mac_dst, + &svc_addresses->mac_ea_dst)) { + snprintf(svc_addresses->mac_dst, + sizeof svc_addresses->mac_dst, ETH_ADDR_FMT, - ETH_ADDR_ARGS(config_data->svc_monitor_mac_ea_dst)); + ETH_ADDR_ARGS(svc_addresses->mac_ea_dst)); } else { dst_monitor_mac = NULL; } } const char *monitor_ip = smap_get(&nb->options, "svc_monitor_ip"); - update_svc_monitor_addr(monitor_ip, &config_data->svc_monitor_ip); + update_svc_monitor_addr(monitor_ip, &svc_addresses->ip_src); const char *monitor_ip_dst = smap_get(&nb->options, "svc_monitor_ip_dst"); update_svc_monitor_addr(monitor_ip_dst, - &config_data->svc_monitor_ip_dst); + &svc_addresses->ip_dst); struct smap *options = &config_data->nb_options; smap_destroy(options); @@ -165,21 +168,21 @@ en_global_config_run(struct engine_node *node , void *data) smap_replace(options, "mac_prefix", mac_addr_prefix); if (!monitor_mac) { - eth_addr_random(&config_data->svc_monitor_mac_ea); - snprintf(config_data->svc_monitor_mac, - sizeof config_data->svc_monitor_mac, ETH_ADDR_FMT, - ETH_ADDR_ARGS(config_data->svc_monitor_mac_ea)); + eth_addr_random(&svc_addresses->mac_ea_src); + snprintf(svc_addresses->mac_src, + sizeof svc_addresses->mac_src, ETH_ADDR_FMT, + ETH_ADDR_ARGS(svc_addresses->mac_ea_src)); smap_replace(options, "svc_monitor_mac", - config_data->svc_monitor_mac); + svc_addresses->mac_src); } if (!dst_monitor_mac) { - eth_addr_random(&config_data->svc_monitor_mac_ea_dst); - snprintf(config_data->svc_monitor_mac_dst, - sizeof config_data->svc_monitor_mac_dst, ETH_ADDR_FMT, - ETH_ADDR_ARGS(config_data->svc_monitor_mac_ea_dst)); + eth_addr_random(&svc_addresses->mac_ea_dst); + snprintf(svc_addresses->mac_dst, + sizeof svc_addresses->mac_dst, ETH_ADDR_FMT, + ETH_ADDR_ARGS(svc_addresses->mac_ea_dst)); smap_replace(options, "svc_monitor_mac_dst", - config_data->svc_monitor_mac_dst); + svc_addresses->mac_dst); } bool ic_vxlan_mode = false; @@ -244,8 +247,8 @@ void en_global_config_cleanup(void *data OVS_UNUSED) struct ed_type_global_config *config_data = data; smap_destroy(&config_data->nb_options); smap_destroy(&config_data->sb_options); - free(config_data->svc_monitor_ip); - free(config_data->svc_monitor_ip_dst); + free(config_data->svc_global_addresses.ip_src); + free(config_data->svc_global_addresses.ip_dst); destroy_debug_config(); } diff --git a/northd/en-global-config.h b/northd/en-global-config.h index 413cd3849..e84b0e9e5 100644 --- a/northd/en-global-config.h +++ b/northd/en-global-config.h @@ -30,27 +30,30 @@ struct global_config_tracked_data { bool chassis_features_changed; }; -/* struct which maintains the data of the engine node global_config. */ -struct ed_type_global_config { - struct smap nb_options; - struct smap sb_options; - const struct nbrec_nb_global *nb_global; - const struct sbrec_sb_global *sb_global; - +struct svc_monitor_addresses { /* MAC allocated for service monitor usage. Just one pair is allocated * for this purpose and ovn-controller's on each chassis will make use * of this pair when sending out the packets to monitor the services * defined in Service_Monitor Southbound table. Since these packets * are locally handled, having just one pair is good enough. */ - char svc_monitor_mac[ETH_ADDR_STRLEN + 1]; - struct eth_addr svc_monitor_mac_ea; - char svc_monitor_mac_dst[ETH_ADDR_STRLEN + 1]; - struct eth_addr svc_monitor_mac_ea_dst; + char mac_src[ETH_ADDR_STRLEN + 1]; + struct eth_addr mac_ea_src; + char mac_dst[ETH_ADDR_STRLEN + 1]; + struct eth_addr mac_ea_dst; /* IP addresses configured for NF service monitor usage. */ - char *svc_monitor_ip; - char *svc_monitor_ip_dst; + char *ip_src; + char *ip_dst; +}; + +/* struct which maintains the data of the engine node global_config. */ +struct ed_type_global_config { + struct smap nb_options; + struct smap sb_options; + const struct nbrec_nb_global *nb_global; + const struct sbrec_sb_global *sb_global; + struct svc_monitor_addresses svc_global_addresses; struct chassis_features features; bool ovn_internal_version_changed; diff --git a/northd/en-lflow.c b/northd/en-lflow.c index 41a5a97ff..0f64aef49 100644 --- a/northd/en-lflow.c +++ b/northd/en-lflow.c @@ -113,7 +113,8 @@ lflow_get_input_data(struct engine_node *node, lflow_input->features = &global_config->features; lflow_input->ovn_internal_version_changed = global_config->ovn_internal_version_changed; - lflow_input->svc_monitor_mac = global_config->svc_monitor_mac; + lflow_input->svc_monitor_mac = + global_config->svc_global_addresses.mac_src; struct ed_type_sampling_app_data *sampling_app_data = engine_get_input_data("sampling_app", node); diff --git a/northd/en-northd.c b/northd/en-northd.c index 9b37f3eee..e81e4bbb2 100644 --- a/northd/en-northd.c +++ b/northd/en-northd.c @@ -117,12 +117,8 @@ northd_get_input_data(struct engine_node *node, engine_get_input_data("global_config", node); input_data->nb_options = &global_config->nb_options; input_data->sb_options = &global_config->sb_options; - input_data->svc_monitor_mac = global_config->svc_monitor_mac; - input_data->svc_monitor_mac_ea = global_config->svc_monitor_mac_ea; - input_data->svc_monitor_mac_dst = global_config->svc_monitor_mac_dst; - input_data->svc_monitor_mac_ea_dst = global_config->svc_monitor_mac_ea_dst; - input_data->svc_monitor_ip = global_config->svc_monitor_ip; - input_data->svc_monitor_ip_dst = global_config->svc_monitor_ip_dst; + + input_data->svc_global_addresses = &global_config->svc_global_addresses; input_data->features = &global_config->features; input_data->vxlan_mode = global_config->vxlan_mode; diff --git a/northd/en-sync-sb.c b/northd/en-sync-sb.c index fbe26eb8c..0b2a85b3b 100644 --- a/northd/en-sync-sb.c +++ b/northd/en-sync-sb.c @@ -106,8 +106,8 @@ en_sync_to_sb_addr_set_run(struct engine_node *node, void *data OVS_UNUSED) nb_port_group_table, sb_address_set_table, &lr_stateful_data->table, &northd_data->lr_datapaths, - global_config->svc_monitor_mac, - global_config->svc_monitor_mac_dst); + global_config->svc_global_addresses.mac_src, + global_config->svc_global_addresses.mac_dst); return EN_UPDATED; } diff --git a/northd/northd.c b/northd/northd.c index 7a2c472c0..629651efb 100644 --- a/northd/northd.c +++ b/northd/northd.c @@ -3165,28 +3165,28 @@ svc_mon_update_status_if_online(const struct sbrec_service_monitor *sbrec_mon, static void svc_mon_update_mac_ip_addresses(const struct sbrec_service_monitor *sbrec_mon, - const struct eth_addr *svc_monitor_mac_ea, - const char *source_mac, - const char *target_mac, - const char *source_ip, - const char *target_ip) + const struct eth_addr *mac_ea_src, + const char *mac_src, + const char *mac_dst, + const char *ip_src, + const char *ip_dst) { struct eth_addr ea; if (sbrec_mon->src_mac || !eth_addr_from_string(sbrec_mon->src_mac, &ea) || - !eth_addr_equals(ea, *svc_monitor_mac_ea)) { - sbrec_service_monitor_set_src_mac(sbrec_mon, source_mac); + !eth_addr_equals(ea, *mac_ea_src)) { + sbrec_service_monitor_set_src_mac(sbrec_mon, mac_src); } - if (target_mac) { - svc_mon_update_field_if_changed(sbrec_mon, sbrec_mon->mac, target_mac, + if (mac_dst) { + svc_mon_update_field_if_changed(sbrec_mon, sbrec_mon->mac, mac_dst, sbrec_service_monitor_set_mac); } - svc_mon_update_field_if_changed(sbrec_mon, sbrec_mon->src_ip, source_ip, + svc_mon_update_field_if_changed(sbrec_mon, sbrec_mon->src_ip, ip_src, sbrec_service_monitor_set_src_ip); - if (target_ip) { - svc_mon_update_field_if_changed(sbrec_mon, sbrec_mon->ip, target_ip, + if (ip_dst) { + svc_mon_update_field_if_changed(sbrec_mon, sbrec_mon->ip, ip_dst, sbrec_service_monitor_set_ip); } } @@ -3194,15 +3194,11 @@ svc_mon_update_mac_ip_addresses(const struct sbrec_service_monitor *sbrec_mon, static void ovn_nf_svc_create(struct ovsdb_idl_txn *ovnsb_txn, const struct nbrec_network_function *nbrec_nf, + const struct svc_monitor_addresses *svc_global_addresses, struct hmap *local_svc_monitors_map, struct hmap *ic_learned_svc_monitors_map, struct sset *svc_monitor_lsps, - struct hmap *ls_ports, - const char *global_svc_monitor_mac_src, - const struct eth_addr *global_svc_monitor_mac_ea_src, - const char *global_svc_monitor_mac_dst, - const char *global_svc_monitor_ip_src, - const char *global_svc_monitor_ip_dst) + struct hmap *ls_ports) { if (!nbrec_nf->health_check) { return; @@ -3241,22 +3237,18 @@ ovn_nf_svc_create(struct ovsdb_idl_txn *ovnsb_txn, local_svc_monitors_map, ic_learned_svc_monitors_map, "network-function", - global_svc_monitor_ip_dst, + svc_global_addresses->ip_dst, nbrec_nf->outport->name, nbrec_nf->inport->name, - 0, - "icmp", - chassis_name, - false); + 0, "icmp", chassis_name, false); set_service_mon_options(mon_info->sbrec_mon, - &nbrec_nf->health_check->options, - NULL); + &nbrec_nf->health_check->options, NULL); svc_mon_update_mac_ip_addresses(mon_info->sbrec_mon, - global_svc_monitor_mac_ea_src, - global_svc_monitor_mac_src, - global_svc_monitor_mac_dst, - global_svc_monitor_ip_src, - global_svc_monitor_ip_dst); + &svc_global_addresses->mac_ea_src, + svc_global_addresses->mac_src, + svc_global_addresses->mac_dst, + svc_global_addresses->ip_src, + svc_global_addresses->ip_dst); svc_mon_update_status_if_online(mon_info->sbrec_mon, !port_up_condition); } @@ -3264,8 +3256,7 @@ ovn_nf_svc_create(struct ovsdb_idl_txn *ovnsb_txn, static void ovn_lb_svc_create(struct ovsdb_idl_txn *ovnsb_txn, const struct ovn_northd_lb *lb, - const char *global_svc_monitor_mac_src, - const struct eth_addr *global_svc_monitor_mac_ea_src, + const struct svc_monitor_addresses *svc_global_addresses, struct hmap *ls_ports, struct sset *svc_monitor_lsps, struct hmap *local_svc_monitors_map, @@ -3311,8 +3302,8 @@ ovn_lb_svc_create(struct ovsdb_idl_txn *ovnsb_txn, source_mac_ea = &backend_nb->svc_mon_lrp->lrp_networks.ea; source_mac = backend_nb->svc_mon_lrp->lrp_networks.ea_s; } else { - source_mac_ea = global_svc_monitor_mac_ea_src; - source_mac = global_svc_monitor_mac_src; + source_mac_ea = &svc_global_addresses->mac_ea_src; + source_mac = svc_global_addresses->mac_src; } const char *protocol = lb->nlb->protocol; @@ -3554,8 +3545,7 @@ build_lb_datapaths(const struct hmap *lbs, const struct hmap *lb_groups, static void ovn_lsp_svc_monitors_process_port( struct ovsdb_idl_txn *ovnsb_txn, const struct ovn_port *op, - const char *global_svc_monitor_mac_src, - const struct eth_addr *global_svc_monitor_mac_ea_src, + const struct svc_monitor_addresses *svc_global_addresses, struct hmap *local_svc_monitors_map, struct sset *svc_monitor_lsps) { @@ -3597,8 +3587,8 @@ ovn_lsp_svc_monitors_process_port( set_service_mon_options(mon_info->sbrec_mon, &lsp_hc->options, NULL); svc_mon_update_mac_ip_addresses(mon_info->sbrec_mon, - global_svc_monitor_mac_ea_src, - global_svc_monitor_mac_src, + &svc_global_addresses->mac_ea_src, + svc_global_addresses->mac_src, NULL, lsp_hc->src_ip, NULL); svc_mon_update_status_if_online(mon_info->sbrec_mon, port_up_condition); @@ -3610,11 +3600,7 @@ build_svc_monitors_data( struct ovsdb_idl_txn *ovnsb_txn, struct ovsdb_idl_index *sbrec_service_monitor_by_learned_type, const struct nbrec_network_function_table *nbrec_network_function_table, - const char *global_svc_monitor_mac_src, - const struct eth_addr *global_svc_monitor_mac_ea_src, - const char *global_svc_monitor_mac_dst, - const char *global_svc_monitor_ip_src, - const char *global_svc_monitor_ip_dst, + const struct svc_monitor_addresses *svc_global_addresses, struct hmap *ls_ports, struct hmap *lb_dps_map, struct sset *svc_monitor_lsps, struct hmap *local_svc_monitors_map, @@ -3645,8 +3631,7 @@ build_svc_monitors_data( struct ovn_lb_datapaths *lb_dps; HMAP_FOR_EACH (lb_dps, hmap_node, lb_dps_map) { ovn_lb_svc_create(ovnsb_txn, lb_dps->lb, - global_svc_monitor_mac_src, - global_svc_monitor_mac_ea_src, + svc_global_addresses, ls_ports, svc_monitor_lsps, local_svc_monitors_map, @@ -3658,15 +3643,11 @@ build_svc_monitors_data( nbrec_network_function_table) { ovn_nf_svc_create(ovnsb_txn, nbrec_nf, + svc_global_addresses, local_svc_monitors_map, ic_learned_svc_monitors_map, svc_monitor_lsps, - ls_ports, - global_svc_monitor_mac_src, - global_svc_monitor_mac_ea_src, - global_svc_monitor_mac_dst, - global_svc_monitor_ip_src, - global_svc_monitor_ip_dst); + ls_ports); } struct hmapx_node *hmapx_node; @@ -3675,8 +3656,7 @@ build_svc_monitors_data( op = hmapx_node->data; ovn_lsp_svc_monitors_process_port(ovnsb_txn, op, - global_svc_monitor_mac_src, - global_svc_monitor_mac_ea_src, + svc_global_addresses, local_svc_monitors_map, svc_monitor_lsps); } @@ -20771,11 +20751,7 @@ ovnnb_db_run(struct northd_input *input_data, build_svc_monitors_data(ovnsb_txn, input_data->sbrec_service_monitor_by_learned_type, input_data->nbrec_network_function_table, - input_data->svc_monitor_mac, - &input_data->svc_monitor_mac_ea, - input_data->svc_monitor_mac_dst, - input_data->svc_monitor_ip, - input_data->svc_monitor_ip_dst, + input_data->svc_global_addresses, &data->ls_ports, &data->lb_datapaths_map, &data->svc_monitor_lsps, &data->local_svc_monitors_map, input_data->ic_learned_svc_monitors_map, @@ -20785,7 +20761,7 @@ ovnnb_db_run(struct northd_input *input_data, input_data->nbrec_network_function_group_table, &data->local_svc_monitors_map, input_data->ic_learned_svc_monitors_map, - input_data->svc_monitor_ip_dst); + input_data->svc_global_addresses->ip_dst); build_ipam(&data->ls_datapaths.datapaths); build_lrouter_groups(&data->lr_ports, &data->lr_datapaths); build_ip_mcast(ovnsb_txn, input_data->sbrec_ip_multicast_table, diff --git a/northd/northd.h b/northd/northd.h index f5c8b17dd..b7cea07c1 100644 --- a/northd/northd.h +++ b/northd/northd.h @@ -23,6 +23,7 @@ #include "lib/hmapx.h" #include "northd/en-port-group.h" #include "northd/en-sync-from-sb.h" +#include "northd/en-global-config.h" #include "northd/ipam.h" #include "northd/lb.h" #include "openvswitch/hmap.h" @@ -70,12 +71,7 @@ struct northd_input { /* Global config data node inputs. */ const struct smap *nb_options; const struct smap *sb_options; - const char *svc_monitor_mac; - struct eth_addr svc_monitor_mac_ea; - const char *svc_monitor_mac_dst; - struct eth_addr svc_monitor_mac_ea_dst; - char *svc_monitor_ip; - char *svc_monitor_ip_dst; + const struct svc_monitor_addresses *svc_global_addresses; const struct chassis_features *features; bool vxlan_mode; -- 2.48.1 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
