summaryrefslogtreecommitdiffstats
path: root/sys/netinet/libalias
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netinet/libalias')
-rw-r--r--sys/netinet/libalias/alias.h1
-rw-r--r--sys/netinet/libalias/alias_db.c15
-rw-r--r--sys/netinet/libalias/libalias.321
3 files changed, 36 insertions, 1 deletions
diff --git a/sys/netinet/libalias/alias.h b/sys/netinet/libalias/alias.h
index eab4044..eb35bf7 100644
--- a/sys/netinet/libalias/alias.h
+++ b/sys/netinet/libalias/alias.h
@@ -69,6 +69,7 @@ int PacketAliasAddServer(struct alias_link *_link,
struct alias_link *
PacketAliasRedirectAddr(struct in_addr _src_addr,
struct in_addr _alias_addr);
+int PacketAliasRedirectDynamic(struct alias_link *_link);
void PacketAliasRedirectDelete(struct alias_link *_link);
struct alias_link *
PacketAliasRedirectPort(struct in_addr _src_addr,
diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c
index 1b59b05..84b38ae 100644
--- a/sys/netinet/libalias/alias_db.c
+++ b/sys/netinet/libalias/alias_db.c
@@ -2358,6 +2358,7 @@ UninitPacketAliasLog(void)
PacketAliasAddServer()
PacketAliasRedirectProto()
PacketAliasRedirectAddr()
+ PacketAliasRedirectDynamic()
PacketAliasRedirectDelete()
PacketAliasSetAddress()
PacketAliasInit()
@@ -2499,6 +2500,20 @@ PacketAliasRedirectAddr(struct in_addr src_addr,
}
+/* Mark the aliasing link dynamic */
+int
+PacketAliasRedirectDynamic(struct alias_link *link)
+{
+
+ if (link->flags & LINK_PARTIALLY_SPECIFIED)
+ return (-1);
+ else {
+ link->flags &= ~LINK_PERMANENT;
+ return (0);
+ }
+}
+
+
void
PacketAliasRedirectDelete(struct alias_link *link)
{
diff --git a/sys/netinet/libalias/libalias.3 b/sys/netinet/libalias/libalias.3
index 71735b2..6eb4f4b 100644
--- a/sys/netinet/libalias/libalias.3
+++ b/sys/netinet/libalias/libalias.3
@@ -545,7 +545,26 @@ the
.Fa port
argument is ignored and could have any value, e.g. htons(~0).
.Pp
-This function returns 0 on success, -1 otherwise.
+This function returns 0 on success, \-1 otherwise.
+.Ed
+.Pp
+.Ft int
+.Fn PacketAliasRedirectDynamic "struct alias_link *link"
+.Bd -ragged -offset indent
+This function marks the specified static redirect rule entered by
+.Fn PacketAliasRedirectPort
+as dynamic.
+This can be used to e.g. dynamically redirect a single TCP connection,
+after which the rule is removed.
+Only fully specified links can be made dynamic.
+(See the
+.Sx STATIC AND DYNAMIC LINKS
+and
+.Sx PARTIALLY SPECIFIED ALIASING LINKS
+sections below for a definition of static vs. dynamic,
+and partially vs. fully specified links.)
+.Pp
+This function returns 0 on success, \-1 otherwise.
.Ed
.Pp
.Ft void
OpenPOWER on IntegriCloud