diff --git a/configure.in b/configure.in
index e00b398..319d744 100644
--- a/configure.in
+++ b/configure.in
@@ -60,7 +60,7 @@ dnl Release Version
dnl
SPD_MAJOR_VERSION=0
SPD_MINOR_VERSION=8
-SPD_MICRO_VERSION=0dev
+SPD_MICRO_VERSION=0
SPD_VERSION=$SPD_MAJOR_VERSION.$SPD_MINOR_VERSION.$SPD_MICRO_VERSION
diff --git a/doc/siproxd_guide.sgml b/doc/siproxd_guide.sgml
index 56421c2..b6214d0 100644
--- a/doc/siproxd_guide.sgml
+++ b/doc/siproxd_guide.sgml
@@ -17,7 +17,7 @@
tries@users.sourceforge.net
- 2005-2009
+ 2005-2010
Thomas Ries
@@ -49,6 +49,12 @@
tries@users.sourceforge.net
Plug-in API
+
+ 0.8.0
+ 2010-02-24
+ tries@users.sourceforge.net
+ TCP, STUN plugin, config file updates
+
@@ -243,7 +249,6 @@ make install
interface definition for the inbound and outbound network
interfaces (if_inbound and
if_outbound).
-
Definition of network interfaces for the inbound network
(local network where your SIP client is connected, this
network normally uses IP addresses from on of the private
@@ -259,7 +264,7 @@ if_outbound = ppp0
The host_outbound directive comes into
play when running siproxd "in front of" a NAT router. Please
check the configuration examples in this document for more
- details.
+ details. Also check the STUN plugin.
# host_outbound = <my_public_ip_address>
@@ -318,12 +323,14 @@ user = nobody
# chrootjail = /var/lib/siproxd/
- Where to store the current registrations. This allows
+ Where to store the current registrations and the cycle
+ in seconds to perform the cyclic writing. This allows
siproxd to remember registration across a restart. An empty
value means we do not save registrations. The specified
directory path must exist.
registration_file = /var/lib/siproxd/siproxd_registrations
+autosave_registrations = 300
Where to create the PID file.
@@ -332,8 +339,8 @@ pid_file = /var/run/siproxd/siproxd.pid
Enable/disable the RTP proxy. This must always be
- enabled. In some future release this directive may
- become obsolete.
+ enabled. In some future release this directive will
+ become obsolete and will be removed.
rtp_proxy_enable = 1
@@ -354,6 +361,14 @@ rtp_port_high = 7089
considered dead and will be killed.
rtp_timeout = 300
+
+
+ DSCP (differentiated services) value to be assigned
+ to RTP and SIP UDP packets. Allows QOS aware routers to
+ handle different types traffic with different priorities.
+
+rtp_dscp = 46
+sip_dscp = 0
If a REGISTER request does not contain an
@@ -363,6 +378,36 @@ rtp_timeout = 300
in the answer.
default_expires = 600
+
+
+ TCP inactivity timeout: For TCP SIP signalling, this
+ indicates the inactivity timeout (seconds) after that an
+ idling TCP connection is disconnected. Note that making
+ this too short may cause multiple parallell registrations
+ for the same phone. This timeout must be set larger than the
+ used registration interval.
+
+tcp_timeout = 600
+
+
+ Timeout for connection attempts in msec:
+ How many msecs shall siproxd wait for an successful connect
+ when establishing an outgoing SIP signalling connection. This
+ should be kept as short as possible as waiting for an TCP
+ connection to establish is a BLOCKING operation - while waiting
+ for a connect to succeed not SIP messages are processed (RTP is
+ not affected).
+
+tcp_connect_timeout = 500
+
+
+
+ TCP keepalive period:
+ For TCP SIP signalling, if > 0 empty SIP packets will be sent
+ every 'n' seconds to keep the connection alive. Default is off.
+
+
+tcp_keepalive = 20
If siproxd is used as registration server and
@@ -442,6 +487,25 @@ debug_port = 0
# mask_host=local.ip.of.sipphone
# masked_host=public.domaind.org
+
+
+ User Agent Masquerading:
+ Siproxd can masquerade the User Agent string of your local UAs.
+ Useful for Providers that do not work with some specific UAs
+ (e.g. sipcall.ch - it does not work if your outgoing SIP
+ traffic contains an Asterisk UA string...)
+ Default is to do no replacement.
+
+ua_string = Siproxd-UA
+
+
+ Use ;rport in via header:
+ may be required in some cases where you have a NAT router that
+ remaps the source port 5060 to something different and the
+ registrar sends back the responses to port 5060.
+ Default is disabled (0)
+
+use_rport = 0
Siproxd itself can be told to send all traffic to another
@@ -489,6 +553,14 @@ plugindir=/usr/lib/siproxd/
# List of plugins to load:
#load_plugin=plugin_demo.la
load_plugin=plugin_logcall.la
+
+
+ Each plugin does manage it's own set of configuration
+ options. They are named like plugin_<pluginname>_xxxxx.
+ For the detailed description of configuration settings, refer
+ to the plugin description.
+
+plugin_demo_string = This_is_a_string_passed_to_the_demo_plugin
@@ -650,6 +722,10 @@ int PLUGIN_END(plugin_def_t *plugin_def){
plugin_fix_bogus_via
Fixes broken VIA headers on incoming calls.
+ plugin_stun
+ Cyclically checks with an STUN server for
+ the public IP address of siproxd.
+
Some of the plug-ins are described in more detail in the
following chapters.
@@ -763,6 +839,33 @@ plugin_fix_bogus_via_networks = 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
from the Internet and those UAs do have crappy Via headers (like
private IPs because there is some NAT involved on their side).
+
+
+
+
+ STUN Plug-in
+ Name: plugin_stun
+ Purpose: Uses an external STUN server to determine the
+ public IP address of the host running siproxd.
+ Configuration options:
+
+# Plugin_stun
+#
+# Uses an external STUN server to determine the public IP
+# address of siproxd. Useful for "in-front-of-NAT-router"
+# scenarios.
+plugin_stun_server = stun.ekiga.net
+plugin_stun_port = 3478
+# period in seconds to request IP info from STUN server
+plugin_stun_period = 300
+
+ Description:
+ Does contact the configured STUN server at startup and then
+ cyclically at the configured interval to determine the public
+ visible IP address of the host running siproxd. Useful for setups
+ that have changing public IP addresses and siproxd is running
+ in the "in-front-of-NAT-router" scenario.
+