DEFINE_MTYPE_STATIC(LIB, DISTRIBUTE_IFNAME, "Dist-list ifname");
DEFINE_MTYPE_STATIC(LIB, DISTRIBUTE_NAME, "Dist-list name");
-static struct list *dist_ctx_list;
-
static struct distribute *distribute_new(void)
{
return XCALLOC(MTYPE_DISTRIBUTE, sizeof(struct distribute));
{
enum distribute_type type = distribute_direction(dir, v4);
- if (!ctx)
- ctx = listnode_head(dist_ctx_list);
-
void (*distfn)(struct distribute_ctx *, const char *,
enum distribute_type, const char *) =
prefix ? &distribute_list_prefix_set : &distribute_list_set;
enum distribute_type type = distribute_direction(dir, v4);
int ret;
- if (!ctx)
- ctx = listnode_head(dist_ctx_list);
-
int (*distfn)(struct distribute_ctx *, const char *,
enum distribute_type, const char *) =
prefix ? &distribute_list_prefix_unset : &distribute_list_unset;
hash_clean_and_free(&(*ctx)->disthash,
(void (*)(void *))distribute_free);
- if (dist_ctx_list) {
- listnode_delete(dist_ctx_list, *ctx);
- if (list_isempty(dist_ctx_list))
- list_delete(&dist_ctx_list);
- }
-
XFREE(MTYPE_DISTRIBUTE_CTX, (*ctx));
}
ctx = XCALLOC(MTYPE_DISTRIBUTE_CTX, sizeof(struct distribute_ctx));
ctx->vrf = vrf;
- ctx->disthash = hash_create(
- distribute_hash_make,
- (bool (*)(const void *, const void *))distribute_cmp, NULL);
- if (!dist_ctx_list)
- dist_ctx_list = list_new();
- listnode_add(dist_ctx_list, ctx);
+ ctx->disthash =
+ hash_create(distribute_hash_make,
+ (bool (*)(const void *, const void *))distribute_cmp,
+ NULL);
return ctx;
}