Home | History | Annotate | Download | only in netinet6

Lines Matching defs:lle

2381  * Do actual deallocation of @lle.
2386 in6_lltable_destroy_lle(struct llentry *lle)
2389 KASSERTMSG(lle->la_numheld == 0, "la_numheld=%d", lle->la_numheld);
2391 LLE_WUNLOCK(lle);
2392 LLE_LOCK_DESTROY(lle);
2393 llentry_pool_put(lle);
2399 struct llentry *lle;
2401 lle = llentry_pool_get(PR_NOWAIT);
2402 if (lle == NULL) /* NB: caller generates msg */
2405 lle->r_l3addr.addr6 = *addr6;
2406 lle->lle_refcnt = 1;
2407 lle->lle_free = in6_lltable_destroy_lle;
2408 LLE_LOCK_INIT(lle);
2409 callout_init(&lle->lle_timer, CALLOUT_MPSAFE);
2411 return lle;
2416 const struct sockaddr *mask, u_int flags, struct llentry *lle)
2421 if (IN6_ARE_MASKED_ADDR_EQUAL(&lle->r_l3addr.addr6,
2423 ((flags & LLE_STATIC) || !(lle->la_flags & LLE_STATIC)))
2430 in6_lltable_free_entry(struct lltable *llt, struct llentry *lle)
2433 LLE_WLOCK_ASSERT(lle);
2434 (void) llentry_free(lle);
2474 in6_lltable_hash(const struct llentry *lle, uint32_t hsize)
2477 return in6_lltable_hash_dst(&lle->r_l3addr.addr6, hsize);
2481 in6_lltable_fill_sa_entry(const struct llentry *lle, struct sockaddr *sa)
2489 sin6->sin6_addr = lle->r_l3addr.addr6;
2495 struct llentry *lle;
2501 LIST_FOREACH(lle, lleh, lle_next) {
2502 if (lle->la_flags & LLE_DELETED)
2504 if (IN6_ARE_ADDR_EQUAL(&lle->r_l3addr.addr6, dst))
2508 return lle;
2516 struct llentry *lle;
2522 lle = in6_lltable_find_dst(llt, &sin6->sin6_addr);
2524 if (lle == NULL) {
2534 LLE_WLOCK(lle);
2540 __func__, buf, lle);
2543 llentry_free(lle);
2554 struct llentry *lle;
2560 lle = in6_lltable_find_dst(llt, &sin6->sin6_addr);
2562 if (lle != NULL) {
2563 LLE_WLOCK(lle);
2564 return lle;
2576 lle = in6_lltable_new(&sin6->sin6_addr, flags);
2577 if (lle == NULL) {
2578 log(LOG_INFO, "lla_lookup: new lle malloc failed\n");
2581 lle->la_flags = flags;
2583 memcpy(&lle->ll_addr, CLLADDR(ifp->if_sadl), ifp->if_addrlen);
2584 lle->la_flags |= LLE_VALID;
2587 lltable_link_entry(llt, lle);
2588 LLE_WLOCK(lle);
2590 return lle;
2598 struct llentry *lle;
2604 lle = in6_lltable_find_dst(llt, &sin6->sin6_addr);
2606 if (lle == NULL)
2610 LLE_WLOCK(lle);
2612 LLE_RLOCK(lle);
2613 return lle;
2617 in6_lltable_dump_entry(struct lltable *llt, struct llentry *lle,
2625 if (lle->la_flags & LLE_DELETED)
2628 sockaddr_in6_init(&sin6, &lle->r_l3addr.addr6, 0, 0, 0);
2630 return lltable_dump_entry(llt, lle, w, sin6tosa(&sin6));