if_map
extern int if_map(int (*) (char *, struct sockaddr *, void *), void *);
if (if_map(virtual_bind_if, 0) == -1)
if (if_map(virtual_bind_if, 0) == -1)
if_idxmap_limit(struct ifnet **if_map)
return ((uintptr_t)if_map[0]);
struct ifnet **if_map;
if_map = mallocarray(limit, sizeof(*if_map), M_IFADDR,
if_map[0] = (struct ifnet *)(uintptr_t)limit;
SMR_PTR_SET_LOCKED(&if_idxmap.map, if_map);
struct ifnet **if_map;
if_map = SMR_PTR_GET_LOCKED(&if_idxmap.map);
limit = if_idxmap_limit(if_map);
oif_map = if_map;
if_map = mallocarray(limit, sizeof(*if_map), M_IFADDR,
if_map[0] = (struct ifnet *)(uintptr_t)limit;
if_map[i] = if_ref(oifp);
SMR_PTR_SET_LOCKED(&if_idxmap.map, if_map);
struct ifnet **if_map;
if_map = SMR_PTR_GET_LOCKED(&if_idxmap.map);
KASSERTMSG(index != 0 && index < if_idxmap_limit(if_map),
if_idxmap_limit(if_map));
KASSERT(SMR_PTR_GET_LOCKED(&if_map[index]) == NULL);
SMR_PTR_SET_LOCKED(&if_map[index], if_ref(ifp));
struct ifnet **if_map;
if_map = SMR_PTR_GET_LOCKED(&if_idxmap.map);
KASSERT(index != 0 && index < if_idxmap_limit(if_map));
KASSERT(SMR_PTR_GET_LOCKED(&if_map[index]) == ifp);
SMR_PTR_SET_LOCKED(&if_map[index], NULL);
struct ifnet **if_map;
if_map = SMR_PTR_GET(&if_idxmap.map);
if (index < if_idxmap_limit(if_map))
ifp = SMR_PTR_GET(&if_map[index]);