aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/netinet/libalias/alias_db.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c
index ed222c4133d4..e38186d2d696 100644
--- a/sys/netinet/libalias/alias_db.c
+++ b/sys/netinet/libalias/alias_db.c
@@ -870,8 +870,18 @@ _FindLinkIn(struct libalias *la, struct in_addr dst_addr,
case 0:
LIST_FOREACH(lnk, &grp->full, all.in) {
if (lnk->dst_addr.s_addr == dst_addr.s_addr &&
- lnk->dst_port == dst_port)
- return (UseLink(la, lnk));
+ lnk->dst_port == dst_port) {
+ struct alias_link *found;
+
+ found = UseLink(la, lnk);
+ if (found != NULL)
+ return (found);
+ /* link expired */
+ grp = StartPointIn(la, alias_addr, alias_port, link_type, 0);
+ if (grp == NULL)
+ return (NULL);
+ break;
+ }
}
break;
case LINK_UNKNOWN_DEST_PORT: