| 7403 | } |
| 7404 | |
| 7405 | static void |
| 7406 | key_freesah_flushed(struct secashead_queue *flushq) |
| 7407 | { |
| 7408 | struct secashead *sah, *nextsah; |
| 7409 | struct secasvar *sav, *nextsav; |
| 7410 | |
| 7411 | sah = TAILQ_FIRST(flushq); |
| 7412 | while (sah != NULL) { |
| 7413 | sav = TAILQ_FIRST(&sah->savtree_larval); |
| 7414 | while (sav != NULL) { |
| 7415 | nextsav = TAILQ_NEXT(sav, chain); |
| 7416 | TAILQ_REMOVE(&sah->savtree_larval, sav, chain); |
| 7417 | key_freesav(&sav); /* release last reference */ |
| 7418 | key_freesah(&sah); /* release reference from SAV */ |
| 7419 | sav = nextsav; |
| 7420 | } |
| 7421 | sav = TAILQ_FIRST(&sah->savtree_alive); |
| 7422 | while (sav != NULL) { |
| 7423 | nextsav = TAILQ_NEXT(sav, chain); |
| 7424 | TAILQ_REMOVE(&sah->savtree_alive, sav, chain); |
| 7425 | key_freesav(&sav); /* release last reference */ |
| 7426 | key_freesah(&sah); /* release reference from SAV */ |
| 7427 | sav = nextsav; |
| 7428 | } |
| 7429 | nextsah = TAILQ_NEXT(sah, chain); |
| 7430 | key_freesah(&sah); /* release last reference */ |
| 7431 | sah = nextsah; |
| 7432 | } |
| 7433 | } |
| 7434 | |
| 7435 | /* |
| 7436 | * SADB_FLUSH processing |
no test coverage detected