Lines Matching refs:la

281 	struct llinfo_arp *la = zalloc_flags(llinfo_arp_zone, how | Z_ZERO);  in arp_llinfo_alloc()  local
283 if (la) { in arp_llinfo_alloc()
289 _qinit(&la->la_holdq, Q_DROPHEAD, (arp_maxhold == 0) ? in arp_llinfo_alloc()
292 return la; in arp_llinfo_alloc()
298 struct llinfo_arp *la = arg; in arp_llinfo_free() local
300 if (la->la_le.le_next != NULL || la->la_le.le_prev != NULL) { in arp_llinfo_free()
301 panic("%s: trying to free %p when it is in use", __func__, la); in arp_llinfo_free()
306 (void) arp_llinfo_flushq(la); in arp_llinfo_free()
309 VERIFY(la->la_rt->rt_llinfo == la); in arp_llinfo_free()
310 if (la->la_rt->rt_llinfo_purge != NULL) { in arp_llinfo_free()
311 la->la_rt->rt_llinfo_purge(la->la_rt); in arp_llinfo_free()
314 zfree(llinfo_arp_zone, la); in arp_llinfo_free()
318 arp_llinfo_addq(struct llinfo_arp *la, struct mbuf *m) in arp_llinfo_addq() argument
332 if (qlen(&la->la_holdq) >= qlimit(&la->la_holdq)) { in arp_llinfo_addq()
335 _getq_scidx_lt(&la->la_holdq, &pkt, SCIDX_CTL); in arp_llinfo_addq()
338 _getq(&la->la_holdq, &pkt); in arp_llinfo_addq()
351 _addq(&la->la_holdq, &pkt); in arp_llinfo_addq()
356 qlen(&la->la_holdq)); in arp_llinfo_addq()
363 arp_llinfo_flushq(struct llinfo_arp *la) in arp_llinfo_flushq() argument
365 uint32_t held = qlen(&la->la_holdq); in arp_llinfo_flushq()
370 _flushq(&la->la_holdq); in arp_llinfo_flushq()
372 la->la_prbreq_cnt = 0; in arp_llinfo_flushq()
373 VERIFY(qempty(&la->la_holdq)); in arp_llinfo_flushq()
380 struct llinfo_arp *la = rt->rt_llinfo; in arp_llinfo_purge() local
383 VERIFY(rt->rt_llinfo_purge == arp_llinfo_purge && la != NULL); in arp_llinfo_purge()
385 if (la->la_llreach != NULL) { in arp_llinfo_purge()
387 ifnet_llreach_free(la->la_llreach); in arp_llinfo_purge()
388 la->la_llreach = NULL; in arp_llinfo_purge()
390 la->la_lastused = 0; in arp_llinfo_purge()
396 struct llinfo_arp *la = rt->rt_llinfo; in arp_llinfo_get_ri() local
397 struct if_llreach *lr = la->la_llreach; in arp_llinfo_get_ri()
410 ifnet_llreach_up2calexp(lr, la->la_lastused); in arp_llinfo_get_ri()
418 struct llinfo_arp *la = rt->rt_llinfo; in arp_llinfo_get_iflri() local
419 struct if_llreach *lr = la->la_llreach; in arp_llinfo_get_iflri()
432 ifnet_llreach_up2upexp(lr, la->la_lastused); in arp_llinfo_get_iflri()
470 arp_llreach_use(struct llinfo_arp *la) in arp_llreach_use() argument
472 if (la->la_llreach != NULL) { in arp_llreach_use()
473 la->la_lastused = net_uptime(); in arp_llreach_use()
478 arp_llreach_reachable(struct llinfo_arp *la) in arp_llreach_reachable() argument
488 if ((lr = la->la_llreach) == NULL) { in arp_llreach_reachable()
505 if (la->la_lastused == 0) { in arp_llreach_reachable()
506 VERIFY(la->la_llreach != NULL); in arp_llreach_reachable()
507 arp_llreach_use(la); in arp_llreach_reachable()
518 if (ifnet_llreach_reachable_delta(lr, la->la_lastused)) { in arp_llreach_reachable()
534 &SIN(rt_key(la->la_rt))->sin_addr, tmp, sizeof(tmp)), why, in arp_llreach_reachable()
535 (la->la_lastused ? (int64_t)(now - la->la_lastused) : -1), in arp_llreach_reachable()
557 struct llinfo_arp *la = rt->rt_llinfo; in arp_llreach_alloc() local
564 if ((lr = la->la_llreach) != NULL) { in arp_llreach_alloc()
599 lr = la->la_llreach = ifnet_llreach_alloc(ifp, in arp_llreach_alloc()
635 arptfree(struct llinfo_arp *la, void *arg) in arptfree() argument
638 struct rtentry *rt = la->la_rt; in arptfree()
653 if (ap->probing && (la->la_flags & LLINFO_PROBING) && in arptfree()
654 la->la_probeexp <= timenow) { in arptfree()
659 (void) arp_llinfo_flushq(la); in arptfree()
674 ap->qlen += qlen(&la->la_holdq); in arptfree()
675 ap->qlen += la->la_prbreq_cnt; in arptfree()
676 ap->qsize += qsize(&la->la_holdq); in arptfree()
705 la->la_asked = 0; in arptfree()
732 struct llinfo_arp *la, *ola; in in_arpdrain() local
740 la = llinfo_arp.lh_first; in in_arpdrain()
743 while ((ola = la) != NULL) { in in_arpdrain()
744 la = la->la_le.le_next; in in_arpdrain()
763 struct llinfo_arp *la, *ola; in arp_timeout() local
768 la = llinfo_arp.lh_first; in arp_timeout()
770 while ((ola = la) != NULL) { in arp_timeout()
771 la = la->la_le.le_next; in arp_timeout()
832 struct llinfo_arp *la, *ola; in arp_probe() local
837 la = llinfo_arp.lh_first; in arp_probe()
840 while ((ola = la) != NULL) { in arp_probe()
841 la = la->la_le.le_next; in arp_probe()
903 struct llinfo_arp *la = rt->rt_llinfo; in arp_rtrequest() local
948 if (la != NULL) { in arp_rtrequest()
949 arp_llreach_use(la); /* Mark use timestamp */ in arp_rtrequest()
973 if (la != NULL) { in arp_rtrequest()
980 rt->rt_llinfo = la = arp_llinfo_alloc(Z_WAITOK); in arp_rtrequest()
988 la->la_rt = rt; in arp_rtrequest()
989 LIST_INSERT_HEAD(&llinfo_arp, la, la_le); in arp_rtrequest()
1028 la->la_maxtries = arp_maxtries; in arp_rtrequest()
1083 if (la == NULL) { in arp_rtrequest()
1092 LIST_REMOVE(la, la_le); in arp_rtrequest()
1093 la->la_le.le_next = NULL; in arp_rtrequest()
1094 la->la_le.le_prev = NULL; in arp_rtrequest()
1105 (void) arp_llinfo_flushq(la); in arp_rtrequest()