Lines Matching defs:aat
73 #define AARPTAB_LOOK(aat, addr) { \
76 (aat) = &aarptab[AARPTAB_HASH(addr) * AARPTAB_BSIZ]; \
77 for (n = 0; n < AARPTAB_BSIZ; n++, (aat)++) { \
78 if ((aat)->aat_ataddr.s_net == (addr).s_net && \
79 (aat)->aat_ataddr.s_node == (addr).s_node) \
83 (aat) = 0; \
111 struct aarptab *aat;
116 aat = aarptab;
117 for (i = 0; i < AARPTAB_SIZE; i++, aat++) {
118 int killtime = (aat->aat_flags & ATF_COM) ? AARPT_KILLC :
120 if (aat->aat_flags == 0 || (aat->aat_flags & ATF_PERM))
122 if (++aat->aat_timer < killtime)
125 aarptfree(aat);
255 struct aarptab *aat;
280 AARPTAB_LOOK(aat, destsat->sat_addr);
281 if (aat == 0) { /* No entry */
282 aat = aarptnew(&destsat->sat_addr);
283 if (aat == 0)
286 aat->aat_hold = m;
293 aat->aat_timer = 0;
294 if (aat->aat_flags & ATF_COM) { /* entry is COMplete */
295 memcpy(desten, aat->aat_enaddr, sizeof(aat->aat_enaddr));
301 m_freem(aat->aat_hold);
302 aat->aat_hold = m;
345 struct aarptab *aat;
444 AARPTAB_LOOK(aat, spa);
445 if (aat) {
452 aarptfree(aat);
456 memcpy(aat->aat_enaddr, ea->aarp_sha, sizeof(ea->aarp_sha));
457 aat->aat_flags |= ATF_COM;
458 if (aat->aat_hold) {
462 if_output_lock(ifp, ifp, aat->aat_hold,
464 aat->aat_hold = 0;
467 if (aat == 0 && tpa.s_net == ma.s_net && tpa.s_node == ma.s_node
469 if ((aat = aarptnew(&spa)) != NULL) {
470 memcpy(aat->aat_enaddr, ea->aarp_sha,
472 aat->aat_flags |= ATF_COM;
528 aarptfree(struct aarptab *aat)
531 m_freem(aat->aat_hold);
532 aat->aat_hold = 0;
533 aat->aat_timer = aat->aat_flags = 0;
534 aat->aat_ataddr.s_net = 0;
535 aat->aat_ataddr.s_node = 0;
543 struct aarptab *aat, *aato = NULL;
551 aat = &aarptab[AARPTAB_HASH(*addr) * AARPTAB_BSIZ];
552 for (n = 0; n < AARPTAB_BSIZ; n++, aat++) {
553 if (aat->aat_flags == 0)
555 if (aat->aat_flags & ATF_PERM)
557 if ((int) aat->aat_timer > oldest) {
558 oldest = aat->aat_timer;
559 aato = aat;
564 aat = aato;
565 aarptfree(aat);
567 aat->aat_ataddr = *addr;
568 aat->aat_flags = ATF_INUSE;
569 return (aat);