version 1.5, 2022/08/16 00:32:41
|
version 1.6, 2022/08/23 14:27:13
|
Line 1
|
Line 1
|
diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c |
diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c |
index 4612b32c139..cd18638ac17 100644 | index 4612b32c139..7ef0282fdb8 100644 |
--- a/sys/netinet/libalias/alias_db.c |
--- a/sys/netinet/libalias/alias_db.c |
+++ b/sys/netinet/libalias/alias_db.c |
+++ b/sys/netinet/libalias/alias_db.c |
@@ -55,6 +55,7 @@ __FBSDID("$FreeBSD$"); |
@@ -55,6 +55,7 @@ __FBSDID("$FreeBSD$"); |
Line 10 index 4612b32c139..cd18638ac17 100644
|
Line 10 index 4612b32c139..cd18638ac17 100644
|
#else |
#else |
#include "alias.h" |
#include "alias.h" |
#include "alias_local.h" |
#include "alias_local.h" |
@@ -63,6 +64,21 @@ __FBSDID("$FreeBSD$"); | @@ -63,6 +64,23 @@ __FBSDID("$FreeBSD$"); |
|
|
#include "alias_db.h" |
#include "alias_db.h" |
|
|
|
+#ifdef _KERNEL |
+#ifndef V_hook_alias |
+#ifndef V_hook_alias |
+typedef int (*ipfw_hook_t)(const void *arg, const void *extdata); |
+typedef int (*ipfw_hook_t)(const void *arg, const void *extdata); |
+/* callback hooks for notify on update of internal states and aliases */ |
+/* callback hooks for notify on update of internal states and aliases */ |
Line 28 index 4612b32c139..cd18638ac17 100644
|
Line 29 index 4612b32c139..cd18638ac17 100644
|
+#endif |
+#endif |
+ |
+ |
+VNET_DEFINE(ipfw_hook_t, hook_alias) = NULL; |
+VNET_DEFINE(ipfw_hook_t, hook_alias) = NULL; |
|
+#endif |
+ |
+ |
static LIST_HEAD(, libalias) instancehead = LIST_HEAD_INITIALIZER(instancehead); |
static LIST_HEAD(, libalias) instancehead = LIST_HEAD_INITIALIZER(instancehead); |
int LibAliasTime; |
int LibAliasTime; |
|
|
@@ -566,9 +582,14 @@ AddLink(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr, | @@ -566,9 +584,14 @@ AddLink(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr, |
int alias_port_param, int link_type) |
int alias_port_param, int link_type) |
{ |
{ |
struct alias_link *lnk; |
struct alias_link *lnk; |
Line 47 index 4612b32c139..cd18638ac17 100644
|
Line 49 index 4612b32c139..cd18638ac17 100644
|
lnk = malloc(sizeof(struct alias_link)); |
lnk = malloc(sizeof(struct alias_link)); |
if (lnk == NULL) { |
if (lnk == NULL) { |
#ifdef LIBALIAS_DEBUG |
#ifdef LIBALIAS_DEBUG |
@@ -708,6 +729,9 @@ AddLink(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr, | @@ -708,6 +731,11 @@ AddLink(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr, |
if (la->packetAliasMode & PKT_ALIAS_LOG) |
if (la->packetAliasMode & PKT_ALIAS_LOG) |
ShowAliasStats(la); |
ShowAliasStats(la); |
|
|
|
+#ifdef _KERNEL |
+ if (!sync && lnk && V_hook_alias) |
+ if (!sync && lnk && V_hook_alias) |
+ V_hook_alias(lnk, NULL); |
+ V_hook_alias(lnk, NULL); |
|
+#endif |
+ |
+ |
return (lnk); |
return (lnk); |
} |
} |