fib_data
schedule_destroy_fd_instance(struct fib_data *fd, bool in_callout)
struct fib_data *fd, *fd_tmp;
destroy_fd_instance(struct fib_data *fd)
struct fib_data *fd;
fd = __containerof(ctx, struct fib_data, fd_epoch_ctx);
struct fib_data *old_fd, struct fib_data **pfd)
struct fib_data *fd;
fd = malloc(sizeof(struct fib_data), M_RTABLE, M_NOWAIT | M_ZERO);
struct fib_data *orig_fd, struct fib_data **pfd, bool attach)
struct fib_data *prev_fd, *new_fd;
execute_callout_action(struct fib_data *fd)
struct fib_data *fd = (struct fib_data *)_data;
rebuild_fd_flm(struct fib_data *fd, struct fib_lookup_module *flm_new)
struct fib_data *fd_new, *fd_tmp = NULL;
rebuild_fd(struct fib_data *fd, const char *reason)
struct fib_data *fd = NULL;
replace_rtables_family(struct fib_dp **pdp, struct fib_data *fd, struct fib_dp *dp)
fib_set_datapath_ptr(struct fib_data *fd, struct fib_dp *dp)
fib_set_algo_ptr(struct fib_data *fd, void *algo_data)
fib_get_rh(struct fib_data *fd)
fib_get_nhop_array(struct fib_data *fd)
fib_get_nhop_idx(struct fib_data *fd, struct nhop_object *nh)
is_idx_free(struct fib_data *fd, uint32_t index)
fib_ref_nhop(struct fib_data *fd, struct nhop_object *nh)
fib_schedule_release_nhop(struct fib_data *fd, struct nhop_object *nh)
fib_unref_nhop(struct fib_data *fd, struct nhop_object *nh)
TAILQ_ENTRY(fib_data) entries; /* list of all fds in vnet */
static bool rebuild_fd(struct fib_data *fd, const char *reason);
struct fib_data *fd = NULL;
static bool rebuild_fd_flm(struct fib_data *fd, struct fib_lookup_module *flm_new);
static bool is_idx_free(struct fib_data *fd, uint32_t index);
static uint32_t fib_ref_nhop(struct fib_data *fd, struct nhop_object *nh);
static void fib_unref_nhop(struct fib_data *fd, struct nhop_object *nh);
VNET_DEFINE_STATIC(TAILQ_HEAD(fib_data_head, fib_data), fib_data_list);
fib_printf(int level, struct fib_data *fd, const char *func, char *fmt, ...)
callout_calc_delay_ms(struct fib_data *fd)
schedule_callout(struct fib_data *fd, enum fib_callout_action action, int delay_ms)
schedule_fd_rebuild(struct fib_data *fd, const char *reason)
sync_rib_gen(struct fib_data *fd)
mark_diverge_time(struct fib_data *fd)
update_rebuild_delay(struct fib_data *fd, enum fib_callout_action action)
update_algo_state(struct fib_data *fd)
need_immediate_sync(struct fib_data *fd, struct rib_cmd_info *rc)
apply_rtable_changes(struct fib_data *fd)
fill_change_entry(struct fib_data *fd, struct fib_change_entry *ce, struct rib_cmd_info *rc)
queue_rtable_change(struct fib_data *fd, struct rib_cmd_info *rc)
struct fib_data *fd = (struct fib_data *)_data;
estimate_nhop_scale(const struct fib_data *old_fd, struct fib_data *fd)
struct fib_data *fd;
struct fib_data *fd = w->fd;
sync_algo(struct fib_data *fd)
void fib_printf(int level, struct fib_data *fd, const char *func, char *fmt, ...);
uint32_t fib_get_nhop_idx(struct fib_data *fd, struct nhop_object *nh);
struct nhop_object **fib_get_nhop_array(struct fib_data *fd);
struct rib_head *fib_get_rh(struct fib_data *fd);
bool fib_set_datapath_ptr(struct fib_data *fd, struct fib_dp *dp);
void fib_set_algo_ptr(struct fib_data *fd, void *algo_data);
struct fib_data;
typedef enum flm_op_result flm_init_t (uint32_t fibnum, struct fib_data *fd,
if (atomic_cmpset_ptr((volatile uintptr_t *)&priv->fib_data[fib],
free(priv->fib_data, M_NETGRAPH);
priv->fib_data = malloc(sizeof(fib_export_p) * priv->maxfibs,
fib_export_p *fib_data; /* vector to per-fib data */
#define priv_to_fib(priv, fib) (priv)->fib_data[(fib)]
bsearch4_init(uint32_t fibnum, struct fib_data *fd, void *_old_data, void **_data)
struct fib_data *fd;
lradix4_init(uint32_t fibnum, struct fib_data *fd, void *_old_data, void **_data)
struct fib_data *fd;
radix4_init(uint32_t fibnum, struct fib_data *fd, void *_old_data, void **_data)
struct fib_data *fd;
dxr_init(uint32_t fibnum, struct fib_data *fd, void *old_data, void **data)
struct fib_data *fd;
struct fib_data *fd;
lradix6_init(uint32_t fibnum, struct fib_data *fd, void *_old_data, void **_data)
struct fib_data *fd;
radix6_init(uint32_t fibnum, struct fib_data *fd, void *_old_data, void **_data)
struct fib_data *fd;