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

Function lradix4_init

freebsd/netinet/in_fib_algo.c:559–585  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

557}
558
559static enum flm_op_result
560lradix4_init(uint32_t fibnum, struct fib_data *fd, void *_old_data, void **_data)
561{
562 struct lradix4_data *lr;
563 struct rib_rtable_info rinfo;
564 uint32_t count;
565 size_t sz;
566
567 lr = malloc(sizeof(struct lradix4_data), M_RTABLE, M_NOWAIT | M_ZERO);
568 if (lr == NULL || !rn_inithead((void **)&lr->rnh, OFF_LEN_INET))
569 return (FLM_REBUILD);
570 fib_get_rtable_info(fib_get_rh(fd), &rinfo);
571
572 count = rinfo.num_prefixes * 11 / 10;
573 sz = count * LRADIX4_ITEM_SZ + CACHE_LINE_SIZE;
574 lr->mem = malloc(sz, M_RTABLE, M_NOWAIT | M_ZERO);
575 if (lr->mem == NULL)
576 return (FLM_REBUILD);
577 /* Align all rtentries to a cacheline boundary */
578 lr->rt_base = (char *)roundup2((uintptr_t)lr->mem, CACHE_LINE_SIZE);
579 lr->alloc_items = count;
580 lr->fd = fd;
581
582 *_data = lr;
583
584 return (FLM_SUCCESS);
585}
586
587static void
588lradix4_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