Lines Matching refs:lle
4576 in6_lltable_destroy_lle_unlocked(struct llentry *lle) in in6_lltable_destroy_lle_unlocked() argument
4578 LLE_LOCK_DESTROY(lle); in in6_lltable_destroy_lle_unlocked()
4579 LLE_REQ_DESTROY(lle); in in6_lltable_destroy_lle_unlocked()
4580 struct in6_llentry *in_lle = (struct in6_llentry *)lle; in in6_lltable_destroy_lle_unlocked()
4589 in6_lltable_destroy_lle(struct llentry *lle) in in6_lltable_destroy_lle() argument
4591 LLE_WUNLOCK(lle); in in6_lltable_destroy_lle()
4594 in6_lltable_destroy_lle_unlocked(lle); in in6_lltable_destroy_lle()
4602 struct in6_llentry *lle; in in6_lltable_new() local
4604 lle = kalloc_type(struct in6_llentry, Z_NOWAIT | Z_ZERO); in in6_lltable_new()
4605 if (lle == NULL) { /* NB: caller generates msg */ in in6_lltable_new()
4609 lle->base.r_l3addr.addr6 = *addr6; in in6_lltable_new()
4610 lle->base.lle_refcnt = 1; in in6_lltable_new()
4611 lle->base.lle_free = in6_lltable_destroy_lle; in in6_lltable_new()
4612 LLE_LOCK_INIT(&lle->base); in in6_lltable_new()
4613 LLE_REQ_INIT(&lle->base); in in6_lltable_new()
4616 lle->base.lle_timer = thread_call_allocate(nd6_llinfo_timer, lle); in in6_lltable_new()
4618 if (lle->base.lle_timer == NULL) { in in6_lltable_new()
4620 LLE_LOCK_DESTROY(&lle->base); in in6_lltable_new()
4621 LLE_REQ_DESTROY(&lle->base); in in6_lltable_new()
4622 kfree_type(struct in6_llentry, lle); in in6_lltable_new()
4626 return &lle->base; in in6_lltable_new()
4631 const struct sockaddr *smask, uint16_t flags, struct llentry *lle) in in6_lltable_match_prefix() argument
4637 lle_addr = &lle->r_l3addr.addr6; in in6_lltable_match_prefix()
4638 uint32_t lle_addr_ifscope = lle->lle_tbl->llt_ifp->if_index; in in6_lltable_match_prefix()
4645 if (lle->la_flags & LLE_IFADDR) { in in6_lltable_match_prefix()
4659 if ((flags & LLE_STATIC) || !(lle->la_flags & LLE_STATIC)) { in in6_lltable_match_prefix()
4667 in6_lltable_free_entry(struct lltable *llt, struct llentry *lle) in in6_lltable_free_entry() argument
4671 LLE_WLOCK_ASSERT(lle); in in6_lltable_free_entry()
4675 if ((lle->la_flags & LLE_LINKED) != 0) { in in6_lltable_free_entry()
4678 lltable_unlink_entry(llt, lle); in in6_lltable_free_entry()
4683 if (thread_call_cancel(lle->lle_timer) == TRUE) { in in6_lltable_free_entry()
4684 LLE_REMREF(lle); in in6_lltable_free_entry()
4687 llentry_free(lle); in in6_lltable_free_entry()
4734 in6_lltable_hash(const struct llentry *lle, uint32_t hsize) in in6_lltable_hash() argument
4736 return in6_lltable_hash_dst(&lle->r_l3addr.addr6, hsize); in in6_lltable_hash()
4740 in6_lltable_fill_sa_entry(const struct llentry *lle, struct sockaddr *sa) in in6_lltable_fill_sa_entry() argument
4748 sin6->sin6_addr = lle->r_l3addr.addr6; in in6_lltable_fill_sa_entry()
4754 struct llentry *lle; in in6_lltable_find_dst() local
4760 LIST_FOREACH(lle, lleh, lle_next) { in in6_lltable_find_dst()
4761 if (lle->la_flags & LLE_DELETED) { in in6_lltable_find_dst()
4764 if (IN6_ARE_ADDR_EQUAL(&lle->r_l3addr.addr6, dst)) { in in6_lltable_find_dst()
4769 return lle; in in6_lltable_find_dst()
4773 in6_lltable_delete_entry(struct lltable *llt, struct llentry *lle) in in6_lltable_delete_entry() argument
4776 lle->la_flags |= LLE_DELETED; in in6_lltable_delete_entry()
4777 EVENTHANDLER_INVOKE(NULL, lle_event, lle, LLENTRY_DELETED); in in6_lltable_delete_entry()
4779 log(LOG_INFO, "ifaddr cache = %p is deleted\n", lle); in in6_lltable_delete_entry()
4781 llentry_free(lle); in in6_lltable_delete_entry()
4790 struct llentry *lle; in in6_lltable_alloc() local
4805 lle = in6_lltable_new(&sin6->sin6_addr, flags); in in6_lltable_alloc()
4806 if (lle == NULL) { in in6_lltable_alloc()
4810 lle->la_flags = (uint16_t)flags; in in6_lltable_alloc()
4812 lltable_set_entry_addr(ifp, lle, LLADDR(SDL(ifp->if_lladdr->ifa_addr))); in in6_lltable_alloc()
4813 lle->la_flags |= LLE_STATIC; in in6_lltable_alloc()
4816 if ((lle->la_flags & LLE_STATIC) != 0) { in in6_lltable_alloc()
4817 lle->ln_state = ND6_LLINFO_REACHABLE; in in6_lltable_alloc()
4820 return lle; in in6_lltable_alloc()
4828 struct llentry *lle; in in6_lltable_lookup() local
4834 lle = in6_lltable_find_dst(llt, &sin6->sin6_addr); in in6_lltable_lookup()
4836 if (lle == NULL) { in in6_lltable_lookup()
4845 return lle; in in6_lltable_lookup()
4849 LLE_WLOCK(lle); in in6_lltable_lookup()
4851 LLE_RLOCK(lle); in in6_lltable_lookup()
4853 return lle; in in6_lltable_lookup()
4857 in6_lltable_dump_entry(struct lltable *llt, struct llentry *lle, in in6_lltable_dump_entry() argument
4878 if ((lle->la_flags & LLE_DELETED) == LLE_DELETED) { in in6_lltable_dump_entry()
4882 lltable_fill_sa_entry(lle, in in6_lltable_dump_entry()
4897 if (lle->la_flags & LLE_PUB) { in in6_lltable_dump_entry()
4905 if ((lle->la_flags & LLE_VALID) == LLE_VALID) { in in6_lltable_dump_entry()
4907 bcopy(&lle->ll_addr, LLADDR(sdl), ifp->if_addrlen); in in6_lltable_dump_entry()
4912 if (lle->la_expire != 0) { in in6_lltable_dump_entry()
4917 ndpc.rtm.rtm_rmx.rmx_expire = (int32_t)(lle->la_expire + in in6_lltable_dump_entry()
4918 lle->lle_remtime / hz + in in6_lltable_dump_entry()
4922 if (lle->la_flags & LLE_STATIC) { in in6_lltable_dump_entry()
4925 if (lle->la_flags & LLE_IFADDR) { in in6_lltable_dump_entry()
4928 if (lle->ln_router != 0) { in in6_lltable_dump_entry()
4931 ndpc.rtm.rtm_rmx.rmx_pksent = lle->la_asked; in in6_lltable_dump_entry()
4933 ndpc.rtm.rtm_rmx.rmx_state = lle->ln_state; in in6_lltable_dump_entry()