summaryrefslogtreecommitdiffstats
path: root/sys/netinet/libalias
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2008-06-22 11:39:42 +0000
committermav <mav@FreeBSD.org>2008-06-22 11:39:42 +0000
commit4537f7afad1a891b42bbc3836757d1dcf8ee7934 (patch)
treeae8a4acc643f2a4b438f5b8d076a54339aa525bc /sys/netinet/libalias
parent9fe1756df85e1b11c091f8ab0cdcf473bd93553a (diff)
downloadFreeBSD-src-4537f7afad1a891b42bbc3836757d1dcf8ee7934.zip
FreeBSD-src-4537f7afad1a891b42bbc3836757d1dcf8ee7934.tar.gz
Partially revert previous commit. DeleteLink() does not deletes permanent
links so we should be aware of it and try to delete every link only once or we will loop forever.
Diffstat (limited to 'sys/netinet/libalias')
-rw-r--r--sys/netinet/libalias/alias_db.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c
index a9e96d1..c9942b8 100644
--- a/sys/netinet/libalias/alias_db.c
+++ b/sys/netinet/libalias/alias_db.c
@@ -819,8 +819,12 @@ CleanupAliasData(struct libalias *la)
LIBALIAS_LOCK_ASSERT(la);
for (i = 0; i < LINK_TABLE_OUT_SIZE; i++) {
- while ((lnk = LIST_FIRST(&la->linkTableOut[i])) != NULL)
+ lnk = LIST_FIRST(&la->linkTableOut[i]);
+ while (lnk != NULL) {
+ struct alias_link *link_next = LIST_NEXT(lnk, list_out);
DeleteLink(lnk);
+ lnk = link_next;
+ }
}
la->cleanupIndex = 0;
OpenPOWER on IntegriCloud