Lines Matching defs:lle

1173  * 1) Add lle entry for added address
2019 * Do actual deallocation of @lle.
2022 in6_lltable_destroy_lle_unlocked(struct llentry *lle)
2025 LLE_LOCK_DESTROY(lle);
2026 LLE_REQ_DESTROY(lle);
2027 free(lle, M_LLTABLE);
2035 in6_lltable_destroy_lle(struct llentry *lle)
2038 LLE_WUNLOCK(lle);
2039 in6_lltable_destroy_lle_unlocked(lle);
2045 struct in6_llentry *lle;
2047 lle = malloc(sizeof(struct in6_llentry), M_LLTABLE, M_NOWAIT | M_ZERO);
2048 if (lle == NULL) /* NB: caller generates msg */
2051 lle->base.r_l3addr.addr6 = *addr6;
2052 lle->base.lle_refcnt = 1;
2053 lle->base.lle_free = in6_lltable_destroy_lle;
2054 LLE_LOCK_INIT(&lle->base);
2055 LLE_REQ_INIT(&lle->base);
2056 callout_init(&lle->base.lle_timer, 1);
2058 return (&lle->base);
2063 const struct sockaddr *smask, u_int flags, struct llentry *lle)
2069 lle_addr = &lle->r_l3addr.addr6;
2074 if (lle->la_flags & LLE_IFADDR) {
2088 if ((flags & LLE_STATIC) || !(lle->la_flags & LLE_STATIC))
2095 in6_lltable_free_entry(struct lltable *llt, struct llentry *lle)
2099 LLE_WLOCK_ASSERT(lle);
2103 if ((lle->la_flags & LLE_LINKED) != 0) {
2107 lltable_unlink_entry(llt, lle);
2110 llentry_free(lle);
2155 in6_lltable_mark_used(struct llentry *lle)
2158 LLE_REQ_LOCK(lle);
2159 lle->r_skip_req = 0;
2166 lle->lle_hittime = time_uptime;
2167 LLE_REQ_UNLOCK(lle);
2178 in6_lltable_hash(const struct llentry *lle, uint32_t hsize)
2181 return (in6_lltable_hash_dst(&lle->r_l3addr.addr6, hsize));
2185 in6_lltable_fill_sa_entry(const struct llentry *lle, struct sockaddr *sa)
2193 sin6->sin6_addr = lle->r_l3addr.addr6;
2199 struct llentry *lle;
2205 LIST_FOREACH(lle, lleh, lle_next) {
2206 if (lle->la_flags & LLE_DELETED)
2208 if (IN6_ARE_ADDR_EQUAL(&lle->r_l3addr.addr6, dst))
2212 return (lle);
2216 in6_lltable_delete_entry(struct lltable *llt, struct llentry *lle)
2219 lle->la_flags |= LLE_DELETED;
2220 EVENTHANDLER_INVOKE(lle_event, lle, LLENTRY_DELETED);
2222 log(LOG_INFO, "ifaddr cache = %p is deleted\n", lle);
2224 llentry_free(lle);
2233 struct llentry *lle;
2250 lle = in6_lltable_new(&sin6->sin6_addr, flags);
2251 if (lle == NULL) {
2252 log(LOG_INFO, "lla_lookup: new lle malloc failed\n");
2255 lle->la_flags = flags;
2260 in6_lltable_destroy_lle_unlocked(lle);
2263 lltable_set_entry_addr(ifp, lle, linkhdr, linkhdrsize,
2265 lle->la_flags |= LLE_STATIC;
2268 if ((lle->la_flags & LLE_STATIC) != 0)
2269 lle->ln_state = ND6_LLINFO_REACHABLE;
2271 return (lle);
2279 struct llentry *lle;
2285 lle = in6_lltable_find_dst(llt, &sin6->sin6_addr);
2287 if (lle == NULL)
2291 (LLE_UNLOCKED|LLE_EXCLUSIVE),("wrong lle request flags: 0x%X",
2295 return (lle);
2298 LLE_WLOCK(lle);
2300 LLE_RLOCK(lle);
2301 return (lle);
2305 in6_lltable_dump_entry(struct lltable *llt, struct llentry *lle,
2326 if ((lle->la_flags & LLE_DELETED) == LLE_DELETED)
2329 lltable_fill_sa_entry(lle,
2349 if (lle->la_flags & LLE_PUB)
2357 if ((lle->la_flags & LLE_VALID) == LLE_VALID) {
2359 bcopy(lle->ll_addr, LLADDR(sdl),
2365 if (lle->la_expire != 0)
2366 ndpc.rtm.rtm_rmx.rmx_expire = lle->la_expire +
2367 lle->lle_remtime / hz +
2370 if (lle->la_flags & LLE_STATIC)
2372 if (lle->la_flags & LLE_IFADDR)
2374 if (lle->ln_router != 0)
2376 ndpc.rtm.rtm_rmx.rmx_pksent = lle->la_asked;
2378 ndpc.rtm.rtm_rmx.rmx_state = lle->ln_state;