diff options
author | ru <ru@FreeBSD.org> | 2003-06-01 23:15:00 +0000 |
---|---|---|
committer | ru <ru@FreeBSD.org> | 2003-06-01 23:15:00 +0000 |
commit | 648544852f7a39363cd8cb606a45f62d3153198e (patch) | |
tree | 1be5b9507140e3fd97a52c41224763582eed0f1a /lib/libalias | |
parent | 7f7e0909c558b7d7048b54812f02a0979741f7cd (diff) | |
download | FreeBSD-src-648544852f7a39363cd8cb606a45f62d3153198e.zip FreeBSD-src-648544852f7a39363cd8cb606a45f62d3153198e.tar.gz |
A new API function PacketAliasRedirectDynamic() can be used
to mark a fully specified static link as dynamic; i.e. make
it a one-time link.
Diffstat (limited to 'lib/libalias')
-rw-r--r-- | lib/libalias/alias.h | 1 | ||||
-rw-r--r-- | lib/libalias/alias_db.c | 15 | ||||
-rw-r--r-- | lib/libalias/libalias.3 | 21 |
3 files changed, 36 insertions, 1 deletions
diff --git a/lib/libalias/alias.h b/lib/libalias/alias.h index eab4044..eb35bf7 100644 --- a/lib/libalias/alias.h +++ b/lib/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/lib/libalias/alias_db.c b/lib/libalias/alias_db.c index 1b59b05..84b38ae 100644 --- a/lib/libalias/alias_db.c +++ b/lib/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/lib/libalias/libalias.3 b/lib/libalias/libalias.3 index 71735b2..6eb4f4b 100644 --- a/lib/libalias/libalias.3 +++ b/lib/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 |