Also, enable valgrind runs for ovn-controller-vtep when running "make
check-valgrind".
Fixes: dd6218709a00 ("ovn-controller-vtep: Support BUM traffic for the VTEP
Schema.")
Suggested-by: Ilya Maximets <[email protected]>
Signed-off-by: Dumitru Ceara <[email protected]>
---
Note: This is a brute force approach of just tracking all pointers in
a hmapx and unifying cleanup. There might be a better approach but I
couldn't figure it out.
---
controller-vtep/vtep.c | 10 +++++++---
tests/automake.mk | 1 +
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/controller-vtep/vtep.c b/controller-vtep/vtep.c
index 5538c7d..f3b02f6 100644
--- a/controller-vtep/vtep.c
+++ b/controller-vtep/vtep.c
@@ -18,6 +18,7 @@
#include "vtep.h"
#include "lib/hash.h"
+#include "lib/hmapx.h"
#include "openvswitch/hmap.h"
#include "openvswitch/shash.h"
#include "lib/ovn-util.h"
@@ -496,12 +497,12 @@ vtep_run(struct controller_vtep_ctx *ctx)
struct shash physical_locators = SHASH_INITIALIZER(&physical_locators);
struct shash vtep_pbs = SHASH_INITIALIZER(&vtep_pbs);
struct shash non_vtep_pbs = SHASH_INITIALIZER(&non_vtep_pbs);
+ struct hmapx mcast_macs_ptrs = HMAPX_INITIALIZER(&mcast_macs_ptrs);
const struct vteprec_physical_switch *vtep_ps;
const struct vteprec_logical_switch *vtep_ls;
const struct vteprec_ucast_macs_remote *umr;
const struct sbrec_port_binding *port_binding_rec;
const struct vteprec_mcast_macs_remote *mmr;
- struct shash_node *node;
/* Collects 'Physical_Switch's. */
VTEPREC_PHYSICAL_SWITCH_FOR_EACH (vtep_ps, ctx->vtep_idl) {
@@ -527,7 +528,8 @@ vtep_run(struct controller_vtep_ctx *ctx)
/* Collects 'Mcast_Macs_Remote's. */
VTEPREC_MCAST_MACS_REMOTE_FOR_EACH (mmr, ctx->vtep_idl) {
- struct mmr_hash_node_data *mmr_ext = xmalloc(sizeof *mmr_ext);;
+ struct mmr_hash_node_data *mmr_ext = xmalloc(sizeof *mmr_ext);
+ hmapx_add(&mcast_macs_ptrs, mmr_ext);
char *mac_tnlkey =
xasprintf("%s_%"PRId64, mmr->MAC,
mmr->logical_switch && mmr->logical_switch->n_tunnel_key
@@ -575,11 +577,13 @@ vtep_run(struct controller_vtep_ctx *ctx)
sset_destroy(&vtep_pswitches);
shash_destroy(&vtep_lswitches);
shash_destroy(&ucast_macs_rmts);
- SHASH_FOR_EACH (node, &mcast_macs_rmts) {
+ struct hmapx_node *node;
+ HMAPX_FOR_EACH (node, &mcast_macs_ptrs) {
struct mmr_hash_node_data *mmr_ext = node->data;
shash_destroy(&mmr_ext->physical_locators);
free(mmr_ext);
}
+ hmapx_destroy(&mcast_macs_ptrs);
shash_destroy(&mcast_macs_rmts);
shash_destroy(&physical_locators);
shash_destroy(&vtep_pbs);
diff --git a/tests/automake.mk b/tests/automake.mk
index 44be209..0ee58af 100644
--- a/tests/automake.mk
+++ b/tests/automake.mk
@@ -101,6 +101,7 @@ check-lcov: all $(check_DATA) clean-lcov
valgrind_wrappers = \
tests/valgrind/ovn-controller \
+ tests/valgrind/ovn-controller-vtep \
tests/valgrind/ovn-nbctl \
tests/valgrind/ovn-northd \
tests/valgrind/ovn-sbctl \
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev