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

Function lradix4_add_route_cb

freebsd/netinet/in_fib_algo.c:599–636  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

597}
598
599static enum flm_op_result
600lradix4_add_route_cb(struct rtentry *rt, void *_data)
601{
602 struct lradix4_data *lr = (struct lradix4_data *)_data;
603 struct radix4_addr_entry *ae;
604 struct sockaddr_in mask;
605 struct sockaddr *rt_mask;
606 struct radix_node *rn;
607 struct in_addr addr4, mask4;
608 uint32_t scopeid;
609
610 if (lr->num_items >= lr->alloc_items)
611 return (FLM_REBUILD);
612
613 ae = (struct radix4_addr_entry *)(lr->rt_base + lr->num_items * LRADIX4_ITEM_SZ);
614 lr->num_items++;
615
616 ae->nhop = rt_get_raw_nhop(rt);
617
618 rt_get_inet_prefix_pmask(rt, &addr4, &mask4, &scopeid);
619 ae->addr.sin_len = KEY_LEN_INET;
620 ae->addr.sin_addr = addr4;
621
622 if (mask4.s_addr != INADDR_BROADCAST) {
623 bzero(&mask, sizeof(mask));
624 mask.sin_len = KEY_LEN_INET;
625 mask.sin_addr = mask4;
626 rt_mask = (struct sockaddr *)&mask;
627 } else
628 rt_mask = NULL;
629
630 rn = lr->rnh->rnh_addaddr((struct sockaddr *)&ae->addr, rt_mask,
631 &lr->rnh->rh, ae->rn);
632 if (rn == NULL)
633 return (FLM_REBUILD);
634
635 return (FLM_SUCCESS);
636}
637
638static enum flm_op_result
639lradix4_end_dump(void *_data, struct fib_dp *dp)

Callers

nothing calls this directly

Calls 3

rt_get_raw_nhopFunction · 0.85
rt_get_inet_prefix_pmaskFunction · 0.85
bzeroFunction · 0.85

Tested by

no test coverage detected