[Pkg-voip-commits] r2826 - in gnugk/trunk/debian: . patches
Kilian Krause
kilian at alioth.debian.org
Wed Dec 20 10:23:50 CET 2006
Author: kilian
Date: 2006-12-20 10:23:49 +0100 (Wed, 20 Dec 2006)
New Revision: 2826
Removed:
gnugk/trunk/debian/patches/01_manual.dpatch
gnugk/trunk/debian/patches/02_gcc4.1.dpatch
gnugk/trunk/debian/patches/05_makefile.dpatch
Modified:
gnugk/trunk/debian/changelog
gnugk/trunk/debian/control
gnugk/trunk/debian/patches/00list
gnugk/trunk/debian/rules
Log:
Remove old Debian patches. All moved upstream.
debian/control:
- Add Firebird support
debian/rules:
- Cleanup.
debian/changelog:
- Fix bad Debian number. *doh!*
Modified: gnugk/trunk/debian/changelog
===================================================================
--- gnugk/trunk/debian/changelog 2006-12-19 22:01:32 UTC (rev 2825)
+++ gnugk/trunk/debian/changelog 2006-12-20 09:23:49 UTC (rev 2826)
@@ -1,9 +1,11 @@
-gnugk (2:2.2.5-4) UNRELEASED; urgency=low
+gnugk (2:2.2.5-1) UNRELEASED; urgency=low
* NOT RELEASED YET
* New upstream release.
+ * Enable Firebird2 support.
+ * Weed out old Debian patches. All of these have been moved upstream.
- -- Kilian Krause <kilian at debian.org> Tue, 19 Dec 2006 19:14:55 +0100
+ -- Kilian Krause <kilian at debian.org> Wed, 20 Dec 2006 10:08:26 +0100
gnugk (2:2.2.3-2-3) unstable; urgency=low
Modified: gnugk/trunk/debian/control
===================================================================
--- gnugk/trunk/debian/control 2006-12-19 22:01:32 UTC (rev 2825)
+++ gnugk/trunk/debian/control 2006-12-20 09:23:49 UTC (rev 2826)
@@ -3,7 +3,7 @@
Priority: optional
Maintainer: Debian VoIP Team <pkg-voip-maintainers at lists.alioth.debian.org>
Uploaders: Kilian Krause <kilian at debian.org>, Jose Carlos Garcia Sogo <jsogo at debian.org>, Mark Purcell <msp at debian.org>, Santiago Garcia Mantinan <manty at debian.org>
-Build-Depends: debhelper (>> 4.0.0), libopenh323-dev (>= 1.15.6-2), libspeex-dev, libsdl1.2-dev, libldap2-dev, libpq-dev, libmysql++-dev, dpatch, help2man, linuxdoc-tools
+Build-Depends: debhelper (>> 4.0.0), libopenh323-dev (>= 1.15.6-2), libspeex-dev, libsdl1.2-dev, libldap2-dev, libpq-dev, libmysql++-dev, dpatch, help2man, linuxdoc-tools, firebird2-dev
Build-Conflicts: linux-kernel-headers (<< 2.5.999-test7-bk-14)
Standards-Version: 3.6.2
Modified: gnugk/trunk/debian/patches/00list
===================================================================
--- gnugk/trunk/debian/patches/00list 2006-12-19 22:01:32 UTC (rev 2825)
+++ gnugk/trunk/debian/patches/00list 2006-12-20 09:23:49 UTC (rev 2826)
@@ -1,3 +0,0 @@
-01_manual.dpatch
-05_makefile.dpatch
-02_gcc4.1
Deleted: gnugk/trunk/debian/patches/01_manual.dpatch
===================================================================
--- gnugk/trunk/debian/patches/01_manual.dpatch 2006-12-19 22:01:32 UTC (rev 2825)
+++ gnugk/trunk/debian/patches/01_manual.dpatch 2006-12-20 09:23:49 UTC (rev 2826)
@@ -1,3826 +0,0 @@
-#! /bin/sh -e
-## 01_manual.dpatch by Jose Carlos Garcia Sogo <jsogo at debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: No description.
-
-if [ $# -lt 1 ]; then
- echo "`basename $0`: script expects -patch|-unpatch as argument" >&2
- exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}"
-
-case "$1" in
- -patch) patch -p1 ${patch_opts} < $0;;
- -unpatch) patch -R -p1 ${patch_opts} < $0;;
- *)
- echo "`basename $0`: script expects -patch|-unpatch as argument" >&2
- exit 1;;
-esac
-
-exit 0
-
- at DPATCH@
-diff -urNad gnugk-2.2.0/docs/manual-1.html /tmp/dpep.sOrrzd/gnugk-2.2.0/docs/manual-1.html
---- gnugk-2.2.0/docs/manual-1.html 1970-01-01 01:00:00.000000000 +0100
-+++ /tmp/dpep.sOrrzd/gnugk-2.2.0/docs/manual-1.html 2004-12-19 23:02:13.000000000 +0100
-@@ -0,0 +1,312 @@
-+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-+<HTML>
-+<HEAD>
-+ <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.21">
-+ <TITLE>OpenH323 Gatekeeper - The GNU Gatekeeper: Introduction</TITLE>
-+ <LINK HREF="manual-2.html" REL=next>
-+
-+ <LINK HREF="manual.html#toc1" REL=contents>
-+</HEAD>
-+<BODY>
-+<A HREF="manual-2.html">Next</A>
-+Previous
-+<A HREF="manual.html#toc1">Contents</A>
-+<HR>
-+<H2><A NAME="s1">1.</A> <A HREF="manual.html#toc1">Introduction</A></H2>
-+
-+
-+<H2><A NAME="ss1.1">1.1</A> <A HREF="manual.html#toc1.1">About</A>
-+</H2>
-+
-+<P><B>
-+<A HREF="http://www.gnugk.org/">OpenH323 Gatekeeper - The GNU Gatekeeper</A></B>
-+is an open-source project that implements an H.323 gatekeeper.
-+A gatekeeper provides call control services to the H.323 endpoints.
-+It is an integral part of most usefull internet telephony
-+installations that are based on the H.323 standard.</P>
-+<P>According to Recommendation H.323, a gatekeeper shall provide the
-+following services:
-+<UL>
-+<LI>Address Translation</LI>
-+<LI>Admissions Control</LI>
-+<LI>Bandwidth Control</LI>
-+<LI>Zone Management</LI>
-+<LI>Call Control Signaling</LI>
-+<LI>Call Authorization</LI>
-+<LI>Bandwidth Management</LI>
-+<LI>Call Management</LI>
-+</UL>
-+</P>
-+<P>The GNU Gatekeeper implements most of these functions
-+based on the
-+<A HREF="http://www.openh323.org/">OpenH323</A>
-+protocol stack.</P>
-+<P>Recommendation H.323 is an international standard published by the
-+<A HREF="http://www.itu.int/">ITU</A>.
-+It is a communications standard for audio, video, and data over the Internet.
-+See also Paul Jones'
-+<A HREF="http://www.packetizer.com/iptel/h323/">primer on H.323</A>.</P>
-+<P>For a detailed description of what a gatekeeper does, see
-+<A HREF="http://www.webproforum.com/h323/topic06.html">here</A>.</P>
-+
-+<H2><A NAME="ss1.2">1.2</A> <A HREF="manual.html#toc1.2">Copyright</A>
-+</H2>
-+
-+<P>It is covered by the
-+<A HREF="http://www.gnu.org/licenses/gpl.html">GNU General Public License</A> (GNU GPL).
-+In addition to that, we explicitely grant
-+the right to link this code to the OpenH323 and OpenSSL library.</P>
-+<P>Generally speaking, the GNU GPL allows you to copy, distribute, resell or modify
-+the softwares, but it requires that all derived works must be published
-+under GNU GPL also.
-+That means that you must publish full source for all extensions to
-+the gatekeeper and for all programs you include the gatekeeper into.
-+See the file COPYING for details.</P>
-+<P>If that's not what you want, you must interface to the gatekeeper through
-+the status port and communicate via TCP with it.
-+That way you only have to integrate the basic funtionality into
-+the gatekeeper (and provide source for that) and can keep other parts
-+of your application private.</P>
-+
-+<H2><A NAME="ss1.3">1.3</A> <A HREF="manual.html#toc1.3">Name</A>
-+</H2>
-+
-+<P>The formal name of this project is
-+<EM>OpenH323 Gatekeeper - The GNU Gatekeeper</EM>,
-+short <EM>GnuGk</EM>.
-+Please don't confuse it with other gatekeeper projects.</P>
-+<P>There are several open-source gatekeeper projects based on the OpenH323 protocol stack.
-+<UL>
-+<LI>
-+<A HREF="http://opengatekeeper.sourceforge.net/">OpenGatekeeper</A> - by
-+<A HREF="http://www.egoboo.com/">Egoboo</A>
-+<BLOCKQUOTE>
-+A full featured gatekeeper freely available under MPL. The project has been inactive for a period of time now. There is an H.323 proxy based on OpenGatekeeper, see
-+<A HREF="http://openh323proxy.sourceforge.net/">OpenH323Proxy</A>.
-+</BLOCKQUOTE>
-+</LI>
-+<LI>
-+<A HREF="http://www.openh323.org/code.html">OpenGK</A> - by
-+<A HREF="http://www.equival.com.au/">Equivalence</A>
-+<BLOCKQUOTE>
-+Only in a very primary grades.
-+</BLOCKQUOTE>
-+</LI>
-+<LI>OpenH323 Gatekeeper - this one.</LI>
-+</UL>
-+</P>
-+<P>To have different gatekeepers with very similar names is really
-+confusing for most users.
-+Since our "OpenH323 Gatekeeper" was the first on the scene,
-+it is not our fault that others have chosen similar names.
-+But to make the destinction a little more clear without confusing
-+people even more, we have decided to give the project a
-+subtitle "OpenH323 Gatekeeper - The GNU Gatekeeper" and start
-+using <CODE>gnugk</CODE> as name for executables.</P>
-+
-+<H2><A NAME="ss1.4">1.4</A> <A HREF="manual.html#toc1.4">Features</A>
-+</H2>
-+
-+<P>The version 2.0.6 is a bugfix release, plus the following enchancements:
-+<UL>
-+<LI>RadAuth/RadAliasAuth modules can now add/remove endpoint aliases
-+during endpoint registration (see radauth.txt for more info).
-+</LI>
-+<LI>added utilities to the contrib dir that allow the gnugk ro run
-+as a Windows service process. Thanks to Franz J Ehrengruber!
-+</LI>
-+<LI>Windows improvements (project icon, version info, better console
-+handler). Thanks to Franz J Ehrengruber!
-+</LI>
-+<LI>Radius Q.931 Setup authentication routines optimized.
-+</LI>
-+<LI>gateway and neighbor prefixes match can also occur with alias types
-+(in addition to dialedDigits) partyNumber and h323_ID (containing only 0-9#*)
-+</LI>
-+<LI>Added new VirtualQueuePrefixes and VirtualQueueRegex config variables.
-+These make possible to call virtual queue
-+not only with the exact alias name, but also with an alias that matches
-+configured prefixes or configured regular expression. Thanks to Max Speransky
-+</LI>
-+<LI>accounting updates for calls in progress. Currenly only RadAcct
-+module implements this type of accounting event
-+</LI>
-+<LI>improved Radius h323-xxx attributes handling (now understands
-+attributes both with embedded name strings and without them)</LI>
-+</UL>
-+</P>
-+
-+<P>The version 2.0.6 is a bugfix release, plus the following enchancements:
-+<UL>
-+<LI>FileAcct - plain CDR text accounting logger module.
-+</LI>
-+<LI>Commandline option (-u) to change the gatekeeper process owner.
-+</LI>
-+<LI>Improved virtual queues.
-+</LI>
-+<LI>Full pre-paid support - both for registered endpoints (ARQ)
-+and for unregistered endpoints (Q.931 Setup). Call duration limit
-+is fully supported by RADIUS authenticators at the moment.</LI>
-+</UL>
-+</P>
-+<P>The version 2.0.5 is a bugfix release, plus the following enchancements:
-+<UL>
-+<LI>a first TransferCall implementation
-+</LI>
-+<LI>RADIUS H.235 (username/password) and alias authentication.
-+</LI>
-+<LI>Modular accounting framework.
-+</LI>
-+<LI>RADIUS accounting module.
-+</LI>
-+<LI>Signalling channel authentication/authorization (Q.931/H.225.0 Setup).
-+Call duration limit (pre-paid services) can be controlled using this
-+authorization scheme. RADIUS Q.931 authentication/authorization
-+module is provided.
-+</LI>
-+</UL>
-+</P>
-+<P>The version 2.0.3 is a bugfix release, plus a little enhancement:
-+<UL>
-+<LI>Forward a call Setup to the specified endpoint directly on receiving
-+Q.931 Facility with reason <B>callForwarded</B>.
-+</LI>
-+<LI>Allow specify NATed endpoints manually.
-+</LI>
-+<LI>Added a simple form of inbound call distribution. Calls to
-+a VirtualQueue can be routed to agents by an external distribution
-+application.</LI>
-+</UL>
-+</P>
-+<P>The new features added to version 2.0.2 are:
-+<UL>
-+<LI>Add Citron's NAT Technology that allows transparently penetrate NAT boxes.Support multiple endpoints and calls concurrently.
-+</LI>
-+<LI>The gatekeeper can sit behind an NAT box and registered by endpoints with
-+public IPs.
-+</LI>
-+<LI>New extended fd_set structure, which allow the gatekeeper to support
-+thousands of concurrent calls in routed mode.
-+</LI>
-+<LI>Support QoS by adding TOS flag to RTP/RTCP packets.
-+</LI>
-+<LI>Login status port by username and password.</LI>
-+</UL>
-+</P>
-+<P>Of course, the major functions in version 2.0 are also included:
-+<UL>
-+<LI>The registration table and call record table are redesigned, thread-safe,
-+and very efficient. Support ten thousands of registrations and thousands of
-+concurrent calls.
-+</LI>
-+<LI>A new routed mode architecture that support H.225.0/Q.931 routed and
-+H.245 routed without forking additional threads. Thus the thread number
-+limit will not restrict the number of concurrent calls.
-+</LI>
-+<LI>Support H.323 proxy by routing all logical channels, including RTP/RTCP
-+media channels and T.120 data channels. Logical channels opened by H.245
-+tunnelling and fast-connect procedure are also supported. In proxy mode,
-+there is no traffic between the calling and called parties directly. Thus
-+it is very useful if you have some endpoints using private IP behind an
-+NAT box and some endpoints using public IP outside the box.
-+</LI>
-+<LI>Support gatekeepers cluster by exchanging LRQ/LCF/LRJ (neighboring function).
-+If the destination of a received LRQ is unknown, the GnuGk can forward it
-+to next hop. Therefore the GnuGk can work as a directory gatekeeper.
-+</LI>
-+<LI>Support various authentication methods for selectable RAS requests, including
-+H.235 password (MD5, SHA-1 and CAT), IP pattern and prefixes matching. MySQL and
-+LDAP are supported as backend database for authentication.
-+</LI>
-+<LI>Support alternate gatekeepers for redundancy and load balancing. If the
-+GnuGk is overloaded, the endpoints can be redirected to other gatekeepers.
-+</LI>
-+<LI>Can work as an endpoint (gateway or terminal) by resigtering with a parent
-+gatekeeper. With this feature, building gatekeeper hierarchies is easily.
-+</LI>
-+<LI>Monitor and control the GnuGk via TCP status port, including registration
-+and call statistics.
-+</LI>
-+<LI>Output CDR(call detail record) to status port for backend billing system.
-+The CDR contains call identifier, calling and called IP, start and end time
-+and call duration.
-+</LI>
-+<LI>Most configurations are changeable at runtime. The GnuGk rereads the
-+configurations on receiving <CODE>reload</CODE> command via status port, or on
-+receiving <CODE>HUP</CODE> signal (Unix platform).</LI>
-+</UL>
-+</P>
-+
-+<H2><A NAME="download"></A> <A NAME="ss1.5">1.5</A> <A HREF="manual.html#toc1.5">Download</A>
-+</H2>
-+
-+<P>The newest stable and a development version are available at
-+<A HREF="http://www.gnugk.org/h323download.html">the download page</A>.</P>
-+<P>The very latest source code is in the CVS at
-+<A HREF="http://sourceforge.net/cvs/?group_id=4797">Sourceforge</A>
-+(
-+<A HREF="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/openh323gk/">Web-GUI</A>).
-+Beware - that's the bleeding edge.</P>
-+<P>You can also download some executables from
-+<A HREF="http://www.gnugk.org/h323download.html">the download page</A>.
-+Only some versions are made available as executables.</P>
-+
-+<H2><A NAME="ss1.6">1.6</A> <A HREF="manual.html#toc1.6">Mailing Lists</A>
-+</H2>
-+
-+<P>There are two mailing list for the project, one for the developers and one for the users.</P>
-+<P>General user questions should be send to the
-+<A HREF="mailto:Openh323gk-users at sourceforge.net">users mailing list</A>. You can find the list archive
-+<A HREF="http://sourceforge.net/mailarchive/forum.php?forum_id=8549">here</A>.
-+To join this mailing list, click
-+<A HREF="http://lists.sourceforge.net/lists/listinfo/openh323gk-users">here</A>.</P>
-+<P>To report problems or submit bugs/patches, send mails to the
-+<A HREF="mailto:Openh323gk-developer at sourceforge.net">developers mailing list</A>.
-+The list archive is
-+<A HREF="http://sourceforge.net/mailarchive/forum.php?forum_id=3079">here</A>. Please send user questions to the users mailinglist and keep this list to development! If you want to contribute to the project, please
-+<A HREF="http://lists.sourceforge.net/lists/listinfo/openh323gk-developer">join the mailing list</A>.</P>
-+<P><B>Note</B>:
-+Please don't send your questions as private emails to individual developer.
-+We are usually busy. We would <B>not</B> like to be your private consultant,
-+unless you'd like to pay us.
-+Send your problems to the appropriate public mailing list so everybody
-+can help you.</P>
-+<P>Also please don't send the GnuGk specific problems to the OpenH323
-+mailing list, or vice versa.
-+They are different projects, though closely related.</P>
-+<P>Before you sending an email, make sure you have read the related documents
-+carefully. Describe your problems clearly and precisely. Show us the
-+error messages or logs if there is any.</P>
-+
-+<H2><A NAME="ss1.7">1.7</A> <A HREF="manual.html#toc1.7">Contributors</A>
-+</H2>
-+
-+<P>The current project coordinator is
-+<A HREF="http://www.willamowius.de/">Jan Willamowius</A>
-+<CODE>
-+<A HREF="mailto:jan at willamowius.de"><jan at willamowius.de></A></CODE></P>
-+<P>The main features and functions of version 2.0 are contributed by
-+<A HREF="http://www.cwhuang.idv.tw/">Chih-Wei Huang</A>
-+<CODE>
-+<A HREF="mailto:cwhuang at linux.org.tw"><cwhuang at linux.org.tw></A></CODE>
-+and
-+<A HREF="http://www.citron.com.tw/">Citron Network Inc.</A>,
-+including thread-safe registration and call tables,
-+new routed mode architecture, H.323 proxy,
-+H.235 authentication and MySQL backend.</P>
-+<P>Michal Zygmuntowicz <CODE>
-+<A HREF="mailto:m.zygmuntowicz at onet.pl"><m.zygmuntowicz at onet.pl></A></CODE> has done some great work on Radius support and other improvements.</P>
-+<P>A team at
-+<A HREF="http://www.mediaways.net/">mediaWays</A>
-+is working on LDAP database-subsystem, overlapped sending
-+and advanced routing mechanisms.</P>
-+<P>The initial version of the gatekeeper has been developed by
-+Xiang Ping Chen, Joe Metzger and Rajat Todi.</P>
-+
-+
-+<HR>
-+<A HREF="manual-2.html">Next</A>
-+Previous
-+<A HREF="manual.html#toc1">Contents</A>
-+</BODY>
-+</HTML>
-diff -urNad gnugk-2.2.0/docs/manual-2.html /tmp/dpep.sOrrzd/gnugk-2.2.0/docs/manual-2.html
---- gnugk-2.2.0/docs/manual-2.html 1970-01-01 01:00:00.000000000 +0100
-+++ /tmp/dpep.sOrrzd/gnugk-2.2.0/docs/manual-2.html 2004-12-19 23:02:13.000000000 +0100
-@@ -0,0 +1,109 @@
-+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-+<HTML>
-+<HEAD>
-+ <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.21">
-+ <TITLE>OpenH323 Gatekeeper - The GNU Gatekeeper: Compiling and Installing</TITLE>
-+ <LINK HREF="manual-3.html" REL=next>
-+ <LINK HREF="manual-1.html" REL=previous>
-+ <LINK HREF="manual.html#toc2" REL=contents>
-+</HEAD>
-+<BODY>
-+<A HREF="manual-3.html">Next</A>
-+<A HREF="manual-1.html">Previous</A>
-+<A HREF="manual.html#toc2">Contents</A>
-+<HR>
-+<H2><A NAME="s2">2.</A> <A HREF="manual.html#toc2">Compiling and Installing</A></H2>
-+
-+
-+<H2><A NAME="ss2.1">2.1</A> <A HREF="manual.html#toc2.1">Compiling the Gatekeeper</A>
-+</H2>
-+
-+<P>To build the gatekeeper you need at least PWLib 1.5.0 and OpenH323 1.12.0 or later.
-+The development version of the gatekeeper usually needs the
-+most recent OpenH323 version available.
-+These libraries are available at
-+<A HREF="http://www.openh323.org/code.html">OpenH323 Download Page</A>.
-+See the instructions on
-+<A HREF="http://www.openh323.org/build.html">how to compile the OpenH323 code</A>.</P>
-+<P>Order of compiling:
-+<OL>
-+<LI>PWLib (release + debug version)</LI>
-+<LI>OpenH323</LI>
-+<LI>OpenH323 test application (not needed, just to make sure everything works so far)</LI>
-+<LI>The Gatekeeper</LI>
-+</OL>
-+</P>
-+<P>On Unix do a <CODE>configure</CODE> and <CODE>make debug</CODE> or <CODE>make opt</CODE>
-+in the gatekeeper directory to build debug or release version, respectively.
-+Use <CODE>make both</CODE> to build both versions.
-+Note you have to use GCC 2.95.2 or later. The older version may not work.
-+Good practice is to do a <CODE>make debugdepend</CODE> or <CODE>make optdepend</CODE>
-+in the gatekeeper directory before starting actual compilation (make debug or
-+make opt) - these commands build approtiate dependency lists, so after
-+you will update your sources from CVS, all affected files will get recompiled.
-+Otherwise you can finish with the Gatekeeper partially compiled with the older
-+headers and partially with the updated headers - a very bad thing.
-+On Windows just open and compile the provided project (<CODE>gk.dsw</CODE>) for
-+Microsoft Visual C++ 6.0 or 7.0 (Visual C++ 5.0 is too old).<BR></P>
-+<P>Type <CODE>configure --help</CODE> to see a detailed list of all compile time
-+options. You can use them to enable or disable some features of the gatekeeper.
-+For example, if you do not need RADIUS just type: <CODE>configure --disable-radius</CODE>.<BR></P>
-+<P>To build the gatekeeper that is statically linked with system and OpenH323 libraries,
-+<CODE>make optnoshared</CODE> or <CODE>make debugnoshared</CODE> has to be used.</P>
-+
-+<H2><A NAME="ss2.2">2.2</A> <A HREF="manual.html#toc2.2">Installing the Gatekeeper</A>
-+</H2>
-+
-+<P>There is no special installation procedure needed.
-+Just copy the executable to the directory you like
-+and create a config file for it.
-+There are several config examples in the <CODE>etc/</CODE> subdirectory
-+of source tree. See section
-+<A HREF="manual-4.html#config">Configuration File</A>
-+for detailed explanations.</P>
-+<P>For example, in Linux x86 platform, the optimized executable <CODE>gnugk</CODE>
-+is produced in <CODE>obj_linux_x86_r/</CODE> subdirectory.
-+You may copy it to <CODE>/usr/sbin/</CODE>, create a config in
-+<CODE>/etc/gnugk.ini</CODE> and start it by
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+$ /usr/sbin/gnugk -c /etc/gnugk.ini -o /var/log/gnugk.log -ttt
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+
-+See section
-+<A HREF="manual-4.html#commandline">Command Line Options</A> for details.</P>
-+
-+<H2><A NAME="ss2.3">2.3</A> <A HREF="manual.html#toc2.3">Pre-Built Binaries</A>
-+</H2>
-+
-+<P>If you do not wish to compile the gatekeeper from source,
-+there are several pre-built `packages' available from
-+<A HREF="http://sourceforge.net/project/showfiles.php?group_id=4797">SourceForge</A>.
-+Not all versions will be made available as binaries - check what is avilable.</P>
-+<P><B>Tar packages (.tgz or .tar.gz)</B></P>
-+<P>Download the tar file and enter the following command as <CODE>root</CODE>,
-+substitute in the name of the file you downloaded.
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+$ tar xvzf gnugk-x.x.x.tar
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<P><B>Debian packages (.deb)</B></P>
-+<P>Debian includes the gatekeeper as openh323gk package.
-+You can install it by using the following command as <CODE>root</CODE>:
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+$ apt-get install openh323gk
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+
-+
-+<HR>
-+<A HREF="manual-3.html">Next</A>
-+<A HREF="manual-1.html">Previous</A>
-+<A HREF="manual.html#toc2">Contents</A>
-+</BODY>
-+</HTML>
-diff -urNad gnugk-2.2.0/docs/manual-3.html /tmp/dpep.sOrrzd/gnugk-2.2.0/docs/manual-3.html
---- gnugk-2.2.0/docs/manual-3.html 1970-01-01 01:00:00.000000000 +0100
-+++ /tmp/dpep.sOrrzd/gnugk-2.2.0/docs/manual-3.html 2004-12-19 23:02:13.000000000 +0100
-@@ -0,0 +1,206 @@
-+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-+<HTML>
-+<HEAD>
-+ <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.21">
-+ <TITLE>OpenH323 Gatekeeper - The GNU Gatekeeper: Getting Started (Tutorial)</TITLE>
-+ <LINK HREF="manual-4.html" REL=next>
-+ <LINK HREF="manual-2.html" REL=previous>
-+ <LINK HREF="manual.html#toc3" REL=contents>
-+</HEAD>
-+<BODY>
-+<A HREF="manual-4.html">Next</A>
-+<A HREF="manual-2.html">Previous</A>
-+<A HREF="manual.html#toc3">Contents</A>
-+<HR>
-+<H2><A NAME="s3">3.</A> <A HREF="manual.html#toc3">Getting Started (Tutorial)</A></H2>
-+
-+
-+<H2><A NAME="ss3.1">3.1</A> <A HREF="manual.html#toc3.1">A first simple experiment</A>
-+</H2>
-+
-+<P>To see that all components are up and running, get
-+2 Linux workstations, both connected to the LAN.
-+Make sure you have at least version 1.1 of OpenH323 and OhPhone installed.
-+On the first machine run the gatekeeper and ohphone (on
-+different consoles):</P>
-+<P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+jan at machine1 > gnugk -ttt
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<P>Now the gatekeeper is running in direct mode.
-+The "<CODE>-ttt</CODE>" option tells the gatekeeper to do a lot of debug output
-+on the console (you can direct that output to a file with "<CODE>-o logfile</CODE>").</P>
-+<P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+jan at machine1 > ohphone -l -a -u jan
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<P>Now this OhPhone is listening (<CODE>-l</CODE>) for calls and will automatically
-+accept them (<CODE>-a</CODE>). It has registered as user jan with the gatekeeper
-+that it will automatically detect. (If the auto detect fails for some
-+reason use "<CODE>-g 1.2.3.4</CODE>" to specify the IP number the gatekeeper
-+is running on.)</P>
-+<P>On the second machine run ohphone only:</P>
-+<P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+peter at machine2 > ohphone -u peter jan
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<P>The second instance of OhPhone registers with the auto detected
-+gatekeeper as user peter and tries to call user jan.
-+The gatekeeper will resolve the username to the IP number from
-+where user jan has registered (machine1 in this case) and OhPhone
-+will call the other instance of OhPhone on machine one.</P>
-+<P>The first instance of OhPhone will accept that call and Peter and Jan can chat.</P>
-+
-+<H2><A NAME="ss3.2">3.2</A> <A HREF="manual.html#toc3.2">Using the Status interface to monitor the gatekeeper</A>
-+</H2>
-+
-+<P>Now we try to see which messages are handled by the gatekeeper.
-+On a new console on machine1 we use telnet to connect to the gatekeeper:</P>
-+<P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+jan at machine1 > telnet machine1 7000
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<P>Most probably we'll get an "Access forbidden!" message, because
-+not everybody is allowed to spy.</P>
-+<P>Now we create a file called <CODE>gatekeeper.ini</CODE> and put it in the
-+directory where we start the gatekeeper.
-+<CODE>gatekeeper.ini</CODE> only contains 4 lines:</P>
-+<P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+[Gatekeeper::Main]
-+Fourtytwo=42
-+[GkStatus::Auth]
-+rule=allow
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<P>Stop the gatekeeper with Ctrl-C and restart it.
-+When we do the telnet again, we stay connected with the gatekeeper.
-+Now repeat the first experiment where Peter calls Jan and see which
-+messages are handled by the gatekeeper in non-routed mode.
-+There is a number of commands that can be issued in this telnet session:
-+Type "help" to see them.
-+To end the telnet session with the gatekeeper type "quit" and hit Enter.</P>
-+
-+<H2><A NAME="ss3.3">3.3</A> <A HREF="manual.html#toc3.3">Starting the gatekeeper in routed mode</A>
-+</H2>
-+
-+<P>Starting the gatekeeper in routed mode means that the gatekeeper
-+uses "gatekeeper routed signalling" for all calls. In this
-+mode the gatekeeper all signalling messages go through the gatekeeper
-+and it has much greater control over the calls.</P>
-+<P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+jan at machine1 > gnugk -r
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<P>Now the gatekeeper is running in routed mode. Telnet to the status port
-+and make a call to see what messages are now handled by the gatekeeper.</P>
-+<P>Note that all media packets (audio and video) are still sent
-+directly between the endpoints (the 2 instances of ohphone).</P>
-+<P>Since gatekeeper routed signalling is much more complicated you are
-+much more likely to hit a bug n the gatekeeper in this mode.
-+But if it breaks, you get to keep the pieces. ;-)</P>
-+
-+
-+<H2><A NAME="ss3.4">3.4</A> <A HREF="manual.html#toc3.4">A virtual PBX: Disconnecting calls</A>
-+</H2>
-+
-+<P>Until now the gatekeeper has only acted as a mechanism
-+to resolve symbolic names to IP addresses. Thats an important
-+function but hardly exciting.</P>
-+<P>Since the gatekeeper has a lot of control over the calls,
-+it can terminate them for example. When we are
-+connected to the status port, we can list all active calls
-+with "<CODE>PrintCurrentCalls</CODE>". To terminate a call, we can
-+say "<CODE>Disconnectip 1.2.3.4</CODE>" for one of its endpoints.</P>
-+<P>One could for example write a simple script that connects to
-+the status port and listens for all ongoing calls and terminates
-+them after 5 minutes, so no user can over use system resources.</P>
-+<P>Take a look at the other telephony functions like TransferCall to see what else is available.</P>
-+
-+<H2><A NAME="ss3.5">3.5</A> <A HREF="manual.html#toc3.5">Routing calls over a gateway to reach external users</A>
-+</H2>
-+
-+<P>Without using a gateway you can only call other people with an
-+IP phone over the Internet. To reach people with ordinary telephones
-+you must use a gateway.</P>
-+<P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+_________________ ______________
-+| endpoint "jan"| | |
-+| 192.168.88.35 |--------->| Gatekeeper |
-+|_______________| | |
-+_________________ | |
-+| gateway "gw1" | outgoing | |
-+| 192.168.88.37 |<---------|____________|
-+|_______________|
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<P>The gatekeeper has to know which calls are supposed to be routed
-+over the gateway and what numbers shall be called directly.
-+Use the [RasSrv::GWPrefixes] section of the config file to tell
-+the gatekeeper the prefix of numbers that shall be routed over the
-+gateway.</P>
-+<P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+[RasSrv::GWPrefixes]
-+gw1=0
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<P>This entry tells the gatekeeper to route all calls to E.164 numbers
-+starting with 0 to the gateway that has registered with the H.323
-+alias "gw1". If there is no registered gateway with that alias the
-+call will fail. (Note that you must use the gateway alias - you
-+can't just tell the gatekeeper the IP number of the gateway.)</P>
-+
-+
-+<H2><A NAME="ss3.6">3.6</A> <A HREF="manual.html#toc3.6">Rewriting E.164 numbers</A>
-+</H2>
-+
-+<P>When using a gateway you often have to use different numbers internally
-+and rewrite them before sending them over a gateway into the telephone
-+network. You can use the
-+<A HREF="manual-4.html#rewrite">RasSrv::RewriteE164</A>
-+section to configure that.</P>
-+<P>Example:
-+You want to call number 12345 with you IP Phone and would like to
-+reach number 08765 behind a gateway called "gw1".</P>
-+<P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+[RasSrv::GWPrefixes]
-+gw1=0
-+
-+[RasSrv::RewriteE164]
-+12345=08765
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+
-+
-+<HR>
-+<A HREF="manual-4.html">Next</A>
-+<A HREF="manual-2.html">Previous</A>
-+<A HREF="manual.html#toc3">Contents</A>
-+</BODY>
-+</HTML>
-diff -urNad gnugk-2.2.0/docs/manual-4.html /tmp/dpep.sOrrzd/gnugk-2.2.0/docs/manual-4.html
---- gnugk-2.2.0/docs/manual-4.html 1970-01-01 01:00:00.000000000 +0100
-+++ /tmp/dpep.sOrrzd/gnugk-2.2.0/docs/manual-4.html 2004-12-19 23:02:13.000000000 +0100
-@@ -0,0 +1,2416 @@
-+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-+<HTML>
-+<HEAD>
-+ <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.21">
-+ <TITLE>OpenH323 Gatekeeper - The GNU Gatekeeper: Using the Gatekeeper (Reference)</TITLE>
-+ <LINK HREF="manual-5.html" REL=next>
-+ <LINK HREF="manual-3.html" REL=previous>
-+ <LINK HREF="manual.html#toc4" REL=contents>
-+</HEAD>
-+<BODY>
-+<A HREF="manual-5.html">Next</A>
-+<A HREF="manual-3.html">Previous</A>
-+<A HREF="manual.html#toc4">Contents</A>
-+<HR>
-+<H2><A NAME="s4">4.</A> <A HREF="manual.html#toc4">Using the Gatekeeper (Reference)</A></H2>
-+
-+<P>The behavior of the gatekeeper is completely determined by the command line
-+options and configuration file. Some command line options may override
-+the setting of the configuration file.
-+For example, the option <CODE>-l</CODE> overrides the setting <CODE>TimeToLive</CODE>
-+in the configuration file.</P>
-+
-+<H2><A NAME="commandline"></A> <A NAME="ss4.1">4.1</A> <A HREF="manual.html#toc4.1">Command Line Options</A>
-+</H2>
-+
-+<P>Almost every option has a short and a long format, e.g.,
-+<CODE>-c</CODE> is the same as <CODE>--config</CODE>.</P>
-+
-+<H3>Basic</H3>
-+
-+<P>
-+<DL>
-+<DT><B><CODE>-h --help</CODE></B><DD><P>Show all available options and quit the program.</P>
-+<DT><B><CODE>-c --config filename</CODE></B><DD><P>Specify the configuration file to use.</P>
-+<DT><B><CODE>-s --section section</CODE></B><DD><P>Specify which main section to use in the configuration file. The default is [Gatekeeper::Main].</P>
-+<DT><B><CODE>-i --interface IP</CODE></B><DD><P>Specify the interface (IP number) that the gatekeeper listens to.
-+You should leave out this option to let the gatekeeper automatically determine
-+the IP it listens to, unless you want the gatekeeper only binds to
-+a specified IP.</P>
-+<DT><B><CODE>-l --timetolive n</CODE></B><DD><P>Specify the time-to-live timer (in seconds) for endpoint registration.
-+It overrides the setting <CODE>TimeToLive</CODE> in the configuration file.
-+See
-+<A HREF="#ttl">there</A> for detailed explanations.</P>
-+<DT><B><CODE>-b --bandwidth n</CODE></B><DD><P>Specify the total bandwidth available for the gatekeeper.
-+Without specifying this option, the bandwidth management
-+is disable by default.</P>
-+<DT><B><CODE>--pid filename</CODE></B><DD><P>Specify the pid file, only valid for Unix version.</P>
-+<DT><B><CODE>-u --user name</CODE></B><DD><P>Run the gatekeeper process as this user. Only valid for Unix versions.</P>
-+</DL>
-+</P>
-+
-+<H3>Gatekeeper Mode</H3>
-+
-+<P>The options in this subsection override the settings in the
-+<A HREF="#routed">[RoutedMode] section</A> of the configuration file.
-+<DL>
-+<DT><B><CODE>-d --direct</CODE></B><DD><P>Use direct endpoint call signalling.</P>
-+<DT><B><CODE>-r --routed</CODE></B><DD><P>Use gatekeeper routed call signalling.</P>
-+<DT><B><CODE>-rr --h245routed</CODE></B><DD><P>Use gatekeeper routed call signalling and H.245 control channel.</P>
-+</DL>
-+</P>
-+
-+<H3>Debug Information</H3>
-+
-+<P>
-+<DL>
-+<DT><B><CODE>-o --output filename</CODE></B><DD><P>Write trace log to the specified file.</P>
-+<DT><B><CODE>-t --trace</CODE></B><DD><P>Set trace verbosity. The more <CODE>-t</CODE> you add, the more verbose to output.
-+For example, use <CODE>-ttttt</CODE> to set the trace level to 5.</P>
-+</DL>
-+</P>
-+
-+<H2><A NAME="config"></A> <A NAME="ss4.2">4.2</A> <A HREF="manual.html#toc4.2">Configuration File</A>
-+</H2>
-+
-+<P>The configuration file is a standard text file. The basic format is:</P>
-+<P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+[Section String]
-+Key Name=Value String
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<P>Comments are marked with a hash (<CODE>#</CODE>) or a semicolon (<CODE>;</CODE>)
-+at the beginning of a line.</P>
-+<P>The file
-+<CODE>complete.ini</CODE>
-+contains all available sections for the GnuGk.
-+In most cases it doesn't make sense to use them all at once.
-+The file is just meant as a collection of examples for many settings.</P>
-+<P>The configuration file can be changed at runtime.
-+Once you modify the configuration file, you may issue <CODE>reload</CODE> command
-+via status port, or send a signal <CODE>HUP</CODE> to the gatekeeper process on Unix.
-+For example,
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+kill -HUP `cat /var/run/gnugk.pid`
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<P><B>Note</B>
-+Some section names in GnuGk 2.0.0 are named [RasSrv::*],
-+while others are named [RasSvr::*]. This inconsistency confused users.
-+In 2.0.1 all sections are corrected to [RasSrv::*].
-+If you upgrade from 2.0.0 or earlier version, remember to change the
-+section names, or GnuGk will refuse to start.</P>
-+
-+<H3>Section [Gatekeeper::Main]</H3>
-+
-+<P>
-+<UL>
-+<LI><CODE>Fourtytwo=42</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>This setting is used to test the presence of the config file. If it
-+is not found, a warning is issued.
-+Make sure it's in all your config files.</P>
-+
-+</LI>
-+<LI><CODE>Name=OpenH323GK</CODE><BR>
-+Default: <CODE>OpenH323GK</CODE>
-+<P>Gatekeeper identifier of this gatekeeper. The gatekeeper will only respond to
-+GRQs for this ID and will use it in a number of messages to its endpoints.</P>
-+
-+</LI>
-+<LI><CODE>Home=192.168.1.1</CODE><BR>
-+Default: <CODE>0.0.0.0</CODE>
-+<P>The gatekeeper will listen for requests on this IP number.
-+By default, the gatekeeper listens on all interfaces of your host.
-+You should leave out this option,
-+unless you want the gatekeeper only to bind to a specified IP.</P>
-+
-+</LI>
-+<LI><CODE>NetworkInterfaces=192.168.1.1/24,10.0.0.1/0</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>Specify the network interfaces of the gatekeeper. By default the gatekeeper
-+will detect the interfaces of your host automatically. There are two situations
-+that you may want to use this option. One is automatical detection failed,
-+another is the gatekeeper is behind an NAT box and allow endpoints with
-+public IPs to register with. In this case you should set the option just as
-+the gatekeeper is running on the NAT box.</P>
-+
-+</LI>
-+<LI><CODE>EndpointIDSuffix=_gk1</CODE><BR>
-+Default: <CODE>_endp</CODE>
-+<P>The gatekeeper will assign a unique identifier to each registered endpoint.
-+This option can be used to specify a suffix to append to the endpoint identifier. This is only usefull when using more than one gatekeeper.</P>
-+
-+</LI>
-+<LI>
-+<A NAME="ttl"></A> <CODE>TimeToLive=300</CODE><BR>
-+Default: <CODE>-1</CODE>
-+<P>An endpoint's registration with a gatekeeper may have a limited life span.
-+The gatekeeper specifies the registration duration of an endpoint
-+by including a <B>timeToLive</B> field in the RCF message.
-+After the specified time, the registration has expired.
-+The endpoint shall periodically send an RRQ having the <B>keepAlive</B>
-+bit set prior to the expiration time. Such a message may include a
-+minimum amount of information as described in H.225.0.
-+This is called a lightweight RRQ.</P>
-+<P>This configuration setting specifies the time-to-live timer in seconds until the registration expires.
-+Note the endpoint may request a shorter <B>timeToLive</B> in the RRQ message
-+to the gatekeeper.
-+To avoid an overload of RRQ messages,
-+the gatekeeper automatically adjusts this timer
-+to 60 seconds if you give a lesser value!</P>
-+<P>After the expiration time,
-+the gatekeeper will subsequently send two IRQ messages to query
-+if the endpoint is still alive. If the endpoint responds with an IRR,
-+the registration will be extended. Otherwise the gatekeeper will send
-+a URQ with reason <B>ttlExpired</B> to the endpoint.
-+The endpoint must then re-register with the gatekeeper using a full RRQ message.</P>
-+<P>To disable this feature, set it to <CODE>-1</CODE>.</P>
-+
-+</LI>
-+<LI><CODE>TotalBandwidth=100000</CODE><BR>
-+Default: <CODE>-1</CODE>
-+<P>Total bandwidth available to be given to endpoints.
-+By default this feature is off. Be carefull when using it,
-+because many endpoints have buggy implementations.</P>
-+
-+</LI>
-+<LI><CODE>RedirectGK=Endpoints > 100 || Calls > 50</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>This option allow you to redirect endpoints to alternate gatekeepers
-+when the gatekeeper overloaded.
-+For example, with the above setting the gatekeeper will
-+reject an RRQ if registered endpoints exceed 100,
-+or reject an ARQ if concurrent calls exceed 50.</P>
-+<P>Furthermore, you may explicitly redirect all endpoints by
-+setting this option to <CODE>temporary</CODE> or <CODE>permanent</CODE>.
-+The gatekeeper will return an RAS rejection message with a list of
-+alternate gatekeepers defined in <CODE>AlternateGKs</CODE>.
-+Note that a <CODE>permanent</CODE> redirection means that the redirected endpoints
-+will not register with this gatekeeper again.
-+Please also note the function only takes effect to H.323 version 4
-+compliant endpoints.</P>
-+
-+</LI>
-+<LI><CODE>AlternateGKs=1.2.3.4:1719:false:120:OpenH323GK</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>We allow for existence of another gatekeeper to provide redundancy.
-+This is implemented in a active-active manner. Actually, you might get
-+into a (valid !) situation where some endpoints are registered with the
-+first and some are registered with the second gatekeeper.
-+You should even be able use the two gatekeepers in a round_robin fashion
-+for load-sharing (that's untested, though :-)).
-+If you read on, "primary GK" refers to the gatekeeper you're currently
-+configuring and "alternate GK" means the other one.
-+The primary GK includes a field in the RCF to tell endpoints which alternate
-+IP and gatekeeper identifier to use.
-+But the alternate GK needs to know about every
-+registration with the primary GK or else it would reject calls.
-+Therefore our gatekeeper can forward every RRQ to an alternate IP address.</P>
-+<P>The AlternateGKs config option specifies the fields contained in
-+the primary GK's RCF. The first and second fields of this string define
-+where (IP, port) to forward to.
-+The third tells endpoints whether they need to register with the alternate GK
-+before placing calls. They usually don't because we forward their RRQs, so they
-+get registered with the alternate GK, too.
-+The fourth field specified the priority for this GK.
-+Lower is better, usually the primary GK is considered to have priority 1.
-+The last field specifies the alternate gatekeeper's identifier.</P>
-+
-+</LI>
-+<LI><CODE>SendTo=1.2.3.4:1719</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>Although this information is contained in AlternateGKs, you must still
-+specify which address to forward RRQs to. This might differ from AlternateGK's
-+address, so it's a separate config option (think of multihomed machines).</P>
-+
-+</LI>
-+<LI><CODE>SkipForwards=1.2.3.4:5.6.7.8</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>To avoid circular forwarding, you shouldn't forward RRQs you get from the
-+other GK (this statement is true for both, primary and alternate GK).
-+Two mechanisms are used to identify whether a request should be forwarded.
-+The first one looks for a flag in RRQ. Since few endpoints implement this,
-+we need a second, more reliable way.
-+Specify the other gatekeeper's IP in this list.</P>
-+
-+</LI>
-+<LI><CODE>StatusPort=7000</CODE><BR>
-+Default: <CODE>7000</CODE>
-+<P>Status port to monitor the gatekeeper.
-+See
-+<A HREF="manual-5.html#monitor">this section</A> for details.</P>
-+
-+</LI>
-+</UL>
-+</P>
-+<P>Most users will never need to change any of the following values.
-+They are mainly used for testing or very sophisticated applications.</P>
-+<P>
-+<UL>
-+<LI><CODE>UseBroadcastListener=0</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>Defines whether to listen to broadcast RAS requests. This requires
-+binding to all interfaces on a machine so if you want to run multiple
-+instances of gatekeepers on the same machine you should turn this off.</P>
-+
-+</LI>
-+<LI><CODE>UnicastRasPort=1719</CODE><BR>
-+Default: <CODE>1719</CODE>
-+<P>The RAS channel TSAP identifier for unicast.</P>
-+
-+</LI>
-+<LI><CODE>MulticastPort=1718</CODE><BR>
-+Default: <CODE>1718</CODE>
-+<P>The RAS channel TSAP identifier for multicast.</P>
-+
-+</LI>
-+<LI><CODE>MulticastGroup=224.0.1.41</CODE><BR>
-+Default: <CODE>224.0.1.41</CODE>
-+<P>The multicast group for the RAS channel.</P>
-+
-+</LI>
-+<LI><CODE>EndpointSignalPort=1720</CODE><BR>
-+Default: <CODE>1720</CODE>
-+<P>Default port for call signalling channel of endpoints.</P>
-+
-+</LI>
-+<LI><CODE>ListenQueueLength=1024</CODE><BR>
-+Default: <CODE>1024</CODE>
-+<P>Queue length for incoming TCP connection.</P>
-+
-+</LI>
-+<LI><CODE>SignalReadTimeout=1000</CODE><BR>
-+Default: <CODE>1000</CODE>
-+<P>Time in miliseconds for read timeout on call signalling channels (Q931).</P>
-+
-+</LI>
-+<LI><CODE>StatusReadTimeout=3000</CODE><BR>
-+Default: <CODE>3000</CODE>
-+<P>Time in miliseconds for read timeout on status channel.</P>
-+
-+</LI>
-+<LI><CODE>StatusWriteTimeout=5000</CODE><BR>
-+Default: <CODE>5000</CODE>
-+<P>Time in miliseconds for write timeout on status channel.</P>
-+</LI>
-+</UL>
-+</P>
-+
-+<H3><A NAME="routed"></A> Section [RoutedMode]</H3>
-+
-+<P>Call signalling messages may be passwd in two ways.
-+The first method is Direct Endpoint Call Signalling, in which case
-+the call signalling messages are passed directly between the endpoints.
-+The second method is Gatekeeper Routed Call Signalling. In this method,
-+the call signalling messages are routed through the gatekeeper
-+between the endpoints. The choice of which methods is used is made by
-+the gatekeeper.</P>
-+<P>When Gatekeeper Routed call signalling is used, the gatekeeper may choose
-+whether to route the H.245 control channel and logical channels.</P>
-+<P>
-+<DL>
-+<DT><B>Case I.</B><DD><P>The gatekeeper doesn't route them.
-+The H.245 control channel and logical channels are established directly
-+between the endpoints.</P>
-+<DT><B>Case II.</B><DD><P>The H.245 control channel is routed between
-+the endpoints through the gatekeeper, while the logical channels
-+are established directly between the endpoints.</P>
-+<DT><B>Case III.</B><DD><P>The gatekeeper routes the H.245 control channel,
-+as well as all logical channels, including RTP/RTCP for audio and video,
-+and T.120 channel for data. In this case, no traffic is passed
-+directly between the endpoints. This is usually called an H.323 Proxy,
-+which can be regarded as an H.323-H.323 gateway.</P>
-+</DL>
-+</P>
-+<P>This section defines the gatekeeper routed mode options (case I & II).
-+The proxy feature is defined in the
-+<A HREF="#proxy">next section</A>.
-+All settings in this section are affected by reloading.</P>
-+<P>
-+<UL>
-+<LI><CODE>GKRouted=1</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>Whether to enable the gatekeeper routed mode.</P>
-+
-+</LI>
-+<LI><CODE>H245Routed=1</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>Whether to route the H.245 control channel. Only takes effect if <CODE>GKRouted=1</CODE>.</P>
-+
-+</LI>
-+<LI><CODE>CallSignalPort=0</CODE><BR>
-+Default: <CODE>1721</CODE>
-+<P>The port of call signalling for the gatekeeper.
-+The default port is <CODE>1721</CODE>. We don't use the well-known port <CODE>1720</CODE>
-+so you can run an H.323 endpoint in the same machine of the gatekeeper.
-+You may set it to <CODE>0</CODE> to let the gatekeeper choose an arbitrary port.</P>
-+
-+</LI>
-+<LI><CODE>CallSignalHandlerNumber=2</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>The number of call signalling handler. You may increase this number
-+in a heavy loaded gatekeeper. The number can only be increased
-+at runtime. If you have a SMP machine, you can set this number
-+to your number of CPUs.</P>
-+
-+</LI>
-+<LI><CODE>AcceptNeighborsCalls=1</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>With this feature enabled, the call signalling thread will accept calls
-+without a pre-existing CallRec found in the CallTable, provided an endpoint
-+corresponding to the destinationAddress in Setup can be found in the
-+RegistrationTable, and the calling party is its neighbors or parent GK.
-+The gatekeeper will also use it's own call signalling address in LCF
-+in responding to an LRQ. That means, the call signalling will be routed
-+to GK2 in GK-GK calls.
-+As a result, the CDRs in GK2 can correctly show the connected
-+time, instead of 'unconnected'.</P>
-+
-+</LI>
-+<LI><CODE>AcceptUnregisteredCalls=1</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>With this feature enabled, the gatekeeper will accept calls
-+from any unregistered endpoint.
-+However, it raises security risks. Be careful to use it.</P>
-+
-+</LI>
-+<LI><CODE>RemoveH245AddressOnTunneling=1</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>Some endpoints send h245Address in the UUIE of Q.931 even when h245Tunneling
-+is set to TRUE. This may cause interoperability problems. If the option
-+is TRUE, the gatekeeper will remove h245Address when h245Tunneling flag
-+is TRUE. This enforces the remote party to stay in tunnelling mode.</P>
-+
-+</LI>
-+<LI><CODE>RemoveCallOnDRQ=0</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>With this option turning off, the gatekeeper will not disconnect a call
-+if it receives a DRQ for it. This avoids potential race conditions when
-+a DRQ overtakes a Release Complete.
-+This is only meaningful in routed mode because in direct mode, the only
-+mechanism to signal end-of-call is a DRQ.</P>
-+
-+</LI>
-+<LI><CODE>DropCallsByReleaseComplete=1</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>According to Recommendation H.323, the gatekeeper could tear down a call
-+by sending RAS DisengageRequest to endpoints.
-+However, some bad endpoints just ignore this command.
-+With this option turning on, the gatekeeper will send Q.931
-+Release Complete instead of RAS DRQ to both endpoints to force them
-+drop the call.</P>
-+
-+</LI>
-+<LI><CODE>SendReleaseCompleteOnDRQ=1</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>On hangup, the endpoint sends both Release Complete within H.225/Q.931 and
-+DRQ within RAS. It may happen that DRQ is processed first, causing the
-+gatekeeper to close the call signalling channel, thus preventing the
-+Release Complete from being forwarding to the other endpoint.
-+Though the gatekeeper closes the TCP channel to the destination,
-+some endpoints (e.g. Cisco CallManager) don't drop the call even if
-+the call signalling channel is closed.
-+This results in phones that keep ringing if the caller hangs up
-+before the callee pickups.
-+Setting this parameter to <CODE>1</CODE> makes the gatekeeper always send
-+Release Complete to both endpoints before closing the call when
-+it receives DRQ from one of the parties.</P>
-+
-+</LI>
-+<LI><CODE>SupportNATedEndpoints=1</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>Whether to allow an endpoint behind an NAT box register to the gatekeeper.
-+If yes, the gatekeeper will translate the IP address in Q.931 and H.245
-+channel into the IP of NAT box.</P>
-+<P>Since 2.0.2, the GnuGk supports NAT outbound calls (from an endpoint behind NAT
-+to public networks) directly without any necessary modification
-+of endpoints or NAT box. Just register the endpoint with the GnuGk
-+and you can make call now.</P>
-+
-+</LI>
-+<LI><CODE>ScreenDisplayIE=MyID</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>Modify the DisplayIE of Q.931 to the specified value.</P>
-+
-+</LI>
-+<LI><CODE>ScreenCallingPartyNumberIE=0965123456</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>Modify the CallingPartyNumberIE of Q.931 to the specified value.</P>
-+
-+</LI>
-+<LI><CODE>ForwardOnFacility=1</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>If yes, on receiving Q.931 Facility with reason <B>callForwarded</B>,
-+the gatekeeper will forwards call Setup directly to the forwarded endpoint,
-+instead of passing the message back to the caller.
-+If you have broken endpoints that can't handle Q.931 Facility with reason
-+<B>callForwarded</B>, turn on this option.</P>
-+
-+</LI>
-+<LI><CODE>ShowForwarderNumber=0</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>Whether to rewrite the calling party number to the number of forwarder.
-+It's usually used for billing purpose.
-+Only valid if <CODE>ForwardOnFacility=1</CODE>.</P>
-+
-+</LI>
-+<LI><CODE>Q931PortRange=20000-20999</CODE><BR>
-+Default: <CODE>0</CODE> (random)
-+<P>Specify the range of TCP port number for Q.931 signalling channels.
-+Note the range size may limit the number of concurrent calls.</P>
-+
-+</LI>
-+<LI><CODE>H245PortRange=30000-30999</CODE><BR>
-+Default: <CODE>0</CODE> (random)
-+<P>Specify the range of TCP port number for H.245 control channels.
-+Note the range size may limit the number of concurrent calls.</P>
-+
-+</LI>
-+<LI><CODE>ConnectTimeout=60000</CODE><BR>
-+Default: <CODE>180000</CODE>
-+<P>Timeout value in milliseconds to wait before removing
-+unconnected calls from the call table. This is a guard timer
-+that does not allow unconnected calls to hang forever
-+in the call table.
-+Note that making this value too short may result
-+in calls dropped before answered.</P>
-+</LI>
-+</UL>
-+</P>
-+
-+
-+<H3><A NAME="proxy"></A> Section [Proxy]</H3>
-+
-+<P>The section defines the H.323 proxy features. It means the gatekeeper will
-+route all the traffic between the calling and called endpoints, so there
-+is no traffic between the two endpoints directly. Thus it is very useful
-+if you have some endpoints using private IP behind an NAT box and some
-+endpoints using public IP outside the box.</P>
-+<P>The gatekeeper can do proxy for logical channels of RTP/RTCP (audio and video)
-+and T.120 (data). Logical channels opened by fast-connect procedures
-+or H.245 tunnelling are also supported.</P>
-+<P>Note to make proxy work, the gatekeeper must have <B>direct connection</B>
-+to both networks of the caller and callee.</P>
-+<P>
-+<UL>
-+<LI><CODE>Enable=1</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>Whether to enable the proxy function. You have to enable gatekeeper
-+routed mode first (see the
-+<A HREF="#routed">previous section</A>).
-+You don't have to specify H.245 routed.
-+It will automatically be used if required.</P>
-+
-+</LI>
-+<LI><CODE>InternalNetwork=10.0.1.0/24</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>Define the networks behind the proxy. Multiple internal networks are allow.
-+The proxy route channels only of the communications between one endpoint
-+in the internal network and one external. If you don't specify it, all calls
-+will be proxied.</P>
-+<P>
-+<DL>
-+<DT><B>Format:</B><DD><P><CODE>InternalNetwork=network address/netmask[,network address/netmask,...]</CODE></P>
-+<P>The netmask can be expressed in decimal dot notation or
-+CIDR notation (prefix length), as shown in the example.</P>
-+<DT><B>Example:</B><DD><P><CODE>InternalNetwork=10.0.0.0/255.0.0.0,192.168.0.0/24</CODE></P>
-+</DL>
-+</P>
-+
-+</LI>
-+<LI><CODE>T120PortRange=40000-40999</CODE><BR>
-+Default: <CODE>0</CODE> (random)
-+<P>Specify the range of TCP port number for T.120 data channels.
-+Note the range size may limit the number of concurrent calls.</P>
-+
-+</LI>
-+<LI><CODE>RTPPortRange=50000-59999</CODE><BR>
-+Default: <CODE>10000-59999</CODE>
-+<P>Specify the range of UDP port number for RTP/RTCP channels.
-+Note the range size may limit the number of concurrent calls.</P>
-+
-+</LI>
-+<LI><CODE>ProxyForNAT=1</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>If yes, the gatekeeper will proxy for calls to which one of the endpoints
-+participated is behind an NAT box. This ensure the RTP/RTCP stream can
-+penetrate into the NAT box without modifying it.
-+However, the endpoint behind the NAT box must use the same port
-+to send and receive RTP/RTCP stream.
-+If you have bad or broken endpoints that don't satisfy the precondition,
-+you have better to disable this feature and let the NAT box forward
-+RTP/RTCP stream for you.</P>
-+
-+</LI>
-+<LI><CODE>ProxyForSameNAT=0</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>Whether to proxy for calls between endpoints from the same NAT box.
-+You do not need to enable this feature in general, since usually endpoints
-+from the same NAT box can communicate with each other.</P>
-+</LI>
-+</UL>
-+</P>
-+
-+<H3><A NAME="routingpolicy"></A> Section [RoutingPolicy]</H3>
-+
-+<P>This section explains how the various possible routing
-+policies within the gatekeeper work. </P>
-+<P>The incoming call requests can be routed using a number
-+of routing providers:</P>
-+<P>
-+<UL>
-+<LI><CODE>explicit</CODE><BR>
-+<P>The destination is explicitly specified in the routing
-+request.</P>
-+
-+</LI>
-+<LI><CODE>internal</CODE><BR>
-+<P>The classical rule; search the destination in
-+RegistrationTable</P>
-+
-+</LI>
-+<LI><CODE>parent</CODE><BR>
-+<P>Route the call using information sent by the parent GK in
-+reply to an ARQ the gatekeeper will send.</P>
-+
-+</LI>
-+<LI><CODE>neighbor</CODE><BR>
-+<P>Route the call using neighbors by exchanging LRQ messages</P>
-+
-+</LI>
-+<LI><CODE>dns</CODE><BR>
-+<P>The destination is resolved from DNS, provided it is
-+resolvable</P>
-+
-+</LI>
-+</UL>
-+</P>
-+<P>If one policy does not match, the next policy is tried.</P>
-+<P>These policies can be applied to a number of routing request types,
-+and routing input data. The different types are:
-+ARQ, LRQ, Setup and Facility (with the callForwarded reason)
-+There is also the general routing policy, which is kind of a
-+default for the other types.</P>
-+<P>
-+<DL>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE>
-+<CODE>[RoutingPolicy]<BR>
-+h323_ID=dns,internal<BR>
-+002=neighbor,internal<BR>
-+Default=internal,neighbor,parent</CODE>
-+</BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+<P>When one of the messages is received which calls for a routing
-+decision, all calls to an alias of the h323_ID type will be
-+resolved using DNS. If DNS fails to resolve the alias, it is
-+matched against the internal registration table. If a call is
-+requested to an alias starting with 002, first the neighbours
-+are checked and then the internal registration table. If the
-+requested alias is not an h323_ID or an alias starting with
-+002, the default policy is used by querying the internal
-+registration table, then the neighbours, and if that fails the
-+parent.</P>
-+<P>For the ARQ, LRQ, Setup and Facility messages one would use the
-+[RoutingPolicy::OnARQ], [RoutingPolicy::OnLRQ],
-+[RoutingPolicy::OnSetup] and [RoutingPolicy::OnFacility] sections
-+using the syntax explained above.</P>
-+
-+<H3>Section [GkStatus::Auth]</H3>
-+
-+<P>Define a number of rules who is allowed to connect to the status port.
-+Whoever has access to the status port has full control over your gatekeeper. Make sure this is set correctly.
-+<UL>
-+<LI><CODE>rule=allow</CODE><BR>
-+Default: <CODE>forbid</CODE>
-+<P>Possible values are
-+<UL>
-+<LI><CODE>forbid</CODE> - disallow any connection.</LI>
-+<LI><CODE>allow</CODE> - allow any connection</LI>
-+<LI><CODE>explicit</CODE> - reads the parameter <CODE>ip=value</CODE>
-+where <CODE>ip</CODE> is the IP address of the peering client,
-+<CODE>value</CODE> is <CODE>1,0</CODE> or <CODE>allow,forbid</CODE> or <CODE>yes,no</CODE>.
-+If <CODE>ip</CODE> is not listed the parameter <CODE>default</CODE> is used.</LI>
-+<LI><CODE>regex</CODE> - the IP of the client is matched against the given regular expression.
-+<P>
-+<DL>
-+<DT><B>Example:</B><DD><P>To allow client from 195.71.129.0/24 and 195.71.131.0/24:
-+<BLOCKQUOTE>
-+<CODE>regex=^195\.71\.(129|131)\.[0-9]+$</CODE>
-+</BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+</LI>
-+<LI><CODE>password</CODE> - the user has to input appropriate username and password to login. The format of username/password is the same as
-+<A HREF="#password">[SimplePasswordAuth]</A> section.
-+</LI>
-+</UL>
-+</P>
-+<P>Moreover, these rules can be combined by "|" or "&". For example,
-+<UL>
-+<LI><CODE>rule=explicit | regex</CODE><BR>
-+The IP of client must match <CODE>explicit</CODE> <B>or</B> <CODE>regex</CODE> rule.
-+
-+</LI>
-+<LI><CODE>rule=regex & password</CODE><BR>
-+The IP of client must match <CODE>regex</CODE> rule, <B>and</B> the user has to login by username and password.</LI>
-+</UL>
-+</P>
-+
-+</LI>
-+<LI><CODE>default=allow</CODE><BR>
-+Default: <CODE>forbid</CODE>
-+<P>Only used when <CODE>rule=explicit</CODE>.</P>
-+
-+</LI>
-+<LI><CODE>Shutdown=forbid</CODE><BR>
-+Default: <CODE>allow</CODE>
-+<P>Whether to allow shutdown the gatekeeper via status port.</P>
-+
-+</LI>
-+<LI><CODE>DelayReject=5</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>How long (in seconds) to wait before rejecting invalid username/password
-+for the status line access.</P>
-+</LI>
-+</UL>
-+</P>
-+
-+<H3>Section [RasSrv::GWPrefixes]</H3>
-+
-+<P>This section lists what E.164 numbers are routed to a specific gateway.</P>
-+<P>
-+<DL>
-+<DT><B>Format:</B><DD><P><CODE>gw-alias=prefix[,prefix,...]</CODE></P>
-+<P>Note you have to specify the alias of the gateway.
-+If a gateway registered with the alias, all numbers beginning with
-+the prefixes are routed to this gateway.</P>
-+<DT><B>Example:</B><DD><P><CODE>test-gw=02,03</CODE></P>
-+</DL>
-+</P>
-+
-+<H3><A NAME="rewrite"></A> Section [RasSrv::RewriteE164]</H3>
-+
-+<P>This section defines the rewriting rules for dialedDigits (E.164 number).</P>
-+<P>
-+<DL>
-+<DT><B>Format:</B><DD><P><CODE>[!]original-prefix=target-prefix[,target-prefix,...]</CODE></P>
-+<P>If the number is beginning with <CODE>original-prefix</CODE>,
-+it is rewritten to <CODE>target-prefix</CODE>. Multi targets are possible.
-+If the `<CODE>!</CODE>' flag precedes the <CODE>original-prefix</CODE>, the sense is inverted.</P>
-+<DT><B>Example:</B><DD><P><CODE>08=18888</CODE></P>
-+<P>If you dial <CODE>08345718</CODE>, it is rewritten to <CODE>18888345718</CODE>.</P>
-+</DL>
-+</P>
-+<P>Option:
-+<UL>
-+<LI><CODE>Fastmatch=08</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>Only rewrite dialDigits beginning with the specified prefix.</P>
-+</LI>
-+</UL>
-+</P>
-+
-+<H3>Section [RasSrv::PermanentEndpoints]</H3>
-+
-+<P>In this section you can put endpoints that don't have RAS support
-+or that you don't want to be expired. The records will always
-+keep in registration table of the gatekeeper.
-+However, You can still unregister it via status port.</P>
-+<P>
-+<DL>
-+<DT><B>Format:</B><DD><P><CODE>IP[:port]=alias[,alias,...;prefix,prefix,...]</CODE></P>
-+<DT><B>Example:</B><DD><P>For gateway,
-+<BLOCKQUOTE>
-+<CODE>10.0.1.5=Citron;009,008</CODE>
-+</BLOCKQUOTE>
-+
-+For terminal,
-+<BLOCKQUOTE>
-+<CODE>10.0.1.10:1720=700</CODE>
-+</BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+
-+<H3><A NAME="neighbor"></A> Section [RasSrv::Neighbors]</H3>
-+
-+<P>If the destination of an ARQ is unknown, the gatekeeper sends LRQs to
-+its neighbors to ask if they have the destination endpoint.
-+A neighbor is selected if one of its prefixes matches the destination
-+or it has ``<CODE>*</CODE>'' prefix. More than one prefix can be specified.</P>
-+<P>Conversely, the gatekeeper will only reply to LRQs sent from neighbors
-+defined in this section.
-+If you specify an empty prefix, no LRQ will be sent to that neighbor,
-+but the gatekeeper will accept LRQs from it. By the empty prefix it is meant
-+a single semicolon appended to the neighbor entry. Example:<BR><BR>
-+<CODE> GK1=192.168.0.5;</CODE><BR><BR>
-+If you skip the semicolon, LRQs will be always sent to this neighbor.</P>
-+<P>The <CODE>password</CODE> field is used to authenticate LRQs from that neighbor.
-+See section
-+<A HREF="#gkauth">[Gatekeeper::Auth]</A> for details.</P>
-+<P>Neighbor handling has changed significantly from version 2.0 to version 2.2.
-+Neighbors can be specified now in two ways - the old one and the new one.</P>
-+<P>
-+<DL>
-+<DT><B>Entry in the old format:</B><DD><P><CODE>GKID=ip[:port;prefixes;password;dynamic]</CODE></P>
-+
-+<DT><B>Example:</B><DD><P><CODE>GK1=192.168.0.5;*</CODE><BR>
-+<CODE>GK2=10.0.1.1:1719;035,036;gk2</CODE><BR>
-+<CODE>GK3=gk.citron.com.tw;;gk3;1</CODE></P>
-+</DL>
-+</P>
-+<P>
-+<DL>
-+<DT><B>Entry in the new format:</B><DD><P><CODE>GKID="GnuGK" | "CiscoGK" | "ClarentGK" | "GlonetGK"</CODE></P>
-+
-+<DT><B>Example:</B><DD><P><CODE>[RasSrv::Neighbors]</CODE><BR>
-+<CODE>GK1=CiscoGK</CODE><BR>
-+<CODE>GK2=GnuGK</CODE><BR><BR>
-+<CODE>[Neighbor::GK1]</CODE><BR>
-+<CODE>GatekeeperIdentifier=GK1</CODE><BR>
-+<CODE>Host=192.168.1.1</CODE><BR>
-+<CODE>SendPrefixes=02</CODE><BR>
-+<CODE>AcceptPrefixes=*</CODE><BR>
-+<CODE>ForwardLRQ=always</CODE><BR><BR>
-+<CODE>[Neighbor::GK2]</CODE><BR>
-+<CODE>GatekeeperIdentifier=GK2</CODE><BR>
-+<CODE>Host=192.168.1.2</CODE><BR>
-+<CODE>SendPrefixes=03,0048</CODE><BR>
-+<CODE>AcceptPrefixes=0049,001</CODE><BR>
-+<CODE>ForwardHopCount=2</CODE><BR>
-+<CODE>ForwardLRQ=depends</CODE><BR><BR></P>
-+</DL>
-+</P>
-+<P>The new format specifies in <CODE>[RasSrv::Neighbors]</CODE> section only gatekeeper
-+types and configuration for each neighbor is placed in a separate section.</P>
-+
-+<H3>Section [RasSrv::LRQFeatures]</H3>
-+
-+<P>Defines some features of LRQ and LCF.
-+<UL>
-+<LI><CODE>NeighborTimeout=1</CODE><BR>
-+Default: <CODE>2</CODE>
-+<P>Timeout value in seconds to wait responses from neighbors.
-+If no response from all neighbors after timeout, the gatekeeper will
-+reply an ARJ to the endpoint sending the ARQ.</P>
-+
-+</LI>
-+<LI><CODE>ForwardHopCount=2</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>If the gatekeeper receives an LRQ that the destination is either unknown,
-+it may forward this message to its neighbors.
-+When the gatekeeper receives an LRQ and decides that the message
-+should be forwarded on to another gatekeeeper, it first decrements
-+<B>hopCount</B> field of the LRQ.
-+If <B>hopCount</B> has reached 0, the gatekeeper shall not forward the message.
-+This options defines the number of gatekeepers through which an LRQ
-+may propagate. Note it only affects the sender of LRQ, not the forwarder.
-+This setting can be overriden with configuration of a particular neighbor.</P>
-+
-+</LI>
-+<LI><CODE>AlwaysForwardLRQ=1</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>Force the gatekeeper to forward an LRQ even if there is no <B>hopCount</B>
-+in the LRQ. To avoid LRQ loops, you should use this option very carefully.
-+This option is used only for an old-style (2.0) neighbor configuration,
-+the new one reads the settings from a neighbor-specific config section.</P>
-+
-+</LI>
-+<LI><CODE>AcceptForwardedLRQ=1</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>Whether to accept an LRQ forwarded from neighbors.
-+This setting can be overriden with configuration
-+of a particular neighbor.</P>
-+
-+</LI>
-+<LI><CODE>IncludeDestinationInfoInLCF=0</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>The gatekeeper replies LCFs containing <B>destinationInfo</B> and
-+<B>destinationType</B> fields, the aliases and terminal type of the destination
-+endpoint. The neighbor gatekeeper can then save the information to suppress
-+later LRQs. However, some vendors' gatekeepers misuse the information, thus
-+result in interoperability problems.
-+Only turn off this option if you encounter problems upon communicating
-+with a third-party gatekeeper.</P>
-+
-+</LI>
-+<LI><CODE>ForwardResponse=0</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>If the gatekeeper forwards received LRQ message it can decide either
-+to receive the LCF response or to let it travel back directly to the LRQ
-+origintator. Set this option to 1, if the gatekeeper needs to receive LCF
-+messages for forwarded LRQs. This setting can be overriden with configuration
-+of a particular neighbor.</P>
-+
-+</LI>
-+<LI><CODE>ForwardLRQ=always | never | depends</CODE><BR>
-+Default: <CODE>depends</CODE>
-+<P>This settings determines whether the received LRQ should be forwarded
-+or not. <CODE>always</CODE> forwards LRQ unconditionally, <CODE>never</CODE> blocks LRQ
-+forwarding, <CODE>depends</CODE> tells the gatekeeper to forward LRQ only if its
-+hop count is greater than 1. This setting can be overriden with configuration
-+of a particular neighbor.</P>
-+</LI>
-+</UL>
-+</P>
-+
-+<H3>Section [Neighbor::...]</H3>
-+
-+<P>Sections starting with <CODE>[Neighbor::</CODE> are for neighbor specific configuration.</P>
-+<P>
-+<UL>
-+<LI><CODE>GatekeeperIdentifier=GKID</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>Gatekeeper identifier for this neighbor. If this options is not specified,
-+the identifier is taken from the second part of this <CODE>Neighbor::</CODE> section name.</P>
-+
-+</LI>
-+<LI><CODE>Host=192.168.1.1</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>An IP address for this neighbor.</P>
-+
-+</LI>
-+<LI><CODE>Password=secret</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>A password to be used to validate crypto tokens received from incoming LRQs.
-+<CODE>It is not yet implemented</CODE>.</P>
-+
-+</LI>
-+<LI><CODE>Dynamic=0</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>1 means that the IP address for this neighbor can change.</P>
-+
-+</LI>
-+<LI><CODE>SendPrefixes=004,002:=1,001:=2</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>A list of prefixes that this neighbor expects LRQs to receive for.
-+If '*' is specified, LRQs will always be sent to this neighbor.
-+A priority can be given to each prefix for each neighbor (using := syntax),
-+so in case of multiple LCF received from multiple neighbor, the one
-+with the highest priority will be selected to route the call.
-+One can also direct the gatekeeper to send LRQ to this neighbor
-+based on an alias type:<BR>
-+SendPrefixes=h323_ID,dialedDigits,001<BR></P>
-+
-+</LI>
-+<LI><CODE>AcceptPrefixes=*</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>A list of prefixes that the gatekeeper will accept in LRQs received
-+from this neighbor. If '*' is specified, all LRQs will be accepted from this neighbor.
-+One can also direct the gatekeeper to accept LRQ from this neighbor
-+based on an alias type:<BR>
-+AcceptPrefixes=dialedDigits<BR></P>
-+
-+</LI>
-+<LI><CODE>ForwardHopCount=2</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>If the gatekeeper receives an LRQ that the destination is either unknown,
-+it may forward this message to its neighbors.
-+When the gatekeeper receives an LRQ and decides that the message
-+should be forwarded on to another gatekeeeper, it first decrements
-+<B>hopCount</B> field of the LRQ.
-+If <B>hopCount</B> has reached 0, the gatekeeper shall not forward the message.
-+This options defines the number of gatekeepers through which an LRQ
-+may propagate. Note it only affects the sender of LRQ, not the forwarder.</P>
-+
-+</LI>
-+<LI><CODE>AcceptForwardedLRQ=1</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>Whether to accept an LRQ forwarded from this neighbor.</P>
-+
-+</LI>
-+<LI><CODE>ForwardResponse=0</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>If the gatekeeper forwards received LRQ message it can decide either
-+to receive the LCF response or to let it travel back directly to the LRQ
-+origintator. Set this option to 1, if the gatekeeper needs to receive LCF
-+messages for forwarded LRQs.</P>
-+
-+</LI>
-+<LI><CODE>ForwardLRQ=always | never | depends</CODE><BR>
-+Default: <CODE>depends</CODE>
-+<P>This settings determines whether the received LRQ should be forwarded
-+or not. <CODE>always</CODE> forwards LRQ unconditionally, <CODE>never</CODE> blocks LRQ
-+forwarding, <CODE>depends</CODE> tells the gatekeeper to forward LRQ only if its
-+hop count is greater than 1. This setting can be overriden with configuration
-+of a particular neighbor.</P>
-+
-+</LI>
-+</UL>
-+</P>
-+
-+<H3>Section [RasSrv::RRQFeatures]</H3>
-+
-+<P>
-+<UL>
-+<LI><CODE>AcceptEndpointIdentifier=1</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>Whether to accept <B>endpointIdentifier</B> specified in a full RRQ.</P>
-+
-+</LI>
-+<LI><CODE>AcceptGatewayPrefixes=1</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>A gateway can register its prefixes with the gatekeeper by containing
-+<B>supportedPrefixes</B> in the <B>terminalType</B> field of RRQ.
-+This option defines whether to accept the specified prefixes of a gateway.</P>
-+
-+</LI>
-+<LI><CODE>OverwriteEPOnSameAddress=1</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>In some networks an endpoint's IP address may change unexpectedly. This
-+may happen when an endpoint is using a PPP connection (e.g. modem or ADSL).
-+This option defines how to handle a registration request (RRQ) from an IP
-+address which does not match what we have stored. The default action is
-+to reject the request. With this option enabled the conflicting request
-+will cause an unregister request (URQ) to be sent for the existing IP
-+address and the entry to be removed allowing the endpoint to register
-+with the new address.</P>
-+</LI>
-+</UL>
-+</P>
-+
-+<H3>Section [RasSrv::ARQFeatures]</H3>
-+
-+<P>
-+<UL>
-+<LI><CODE>ArjReasonRouteCallToSCN=0</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>If yes, the gatekeeper rejects a call from a gateway to itself by reason
-+<B>routeCallToSCN</B>.</P>
-+
-+</LI>
-+<LI><CODE>ArjReasonRouteCallToGatekeeper=1</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>If yes, the gatekeeper rejects an answered ARQ without a pre-existing
-+CallRec found in the CallTable by reason <B>routeCallToGatekeeper</B>
-+in routed mode.
-+The endpoint shall release the call immediately and re-send call Setup
-+to the gatekeeper.</P>
-+
-+</LI>
-+<LI><CODE>CallUnregisteredEndpoints=0</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>With this option set on, the gatekeeper will accept an ARQ from a registered
-+endpoint with <B>destCallSignalAddress</B>, no matter the address is belongs
-+to a registered endpoint or not.
-+That means you can explicitly specify the IP of endpoint (registered or not)
-+you want to call.</P>
-+
-+</LI>
-+<LI><CODE>RemoveTrailingChar=#</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>Specify the trailing character to be removed in <B>destinationInfo</B>.
-+For example, if your endpoint incorrectly contains the termination character
-+like `#' in <B>destinationInfo</B>, you may remove it by this option.</P>
-+</LI>
-+</UL>
-+</P>
-+
-+<H3><A NAME="calltable"></A> Section [CallTable]</H3>
-+
-+<P>
-+<UL>
-+<LI><CODE>GenerateNBCDR=0</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>Generate CDRs for calls from neighbor zones.
-+The IP and endpoint ID of the calling party is printed as empty.
-+This is usually used for debug purpose.</P>
-+
-+</LI>
-+<LI><CODE>GenerateUCCDR=0</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>Generate CDRs for calls that are unconnected. This is usually
-+used for debug purpose. Note a call is considered unconnected
-+only if the gatekeeper uses routed mode and a Q.931 Connect message is not
-+received by the gatekeeper. In direct mode, a call is always considered
-+connected.</P>
-+
-+</LI>
-+<LI><CODE>DefaultCallDurationLimit=3600</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>Default maximum call duration limit (seconds).
-+Set it to <CODE>0</CODE> to disable this feature and not limit
-+calls duration.</P>
-+
-+</LI>
-+<LI><CODE>AcctUpdateInterval=60</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>A time interval (seconds) for accounting updates to be logged
-+for each call in progress. The exact details of the accounting updates
-+depend on accounting logger modules selected (see section
-+<A HREF="#gkacct">[Gatekeeper::Acct]</A>). In general, the accounting
-+update is to provide backend services with incrementing call duration
-+for connected calls.
-+The default value 0 tells the gatkeeper to not send accounting updates
-+at all. Please note that setting short periods may decrease GK performance.</P>
-+</LI>
-+</UL>
-+</P>
-+
-+
-+<H3>Section [Endpoint]</H3>
-+
-+<P>The gatekeeper can work as an endpoint by registering with another gatekeeper.
-+With this feature, you can easily build gatekeeper hierarchies.
-+The section defines the endpoint features for the gatekeeper.</P>
-+<P>
-+<UL>
-+<LI><CODE>Gatekeeper=10.0.1.1</CODE><BR>
-+Default: <CODE>no</CODE>
-+<P>Define a parent gatekeeper for the endpoint(gatekeeper) to register with.
-+Don't try to register with yourself, unless you want to be confusing.
-+To disable this feature, set the field to be <CODE>no</CODE>.</P>
-+
-+</LI>
-+<LI><CODE>Type=Gateway</CODE><BR>
-+Default: <CODE>Gateway</CODE>
-+<P>Define the terminal type for the endpoint.
-+The valid values are <CODE>Gateway</CODE> or <CODE>Terminal</CODE>.</P>
-+
-+</LI>
-+<LI><CODE>H323ID=CitronProxy</CODE><BR>
-+Default: <CODE><Name></CODE>
-+<P>Specify the H.323 ID aliases for the endpoint.
-+Multiple aliases can be separated by comma.</P>
-+
-+</LI>
-+<LI><CODE>E164=18888600000,18888700000</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>Define the E.164 (dialedDigits) aliases for the endpoint.
-+Multiple aliases can be separated by comma.</P>
-+
-+</LI>
-+<LI><CODE>Password=123456</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>Specify a password to be sent to the parent gatekeeper.
-+All RAS requests will contain the password in the <B>cryptoTokens</B> field
-+(MD5 & HMAC-SHA1-96) and the <B>tokens</B> field (CAT).
-+To send RAS requests without both <B>cryptoTokens</B> and <B>tokens</B> fields,
-+set the password to be empty.</P>
-+<P>Besides, the password is also used in LRQs sent to neighbor gatekeepers.</P>
-+
-+</LI>
-+<LI><CODE>Prefix=188886,188887</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>Register the specified prefixes with the parent gatekeeper.
-+Only takes effect when the Type is <CODE>Gateway</CODE>.</P>
-+
-+</LI>
-+<LI><CODE>TimeToLive=900</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>Suggest a time-to-live value in second for the registration.
-+Note that the real time-to-live timer is assigned by the parent
-+gatekeeper in the RCF replied to the RRQ.</P>
-+
-+</LI>
-+<LI><CODE>RRQRetryInterval=10</CODE><BR>
-+Default: <CODE>10</CODE>
-+<P>Define a retry interval in second for RRQs if no response
-+received from the parent gatekeeper.</P>
-+
-+</LI>
-+<LI><CODE>ARQTimeout=2</CODE><BR>
-+Default: <CODE>2</CODE>
-+<P>Define the timeout value in second for ARQs.</P>
-+
-+</LI>
-+<LI><CODE>UnregisterOnReload=1</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>Defines whether the child gatekeeper unregisters and re-registers with
-+it's parent when receiving a Reload command.</P>
-+
-+</LI>
-+<LI><CODE>NATRetryInterval=60</CODE><BR>
-+Default: <CODE>60</CODE>
-+<P>Retry interval in second for NAT socket.
-+Leave it out if you don't understand it.</P>
-+
-+</LI>
-+<LI><CODE>NATKeepaliveInterval=86400</CODE><BR>
-+Default: <CODE>86400</CODE>
-+<P>Keepalive interval in second for NAT socket.
-+Leave it out if you don't understand it.</P>
-+</LI>
-+</UL>
-+</P>
-+
-+
-+<H3>Section [Endpoint::RewriteE164]</H3>
-+
-+<P>Once you specify prefix(es) for your gatekeeper endpoint, the parent
-+gatekeeper will route calls with <B>dialedDigits</B> beginning with that prefixes.
-+The child gatekeeper can rewrite the destination according to the rules
-+specified in this section. By contrast, when an internal endpoint calls
-+an endpoint registered to the parent gatekeeper, the source will be
-+rewritten reversely.</P>
-+<P>
-+<DL>
-+<DT><B>Format:</B><DD><P><CODE>external prefix=internal prefix</CODE></P>
-+</DL>
-+</P>
-+<P>For example, if you have the following configuration,</P>
-+<P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+ [Parent GK]
-+ ID=CitronGK
-+ / \
-+ / \
-+ / \
-+ / \
-+ [Child GK] [EP3]
-+ ID=ProxyGK E164=18888200
-+ Prefix=188886
-+ / \
-+ / \
-+ / \
-+ [EP1] [EP2]
-+ E164=601 E164=602
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<P>With this rule:
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+188886=6
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<P>When EP1 calls EP3 by <CODE>18888200</CODE>, the CallingPartyNumber in the Q.931 Setup
-+will be rewritten to <CODE>18888601</CODE>. Conversely, EP3 can reach EP1 and EP2
-+by calling <CODE>18888601</CODE> and <CODE>18888602</CODE>, respectively. In consequence, an
-+endpoint registered to the child GK with prefix '<CODE>6</CODE>' will appear
-+as an endpoint with prefix '<CODE>188886</CODE>', for endpoints registered to
-+the parent gatekeeper.</P>
-+<P>The section does not relate to the section
-+<A HREF="#rewrite">RasSrv::RewriteE164</A>,
-+though the later will take effect first.</P>
-+
-+<H3><A NAME="gkauth"></A> Section [Gatekeeper::Auth]</H3>
-+
-+<P>The section defines the authentication mechanism for the gatekeeper.</P>
-+<P>
-+<DL>
-+<DT><B>Syntax:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+authrule=actions
-+
-+ <authrule> := SimplePasswordAuth | AliasAuth | PrefixAuth | RadAuth | RadAliasAuth | ...
-+ <actions> := <control>[;<ras>|<q931>,<ras>|<q931>,...]
-+ <control> := optional | required | sufficient
-+ <ras> := GRQ | RRQ | URQ | ARQ | BRQ | DRQ | LRQ | IRQ
-+ <q931> := Setup
-+
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+
-+A rule may results in one of the three codes: ok, fail, pass.
-+<UL>
-+<LI><CODE>ok</CODE> - The request is authenticated by this module.</LI>
-+<LI><CODE>fail</CODE> - The authentication fails and should be rejected.</LI>
-+<LI><CODE>next</CODE> - The rule cannot determine the request.</LI>
-+</UL>
-+
-+There are also three ways to control a rule:
-+<UL>
-+<LI><CODE>optional</CODE> - If the rule cannot determine the request, it is passed to next rule. </LI>
-+<LI><CODE>required</CODE> - The requests should be authenticated by this module, or it would be rejected. The authenticated request would then be passwd to next rule.</LI>
-+<LI><CODE>sufficient</CODE> - If the request is authenticated, it is accepted, or it would be rejected. That is, the rule determines the fate of the request. No rule should be put after a sufficient rule, since it won't take effect.</LI>
-+</UL>
-+</P>
-+<P>Currently supported modules:
-+<UL>
-+<LI><CODE>SimplePasswordAuth/MySQLPasswordAuth/LDAPPasswordAuth/ExternalPasswordAuth</CODE>
-+<P>These modules check the <B>tokens</B> or <B>cryptoTokens</B> fields of RAS message.
-+The tokens should contain at least generalID and password.
-+For <B>cryptoTokens</B>, <B>cryptoEPPwdHash</B> tokens hashed by simple MD5 and
-+<B>nestedcryptoToken</B> tokens hashed by HMAC-SHA1-96 (libssl must be installed!)
-+are supported now. For <B>tokens</B> tokens hashed by CAT (Cisco Access Token)
-+and a clear text username/password are supported now.
-+The ID and password are read from
-+<A HREF="#password">[SimplePasswordAuth]</A> section,
-+MySQL database, LDAP or an external program
-+for <CODE>SimplePasswordAuth</CODE>, <CODE>MySQLPasswordAuth</CODE>, <CODE>LDAPPasswordAuth</CODE>
-+and <CODE>ExternalPasswordAuth</CODE> modules, respectively.
-+Support for other backend databases is easily to add.</P>
-+
-+</LI>
-+<LI><CODE>NeighborPasswordAuth</CODE>
-+<P>The module is used only to authenticate LRQs from
-+neighbors defined in section
-+<A HREF="#neighbor">[RasSrv::Neighbors]</A>.</P>
-+
-+</LI>
-+<LI><CODE>AliasAuth/MySQLAliasAuth/LDAPAliasAuth</CODE>
-+<P>The module can only be used to authenticate RegistrationRequest (RRQ).
-+The IP of an endpoint with a given alias should match a specified pattern.
-+For <CODE>AliasAuth</CODE> the pattern is defined in
-+<A HREF="#rrqauth">[RasSrv::RRQAuth]</A> section.
-+For <CODE>MySQLAliasAuth</CODE>, the pattern is retrieved from MySQL database, defined in
-+<A HREF="#mysqlaliasauth">[MySQLAliasAuth]</A> section.
-+For <CODE>LDAPAliasAuth</CODE> the alias (default: mail attribute) and IP
-+(default: voIPIpAddress attribute) must be found in one LDAP entry.</P>
-+
-+</LI>
-+<LI><CODE>PrefixAuth</CODE>
-+<P>Originally known as <CODE>GkAuthorize</CODE>.
-+The IP or aliases of a request with a given prefix must match a specified
-+pattern. See section
-+<A HREF="#prefixauth">[PrefixAuth]</A> for details.
-+Currently the module can only authorize
-+AdmissionRequest (ARQ) and LocationRequest (LRQ).</P>
-+
-+</LI>
-+<LI><CODE>RadAuth</CODE>
-+<P>Provides authentication based on H.235 username/password
-+security scheme. Authenticates RRQs and/or ARQs through remote
-+RADIUS servers. It passes to RADIUS servers usernames and passwords
-+extracted from CAT (Cisco Access Tokens) <B>tokens</B> carried
-+inside RRQ and ARQ packets. Therefore if your endpoints do not
-+support CATs or you do not need authentication scheme based on
-+individually assigned usernames/password - this module will not
-+work for you (but you may check <CODE>RadAliasAuth</CODE> module).
-+See section
-+<A HREF="#radauth">[RadAuth]</A> for details.</P>
-+
-+</LI>
-+<LI><CODE>RadAliasAuth</CODE>
-+<P>Provides authentication based on endpoint aliases
-+and/or call signalling IP addresses with remote RADIUS servers.
-+It does not need any H.235 <B>tokens</B> inside RAS messages,
-+so it can be used on a wider range of systems as compared to <CODE>RadAuth</CODE>.
-+RRQ, ARQ and Q.931 Setup messages can be authenticated using this module.
-+See section
-+<A HREF="#radaliasauth">[RadAliasAuth]</A> for details.</P>
-+
-+</LI>
-+</UL>
-+</P>
-+<P>You can also configure a rule to check only for some particular RAS messages.
-+The following example configures <CODE>SimplePasswordAuth</CODE> as an optional rule
-+to check RRQ and ARQ. If an RRQ is not checked (not contains
-+<B>tokens</B> or <B>cryptoTokens</B> fields), it is checked by <CODE>AliasAuth</CODE>.
-+The default is to accept all requests.</P>
-+<P>
-+<DL>
-+<DT><B>Example 1:</B><DD><P><CODE>SimplePasswordAuth=optional;RRQ,ARQ</CODE><BR>
-+<CODE>AliasAuth=sufficient;RRQ</CODE><BR>
-+<CODE>default=allow</CODE></P>
-+</DL>
-+</P>
-+<P>
-+<DL>
-+<DT><B>Example 2:</B><DD><P><CODE>RadAliasAuth=required;Setup</CODE><BR>
-+<CODE>default=allow</CODE></P>
-+</DL>
-+</P>
-+
-+<H3><A NAME="password"></A> Section [SimplePasswordAuth]</H3>
-+
-+<P>The section defines the userid and password pairs used by
-+<CODE>SimplePasswordAuth</CODE> module.
-+Use `<CODE>make addpasswd</CODE>' to generate the utility <CODE>addpasswd</CODE>.</P>
-+<P>Usage:
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+addpasswd config userid password
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<P>Options:
-+<UL>
-+<LI><CODE>KeyFilled=123</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>Default value to initialize the encryption key.</P>
-+
-+</LI>
-+<LI><CODE>CheckID=1</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>Check if the aliases match the ID in the tokens.</P>
-+
-+</LI>
-+<LI><CODE>PasswordTimeout=120</CODE><BR>
-+Default: <CODE>-1</CODE>
-+<P>The module <CODE>SimplePasswordAuth</CODE> and all its descendants will cache an
-+authenticated password. This field define the cache timeout value in second.
-+<CODE>0</CODE> means never cache the password, while a negative value
-+means the cache never expires.</P>
-+</LI>
-+</UL>
-+</P>
-+
-+<H3>Section [MySQLPasswordAuth]</H3>
-+
-+<P>Define the MySQL database, table and fileds to retrieve the userid and password.</P>
-+<P>
-+<UL>
-+<LI><CODE>Host=localhost</CODE><BR>
-+Default: <CODE>localhost</CODE>
-+<P>Host name or IP of the MySQL server.</P>
-+
-+</LI>
-+<LI><CODE>Port=5353</CODE><BR>
-+Default: <CODE>5353</CODE>
-+<P>Port the MySQL server is listening on (if different for the default).</P>
-+
-+</LI>
-+<LI><CODE>Database=billing</CODE><BR>
-+Default: <CODE>billing</CODE>
-+<P>The database to connect.</P>
-+
-+</LI>
-+<LI><CODE>User=cwhuang</CODE><BR></LI>
-+<LI><CODE>Password=123456</CODE><BR>
-+<P>The user name and password used to connect to the database.</P>
-+
-+</LI>
-+<LI><CODE>Table=customer</CODE><BR>
-+<P>The table in the database to query.</P>
-+
-+</LI>
-+<LI><CODE>KeyField=IPN</CODE><BR>
-+<P>A name for the column that contains user alias.</P>
-+
-+</LI>
-+<LI><CODE>DataField=Password</CODE><BR>
-+<P>A name for the column that contains user password.</P>
-+
-+</LI>
-+<LI><CODE>ExtraCriterion=Kind > 0</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>Specify extra criterion.</P>
-+
-+</LI>
-+<LI><CODE>CacheTimeout=30</CODE><BR>
-+Default: <CODE>30</CODE>
-+<P>Timeout value after username/password pairs cached in memory
-+will be refreshed from the database.</P>
-+
-+</LI>
-+</UL>
-+</P>
-+<P>The SQL command will be issused:
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+SELECT $DataField FROM $Table WHERE $KeyField = %id [AND $ExtraCriterion]
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+
-+<H3>Section [ExternalPasswordAuth]</H3>
-+
-+<P>Specify an external program to retrieve the password.
-+The program should accept ID from stdin and print the password to stdout.
-+You can use this mechanism to integrate almost any external system for authentication.
-+But beware, this is not the fastest way to authenticate. <CODE>This module is depreceated</CODE>.</P>
-+<P>
-+<UL>
-+<LI><CODE>PasswordProgram=/usr/local/bin/getpasswd</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>The executable of the external program.</P>
-+</LI>
-+</UL>
-+</P>
-+
-+<H3><A NAME="rrqauth"></A> Section [RasSrv::RRQAuth]</H3>
-+
-+<P>Specify the action on RRQ reception (confirm or deny) for <CODE>AliasAuth</CODE> module.
-+The first alias (this will mostly be an H323ID) of the endpoint to
-+register is looked up in this section. If a parameter is found the value will
-+apply as a rule. A rule consists of conditions separated by "&".
-+A registration is accepted when all conditions apply. </P>
-+<P>
-+<DL>
-+<DT><B>Syntax:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+<authrules> := empty | <authrule> "&" <authrules>
-+
-+ <authrule> := <authtype> ":" <authparams>
-+ <authtype> := "sigaddr" | "sigip"
-+ <autparams> := [!&]*
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+<P>The notation and meaning of <CODE><authparams></CODE> depends on
-+<CODE><authtype></CODE>:</P>
-+<P>
-+<UL>
-+<LI><CODE>sigaddr</CODE> - extended regular expression that has to match agains the
-+``PrintOn(ostream)'' representation of the signal address of the request.
-+<P>Example:
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+sigaddr:.*ipAddress .* ip = .* c0 a8 e2 a5 .*port = 1720.*
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+
-+</LI>
-+<LI><CODE>sigip</CODE> - specialized form of `<CODE>sigaddr</CODE>'.
-+Write the signalling ip adresse using (commonly used) decimal notation:
-+``<CODE>byteA.byteB.byteC.byteD:port</CODE>''.
-+<P>Example:
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+sigip:192.168.242.165:1720
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+
-+</LI>
-+<LI><CODE>allow</CODE> - always accept the alias.
-+</LI>
-+<LI><CODE>deny</CODE> - always reject the alias.
-+</LI>
-+</UL>
-+</P>
-+
-+<H3><A NAME="mysqlaliasauth"></A> Section [MySQLAliasAuth]</H3>
-+
-+<P>Define the MySQL database, table and fileds to retrieve a pattern for an alias.</P>
-+<P>
-+<UL>
-+<LI><CODE>Host=localhost</CODE><BR>
-+Default: <CODE>localhost</CODE>
-+<P>Host name or IP of the MySQL server.</P>
-+
-+</LI>
-+<LI><CODE>Port=5353</CODE><BR>
-+Default: <CODE>5353</CODE>
-+<P>Port the MySQL server is listening on (if different for the default).</P>
-+
-+</LI>
-+<LI><CODE>Database=billing</CODE><BR>
-+Default: <CODE>billing</CODE>
-+<P>The database to connect.</P>
-+
-+</LI>
-+<LI><CODE>User=cwhuang</CODE><BR></LI>
-+<LI><CODE>Password=123456</CODE><BR>
-+<P>The user name and password used to connect to the database.</P>
-+
-+</LI>
-+<LI><CODE>Table=customer</CODE><BR>
-+<P>The table in the database to query.</P>
-+
-+</LI>
-+<LI><CODE>KeyField=alias</CODE><BR>
-+<P>A name for the column that contains user alias.</P>
-+
-+</LI>
-+<LI><CODE>DataField=IPADDR</CODE><BR>
-+<P>A name for the column that contains IP address for the user.</P>
-+
-+</LI>
-+<LI><CODE>ExtraCriterion=Kind > 0</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>Specify extra criterion.</P>
-+
-+</LI>
-+<LI><CODE>CacheTimeout=30</CODE><BR>
-+Default: <CODE>30</CODE>
-+<P>Timeout value after username/password pairs cached in memory
-+will be refreshed from the database.</P>
-+
-+</LI>
-+</UL>
-+</P>
-+<P>The SQL command will be issused:
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+SELECT $DataField FROM $Table WHERE $KeyField = %alias [AND $ExtraCriterion]
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+
-+<H3><A NAME="prefixauth"></A> Section [PrefixAuth]</H3>
-+
-+<P>The section defines the authentication rule for <CODE>PrefixAuth</CODE> module.
-+Currently, only ARQs and LRQs can be authorized by this module.</P>
-+<P>First, a most specific prefix is selected according to the <B>destinationInfo</B>
-+field of the received request. Then the request is accepted or rejected
-+according to the matched rules with most specific netmask.
-+If no matched prefix is found,
-+and the <CODE>default</CODE> option is specified, the request is accepted
-+or rejected according to that. Otherwise
-+it is rejected or passed to next authentication module
-+according to the module requirement.</P>
-+<P>
-+<DL>
-+<DT><B>Format:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+prefix=authrule[|authrule|...]
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+
-+<DT><B>Syntax:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+<authrule> := <result> <authrule>
-+
-+ <result> := deny | allow
-+ <authrule> := [!]ipv4:<iprule> | [!]alias:<aliasrule>
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+
-+Where <CODE><iprule></CODE> can be specified in decimal dot notation or
-+CIDR notation, <CODE><aliasrule></CODE> is expressed in regular expression.
-+If the `<CODE>!</CODE>' flag precedes the rule, the sense is inverted.</P>
-+<P>
-+<DL>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+555=deny ipv4:10.0.0.0/27|allow ipv4:0/0
-+5555=allow ipv4:192.168.1.1|deny ipv4:192.168.1.0/255.255.255.0
-+86=deny !ipv4:172.16.0.0/24
-+09=deny alias:^188884.*
-+ALL=allow ipv4:ALL
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+<P>In this configuration, all endpoints except from network <CODE>10.0.0.0/27</CODE>
-+are allow to call prefix 555 (except 5555).
-+Endpoints from <CODE>192.168.1.0/24</CODE> are not allowed to call prefix 5555,
-+except <CODE>192.168.1.1</CODE>.
-+Endpoints <B>not</B> from <CODE>172.16.0.0/24</CODE> are denied to call prefix 86.
-+Endpoints having an alias beginning with 188884 are not allowed to call
-+prefix 09. All other situations are allowed.</P>
-+
-+<H3><A NAME="radauth"></A> Section [RadAuth]</H3>
-+
-+<P>This section defines configuration settings that enable
-+RADIUS authentication based on H.235 CATs (Cisco Access Tokens)
-+present in RRQ and ARQ RAS requests. This authentication scheme
-+is useful only for endpoints registered at the gatekeeper.
-+<UL>
-+<LI><CODE>Servers=SERVER1[:AUTH_PORT];SERVER2[:AUTH_PORT];...</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>RADIUS servers to be used for authentication RAS requests.
-+The list can contain an arbitrary number of servers.
-+The order of servers is important, because servers will be queried
-+by the RADIUS module in the order given. If no port information is given,
-+port number from <CODE>DefaultAuthPort</CODE> will be used.
-+If these attributes are not set, then os services file will be queried
-+for 'radius' services port. Servers could be IP addresses or DNS names.</P>
-+<P>
-+<DL>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+Servers=192.168.3.1:1645;192.168.3.2:1812;radius.mycompany.com
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+
-+</LI>
-+<LI><CODE>LocalInterface=IP_OR_FQDN</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>Particular local network interface that RADIUS client should
-+use in order to communicate with RADIUS servers. This parameter
-+can be useful on NAT machines to restrict number of network
-+interfaces used for RADIUS communication. By default this value
-+is empty and allows RADIUS requests to be sent on any (best suitable)
-+network interface. If you are not sure what you are doing, it is
-+better to leave this option unset.</P>
-+
-+</LI>
-+<LI><CODE>RadiusPortRange=10000-11000</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>By default (if this option is not set) RADIUS client
-+allocates ports dynamically as specified by the operating system.
-+If you want to restrict RADIUS client to use ports from
-+a particular range only - set this parameter.</P>
-+
-+</LI>
-+<LI><CODE>DefaultAuthPort=PORT_NO</CODE><BR>
-+Default: <CODE>An entry for 'radius' service in services file or 1812</CODE>
-+<P>Default port number to be used for RADIUS authentication requests
-+(Access-Request packets), if not overriden by <CODE>Servers</CODE> attribute.</P>
-+
-+</LI>
-+<LI><CODE>SharedSecret=SECRET</CODE><BR>
-+Default: <CODE>N/A (empty string)</CODE>
-+<P>Secret used to authenticate this GnuGk (NAS client) to RADIUS
-+server. It should be a cryptographically strong password.</P>
-+
-+</LI>
-+<LI><CODE>RequestTimeout=TIMEOUT_MS</CODE><BR>
-+Default: <CODE>2000</CODE> (miliseconds)
-+<P>Timeout (miliseconds) for RADIUS server response to a request
-+sent by GnuGk. If no response is received within this time period,
-+next RADIUS server is queried.</P>
-+
-+</LI>
-+<LI><CODE>IdCacheTimeout=TIMEOUT_MS</CODE><BR>
-+Default: <CODE>9000</CODE> (miliseconds)
-+<P>Timeout (miliseconds) for RADIUS request 8-bit identifiers to be
-+unique. If all 8-bit identifier range is exhausted within this period,
-+new client socket (UDP socket) is allocation by RADIUS module. Let's
-+take the example: we have approximatelly 60 RRQs/sec - after ca. 4 seconds
-+8-bit identifiers range gets exhausted - new socket allocated - after next
-+4 seconds the second 8-bit identifiers range gets exhauted - third socket
-+allocated - after 9th second identifiers from the pool 1 are available again
-+- ... . In general, too long timeout - too much resources consumed,
-+too short timeout - RADIUS server may take incoming packets as duplicated
-+and therefore drop it.</P>
-+
-+</LI>
-+<LI><CODE>SocketDeleteTimeout=TIMEOUT_MS</CODE><BR>
-+Default: <CODE>60000</CODE> (miliseconds) - 60 s
-+<P>Timeout for unused RADIUS sockets to be closed. It is used
-+in conjunction with <CODE>IdCacheTimeout</CODE> - additional sockets
-+created during heavy GK load time periods for serving incoming
-+requests are closed during idle periods.</P>
-+
-+</LI>
-+<LI><CODE>RequestRetransmissions=NUMBER</CODE><BR>
-+Default: <CODE>2</CODE>
-+<P>How many times a single RADIUS request is transmissed to every
-+configured RADIUS server (if no response is received). 1 means
-+no retransmission, 2 - single retransmission, ... . Exact retransmission
-+method is defined by <CODE>RoundRobinServers</CODE> attribute.</P>
-+
-+</LI>
-+<LI><CODE>RoundRobinServers=BOOLEAN</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>RADIUS requests retransmission method. </P>
-+<P>If set to 1, RADIUS request
-+is transmitted in the following way (until response is received):
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+Server #1 Attempt #1, Server #2 Attempt #1, ..., Server #N Attempt #1
-+...
-+Server #1 Attempt #RequestRetransmissions, ..., Server #1 Attempt #RequestRetransmissions
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<P>If set to 0, the following sequence is preserved:
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+Server #1 Attempt #1, ..., Server #1 Attempt #RequestRetransmissions
-+...
-+Server #N Attempt #1, ..., Server #N Attempt #RequestRetransmissions
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+
-+</LI>
-+<LI><CODE>AppendCiscoAttributes=BOOLEAN</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>If set, Cisco Vendor Specific RADIUS attibutes are included
-+in RADIUS requests (h323-conf-id,h323-call-origin,h323-call-type).</P>
-+
-+</LI>
-+<LI><CODE>IncludeTerminalAliases=BOOLEAN</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>If set, Cisco VSA 'h323-ivr-out' attribute is sent with a list of aliases
-+the endpoint is registering (RRQ.m_terminalAlias). This attribute is provided
-+in order to provide fine control over the list of aliases the endpoint
-+is allowed to register with. Format of this attribute is:
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+ Cisco-AV-Pair = "h323-ivr-out=terminal-alias:" alias [,alias] [;]
-+Example:
-+ Cisco-AV-Pair = "h323-ivr-out=terminal-alias:helpdesk,support,77771;"
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+
-+</LI>
-+<LI><CODE>IncludeEndpointIP=BOOLEAN</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>If set, endpoint IP address is passed as Framed-IP-Address
-+RADIUS attribute inside Access-Requests. Can be used for
-+additional (to the username/password) authentication.
-+For RRQs, this attribute is equal to RRQ.m_radAddress[0]
-+or RRQ.m_callSignalAddress[0] field.
-+For ARQs, this attribute is equal to ARQ.m_srcCallSignalAddress
-+field or call signal address reported by the gatekeeper registration table.</P>
-+</LI>
-+</UL>
-+</P>
-+
-+<H3><A NAME="radaliasauth"></A> Section [RadAliasAuth]</H3>
-+
-+<P>This section defines configuration settings that enable
-+RADIUS authentication based on endpoint aliases and/or IP adresses
-+present in RRQ RAS requests, ARQ RAS request or Q.931 Setup request.
-+This authentication scheme is useful both for endpoints registered
-+at the gatekeeper (ARQ,RRQ) and calls from unregistered endpoints (Setup).
-+<UL>
-+<LI><CODE>Servers=SERVER1[:AUTH_PORT];SERVER2[:AUTH_PORT];...</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>RADIUS servers to be used for RAS requests authentication.
-+This list can contain an arbitrary number of servers.
-+The order of servers is important, because servers will be queried
-+by the RADIUS module in the order given. If no port information is given,
-+port number from <CODE>DefaultAuthPort</CODE> will be used.
-+If these attributes are not set, then os services file will be queried
-+for 'radius' services port. Servers could be IP addresses or DNS names.</P>
-+<P>
-+<DL>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+Servers=192.168.3.1:1645;192.168.3.2:1812;radius.mycompany.com
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+
-+</LI>
-+<LI><CODE>LocalInterface=IP_OR_FQDN</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>Particular local network interface that RADIUS client should
-+use in order to communicate with RADIUS servers. This parameter
-+can be useful on NAT machines to restrict number of network
-+interfaces used for RADIUS communication. By default this value
-+is empty and allows RADIUS requests to be sent on any (best suitable)
-+network interface. If you are not sure what you are doing, it is
-+better to leave this option unset.</P>
-+
-+</LI>
-+<LI><CODE>RadiusPortRange=10000-11000</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>By default (if this option is not set) RADIUS client
-+allocates ports dynamically as specified by the operating system.
-+If you want to restrict RADIUS client to use ports from
-+a particular range only - set this parameter.</P>
-+
-+</LI>
-+<LI><CODE>DefaultAuthPort=PORT_NO</CODE><BR>
-+Default: <CODE>An entry for 'radius' service in services file or 1812</CODE>
-+<P>Default port number to be used for RADIUS authentication requests
-+(Access-Request packets), if not overriden by <CODE>Servers</CODE> attribute.</P>
-+
-+</LI>
-+<LI><CODE>SharedSecret=SECRET</CODE><BR>
-+Default: <CODE>N/A (empty string)</CODE>
-+<P>Secret used to authenticate this GNU GK (NAS client) to RADIUS
-+server. It should be a cryptographically strong password.</P>
-+
-+</LI>
-+<LI><CODE>RequestTimeout=TIMEOUT_MS</CODE><BR>
-+Default: <CODE>2000</CODE> (miliseconds)
-+<P>Timeout (miliseconds) for RADIUS server response to a request
-+sent by GNU GK. If no response is received within this time period,
-+next RADIUS server is queried.</P>
-+
-+</LI>
-+<LI><CODE>IdCacheTimeout=TIMEOUT_MS</CODE><BR>
-+Default: <CODE>9000</CODE> (miliseconds)
-+<P>Timeout (miliseconds) for RADIUS request 8-bit identifiers to be
-+unique. If all 8-bit identifier range is exhausted within this period,
-+new client socket (UDP socket) is allocation by RADIUS module. Let's
-+take the example: we have approximatelly 60 RRQs/sec - after ca. 4 seconds
-+8-bit identifiers range gets exhausted - new socket allocated - after next
-+4 seconds the second 8-bit identifiers range gets exhauted - third socket
-+allocated - after 9th second identifiers from the pool 1 are available again
-+- ... . In general, too long timeout - too much resources consumed,
-+too short timeout - RADIUS server may take incoming packets as duplicated
-+and therefore drop it.</P>
-+
-+</LI>
-+<LI><CODE>SocketDeleteTimeout=TIMEOUT_MS</CODE><BR>
-+Default: <CODE>60000</CODE> (miliseconds) - 60 s
-+<P>Timeout for unused RADIUS sockets to be closed. It is used
-+in conjunction with <CODE>IdCacheTimeout</CODE> - additional sockets
-+created during heavy GK load time periods for serving incoming
-+requests are closed during idle periods.</P>
-+
-+</LI>
-+<LI><CODE>RequestRetransmissions=NUMBER</CODE><BR>
-+Default: <CODE>2</CODE>
-+<P>How many times a single RADIUS request is transmissed to every
-+configured RADIUS server (if no response is received). 1 means
-+no retransmission, 2 - single retransmission, ... . Exact retransmission
-+method is defined by <CODE>RoundRobinServers</CODE> attribute.</P>
-+
-+</LI>
-+<LI><CODE>RoundRobinServers=BOOLEAN</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>RADIUS requests retransmission method. </P>
-+<P>If set to 1, RADIUS request
-+is transmitted in the following way (until response is received):
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+Server #1 Attempt #1, Server #2 Attempt #1, ..., Server #N Attempt #1
-+...
-+Server #1 Attempt #RequestRetransmissions, ..., Server #1 Attempt #RequestRetransmissions
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<P>If set to 0, the following sequence is preserved:
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+Server #1 Attempt #1, ..., Server #1 Attempt #RequestRetransmissions
-+...
-+Server #N Attempt #1, ..., Server #N Attempt #RequestRetransmissions
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+
-+</LI>
-+<LI><CODE>AppendCiscoAttributes=BOOLEAN</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>If set, Cisco Vendor Specific RADIUS attibutes are included
-+in RADIUS requests (h323-conf-id,h323-call-origin,h323-call-type).</P>
-+
-+</LI>
-+<LI><CODE>IncludeTerminalAliases=BOOLEAN</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>If set, Cisco VSA 'h323-ivr-out' attribute is sent with a list of aliases
-+the endpoint is registering (RRQ.m_terminalAlias). This attribute is provided
-+in order to provide fine control over the list of aliases the endpoint
-+is allowed to register with. Format of this attribute is:
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+ Cisco-AV-Pair = "h323-ivr-out=terminal-alias:" alias [,alias] [;]
-+Example:
-+ Cisco-AV-Pair = "h323-ivr-out=terminal-alias:helpdesk,support,77771;"
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+
-+</LI>
-+<LI><CODE>IncludeEndpointIP=BOOLEAN</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>If set, endpoint IP address is passed as Framed-IP-Address
-+RADIUS attribute inside Access-Requests. Can be used for
-+additional (to the username/password) authentication.
-+For RRQs, this attribute is equal to RRQ.m_radAddress[0]
-+or RRQ.m_callSignalAddress[0] field.
-+For ARQs, this attribute is equal to ARQ.m_srcCallSignalAddress
-+field or call signal address reported by the gatekeeper registration table.</P>
-+
-+</LI>
-+<LI><CODE>FixedUsername</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>If this parameter is set, it overwrites a value of User-Name RADIUS attribute
-+for outgoing RADIUS request. That means every Access-Request will be
-+authenticated as for user <CODE>FixedUsername</CODE>.</P>
-+
-+</LI>
-+<LI><CODE>FixedPassword</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>If not set, User-Password is a copy of User-Name. For example, if User-Name
-+is 'john' then User-Password will also be set to 'john'. Setting this
-+parameter overrides this behavious and User-Password attribute will be
-+always set to the value of <CODE>FixedPassword</CODE>.</P>
-+<P>
-+<DL>
-+<DT><B>Example 1:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+(Neither FixedUsername nor FixedPassword set)
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+
-+All endpoints will be authenticated using their alias as the username
-+and the password. That means, for example, endpoint 'EP1' will be authenticated
-+with the username 'EP1 and the password 'EP1'.</P>
-+</DL>
-+</P>
-+<P>
-+<DL>
-+<DT><B>Example 2:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+(FixedUsername not set)
-+FixedPassword=ppp
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+
-+All endpoints will be authenticated using their alias and the password 'ppp'.</P>
-+</DL>
-+</P>
-+<P>
-+<DL>
-+<DT><B>Example 3:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+FixedUsername=ppp
-+FixedPassword=ppp
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+
-+All endpoints will be authenticated using the username 'ppp'
-+and the password 'ppp'.</P>
-+</DL>
-+</P>
-+
-+</LI>
-+</UL>
-+</P>
-+
-+<H3>Section [GkLDAP::LDAPAttributeNames]</H3>
-+
-+<P>This section defines which LDAP attribute names to use.</P>
-+<P>
-+<UL>
-+<LI><CODE>H323ID</CODE><BR>
-+<P>The endpoint's H.323 alias. Needs to be unique within the used LDAP tree
-+(this i why we use the mail address by default).</P>
-+
-+</LI>
-+<LI><CODE>TelephonNo</CODE><BR>
-+<P>The endpoint's E.164 alias.</P>
-+
-+</LI>
-+<LI><CODE>voIPIpAddress</CODE><BR>
-+<P>The IP address to be compared against when using <CODE>LDAPAliasAuth</CODE>
-+For now, only a single value is allowed here.</P>
-+
-+</LI>
-+<LI><CODE>H235PassWord</CODE><BR>
-+<P>The plain text password to be compared against when using H.235
-+(<CODE>LDAPPasswordAuth</CODE> in Gatekeeper::Auth).
-+For now, only a single value is allowed here.</P>
-+</LI>
-+</UL>
-+</P>
-+
-+<H3>Section [GkLDAP::Settings]</H3>
-+
-+<P>This section defines the LDAP server and standard LDAP client operating
-+parameters to be used.</P>
-+<P>
-+<UL>
-+<LI><CODE>ServerName</CODE><BR>
-+Default: <CODE>ldap</CODE>
-+<P>The LDAP server's DNS name.</P>
-+
-+</LI>
-+<LI><CODE>ServerPort</CODE><BR>
-+Default: <CODE>389</CODE>
-+<P>The LDAP server's TCP port (usually 389).</P>
-+
-+</LI>
-+<LI><CODE>SearchBaseDN</CODE><BR>
-+Default: <CODE>o=University of Michigan, c=US</CODE>
-+<P>Entry point into the server's LDAP tree structure.
-+Searches are only made below this root node.</P>
-+
-+</LI>
-+<LI><CODE>BindUserDN</CODE><BR>
-+Default: <CODE>cn=Babs Jensen,o=University of Michigan, c=US</CODE>
-+<P>The distinguished name the gatekeeper uses to bind
-+to the LDAP server. Leave empty if you want to access
-+the LDAP server anonymously.</P>
-+
-+</LI>
-+<LI><CODE>BindUserPW</CODE><BR>
-+Default: <CODE>ReallySecretPassword</CODE>
-+<P>If you specified <CODE>BindUserDN</CODE>, then specify the corresponding
-+password to be used for binding here.</P>
-+
-+</LI>
-+<LI><CODE>sizelimit</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>Maximum number of results the server may return in response
-+to a single search query. The gatekeeper expects each LDAP
-+to only yields one or zero results anyway, so this parameter
-+is rather useless.</P>
-+
-+</LI>
-+<LI><CODE>timelimit</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>Maximum number of seconds a query may take until it's considered as "failed".</P>
-+
-+</LI>
-+</UL>
-+</P>
-+
-+<H3><A NAME="gkacct"></A> Section [Gatekeeper::Acct]</H3>
-+
-+<P>The section defines a list of modules that will be performing accounting.
-+The accounting is for logging gatekeeper on/off events and call start/stop/update
-+events. Each accounting module logs received events to a module specific storage.
-+Such storage can be a plain text file or a RADIUS server and many
-+more. The configuration is very similar to the one for gatekeeper authentication
-+(see
-+<A HREF="#gkauth">[Gatekeeper::Auth]</A>).</P>
-+
-+<P>All CDRs are also sent to the status port and can be used by external applications.</P>
-+<P>
-+<DL>
-+<DT><B>Syntax:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+acctmod=actions
-+
-+ <acctmod> := FileAcct | RadAcct | ...
-+ <actions> := <control>[;<event>,<event>,...]
-+ <control> := optional | required | sufficient | alternative
-+ <event> := start | stop | update | on | off
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+
-+The event list tells the gatekeeper, which events should trigger logging
-+with the given accounting module (if an event type is supported by the module):
-+<UL>
-+<LI><CODE>start</CODE> - a call has been started (that does not mean it has been
-+connected - either Setup message has been received or ACF has been sent
-+in direct GK mode),</LI>
-+<LI><CODE>update</CODE> - a call is active and the periodic update is performed
-+to reflect the new call duration. Frequency of such updates is determined
-+by <B>AcctUpdateInterval</B> variable from
-+<A HREF="#calltable">[CallTable]</A>
-+section,</LI>
-+<LI><CODE>stop</CODE> - a call has been disconnected (removed from the GK call table),</LI>
-+<LI><CODE>on</CODE> - the gatekeeper has been started,</LI>
-+<LI><CODE>off</CODE> - the gatekeeper has been shut down.</LI>
-+</UL>
-+
-+An event logging by a module may results in one of the three result codes:
-+<B>ok</B>, <B>fail</B>, <B>next</B>.
-+<UL>
-+<LI><CODE>ok</CODE> - the event has been logged successfully by this module,</LI>
-+<LI><CODE>fail</CODE> - the module failed to log the event,</LI>
-+<LI><CODE>next</CODE> - the event has not been logged by this module, because the module
-+is not configured for/does not support this event type.</LI>
-+</UL>
-+
-+Accounting modules can be stacked to log events by multiple modules or to create
-+failover setups. <B>control</B> flag for each module, along with result codes,
-+define what is the final status of the event processing by the whole module stack.
-+If the final result is <B>failure</B>, some special actions may take place. Currently,
-+if a call <B>start</B> event logging fails, the call is disconnected immediatelly.
-+The following <B>control</B> flags are recognized:
-+<UL>
-+<LI><CODE>required</CODE> - if the module fails to log an event, the final status
-+is set to failure and the event is passed down to any remaining
-+modules,</LI>
-+<LI><CODE>optional</CODE> - the module tries to log an event, but the final status
-+is not affected by success or failure (except when the module
-+is last on the list). The event is always passed down
-+to any remaining modules,</LI>
-+<LI><CODE>sufficient</CODE> - the module determines the final status. If an event
-+is logged successfully, no remaining modules are processed.
-+Otherwise the final status is set to failure and the event
-+is passed down to any remaining modules,</LI>
-+<LI><CODE>alternative</CODE> - if the module logs an event successfully, no remaining
-+modules are processed. Otherwise the final status is
-+not modified and the event is passed down to any remaining
-+modules.</LI>
-+</UL>
-+</P>
-+<P>Currently supported accounting modules:
-+<UL>
-+<LI><CODE>FileAcct</CODE>
-+<A NAME="fileacct"></A>
-+<P>A plain CDR text file logger. It outputs status line like CDR lines to
-+a specified text file. This module supports only <B>stop</B> accounting event.
-+Configuration settings are read from
-+<A HREF="#fileacct">[FileAcct]</A> section.</P>
-+
-+</LI>
-+<LI><CODE>RadAcct</CODE>
-+<A NAME="radacct"></A>
-+<P>This module performs RADIUS accounting. It supports all event types
-+(start, stop, update, on, off).
-+See the section
-+<A HREF="#radacct">[RadAcct]</A> for configuration details.</P>
-+
-+</LI>
-+<LI><CODE>default</CODE>
-+<P>This is a special pseudo module - it is used to set the final status
-+if preceeding modules have not determined it. The format is as follows:
-+<DL>
-+<DT><B>Syntax:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+ default=<status>[;<event>,<event>,...]
-+ <status> := accept | fail
-+ <event> := start | stop | update | on | off
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+
-+</LI>
-+</UL>
-+</P>
-+<P>The sample configuration #1 (try to log call start/stop with RADIUS server,
-+and always write a CDR to a text file):
-+<DL>
-+<DT><B>Example:</B><DD><P><CODE>RadAcct=optional;start,stop</CODE><BR>
-+<CODE>FileAcct=required</CODE><BR></P>
-+</DL>
-+</P>
-+<P>The sample configuration #2 (try to log call start/stop with RADIUS server,
-+if it fails use a CDR log file):
-+<DL>
-+<DT><B>Example:</B><DD><P><CODE>RadAcct=alternative;start,stop</CODE><BR>
-+<CODE>FileAcct=sufficient;stop</CODE><BR>
-+<CODE>default=accept</CODE><BR></P>
-+</DL>
-+
-+The <B>default</B> rule is required here to prevent calls from being rejected
-+because of RadAcct start event logging failure. If RadAcct returns <B>fail</B>
-+return code, it is passed down to FileAcct module. FileAcct module does not
-+support <B>start</B> events, so it returns <B>next</B> return code. If there were
-+no the <B>default</B> rule, the final status would be failure, because no module
-+has been able to log the event.</P>
-+<P>The sample configuration #3 (always log call start and stop events with RADIUS
-+server, if it fails for call stop event, use a CDR file to store call info):
-+<DL>
-+<DT><B>Example:</B><DD><P><CODE>RadAcct=alternative;start,stop</CODE><BR>
-+<CODE>FileAcct=sufficient;stop</CODE><BR>
-+<CODE>default=fail;start</CODE><BR></P>
-+</DL>
-+
-+The <B>default</B> rule is optional here. If RadAcct returns <B>fail</B>
-+return code for <B>start</B> event, the code is passed down to FileAcct module.
-+FileAcct module does not support <B>start</B> events, so it returns <B>next</B>
-+return code. The <B>default</B> rule ensures, that the call is disconnected
-+if call start event could not has been logged with RadAcct. But we want
-+to store a CDR in a text file in case the RADIUS server is down when the call
-+disconnects, so we can fetch call duration into a billing system later.</P>
-+
-+<H3>Section [FileAcct]</H3>
-+
-+<P>This accounting module writes status line compatible CDR lines
-+to a specified text file.</P>
-+<P>
-+<UL>
-+<LI><CODE>DetailFile=FULL_PATH_AND_FILENAME</CODE><BR>
-+Default: none
-+<P>This specifies a full path to the CDR plain text file. If the file
-+exists and <CODE>Rotate</CODE> is 0, CDRs will be appended, otherwise the file
-+is rotated and CDRs are logged to a new file created.</P>
-+
-+</LI>
-+<LI><CODE>Rotate=0 or 1</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>Determines if the CDR text file should be rotated on every gatekeeper
-+restart or reload. If it is 0, then CDRs will be appended to any existing
-+file. If it is 1, then any existing file is renamed to CURRENT_FILENAME.YYYYMMDD-HHMMSS,
-+where YYYYMMDD-HHMMSS is replaced with current timestamp, and CDRs are logged
-+to an empty file.</P>
-+<P>
-+<DL>
-+<DT><B>Example:</B><DD><P><CODE>[FileAcct]</CODE><BR>
-+<CODE>DetailFile=/var/log/gk/cdr.log</CODE><BR>
-+<CODE>Rotate=0</CODE><BR></P>
-+</DL>
-+</P>
-+
-+</LI>
-+</UL>
-+</P>
-+
-+<H3>Section [RadAcct]</H3>
-+
-+<P>This accounting module sends accounting data to a RADIUS server. Module
-+configuration is almost the same as for RADIUS authenticators (see
-+<A HREF="#radauth">[RadAuth]</A> and
-+<A HREF="#radaliasauth">[RadAliasAuth]</A>
-+for more details on the parameters).</P>
-+<P>
-+<UL>
-+<LI><CODE>Servers=SERVER1[:AUTH_PORT:ACCT_PORT];SERVER2[:AUTH_PORT:ACCT_PORT];...</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>RADIUS servers to send accounting data to.
-+If no port information is given,
-+port number from <CODE>DefaultAcctPort</CODE> is be used.
-+If these attributes are not set, then OS services file will be queried
-+for 'radaccr' service port. Servers could be IP addresses or DNS names.</P>
-+
-+</LI>
-+<LI><CODE>LocalInterface=IP_OR_FQDN</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>Particular local network interface that RADIUS client should
-+use in order to communicate with RADIUS servers.</P>
-+
-+</LI>
-+<LI><CODE>RadiusPortRange=10000-11000</CODE><BR>
-+Default: <CODE>N/A</CODE>
-+<P>By default (if this option is not set) RADIUS client
-+allocates ports dynamically as specified by the operating system.
-+If you want to restrict RADIUS client to use ports from
-+a particular range only - set this parameter.</P>
-+
-+</LI>
-+<LI><CODE>DefaultAcctPort=PORT_NO</CODE><BR>
-+Default: <CODE>An entry for 'radius' service in services file or 1813</CODE>
-+<P>Default port number to be used for RADIUS accounting requests,
-+if not overriden by <CODE>Servers</CODE> attribute.</P>
-+
-+</LI>
-+<LI><CODE>SharedSecret=SECRET</CODE><BR>
-+Default: <CODE>N/A (empty string)</CODE>
-+<P>Secret used to authenticate this GnuGk (NAS client) to RADIUS
-+server. It should be a cryptographically strong password.</P>
-+
-+</LI>
-+<LI><CODE>RequestTimeout=TIMEOUT_MS</CODE><BR>
-+Default: <CODE>2000</CODE> (miliseconds)
-+<P>Timeout (miliseconds) for RADIUS server response to a request
-+sent by GnuGk. If no response is received within this time period,
-+next RADIUS server is queried.</P>
-+
-+</LI>
-+<LI><CODE>IdCacheTimeout=TIMEOUT_MS</CODE><BR>
-+Default: <CODE>9000</CODE> (miliseconds)
-+<P>Timeout (miliseconds) for RADIUS request 8-bit identifiers to be
-+unique. </P>
-+
-+</LI>
-+<LI><CODE>SocketDeleteTimeout=TIMEOUT_MS</CODE><BR>
-+Default: <CODE>60000</CODE> (miliseconds) - 60 s
-+<P>Timeout for unused RADIUS sockets to be closed. </P>
-+
-+</LI>
-+<LI><CODE>RequestRetransmissions=NUMBER</CODE><BR>
-+Default: <CODE>2</CODE>
-+<P>How many times a single RADIUS request is transmissed to every
-+configured RADIUS server (if no response is received).</P>
-+
-+</LI>
-+<LI><CODE>RoundRobinServers=BOOLEAN</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>RADIUS requests retransmission method. </P>
-+
-+</LI>
-+<LI><CODE>AppendCiscoAttributes=BOOLEAN</CODE><BR>
-+Default: <CODE>0</CODE>
-+<P>If set, Cisco Vendor Specific RADIUS attibutes are included
-+in RADIUS requests (h323-conf-id,h323-call-origin,h323-call-type).</P>
-+
-+</LI>
-+<LI><CODE>IncludeEndpointIP=BOOLEAN</CODE><BR>
-+Default: <CODE>1</CODE>
-+<P>If set, endpoint IP address is passed as Framed-IP-Address
-+RADIUS attribute inside Accounting-Requests.</P>
-+</LI>
-+</UL>
-+</P>
-+
-+<H3>Section [NATedEndpoints]</H3>
-+
-+<P>The gatekeeper can automatically detect whether an endpoint is behind NAT.
-+However, if the detection fails, you can specify it manually in this section.</P>
-+<P>
-+<DL>
-+<DT><B>Format:</B><DD><P><CODE>alias=true,yes,1,...</CODE></P>
-+<DT><B>Example:</B><DD><P>Specify an endpoint with alias 601 is behind NAT.
-+<BLOCKQUOTE>
-+<CODE>601=true</CODE>
-+</BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+
-+<H3>Section [CTI::Agents]</H3>
-+
-+<P>This section allows the configuration of a so called virtual queues to
-+allow inbound call distribution by an external application via the
-+status port.
-+A virtual queue has an H.323 alias that can be called like an endpoint.</P>
-+<P>Upon arrival of an ARQ on a virtual queue, the gatekeeper signals
-+a RouteRequest on the status port and waits for an external application
-+to respond with either a RouteReject (then the ARQ will be rejected)
-+or with RouteToAlias which leads to the ARQ being rewritten so the call
-+will be routed to the alias (eg. call center agent) specified by
-+the external application.</P>
-+<P>If no answer is received after a timeout period, the call is terminated.</P>
-+<P>You can specify virtual queues in three ways:
-+<UL>
-+<LI><CODE>exact alias name</CODE> - a list of aliases is given. If an ARQ destination
-+alias matches one these names, the virtual queue is activated,</LI>
-+<LI><CODE>prefix</CODE> - a list of prefixes is given. If an ARQ destination alias
-+starts with one these prefixes, the virtual queue is activated,</LI>
-+<LI><CODE>regular expression</CODE> - a regular expression is given. If an ARQ destination
-+alias matches the expression, the virtual queue is activated.</LI>
-+</UL>
-+</P>
-+<P>See the monitoring section for details on the messages and responses.</P>
-+<P>
-+<UL>
-+<LI><CODE>VirtualQueueAliases</CODE><BR>
-+Default: none
-+<P>This defines a list of H.323 aliases for the virtual queues.</P>
-+<P>
-+<DL>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE>
-+<CODE>VirtualQueueAliases=sales,support</CODE>
-+</BLOCKQUOTE>
-+<BR></P>
-+</DL>
-+</P>
-+
-+</LI>
-+<LI><CODE>VirtualQueuePrefixes</CODE><BR>
-+Default: none
-+<P>This defines a list of prefixes for the virtual queues.</P>
-+<P>
-+<DL>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE>
-+<CODE>VirtualQueuePrefixes=001215,1215</CODE>
-+</BLOCKQUOTE>
-+<BR></P>
-+</DL>
-+</P>
-+
-+</LI>
-+<LI><CODE>VirtualQueueRegex</CODE><BR>
-+Default: none
-+<P>This defines a regular expression for the virtual queues.</P>
-+<P>
-+<DL>
-+<DT><B>Example (numbers starting with 001215 or 1215):</B><DD><P>
-+<BLOCKQUOTE>
-+<CODE>VirtualQueuePrefixes=^(001|1)215[0-9]*$</CODE>
-+</BLOCKQUOTE>
-+<BR></P>
-+</DL>
-+</P>
-+
-+</LI>
-+<LI><CODE>RequestTimeout</CODE><BR>
-+Default: <CODE>10</CODE>
-+Timeout in seconds for the external application to answer the RouteRequest.
-+If no answer is received during this time an ARJ will be sent to
-+the caller.</LI>
-+</UL>
-+</P>
-+
-+
-+<HR>
-+<A HREF="manual-5.html">Next</A>
-+<A HREF="manual-3.html">Previous</A>
-+<A HREF="manual.html#toc4">Contents</A>
-+</BODY>
-+</HTML>
-diff -urNad gnugk-2.2.0/docs/manual-5.html /tmp/dpep.sOrrzd/gnugk-2.2.0/docs/manual-5.html
---- gnugk-2.2.0/docs/manual-5.html 1970-01-01 01:00:00.000000000 +0100
-+++ /tmp/dpep.sOrrzd/gnugk-2.2.0/docs/manual-5.html 2004-12-19 23:02:13.000000000 +0100
-@@ -0,0 +1,738 @@
-+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-+<HTML>
-+<HEAD>
-+ <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.21">
-+ <TITLE>OpenH323 Gatekeeper - The GNU Gatekeeper: Monitoring the Gatekeeper (Reference)</TITLE>
-+ <LINK HREF="manual-4.html" REL=previous>
-+ <LINK HREF="manual.html#toc5" REL=contents>
-+</HEAD>
-+<BODY>
-+Next
-+<A HREF="manual-4.html">Previous</A>
-+<A HREF="manual.html#toc5">Contents</A>
-+<HR>
-+<H2><A NAME="monitor"></A> <A NAME="s5">5.</A> <A HREF="manual.html#toc5">Monitoring the Gatekeeper (Reference)</A></H2>
-+
-+
-+<H2><A NAME="ss5.1">5.1</A> <A HREF="manual.html#toc5.1">Status Port</A>
-+</H2>
-+
-+<P>The status port is the external interface for monitoring and controlling the gatekeeper.
-+The gatekeeper will send out messages about ongoing calls to all
-+connected clients and it can receive commands via this interface.</P>
-+<P>The interface is a simple TCP port (default: 7000), you can connect to with telnet or another client. One example of a different client is the Java GUI, aka GkGUI.
-+Another example is the Automatic Call Distribution application, aka GnuGk ACD.</P>
-+
-+<H3>Application Areas</H3>
-+
-+<P>What you do with the powers of the Status Interface is up to you, but here are a few ideas:
-+<UL>
-+<LI>Call Monitoring</LI>
-+<LI>Monitoring the registered endpoints</LI>
-+<LI>Graphical User Interface
-+<BLOCKQUOTE>
-+See GkGUI.
-+</BLOCKQUOTE>
-+</LI>
-+<LI>Call Routing
-+<BLOCKQUOTE>
-+See GnuGk ACD.
-+</BLOCKQUOTE>
-+</LI>
-+<LI>Billing Applications
-+<BLOCKQUOTE>
-+Analyse the CDR messages and forward them to a billing application.
-+</BLOCKQUOTE>
-+</LI>
-+<LI>Interfacing external extensions
-+<BLOCKQUOTE>
-+If you don't want to publish the source code to additinal features, just publish the core functionality and interface to it through the status interface and keep the external part private.
-+</BLOCKQUOTE>
-+</LI>
-+</UL>
-+</P>
-+
-+<H3>Examples</H3>
-+
-+<P>Suppose you are just interested in the CDRs (call details records) and want to process them as a batch at regular intervals.</P>
-+<P>Here is a simple Perl script (<CODE>gnugk_cdr.pl</CODE>) that starts the gatekeeper and also forks a very simple client for the Status Interface and writes just the CDRs into a logfile. You'll have to modify it a little to fit your needs.</P>
-+<P>
-+<PRE>
-+#!/usr/bin/perl
-+# sample program that demonstrates how to write the CDRs to a log file
-+use strict;
-+use IO::Socket;
-+use IO::Handle;
-+
-+my $logfile = "/home/jan/cdr.log"; # CHANGE THIS
-+my $gk_host = "localhost";
-+my $gk_port = 7000;
-+my $gk_pid;
-+
-+if ($gk_pid = fork()) {
-+ # parent will listen to gatekeeper status
-+ sleep(1); # wait for gk to start
-+ my $sock = IO::Socket::INET->new(PeerAddr => $gk_host, PeerPort => $gk_port, Proto => 'tcp');
-+ if (!defined $sock) {
-+ die "Can't connect to gatekeeper at $gk_host:$gk_port";
-+ }
-+ $SIG{HUP} = sub { kill 1, $gk_pid; }; # pass HUP to gatekeeper
-+ $SIG{INT} = sub { close (CDRFILE); kill 2, $gk_pid; }; # close file when terminated
-+
-+ open (CDRFILE, ">>$logfile");
-+ CDRFILE->autoflush(1); # don't buffer output
-+ while (!$sock->eof()) {
-+ my $msg = $sock->getline();
-+ $msg = (split(/;/, $msg))[0]; # remove junk at end of line
-+ my $msgtype = (split(/\|/, $msg))[0];
-+ if ($msgtype eq "CDR") {
-+ print CDRFILE "$msg\n";
-+ }
-+ }
-+ close (CDRFILE);
-+} else {
-+ # child starts gatekeeper
-+ exec("gnugk");
-+}
-+</PRE>
-+</P>
-+<P>Keep in mind that this is just an example to show the usage of the status port.
-+You can use the FileAcct module to log CDRs in a production system.</P>
-+
-+<H3>GUI for the Gatekeeper</H3>
-+
-+<P>There are several Graphical User Interface (GUI) frontends for the gatekeeper.</P>
-+<P>
-+<UL>
-+<LI>Java GUI<P>Developed by Jan Willamowius.
-+You can monitor the registrations and calls that go through the gatekeeper.
-+A right-click on a button gives you a popup menu for that endpoint.</P>
-+<P>This GUI works with Java 1.0 built into most web browsers.
-+For security reasons the GUI must be run as a standalone application
-+or served by a web server on the same IP number as the gatekeeper
-+(you cannot run it as an applet via a local file).</P>
-+<P>The program is available at
-+<A HREF="http://www.gnugk.org/h323gui.html">http://www.gnugk.org/h323gui.html</A></P>
-+
-+</LI>
-+<LI>GkGUI<P>A new standalone Java program developed by
-+<A HREF="http://www.citron.com.tw/">Citron Network Inc.</A>
-+It requires Java 1.4. New features include:</P>
-+<P>
-+<UL>
-+<LI>Monitor multiple gatekeepers simultaneously.</LI>
-+<LI>Two view modes: Button List and Tree List.</LI>
-+<LI>Call Detail Record(CDR) and statistics.</LI>
-+<LI>GK Status Log.</LI>
-+<LI>Different colors for different endpoint types.</LI>
-+<LI>Modify gatekeeper configuration.</LI>
-+<LI>Forcedly unregister endpoints.</LI>
-+<LI>Save and print status log and CDR.</LI>
-+</UL>
-+</P>
-+<P>The GkGUI is released under GNU General Public License, available at
-+<A HREF="http://www.gnugk.org/h323develop.html#java">http://www.gnugk.org/h323develop.html#java</A></P>
-+</LI>
-+</UL>
-+</P>
-+
-+<H2><A NAME="ss5.2">5.2</A> <A HREF="manual.html#toc5.2">Commands (Reference)</A>
-+</H2>
-+
-+<P>This section lists all commands that you can isue to the status port (manually or with an external application). All commands are case-insensitive. But some parameters may be case-sensitive.</P>
-+<P>The command <CODE>help</CODE> or <CODE>h</CODE> will show you a list of all available commands.</P>
-+<P>
-+<UL>
-+<LI><CODE>Reload</CODE>
-+<P>Reload the configuration.</P>
-+
-+</LI>
-+<LI><CODE>Version</CODE>, <CODE>v</CODE>
-+<P>Show the version and OS information of the gatekeeper.</P>
-+
-+</LI>
-+<LI><CODE>Statistics</CODE>, <CODE>s</CODE>
-+<P>Show the statistics information of the gatekeeper.
-+<DL>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+Statistics
-+-- Endpoint Statistics --
-+Total Endpoints: 21 Terminals: 17 Gateways: 4 NATed: 2
-+Cached Endpoints: 1 Terminals: 1 Gateways: 0
-+-- Call Statistics --
-+Current Calls: 1 Active: 1 From Neighbor: 0 From Parent: 0
-+Total Calls: 1539 Successful: 1076 From Neighbor: 60 From Parent: 5
-+Startup: Fri, 21 Jun 2002 10:50:22 +0800 Running: 11 days 04:22:59
-+;
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+
-+</LI>
-+<LI><CODE>PrintAllRegistrations</CODE>, <CODE>r</CODE>, <CODE>?</CODE>
-+<P>Show all registered endpoints.
-+<DL>
-+<DT><B>Format:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+AllRegistrations
-+RCF|IP:Port|Aliases|Terminal_Type|EndpointID
-+...
-+Number of Endpoints: n
-+;
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+AllRegistrations
-+RCF|10.1.1.10:1720|800:dialedDigits=Wei:h323_ID|terminal|1289_endp
-+RCF|10.0.1.43:1720|613:dialedDigits=Jacky Tsai:h323_ID|terminal|1328_endp
-+RCF|10.0.1.55:1720|705:dialedDigits=Sherry Liu:h323_ID|terminal|1333_endp
-+Number of Endpoints: 3
-+;
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+
-+</LI>
-+<LI><CODE>PrintAllRegistrationsVerbose</CODE>, <CODE>rv</CODE>, <CODE>??</CODE>
-+<P>Show details of all registered endpoints.
-+<DL>
-+<DT><B>Format:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+AllRegistrations
-+RCF|IP:Port|Aliases|Terminal_Type|EndpointID
-+Registration_Time C(Active_Call/Connected_Call/Total_Call) <r>
-+[Prefixes: ##] (gateway only)
-+...
-+Number of Endpoints: n
-+;
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+AllRegistrations
-+RCF|10.0.1.8:1720|Accel-GW2:h323_ID|gateway|1322_endp
-+Wed, 26 Jun 2002 16:40:03 +0800 C(1/5/33) <1>
-+Prefixes: 09,002
-+RCF|10.1.1.10:1720|800:dialedDigits=Wei:h323_ID|terminal|1289_endp
-+Wed, 26 Jun 2002 16:40:55 +0800 C(0/32/39) <1>
-+RCF|10.0.1.66:1720|716:dialedDigits=Vicky:h323_ID|terminal|1425_endp
-+Wed, 26 Jun 2002 16:40:58 +0800 C(1/47/53) <1>
-+Number of Endpoints: 2
-+;
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+
-+</LI>
-+<LI><CODE>PrintCurrentCalls</CODE>, <CODE>c</CODE>, <CODE>!</CODE>
-+<P>Show all current calls using the same ACF syntax as in call establishment.
-+<DL>
-+<DT><B>Format:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+CurrentCalls
-+Call No. # | CallID | Call_Duration | Left_Time
-+Dialed_Number
-+ACF|Caller_IP:Port|Caller_EPID|CRV|DestinationInfo|SrcInfo|IsAnswered;
-+ACF|Callee_IP:Port|Callee_EPID|CRV|DestinationInfo|SrcInfo|IsAnswered;
-+...
-+Number of Calls: Current_Call Active: Active_Call From Neighbor: Call_From_Neighbor \
-+From Parent: Call_From_Parent
-+;
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+CurrentCalls
-+Call No. 29 | CallID bd c6 17 ff aa ea 18 10 85 95 44 45 53 54 77 77 | 109 | 491
-+Dial 0953378875:dialedDigits
-+ACF|10.0.1.49:1720|4048_CGK1|25263|frank:h323_ID|gunter:h323_ID|false;
-+ACF|10.1.1.1:1720|4037_CGK1|25263|gunter:h323_ID|frank:h323_ID|true;
-+Call No. 30 | CallID 70 0e dd c0 9a cf 11 5e 00 01 00 05 5d f9 28 4d | 37 | 563
-+Dial 0938736860:dialedDigits
-+ACF|10.0.1.48:1032|4041_CGK1|11896|sue:h323_ID|peter:h323_ID|false;
-+ACF|10.1.1.1:1720|4037_CGK1|11896|peter:h323_ID|sue:h323_ID|true;
-+Number of Calls: 2 Active: 2 From Neighbor: 0 From Parent: 0
-+;
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+
-+</LI>
-+<LI><CODE>PrintCurrentCallsVerbose</CODE>, <CODE>cv</CODE>, <CODE>!!</CODE>
-+<P>Show details of all current calls.
-+<DL>
-+<DT><B>Format:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+CurrentCalls
-+Call No. # | CallID | Call_Duration | Left_Time
-+Dialed_Number
-+ACF|Caller_IP:Port|Caller_EPID|CRV|DestinationInfo|SrcInfo|IsAnswered;
-+ACF|Callee_IP:Port|Callee_EPID|CRV|DestinationInfo|SrcInfo|IsAnswered;
-+# Caller_Aliases|Callee_Aliases|Bandwidth|Connected_Time <r>
-+...
-+Number of Calls: Current_Call Active: Active_Call From NB: Call_From_Neighbor
-+;
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+CurrentCalls
-+Call No. 48 | CallID 7d 5a f1 0a ad ea 18 10 89 16 00 50 fc 3f 0c f5 | 30 | 570
-+Dial 0225067272:dialedDigits
-+ACF|10.0.1.200:1720|1448_endp|19618|frank:h323_ID|gunter:h323_ID|false;
-+ACF|10.0.1.7:1720|1325_endp|19618|gunter:h323_ID|frank:h323_ID|true;
-+# Sherry:h323_ID|Accel-GW1:h323_ID|200000|Wed, 26 Jun 2002 17:29:55 +0800 <2>
-+Number of Calls: 1 Active: 1 From NB: 0
-+;
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+
-+</LI>
-+<LI><CODE>Find</CODE>, <CODE>f</CODE>
-+<P>Find a registered endpoint by an alias or a prefix.
-+<DL>
-+<DT><B>Format:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+Find Alias
-+RCF|IP:Port|Aliases|Terminal_Type|EndpointID
-+;
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+f 800
-+RCF|10.1.1.10:1720|800:dialedDigits=Wei:h323_ID|terminal|1289_endp
-+;
-+f 801
-+SoftPBX: alias 801 not found!
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+
-+</LI>
-+<LI><CODE>FindVerbose</CODE>, <CODE>fv</CODE>
-+<P>Find details of a registered endpoint by an alias or a prefix.
-+<DL>
-+<DT><B>Format:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+FindVerbose Alias
-+RCF|IP:Port|Aliases|Terminal_Type|EndpointID
-+Registration_Time C(Active_Call/Connected_Call/Total_Call) <r>
-+[Prefixes: ##] (gateway only)
-+;
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+fv 02
-+RCF|10.0.1.100:1720|TFN:h323_ID|gateway|4037_CGK1
-+Wed, 26 Jun 2002 17:47:29 +0800 C(0/84/120) <1>
-+Prefixes: 02,09
-+;
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+
-+</LI>
-+<LI><CODE>UnregisterIP</CODE>
-+<P>Forcedly unregister an endpoint by IP and call signalling port.
-+<DL>
-+<DT><B>Format:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+UnregisterIP IP[:Port]
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+UnregisterIP 10.0.1.31:1720
-+URQ|10.0.1.31:1032|1326_endp|maintenance;
-+SoftPBX: Endpoint 10.0.1.31:1720 unregistered!
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+
-+</LI>
-+<LI><CODE>UnregisterAlias</CODE>
-+<P>Forcedly unregister an endpoint by one of its aliases.
-+<DL>
-+<DT><B>Format:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+UnregisterAlias Alias
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+UnregisterAlias 601
-+URQ|10.0.1.31:1032|1326_endp|maintenance;
-+SoftPBX: Endpoint 601 unregistered!
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+
-+</LI>
-+<LI><CODE>UnregisterAllEndpoints</CODE>
-+<P>Forcedly unregister all registered endpoints.
-+<DL>
-+<DT><B>Format:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+UnregisterAllEndpoints
-+URQ|10.0.1.7:1024|1325_endp|maintenance;
-+URQ|10.0.1.8:1024|1322_endp|maintenance;
-+URQ|10.0.1.32:1032|1324_endp|maintenance;
-+URQ|10.0.1.36:1032|1323_endp|maintenance;
-+URQ|10.0.1.42:1032|1318_endp|maintenance;
-+Done
-+;
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+
-+</LI>
-+<LI><CODE>DisconnectCall</CODE>
-+<P>Disconnect a call with given number.
-+<DL>
-+<DT><B>Format:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+DisconnectCall Number
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+DisconnectCall 1533
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+
-+</LI>
-+<LI><CODE>DisconnectIP</CODE>
-+<P>Disconnect all calls of an endpoint by IP and call signalling port.
-+<DL>
-+<DT><B>Format:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+DisconnectIP IP[:Port]
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+DisconnectIP 10.0.1.31:1720
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+
-+</LI>
-+<LI><CODE>DisconnectAlias</CODE>
-+<P>Disconnect all calls of an endpoint by one of its aliases.
-+<DL>
-+<DT><B>Format:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+DisconnectAlias Alias
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+DisconnectAlias 601
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+
-+</LI>
-+<LI><CODE>ClearCalls</CODE>
-+<P>Disconnect all calls on the gatekeeper.</P>
-+
-+</LI>
-+<LI><CODE>GK</CODE>
-+<P>Show the information of the parent gatekeeper.</P>
-+
-+</LI>
-+<LI><CODE>Debug</CODE>
-+<P>Only used for debug purpose. Options:
-+<UL>
-+<LI><CODE>trc [+|-|n]</CODE>
-+<P>Show/modify trace level.</P>
-+</LI>
-+<LI><CODE>cfg SEC PAR</CODE>
-+<P>Read and print a config parameter in a section.</P>
-+</LI>
-+<LI><CODE>set SEC PAR VAL</CODE>
-+<P>Write a config value parameter in a section.</P>
-+</LI>
-+<LI><CODE>remove SEC PAR</CODE>
-+<P>Remove a config value parameter in a section.</P>
-+</LI>
-+<LI><CODE>remove SEC</CODE>
-+<P>Remove a section.</P>
-+</LI>
-+<LI><CODE>printrm VERBOSE</CODE>
-+<P>Print all removed endpoint records.</P>
-+</LI>
-+</UL>
-+
-+<DL>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+debug trc 3
-+debug set RoutedMode H245Routed 1
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+
-+</LI>
-+<LI><CODE>Who</CODE>
-+<P>Show all people on the status port.</P>
-+
-+</LI>
-+<LI><CODE>RouteReject</CODE>
-+<P>Terminate this call on a virtual queue.
-+This command is used as a response to a RouteRequest event (see below).
-+<DL>
-+<DT><B>Format:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+RouteReject CallingEndpointID CallRef
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+RouteReject endp_4711 1234
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+
-+</LI>
-+<LI><CODE>RouteToAlias</CODE>, <CODE>rta</CODE>
-+<P>Route this call on a virtual queue to the specified alias.
-+This command is used as a response to a RouteRequest event (see below).
-+<DL>
-+<DT><B>Format:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+RouteToAlias Alias CallingEndpointID CallRef
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+RouteToAlias Suzi endp_4711 1234
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+
-+</LI>
-+<LI><CODE>Exit</CODE>, <CODE>q</CODE>
-+<P>Quit the status port.</P>
-+
-+</LI>
-+<LI><CODE>TransferCall</CODE>
-+<P>Transfer an established call from alias A to alias B. When before alias A is talking with alias X, then alias A is talking with alias B after the TransferCall.</P>
-+<P>Currently this works only with endpoints that properly support
-+Q.931 Facility messages (so it doesn't work with Netmeeting).
-+<DL>
-+<DT><B>Format:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+TransferCall Source-Alias New-Destination-Alias
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+<DT><B>Example:</B><DD><P>
-+<BLOCKQUOTE><CODE>
-+<PRE>
-+TransferCall Frank Peter
-+</PRE>
-+</CODE></BLOCKQUOTE>
-+</P>
-+</DL>
-+</P>
-+
-+</LI>
-+</UL>
-+</P>
-+
-+<H2><A NAME="ss5.3">5.3</A> <A HREF="manual.html#toc5.3">Messages (Reference)</A>
-+</H2>
-+
-+<P>The section describes the messages output to the status interface.</P>
-+<P>
-+<UL>
-+<LI><CODE>GCF|IP|Aliases|Endpoint_Type;</CODE>
-+<P>The gatekeeper receives a GatekeeperRequest (GRQ) and responds with
-+a GatekeeperConfirm (GCF).</P>
-+
-+</LI>
-+<LI><CODE>GRJ|IP|Aliases|Endpoint_Type|RejectReason;</CODE>
-+<P>The gatekeeper receives a GatekeeperRequest (GRQ) and responds with
-+a GatekeeperReject (GRJ).</P>
-+
-+</LI>
-+<LI><CODE>RCF|IP:Port|Aliases|Endpoint_Type|EndpointID;</CODE>
-+<P>The gatekeeper receives a RegistrationRequest (RRQ) and responds with
-+a RegistrationConfirm (RCF).</P>
-+
-+</LI>
-+<LI><CODE>RRJ|IP|Aliases|Endpoint_Type|RejectReason;</CODE>
-+<P>The gatekeeper receives a RegistrationRequest (RRQ) and responds with
-+a RegistrationReject (RRJ).</P>
-+
-+</LI>
-+<LI><CODE>ACF|Caller_IP:Port|Caller_EndpointID|CRV|DestinationInfo|SrcInfo|IsAnswered;</CODE>
-+<P>The gatekeeper receives an AdmissionRequest (ARQ) and responds with
-+an AdmissionConfirm (ACF).</P>
-+
-+</LI>
-+<LI><CODE>ARJ|Caller_IP:Port|DestinationInfo|SrcInfo|IsAnswered|RejectReason;</CODE>
-+<P>The gatekeeper receives an AdmissionRequest (ARQ) and responds with
-+an AdmissionReject (ARJ).</P>
-+
-+</LI>
-+<LI><CODE>DCF|IP|EndpointID|CRV|DisengageReason;</CODE>
-+<P>The gatekeeper receives a DisengageRequest (DRQ) and responds with
-+a DisengageConfirm (DCF).</P>
-+
-+</LI>
-+<LI><CODE>DRJ|IP|EndpointID|CRV|RejectReason;</CODE>
-+<P>The gatekeeper receives a DisengageRequest (DRQ) and responds with
-+a DisengageReject (DRJ).</P>
-+
-+</LI>
-+<LI><CODE>LCF|IP|EndpointID|DestinationInfo|SrcInfo;</CODE>
-+<P>The gatekeeper receives a LocationRequest (LRQ) and responds with
-+a LocationConfirm (LCF).</P>
-+
-+</LI>
-+<LI><CODE>LRJ|IP|DestinationInfo|SrcInfo|RejectReason;</CODE>
-+<P>The gatekeeper receives a LocationRequest (LRQ) and responds with
-+a LocationReject (LRJ).</P>
-+
-+</LI>
-+<LI><CODE>BCF|IP|EndpointID|Bandwidth;</CODE>
-+<P>The gatekeeper receives a BandwidthRequest (BRQ) and responds with
-+a BandwidthConfirm (BCF).</P>
-+
-+</LI>
-+<LI><CODE>BRJ|IP|EndpointID|Bandwidth|RejectReason;</CODE>
-+<P>The gatekeeper receives a BandwidthRequest (BRQ) and responds with
-+a BandwidthReject (BRJ).</P>
-+
-+</LI>
-+<LI><CODE>UCF|IP|EndpointID;</CODE>
-+<P>The gatekeeper receives an UnregistrationRequest (URQ) and responds with
-+an UnregistrationConfirm (UCF).</P>
-+
-+</LI>
-+<LI><CODE>URJ|IP|EndpointID|RejectReason;</CODE>
-+<P>The gatekeeper receives an UnregistrationRequest (URQ) and responds with
-+an UnregistrationReject (URJ).</P>
-+
-+</LI>
-+<LI><CODE>IRQ|IP:Port|EndpointID;</CODE>
-+<P>The gatekeeper sends an InfoRequest (IRQ) to an endpoint to query if it
-+is still alive. The endpoint shall respond with an InfoRequestResponse (IRR)
-+immediately.</P>
-+
-+</LI>
-+<LI><CODE>URQ|IP:Port|EndpointID|Reason;</CODE>
-+<P>The gatekeeper sends an UnregistrationRequest (URQ) to an endpoint to
-+cancel its registration. The endpoint shall respond with
-+an UnregistrationConfirm (UCF).</P>
-+
-+</LI>
-+<LI><CODE>CDR|CallNo|CallId|Duration|Starttime|Endtime|CallerIP|CallerEndId|</CODE> \<BR>
-+<CODE>CalledIP|CalledEndId|DestinationInfo|SrcInfo|GatekeeperID;</CODE>
-+<P>After a call disconnected, the call detail record is shown (in one line).</P>
-+
-+</LI>
-+<LI><CODE>RouteRequest|CallerIP:Port|CallerEndpointId|CallRef|VirtualQueue|CallerAlias;</CODE>
-+<P>Request for an external application to route an incomming call on a virtual queue.
-+This can be done with a RouteToAlias or RouteReject command.</P>
-+
-+</LI>
-+</UL>
-+</P>
-+
-+
-+<HR>
-+Next
-+<A HREF="manual-4.html">Previous</A>
-+<A HREF="manual.html#toc5">Contents</A>
-+</BODY>
-+</HTML>
Deleted: gnugk/trunk/debian/patches/02_gcc4.1.dpatch
===================================================================
--- gnugk/trunk/debian/patches/02_gcc4.1.dpatch 2006-12-19 22:01:32 UTC (rev 2825)
+++ gnugk/trunk/debian/patches/02_gcc4.1.dpatch 2006-12-20 09:23:49 UTC (rev 2826)
@@ -1,19 +0,0 @@
-#! /bin/sh /usr/share/dpatch/dpatch-run
-## 02_gcc4.1.dpatch by Kilian Krause <kilian at debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Fix compilation with gcc 4.1
-
- at DPATCH@
-diff -urNad gnugk-2.2.3-2/yasocket.h /tmp/dpep.FJnP1N/gnugk-2.2.3-2/yasocket.h
---- gnugk-2.2.3-2/yasocket.h 2006-03-30 13:46:08.000000000 +0300
-+++ /tmp/dpep.FJnP1N/gnugk-2.2.3-2/yasocket.h 2006-03-30 13:46:52.000000000 +0300
-@@ -412,7 +412,7 @@
- PCLASSINFO ( TCPListenSocket, TCPSocket )
- #endif
- public:
-- TCPListenSocket::TCPListenSocket(int seconds = 0);
-+ TCPListenSocket(int seconds = 0);
- ~TCPListenSocket();
-
- bool IsTimeout(const PTime *) const;
Deleted: gnugk/trunk/debian/patches/05_makefile.dpatch
===================================================================
--- gnugk/trunk/debian/patches/05_makefile.dpatch 2006-12-19 22:01:32 UTC (rev 2825)
+++ gnugk/trunk/debian/patches/05_makefile.dpatch 2006-12-20 09:23:49 UTC (rev 2826)
@@ -1,56 +0,0 @@
-#! /bin/sh -e
-## 05_makefile.dpatch by Jose Carlos Garcia Sogo <jsogo at debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: No description.
-
-if [ $# -lt 1 ]; then
- echo "`basename $0`: script expects -patch|-unpatch as argument" >&2
- exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}"
-
-case "$1" in
- -patch) patch -p1 ${patch_opts} < $0;;
- -unpatch) patch -R -p1 ${patch_opts} < $0;;
- *)
- echo "`basename $0`: script expects -patch|-unpatch as argument" >&2
- exit 1;;
-esac
-
-exit 0
-
- at DPATCH@
-diff -urNad gnugk-2.2.1/Makefile.in /tmp/dpep.81TNCa/gnugk-2.2.1/Makefile.in
---- gnugk-2.2.1/Makefile.in 2004-08-06 15:44:10.000000000 +0200
-+++ /tmp/dpep.81TNCa/gnugk-2.2.1/Makefile.in 2005-03-13 11:44:09.901078676 +0100
-@@ -104,6 +104,8 @@
- # GK version infomation
- STDCCFLAGS += -DMAJOR_VERSION=@GNUGK_MAJOR_VERSION@ -DMINOR_VERSION=@GNUGK_MINOR_VERSION@ -DBUILD_NUMBER=@GNUGK_BUILD_NUMBER@
-
-+OPTCCFLAGS = -O2
-+
- # special dependency to ensure version.cxx is rebuilt each time gnugk is recompiled
- # so the proper build timestamp is included
- versionts.h: $(subst version.cxx,,$(SOURCES)) $(HEADERS) $(OH323_LIBDIR)/$(OH323_FILE) $(PW_LIBDIR)/$(PTLIB_FILE)
-@@ -118,6 +120,18 @@
- which bg5sgml2html > /dev/null 2>&1 && \
- bg5sgml2html manual-zh.sgml || true
-
-+
-+clean::
-+ rm -f $(OBJDIR)/addpasswd $(OBJDIR)/addpasswd.o
-+ rm -f docs/manual.html
-+ rm -fR ldap/lib
-+
-+install: install-addpasswd
-+
-+install-addpasswd: addpasswd
-+ $(INSTALL) $(OBJDIR)/addpasswd $(INSTALLBIN_DIR)
-+
-+
- #
- # By this command the build number may be incremented
- #
Modified: gnugk/trunk/debian/rules
===================================================================
--- gnugk/trunk/debian/rules 2006-12-19 22:01:32 UTC (rev 2825)
+++ gnugk/trunk/debian/rules 2006-12-20 09:23:49 UTC (rev 2826)
@@ -37,10 +37,6 @@
config.status: patch-stamp
dh_testdir
- # Add here commands to configure the package.
- #
- #REALLY REALLY REALLY UGLY HACK TO NOT RUN AUTOCONF
- touch configure
./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
--prefix=/usr \
--mandir=\$${prefix}/share/man \
@@ -49,22 +45,15 @@
build: config.status
dh_testdir
-
- # Add here commands to compile the package.
$(MAKE) opt addpasswd doc
-
touch build-stamp
clean: unpatch
dh_testdir
dh_testroot
- rm -f build-stamp config.status
-
- # Add here commands to clean up after the build process.
-$(MAKE) clean
- -rm -f Makefile config.* addpasswd.1 \
- obj*/addpasswd* docs/manual*html
-
+ -rm -f Makefile
+ rm -f build-stamp config.status
dh_clean
install: build
@@ -72,16 +61,16 @@
dh_testroot
dh_clean -k
dh_installdirs
-
- # Add here commands to install the package into debian/gnugk.
$(MAKE) install DESTDIR=$(CURDIR)/debian/gnugk \
INSTALL_DIR=$(CURDIR)/debian/gnugk/usr \
INSTALLBIN_DIR=$(CURDIR)/debian/gnugk/usr/sbin
cp obj*/addpasswd $(CURDIR)/debian/gnugk/usr/sbin
-
+ # HACK: workaround broken install till next release.
+ rm -f $(CURDIR)/debian/gnugk/usr/share/doc/gnugk/manual/.cvsignore
+
/usr/bin/help2man -N -n 'OpenH323 Gatekeeper' -s 1 \
-S 'Debian GNU/Linux' obj*/addpasswd -o addpasswd.1
-
+
install --mode=640 --owner=root --group=root etc/complete.ini debian/gnugk/etc/gatekeeper.ini
More information about the Pkg-voip-commits
mailing list