git: 32f9c2ceb3ec - main - libalias: Restructure - Separate fully qualified search
Lutz Donnerhacke
donner at FreeBSD.org
Sat Jun 19 17:21:34 UTC 2021
The branch main has been updated by donner:
URL: https://cgit.FreeBSD.org/src/commit/?id=32f9c2ceb3ec8266e48ec0f6d1556fd98ef12db6
commit 32f9c2ceb3ec8266e48ec0f6d1556fd98ef12db6
Author: Lutz Donnerhacke <donner at FreeBSD.org>
AuthorDate: 2021-05-25 13:44:34 +0000
Commit: Lutz Donnerhacke <donner at FreeBSD.org>
CommitDate: 2021-06-19 17:21:05 +0000
libalias: Restructure - Separate fully qualified search
Search fully specified links first. Some performance loss due to need
to revisit the db twice, if not found.
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D30569
---
sys/netinet/libalias/alias_db.c | 29 +++++++++++++++++------------
1 file changed, 17 insertions(+), 12 deletions(-)
diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c
index 342f6117f878..dfb4cd9c8287 100644
--- a/sys/netinet/libalias/alias_db.c
+++ b/sys/netinet/libalias/alias_db.c
@@ -1210,18 +1210,27 @@ _FindLinkIn(struct libalias *la, struct in_addr dst_addr,
/* Search loop */
start_point = StartPointIn(alias_addr, alias_port, link_type);
+ if (!(flags_in & LINK_PARTIALLY_SPECIFIED)) {
+ LIST_FOREACH(lnk, &la->linkTableIn[start_point], list_in) {
+ INGUARD;
+ if (lnk->flags & LINK_PARTIALLY_SPECIFIED)
+ continue;
+ 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);
+ }
+ }
+ }
+ }
LIST_FOREACH(lnk, &la->linkTableIn[start_point], list_in) {
int flags;
INGUARD;
flags = flags_in | lnk->flags;
- if (!(flags & LINK_PARTIALLY_SPECIFIED)) {
- if (lnk->dst_addr.s_addr == dst_addr.s_addr
- && lnk->dst_port == dst_port) {
- lnk_fully_specified = lnk;
- break;
- }
- } else if ((flags & LINK_UNKNOWN_DEST_ADDR)
+ if ((flags & LINK_UNKNOWN_DEST_ADDR)
&& (flags & LINK_UNKNOWN_DEST_PORT)) {
if (lnk_unknown_all == NULL)
lnk_unknown_all = lnk;
@@ -1239,11 +1248,7 @@ _FindLinkIn(struct libalias *la, struct in_addr dst_addr,
}
#undef INGUARD
- CleanupLink(la, &lnk_fully_specified);
- if (lnk_fully_specified != NULL) {
- lnk_fully_specified->timestamp = LibAliasTime;
- lnk = lnk_fully_specified;
- } else if (lnk_unknown_dst_port != NULL)
+ if (lnk_unknown_dst_port != NULL)
lnk = lnk_unknown_dst_port;
else if (lnk_unknown_dst_addr != NULL)
lnk = lnk_unknown_dst_addr;
More information about the dev-commits-src-all
mailing list