summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/libalias/Makefile2
-rw-r--r--lib/libalias/alias.c6
-rw-r--r--lib/libalias/alias.h1
-rw-r--r--lib/libalias/alias_db.c8
-rw-r--r--lib/libalias/alias_local.h4
-rw-r--r--lib/libalias/libalias.310
6 files changed, 30 insertions, 1 deletions
diff --git a/lib/libalias/Makefile b/lib/libalias/Makefile
index bf26f05..f262be1 100644
--- a/lib/libalias/Makefile
+++ b/lib/libalias/Makefile
@@ -5,7 +5,7 @@ SHLIBDIR?= /lib
SHLIB_MAJOR= 4
MAN= libalias.3
SRCS= alias.c alias_cuseeme.c alias_db.c alias_ftp.c alias_irc.c \
- alias_nbt.c alias_pptp.c alias_proxy.c alias_smedia.c \
+ alias_nbt.c alias_pptp.c alias_proxy.c alias_skinny.c alias_smedia.c \
alias_util.c
INCS= alias.h
diff --git a/lib/libalias/alias.c b/lib/libalias/alias.c
index 54839ff..cf93a74 100644
--- a/lib/libalias/alias.c
+++ b/lib/libalias/alias.c
@@ -917,6 +917,9 @@ TcpAliasIn(struct ip *pip)
if (ntohs(tc->th_dport) == PPTP_CONTROL_PORT_NUMBER
|| ntohs(tc->th_sport) == PPTP_CONTROL_PORT_NUMBER)
AliasHandlePptpIn(pip, link);
+ else if (skinnyPort != 0 && (ntohs(tc->th_dport) == skinnyPort
+ || ntohs(tc->th_sport) == skinnyPort))
+ AliasHandleSkinny(pip, link);
alias_address = GetAliasAddress(link);
original_address = GetOriginalAddress(link);
@@ -1098,6 +1101,9 @@ TcpAliasOut(struct ip *pip, int maxpacketsize)
else if (ntohs(tc->th_dport) == PPTP_CONTROL_PORT_NUMBER
|| ntohs(tc->th_sport) == PPTP_CONTROL_PORT_NUMBER)
AliasHandlePptpOut(pip, link);
+ else if (skinnyPort != 0 && (ntohs(tc->th_sport) == skinnyPort
+ || ntohs(tc->th_dport) == skinnyPort))
+ AliasHandleSkinny(pip, link);
/* Adjust TCP checksum since source port is being aliased */
/* and source address is being altered */
diff --git a/lib/libalias/alias.h b/lib/libalias/alias.h
index eb35bf7..b0c75c9 100644
--- a/lib/libalias/alias.h
+++ b/lib/libalias/alias.h
@@ -45,6 +45,7 @@
void PacketAliasInit(void);
void PacketAliasSetAddress(struct in_addr _addr);
void PacketAliasSetFWBase(unsigned int _base, unsigned int _num);
+void PacketAliasSetSkinnyPort(unsigned int _port);
unsigned int
PacketAliasSetMode(unsigned int _flags, unsigned int _mask);
void PacketAliasUninit(void);
diff --git a/lib/libalias/alias_db.c b/lib/libalias/alias_db.c
index ec25070..e53e94d 100644
--- a/lib/libalias/alias_db.c
+++ b/lib/libalias/alias_db.c
@@ -398,6 +398,9 @@ static int fireWallFD = -1; /* File descriptor to be able to */
/* flag. */
#endif
+unsigned int skinnyPort = 0; /* TCP port used by the Skinny */
+ /* protocol. */
+
@@ -2948,3 +2951,8 @@ PacketAliasSetFWBase(unsigned int base, unsigned int num) {
fireWallNumNums = num;
#endif
}
+
+void
+PacketAliasSetSkinnyPort(unsigned int port) {
+ skinnyPort = port;
+}
diff --git a/lib/libalias/alias_local.h b/lib/libalias/alias_local.h
index 4428d2a..d207f9f 100644
--- a/lib/libalias/alias_local.h
+++ b/lib/libalias/alias_local.h
@@ -74,6 +74,7 @@
/* Globals */
extern int packetAliasMode;
+extern unsigned int skinnyPort;
/* Prototypes */
@@ -212,6 +213,9 @@ int AliasHandleUdpNbtNS(struct ip *_pip, struct alias_link *_link,
void AliasHandleCUSeeMeOut(struct ip *_pip, struct alias_link *_link);
void AliasHandleCUSeeMeIn(struct ip *_pip, struct in_addr _original_addr);
+/* Skinny routines */
+void AliasHandleSkinny(struct ip *_pip, struct alias_link *_link);
+
/* Transparent proxy routines */
int ProxyCheck(struct ip *_pip, struct in_addr *_proxy_server_addr,
u_short *_proxy_server_port);
diff --git a/lib/libalias/libalias.3 b/lib/libalias/libalias.3
index a75cd2b..e5ef09e 100644
--- a/lib/libalias/libalias.3
+++ b/lib/libalias/libalias.3
@@ -265,6 +265,16 @@ Set firewall range allocated for punching firewall holes (with the
flag).
The range will be cleared for all rules on initialization.
.Ed
+.Pp
+.Ft void
+.Fn PacketAliasSkinnyPort "unsigned int port"
+.Bd -ragged -offset indent
+Set the TCP port used by the Skinny Station protocol.
+Skinny is used by Cisco IP phones to communicate with
+Cisco Call Managers to set up voice over IP calls.
+If this is not set, Skinny aliasing will not be done.
+The typical port used by Skinny is 2000.
+.Ed
.Sh PACKET HANDLING
The packet handling functions are used to modify incoming (remote to local)
and outgoing (local to remote) packets.
OpenPOWER on IntegriCloud