MCPcopy Create free account
hub / github.com/F-Stack/f-stack / lradix6_init

Function lradix6_init

freebsd/netinet6/in6_fib_algo.c:127–153  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

125}
126
127static enum flm_op_result
128lradix6_init(uint32_t fibnum, struct fib_data *fd, void *_old_data, void **_data)
129{
130 struct lradix6_data *lr;
131 struct rib_rtable_info rinfo;
132 uint32_t count;
133 void *mem;
134
135 lr = malloc(sizeof(struct lradix6_data), M_RTABLE, M_NOWAIT | M_ZERO);
136 if (lr == NULL || !rn_inithead((void **)&lr->rnh, OFF_LEN_INET6))
137 return (FLM_REBUILD);
138 fib_get_rtable_info(fib_get_rh(fd), &rinfo);
139
140 count = rinfo.num_prefixes * 11 / 10;
141 // count+1 adds at least 1 cache line
142 mem = malloc((count + 1) * LRADIX6_ITEM_SZ, M_RTABLE, M_NOWAIT | M_ZERO);
143 if (mem == NULL)
144 return (FLM_REBUILD);
145 lr->mem = mem;
146 lr->radix_mem = (void *)roundup2((uintptr_t)mem, CACHE_LINE_SIZE);
147 lr->alloc_items = count;
148 lr->fd = fd;
149
150 *_data = lr;
151
152 return (FLM_SUCCESS);
153}
154
155static void
156lradix6_destroy(void *_data)

Callers

nothing calls this directly

Calls 4

mallocFunction · 0.85
rn_initheadFunction · 0.85
fib_get_rtable_infoFunction · 0.85
fib_get_rhFunction · 0.85

Tested by

no test coverage detected