From 871caa53921d0b0a6790f841b2d120f78f848711 Mon Sep 17 00:00:00 2001 From: Bill Yuan Date: Mon, 26 Jun 2017 23:41:26 +0800 Subject: [PATCH] ipfw3_nat: move housekeeping into callout func --- sys/net/ipfw3_nat/ip_fw3_nat.c | 11 ++++++++++- sys/net/libalias/alias.c | 6 ++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/sys/net/ipfw3_nat/ip_fw3_nat.c b/sys/net/ipfw3_nat/ip_fw3_nat.c index 052cb81167..238d06857d 100644 --- a/sys/net/ipfw3_nat/ip_fw3_nat.c +++ b/sys/net/ipfw3_nat/ip_fw3_nat.c @@ -82,6 +82,7 @@ struct ipfw_nat_context *ipfw_nat_ctx[MAXCPU]; static struct callout ipfw3_nat_cleanup_callout; extern struct ipfw_context *ipfw_ctx[MAXCPU]; extern ip_fw_ctl_t *ipfw_ctl_nat_ptr; +extern libalias_housekeeping_t *libalias_housekeeping_prt; static int fw3_nat_cleanup_interval = 5; @@ -774,7 +775,15 @@ nat_init_ctx_dispatch(netmsg_t msg) static void ipfw3_nat_cleanup_func_dispatch(netmsg_t nmsg) { - /* TODO cleanup the libalias records */ + struct ipfw_nat_context *nctx; + struct cfg_nat *ptr, *tmp; + + nctx = ipfw_nat_ctx[mycpuid]; + LIST_FOREACH_MUTABLE(ptr, &(nctx->nat), _next, tmp) { + if (libalias_housekeeping_prt != NULL) { + (*libalias_housekeeping_prt)(ptr->lib); + } + } netisr_forwardmsg(&nmsg->base, mycpuid + 1); } diff --git a/sys/net/libalias/alias.c b/sys/net/libalias/alias.c index 4da85d289f..80016fa206 100644 --- a/sys/net/libalias/alias.c +++ b/sys/net/libalias/alias.c @@ -1255,7 +1255,8 @@ LibAliasInLocked(struct libalias *la, char *ptr, int maxpacketsize, la->packetAliasMode |= PKT_ALIAS_REVERSE; goto getout; } - HouseKeeping(la); + /* stop house keeping for each packet */ + /* HouseKeeping(la); */ ClearCheckNewLink(la); pip = (struct ip *)ptr; alias_addr = pip->ip_dst; @@ -1381,7 +1382,8 @@ LibAliasOutLocked(struct libalias *la, char *ptr, /* valid IP packet */ la->packetAliasMode |= PKT_ALIAS_REVERSE; goto getout; } - HouseKeeping(la); + /* stop house keeping for each packet */ + /* HouseKeeping(la); */ ClearCheckNewLink(la); pip = (struct ip *)ptr; -- 2.11.4.GIT