*/
load_balance_map_t *load_balance_map_pool;
+/**
+ * the logger
+ */
+vlib_log_class_t load_balance_map_logger;
+
/*
* Debug macro
*/
-#ifdef FIB_DEBUG
-#define LOAD_BALANCE_MAP_DBG(_pl, _fmt, _args...) \
- { \
- clib_warning("lbm: FIXME" _fmt, \
- ##_args); \
- }
-#else
-#define LOAD_BALANCE_MAP_DBG(_pl, _fmt, _args...)
-#endif
+#define LOAD_BALANCE_MAP_DBG(_pl, _fmt, _args...) \
+{ \
+ vlib_log_debug(load_balance_map_logger, \
+ "lbm:" _fmt, \
+ ##_args); \
+}
static index_t
load_balance_map_get_index (load_balance_map_t *lbm)
}
u8*
-format_load_balance_map (u8 *s, va_list ap)
+format_load_balance_map (u8 *s, va_list * ap)
{
- index_t lbmi = va_arg(ap, index_t);
- u32 indent = va_arg(ap, u32);
+ index_t lbmi = va_arg(*ap, index_t);
+ u32 indent = va_arg(*ap, u32);
load_balance_map_t *lbm;
u32 n_buckets, ii;
{
p = hash_get(lb_maps_by_path_index, lbmp->lbmp_index);
- ASSERT(NULL != p);
+ ALWAYS_ASSERT(NULL != p);
fib_node_list_remove(p[0], lbmp->lbmp_sibling);
}
tmp_buckets[jj++] = bucket++;
}
}
- else
+ else
{
bucket += lbmp->lbmp_weight;
}
u32 ii;
pool_get_aligned(load_balance_map_pool, lbm, CLIB_CACHE_LINE_BYTES);
- memset(lbm, 0, sizeof(*lbm));
+ clib_memset(lbm, 0, sizeof(*lbm));
vec_validate(lbm->lbm_paths, vec_len(paths)-1);
load_balance_map_fill(lbm);
+ load_balance_map_logger =
+ vlib_log_register_class ("dpo", "load-balance-map");
+
return (lbm);
}
+static void
+load_balance_map_destroy (load_balance_map_t *lbm)
+{
+ vec_free(lbm->lbm_paths);
+ vec_free(lbm->lbm_buckets);
+ pool_put(load_balance_map_pool, lbm);
+}
+
index_t
load_balance_map_add_or_lock (u32 n_buckets,
u32 sum_of_weights,
else
{
lbm = load_balance_map_get(lbmi);
+ load_balance_map_destroy(tmp);
}
lbm->lbm_locks++;
if (0 == lbm->lbm_locks)
{
load_balance_map_db_remove(lbm);
- vec_free(lbm->lbm_paths);
- vec_free(lbm->lbm_buckets);
- pool_put(load_balance_map_pool, lbm);
+ load_balance_map_destroy(lbm);
}
}