Lines Matching refs:soltgt
1288 struct nd6_prproxy_soltgt *soltgt, *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()
1352 struct nd6_prproxy_soltgt find, *soltgt; in nd6_solsrc_enq() local
1373 soltgt = RB_FIND(prproxy_sols_tree, &pr->ndpr_prproxy_sols, &find); in nd6_solsrc_enq()
1374 if (soltgt == NULL) { in nd6_solsrc_enq()
1381 soltgt = nd6_soltgt_alloc(M_WAITOK); in nd6_solsrc_enq()
1382 if (soltgt == NULL) { in nd6_solsrc_enq()
1387 soltgt->soltgt_key.taddr = *taddr; in nd6_solsrc_enq()
1388 VERIFY(soltgt->soltgt_cnt == 0); in nd6_solsrc_enq()
1389 VERIFY(TAILQ_EMPTY(&soltgt->soltgt_q)); in nd6_solsrc_enq()
1393 RB_INSERT(prproxy_sols_tree, &pr->ndpr_prproxy_sols, soltgt); in nd6_solsrc_enq()
1396 if (max_ssrc != 0 && soltgt->soltgt_cnt >= max_ssrc) { in nd6_solsrc_enq()
1397 VERIFY(!TAILQ_EMPTY(&soltgt->soltgt_q)); in nd6_solsrc_enq()
1398 nd6_soltgt_prune(soltgt, max_ssrc); in nd6_solsrc_enq()
1399 VERIFY(soltgt->soltgt_cnt < max_ssrc); in nd6_solsrc_enq()
1402 soltgt->soltgt_cnt++; in nd6_solsrc_enq()
1403 VERIFY(soltgt->soltgt_cnt != 0); in nd6_solsrc_enq()
1404 TAILQ_INSERT_TAIL(&soltgt->soltgt_q, ssrc, solsrc_tqe); in nd6_solsrc_enq()
1405 if (soltgt->soltgt_cnt == 1) { in nd6_solsrc_enq()
1406 soltgt->soltgt_expire = net_uptime() + ND6_TGT_SOLS_EXPIRE; in nd6_solsrc_enq()
1419 struct nd6_prproxy_soltgt find, *soltgt; in nd6_solsrc_deq() local
1432 soltgt = RB_FIND(prproxy_sols_tree, &pr->ndpr_prproxy_sols, &find); in nd6_solsrc_deq()
1433 if (soltgt == NULL || soltgt->soltgt_cnt == 0) { in nd6_solsrc_deq()
1434 VERIFY(soltgt == NULL || TAILQ_EMPTY(&soltgt->soltgt_q)); in nd6_solsrc_deq()
1438 VERIFY(soltgt->soltgt_cnt != 0); in nd6_solsrc_deq()
1439 --soltgt->soltgt_cnt; in nd6_solsrc_deq()
1440 ssrc = TAILQ_FIRST(&soltgt->soltgt_q); in nd6_solsrc_deq()
1442 TAILQ_REMOVE(&soltgt->soltgt_q, ssrc, solsrc_tqe); in nd6_solsrc_deq()
1453 struct nd6_prproxy_soltgt *soltgt; in nd6_soltgt_alloc() local
1455 soltgt = zalloc_flags(soltgt_zone, how | Z_ZERO); in nd6_soltgt_alloc()
1456 if (soltgt != NULL) { in nd6_soltgt_alloc()
1457 TAILQ_INIT(&soltgt->soltgt_q); in nd6_soltgt_alloc()
1459 return soltgt; in nd6_soltgt_alloc()
1463 nd6_soltgt_free(struct nd6_prproxy_soltgt *soltgt) in nd6_soltgt_free() argument
1467 TAILQ_FOREACH_SAFE(ssrc, &soltgt->soltgt_q, solsrc_tqe, tssrc) { in nd6_soltgt_free()
1468 VERIFY(soltgt->soltgt_cnt > 0); in nd6_soltgt_free()
1469 soltgt->soltgt_cnt--; in nd6_soltgt_free()
1470 TAILQ_REMOVE(&soltgt->soltgt_q, ssrc, solsrc_tqe); in nd6_soltgt_free()
1474 VERIFY(soltgt->soltgt_cnt == 0); in nd6_soltgt_free()
1475 VERIFY(TAILQ_EMPTY(&soltgt->soltgt_q)); in nd6_soltgt_free()
1477 zfree(soltgt_zone, soltgt); in nd6_soltgt_free()
1481 nd6_soltgt_prune(struct nd6_prproxy_soltgt *soltgt, u_int32_t max_ssrc) in nd6_soltgt_prune() argument
1483 while (soltgt->soltgt_cnt >= max_ssrc) { in nd6_soltgt_prune()
1486 VERIFY(soltgt->soltgt_cnt != 0); in nd6_soltgt_prune()
1487 --soltgt->soltgt_cnt; in nd6_soltgt_prune()
1488 ssrc = TAILQ_FIRST(&soltgt->soltgt_q); in nd6_soltgt_prune()
1490 TAILQ_REMOVE(&soltgt->soltgt_q, ssrc, solsrc_tqe); in nd6_soltgt_prune()