Index: sys/netinet/libalias/alias_db.c =================================================================== --- sys/netinet/libalias/alias_db.c +++ sys/netinet/libalias/alias_db.c @@ -839,6 +839,15 @@ TAILQ_INSERT_TAIL(&la->checkExpire, (*lnk), list_expire); } +static inline struct alias_link * +UseLink(struct libalias *la, struct alias_link *lnk) +{ + CleanupLink(la, &lnk); + if (lnk != NULL) + lnk->timestamp = LibAliasTime; + return (lnk); +} + static void DeleteLink(struct alias_link **plnk) { @@ -1119,10 +1128,7 @@ i = StartPointOut(src_addr, dst_addr, src_port, dst_port, link_type); LIST_FOREACH(lnk, &la->linkTableOut[i], list_out) { OUTGUARD; - CleanupLink(la, &lnk); - if (lnk != NULL) - lnk->timestamp = LibAliasTime; - return (lnk); + return (UseLink(la, lnk)); } return (NULL); @@ -1242,12 +1248,8 @@ LIST_FOREACH(lnk, &la->linkTableIn[start_point], list_in) { INGUARD; if (lnk->dst_addr.s_addr == dst_addr.s_addr - && lnk->dst_port == dst_port) { - CleanupLink(la, &lnk); - if (lnk != NULL) - lnk->timestamp = LibAliasTime; - return (lnk); - } + && lnk->dst_port == dst_port) + return (UseLink(la, lnk)); } } else { LIST_FOREACH(lnk, &la->linkTableIn[start_point], list_in) {