Lines Matching refs:soltgt
1288 struct nd6_prproxy_soltgt *__single soltgt, *__single tmp; in nd6_prproxy_sols_purge() local
1294 RB_FOREACH_SAFE(soltgt, prproxy_sols_tree, in nd6_prproxy_sols_purge()
1297 if (expire == 0 || soltgt->soltgt_expire <= expire || in nd6_prproxy_sols_purge()
1298 soltgt->soltgt_cnt == 0) { in nd6_prproxy_sols_purge()
1301 &pr->ndpr_prproxy_sols, soltgt); in nd6_prproxy_sols_purge()
1302 nd6_soltgt_free(soltgt); in nd6_prproxy_sols_purge()
1313 RB_FOREACH_SAFE(soltgt, prproxy_sols_tree, in nd6_prproxy_sols_purge()
1317 RB_REMOVE(prproxy_sols_tree, &pr->ndpr_prproxy_sols, soltgt); in nd6_prproxy_sols_purge()
1318 nd6_soltgt_free(soltgt); in nd6_prproxy_sols_purge()
1353 struct nd6_prproxy_soltgt *__single soltgt; in nd6_solsrc_enq() local
1374 soltgt = RB_FIND(prproxy_sols_tree, &pr->ndpr_prproxy_sols, &find); in nd6_solsrc_enq()
1375 if (soltgt == NULL) { in nd6_solsrc_enq()
1382 soltgt = nd6_soltgt_alloc(M_WAITOK); in nd6_solsrc_enq()
1383 if (soltgt == NULL) { in nd6_solsrc_enq()
1388 soltgt->soltgt_key.taddr = *taddr; in nd6_solsrc_enq()
1389 VERIFY(soltgt->soltgt_cnt == 0); in nd6_solsrc_enq()
1390 VERIFY(TAILQ_EMPTY(&soltgt->soltgt_q)); in nd6_solsrc_enq()
1394 RB_INSERT(prproxy_sols_tree, &pr->ndpr_prproxy_sols, soltgt); in nd6_solsrc_enq()
1397 if (max_ssrc != 0 && soltgt->soltgt_cnt >= max_ssrc) { in nd6_solsrc_enq()
1398 VERIFY(!TAILQ_EMPTY(&soltgt->soltgt_q)); in nd6_solsrc_enq()
1399 nd6_soltgt_prune(soltgt, max_ssrc); in nd6_solsrc_enq()
1400 VERIFY(soltgt->soltgt_cnt < max_ssrc); in nd6_solsrc_enq()
1403 soltgt->soltgt_cnt++; in nd6_solsrc_enq()
1404 VERIFY(soltgt->soltgt_cnt != 0); in nd6_solsrc_enq()
1405 TAILQ_INSERT_TAIL(&soltgt->soltgt_q, ssrc, solsrc_tqe); in nd6_solsrc_enq()
1406 if (soltgt->soltgt_cnt == 1) { in nd6_solsrc_enq()
1407 soltgt->soltgt_expire = net_uptime() + ND6_TGT_SOLS_EXPIRE; in nd6_solsrc_enq()
1421 struct nd6_prproxy_soltgt *__single soltgt; in nd6_solsrc_deq() local
1434 soltgt = RB_FIND(prproxy_sols_tree, &pr->ndpr_prproxy_sols, &find); in nd6_solsrc_deq()
1435 if (soltgt == NULL || soltgt->soltgt_cnt == 0) { in nd6_solsrc_deq()
1436 VERIFY(soltgt == NULL || TAILQ_EMPTY(&soltgt->soltgt_q)); in nd6_solsrc_deq()
1440 VERIFY(soltgt->soltgt_cnt != 0); in nd6_solsrc_deq()
1441 --soltgt->soltgt_cnt; in nd6_solsrc_deq()
1442 ssrc = TAILQ_FIRST(&soltgt->soltgt_q); in nd6_solsrc_deq()
1444 TAILQ_REMOVE(&soltgt->soltgt_q, ssrc, solsrc_tqe); in nd6_solsrc_deq()
1455 struct nd6_prproxy_soltgt *__single soltgt; in nd6_soltgt_alloc() local
1457 soltgt = zalloc_flags(soltgt_zone, how | Z_ZERO); in nd6_soltgt_alloc()
1458 if (soltgt != NULL) { in nd6_soltgt_alloc()
1459 TAILQ_INIT(&soltgt->soltgt_q); in nd6_soltgt_alloc()
1461 return soltgt; in nd6_soltgt_alloc()
1465 nd6_soltgt_free(struct nd6_prproxy_soltgt *soltgt) in nd6_soltgt_free() argument
1469 TAILQ_FOREACH_SAFE(ssrc, &soltgt->soltgt_q, solsrc_tqe, tssrc) { in nd6_soltgt_free()
1470 VERIFY(soltgt->soltgt_cnt > 0); in nd6_soltgt_free()
1471 soltgt->soltgt_cnt--; in nd6_soltgt_free()
1472 TAILQ_REMOVE(&soltgt->soltgt_q, ssrc, solsrc_tqe); in nd6_soltgt_free()
1476 VERIFY(soltgt->soltgt_cnt == 0); in nd6_soltgt_free()
1477 VERIFY(TAILQ_EMPTY(&soltgt->soltgt_q)); in nd6_soltgt_free()
1479 zfree(soltgt_zone, soltgt); in nd6_soltgt_free()
1483 nd6_soltgt_prune(struct nd6_prproxy_soltgt *soltgt, u_int32_t max_ssrc) in nd6_soltgt_prune() argument
1485 while (soltgt->soltgt_cnt >= max_ssrc) { in nd6_soltgt_prune()
1488 VERIFY(soltgt->soltgt_cnt != 0); in nd6_soltgt_prune()
1489 --soltgt->soltgt_cnt; in nd6_soltgt_prune()
1490 ssrc = TAILQ_FIRST(&soltgt->soltgt_q); in nd6_soltgt_prune()
1492 TAILQ_REMOVE(&soltgt->soltgt_q, ssrc, solsrc_tqe); in nd6_soltgt_prune()