Lines Matching refs:la

258 	struct llinfo_arp *la = arg;
260 if (la->la_le.le_next != NULL || la->la_le.le_prev != NULL) {
261 panic("%s: trying to free %p when it is in use", __func__, la);
266 if (la->la_hold != NULL) {
267 m_freem(la->la_hold);
268 la->la_hold = NULL;
272 VERIFY(la->la_rt->rt_llinfo == la);
273 if (la->la_rt->rt_llinfo_purge != NULL)
274 la->la_rt->rt_llinfo_purge(la->la_rt);
276 zfree(llinfo_arp_zone, la);
282 struct llinfo_arp *la = rt->rt_llinfo;
285 VERIFY(rt->rt_llinfo_purge == arp_llinfo_purge && la != NULL);
287 if (la->la_llreach != NULL) {
289 ifnet_llreach_free(la->la_llreach);
290 la->la_llreach = NULL;
292 la->la_lastused = 0;
298 struct llinfo_arp *la = rt->rt_llinfo;
299 struct if_llreach *lr = la->la_llreach;
312 ifnet_llreach_up2calexp(lr, la->la_lastused);
320 struct llinfo_arp *la = rt->rt_llinfo;
321 struct if_llreach *lr = la->la_llreach;
334 ifnet_llreach_up2upexp(lr, la->la_lastused);
350 arp_llreach_use(struct llinfo_arp *la)
352 if (la->la_llreach != NULL)
353 la->la_lastused = net_uptime();
357 arp_llreach_reachable(struct llinfo_arp *la)
366 if ((lr = la->la_llreach) == NULL) {
382 if (la->la_lastused == 0) {
383 VERIFY(la->la_llreach != NULL);
384 arp_llreach_use(la);
395 if (ifnet_llreach_reachable_delta(lr, la->la_lastused))
410 &SIN(rt_key(la->la_rt))->sin_addr, tmp, sizeof (tmp)), why,
411 (la->la_lastused ? (int64_t)(now - la->la_lastused) : -1),
433 struct llinfo_arp *la = rt->rt_llinfo;
440 if ((lr = la->la_llreach) != NULL) {
466 lr = la->la_llreach = ifnet_llreach_alloc(ifp,
489 arptfree(struct llinfo_arp *la)
491 struct rtentry *rt = la->la_rt;
500 la->la_asked = 0;
503 } else if (la->la_persist) {
529 struct llinfo_arp *la, *ola;
533 la = llinfo_arp.lh_first;
535 while ((ola = la) != 0) {
536 struct rtentry *rt = la->la_rt;
537 la = la->la_le.le_next;
552 struct llinfo_arp *la = rt->rt_llinfo;
559 if (la->la_persist)
585 struct llinfo_arp *la = rt->rt_llinfo;
629 if (la != NULL)
630 arp_llreach_use(la); /* Mark use timestamp */
646 if (la != 0)
652 rt->rt_llinfo = la = arp_llinfo_alloc();
653 if (la == NULL) {
664 Bzero(la, sizeof(*la));
665 la->la_rt = rt;
667 LIST_INSERT_HEAD(&llinfo_arp, la, la_le);
702 la->la_persist = 1;
751 if (la == 0)
757 * llinfo_arp, and likewise, la->la_rt still points to this
760 LIST_REMOVE(la, la_le);
761 la->la_le.le_next = NULL;
762 la->la_le.le_prev = NULL;
771 if (la->la_hold != NULL) {
772 m_freem(la->la_hold);
773 la->la_hold = NULL;