Lines Matching refs:lle

1266 in_lltable_free(struct lltable *llt, struct llentry *lle)
1268 LLE_WUNLOCK(lle);
1269 LLE_LOCK_DESTROY(lle);
1270 free(lle, M_LLTABLE);
1276 struct in_llentry *lle;
1278 lle = malloc(sizeof(struct in_llentry), M_LLTABLE, M_NOWAIT | M_ZERO);
1279 if (lle == NULL) /* NB: caller generates msg */
1286 lle->base.la_expire = time_uptime; /* mark expired */
1287 lle->l3_addr4 = *(const struct sockaddr_in *)l3addr;
1288 lle->base.lle_refcnt = 1;
1289 lle->base.lle_free = in_lltable_free;
1290 LLE_LOCK_INIT(&lle->base);
1291 callout_init_rw(&lle->base.la_timer, &lle->base.lle_lock,
1294 return (&lle->base);
1306 struct llentry *lle, *next;
1312 LIST_FOREACH_SAFE(lle, &llt->lle_head[i], lle_next, next) {
1317 if (IN_ARE_MASKED_ADDR_EQUAL(satosin(L3_ADDR(lle)),
1319 !(lle->la_flags & LLE_STATIC))) {
1320 LLE_WLOCK(lle);
1321 if (callout_stop(&lle->la_timer))
1322 LLE_REMREF(lle);
1323 pkts_dropped = llentry_free(lle);
1407 * If found return lle read locked.
1414 struct llentry *lle;
1424 LIST_FOREACH(lle, lleh, lle_next) {
1425 struct sockaddr_in *sa2 = satosin(L3_ADDR(lle));
1426 if (lle->la_flags & LLE_DELETED)
1431 if (lle == NULL) {
1434 log(LOG_INFO, "interface address is missing from cache = %p in delete\n", lle);
1447 lle = in_lltable_new(l3addr, flags);
1448 if (lle == NULL) {
1449 log(LOG_INFO, "lla_lookup: new lle malloc failed\n");
1452 lle->la_flags = flags & ~LLE_CREATE;
1454 bcopy(IF_LLADDR(ifp), &lle->ll_addr, ifp->if_addrlen);
1455 lle->la_flags |= (LLE_VALID | LLE_STATIC);
1458 lle->lle_tbl = llt;
1459 lle->lle_head = lleh;
1460 lle->la_flags |= LLE_LINKED;
1461 LIST_INSERT_HEAD(lleh, lle, lle_next);
1463 if (!(lle->la_flags & LLE_IFADDR) || (flags & LLE_IFADDR)) {
1464 LLE_WLOCK(lle);
1465 lle->la_flags |= LLE_DELETED;
1466 EVENTHANDLER_INVOKE(lle_event, lle, LLENTRY_DELETED);
1468 log(LOG_INFO, "ifaddr cache = %p is deleted\n", lle);
1470 if ((lle->la_flags &
1472 llentry_free(lle);
1474 LLE_WUNLOCK(lle);
1476 lle = (void *)-1;
1479 if (LLE_IS_VALID(lle)) {
1481 LLE_WLOCK(lle);
1483 LLE_RLOCK(lle);
1486 return (lle);
1492 #define SIN(lle) ((struct sockaddr_in *) L3_ADDR(lle))
1494 struct llentry *lle;
1507 LIST_FOREACH(lle, &llt->lle_head[i], lle_next) {
1511 if ((lle->la_flags & LLE_DELETED) == LLE_DELETED)
1514 if (prison_if(wr->td->td_ucred, L3_ADDR(lle)) != 0)
1530 arpc.sin.sin_addr.s_addr = SIN(lle)->sin_addr.s_addr;
1533 if (lle->la_flags & LLE_PUB)
1541 if ((lle->la_flags & LLE_VALID) == LLE_VALID) {
1543 bcopy(&lle->ll_addr, LLADDR(sdl), ifp->if_addrlen);
1550 lle->la_flags & LLE_STATIC ? 0 : lle->la_expire;
1552 if (lle->la_flags & LLE_STATIC)