Lines Matching refs:lle

4580 in6_lltable_destroy_lle_unlocked(struct llentry *lle)  in in6_lltable_destroy_lle_unlocked()  argument
4582 LLE_LOCK_DESTROY(lle); in in6_lltable_destroy_lle_unlocked()
4583 LLE_REQ_DESTROY(lle); in in6_lltable_destroy_lle_unlocked()
4584 struct in6_llentry *in_lle = (struct in6_llentry *)lle; in in6_lltable_destroy_lle_unlocked()
4593 in6_lltable_destroy_lle(struct llentry *lle) in in6_lltable_destroy_lle() argument
4595 LLE_WUNLOCK(lle); in in6_lltable_destroy_lle()
4598 in6_lltable_destroy_lle_unlocked(lle); in in6_lltable_destroy_lle()
4606 struct in6_llentry *lle; in in6_lltable_new() local
4608 lle = kalloc_type(struct in6_llentry, Z_NOWAIT | Z_ZERO); in in6_lltable_new()
4609 if (lle == NULL) { /* NB: caller generates msg */ in in6_lltable_new()
4613 lle->base.r_l3addr.addr6 = *addr6; in in6_lltable_new()
4614 lle->base.lle_refcnt = 1; in in6_lltable_new()
4615 lle->base.lle_free = in6_lltable_destroy_lle; in in6_lltable_new()
4616 LLE_LOCK_INIT(&lle->base); in in6_lltable_new()
4617 LLE_REQ_INIT(&lle->base); in in6_lltable_new()
4620 lle->base.lle_timer = thread_call_allocate(nd6_llinfo_timer, lle); in in6_lltable_new()
4622 if (lle->base.lle_timer == NULL) { in in6_lltable_new()
4624 LLE_LOCK_DESTROY(&lle->base); in in6_lltable_new()
4625 LLE_REQ_DESTROY(&lle->base); in in6_lltable_new()
4626 kfree_type(struct in6_llentry, lle); in in6_lltable_new()
4630 return &lle->base; in in6_lltable_new()
4635 const struct sockaddr *smask, uint16_t flags, struct llentry *lle) in in6_lltable_match_prefix() argument
4641 lle_addr = &lle->r_l3addr.addr6; in in6_lltable_match_prefix()
4642 uint32_t lle_addr_ifscope = lle->lle_tbl->llt_ifp->if_index; in in6_lltable_match_prefix()
4649 if (lle->la_flags & LLE_IFADDR) { in in6_lltable_match_prefix()
4663 if ((flags & LLE_STATIC) || !(lle->la_flags & LLE_STATIC)) { in in6_lltable_match_prefix()
4671 in6_lltable_free_entry(struct lltable *llt, struct llentry *lle) in in6_lltable_free_entry() argument
4675 LLE_WLOCK_ASSERT(lle); in in6_lltable_free_entry()
4679 if ((lle->la_flags & LLE_LINKED) != 0) { in in6_lltable_free_entry()
4682 lltable_unlink_entry(llt, lle); in in6_lltable_free_entry()
4687 if (thread_call_cancel(lle->lle_timer) == TRUE) { in in6_lltable_free_entry()
4688 LLE_REMREF(lle); in in6_lltable_free_entry()
4691 llentry_free(lle); in in6_lltable_free_entry()
4738 in6_lltable_hash(const struct llentry *lle, uint32_t hsize) in in6_lltable_hash() argument
4740 return in6_lltable_hash_dst(&lle->r_l3addr.addr6, hsize); in in6_lltable_hash()
4744 in6_lltable_fill_sa_entry(const struct llentry *lle, struct sockaddr *sa) in in6_lltable_fill_sa_entry() argument
4752 sin6->sin6_addr = lle->r_l3addr.addr6; in in6_lltable_fill_sa_entry()
4758 struct llentry *lle; in in6_lltable_find_dst() local
4764 LIST_FOREACH(lle, lleh, lle_next) { in in6_lltable_find_dst()
4765 if (lle->la_flags & LLE_DELETED) { in in6_lltable_find_dst()
4768 if (IN6_ARE_ADDR_EQUAL(&lle->r_l3addr.addr6, dst)) { in in6_lltable_find_dst()
4773 return lle; in in6_lltable_find_dst()
4777 in6_lltable_delete_entry(struct lltable *llt, struct llentry *lle) in in6_lltable_delete_entry() argument
4780 lle->la_flags |= LLE_DELETED; in in6_lltable_delete_entry()
4781 EVENTHANDLER_INVOKE(NULL, lle_event, lle, LLENTRY_DELETED); in in6_lltable_delete_entry()
4783 log(LOG_INFO, "ifaddr cache = %p is deleted\n", lle); in in6_lltable_delete_entry()
4785 llentry_free(lle); in in6_lltable_delete_entry()
4794 struct llentry *lle; in in6_lltable_alloc() local
4809 lle = in6_lltable_new(&sin6->sin6_addr, flags); in in6_lltable_alloc()
4810 if (lle == NULL) { in in6_lltable_alloc()
4814 lle->la_flags = (uint16_t)flags; in in6_lltable_alloc()
4816 lltable_set_entry_addr(ifp, lle, LLADDR(SDL(ifp->if_lladdr->ifa_addr))); in in6_lltable_alloc()
4817 lle->la_flags |= LLE_STATIC; in in6_lltable_alloc()
4820 if ((lle->la_flags & LLE_STATIC) != 0) { in in6_lltable_alloc()
4821 lle->ln_state = ND6_LLINFO_REACHABLE; in in6_lltable_alloc()
4824 return lle; in in6_lltable_alloc()
4832 struct llentry *lle; in in6_lltable_lookup() local
4838 lle = in6_lltable_find_dst(llt, &sin6->sin6_addr); in in6_lltable_lookup()
4840 if (lle == NULL) { in in6_lltable_lookup()
4849 return lle; in in6_lltable_lookup()
4853 LLE_WLOCK(lle); in in6_lltable_lookup()
4855 LLE_RLOCK(lle); in in6_lltable_lookup()
4857 return lle; in in6_lltable_lookup()
4861 in6_lltable_dump_entry(struct lltable *llt, struct llentry *lle, in in6_lltable_dump_entry() argument
4882 if ((lle->la_flags & LLE_DELETED) == LLE_DELETED) { in in6_lltable_dump_entry()
4886 lltable_fill_sa_entry(lle, in in6_lltable_dump_entry()
4901 if (lle->la_flags & LLE_PUB) { in in6_lltable_dump_entry()
4909 if ((lle->la_flags & LLE_VALID) == LLE_VALID) { in in6_lltable_dump_entry()
4911 bcopy(&lle->ll_addr, LLADDR(sdl), ifp->if_addrlen); in in6_lltable_dump_entry()
4916 if (lle->la_expire != 0) { in in6_lltable_dump_entry()
4921 ndpc.rtm.rtm_rmx.rmx_expire = (int32_t)(lle->la_expire + in in6_lltable_dump_entry()
4922 lle->lle_remtime / hz + in in6_lltable_dump_entry()
4926 if (lle->la_flags & LLE_STATIC) { in in6_lltable_dump_entry()
4929 if (lle->la_flags & LLE_IFADDR) { in in6_lltable_dump_entry()
4932 if (lle->ln_router != 0) { in in6_lltable_dump_entry()
4935 ndpc.rtm.rtm_rmx.rmx_pksent = lle->la_asked; in in6_lltable_dump_entry()
4937 ndpc.rtm.rtm_rmx.rmx_state = lle->ln_state; in in6_lltable_dump_entry()