[Pkg-voip-commits] r1351 - in ser/trunk: . debian
Mark Purcell
msp at costa.debian.org
Sun Feb 26 17:43:33 UTC 2006
Author: msp
Date: 2006-02-26 17:43:32 +0000 (Sun, 26 Feb 2006)
New Revision: 1351
Removed:
ser/trunk/AUTHORS
ser/trunk/COPYING
ser/trunk/CREDITS
ser/trunk/CVS/
ser/trunk/ChangeLog
ser/trunk/INSTALL
ser/trunk/ISSUES
ser/trunk/Makefile
ser/trunk/Makefile.defs
ser/trunk/Makefile.modules
ser/trunk/Makefile.radius
ser/trunk/Makefile.rules
ser/trunk/Makefile.sources
ser/trunk/NEWS
ser/trunk/README
ser/trunk/README-MODULES
ser/trunk/README.cfg
ser/trunk/TODO
ser/trunk/action.c
ser/trunk/action.h
ser/trunk/ccopts.sh
ser/trunk/ccver.sh
ser/trunk/cfg.lex
ser/trunk/cfg.y
ser/trunk/comp_defs.h
ser/trunk/config.h
ser/trunk/crc.c
ser/trunk/crc.h
ser/trunk/daemonize.c
ser/trunk/daemonize.h
ser/trunk/data_lump.c
ser/trunk/data_lump.h
ser/trunk/data_lump_rpl.c
ser/trunk/data_lump_rpl.h
ser/trunk/db/
ser/trunk/doc/
ser/trunk/dprint.c
ser/trunk/dprint.h
ser/trunk/dset.c
ser/trunk/dset.h
ser/trunk/error.c
ser/trunk/error.h
ser/trunk/etc/
ser/trunk/examples/
ser/trunk/fastlock.h
ser/trunk/fifo_server.c
ser/trunk/fifo_server.h
ser/trunk/flags.c
ser/trunk/flags.h
ser/trunk/forward.c
ser/trunk/forward.h
ser/trunk/freebsd/
ser/trunk/gentoo/
ser/trunk/globals.h
ser/trunk/hash_func.c
ser/trunk/hash_func.h
ser/trunk/ip_addr.c
ser/trunk/ip_addr.h
ser/trunk/lock_alloc.h
ser/trunk/lock_ops.h
ser/trunk/locking.h
ser/trunk/lump_struct.h
ser/trunk/main.c
ser/trunk/md5.c
ser/trunk/md5.h
ser/trunk/md5global.h
ser/trunk/md5utils.c
ser/trunk/md5utils.h
ser/trunk/mem/
ser/trunk/mod_fix.h
ser/trunk/modparam.c
ser/trunk/modparam.h
ser/trunk/modules/
ser/trunk/msg_translator.c
ser/trunk/msg_translator.h
ser/trunk/name_alias.h
ser/trunk/netbsd/
ser/trunk/openbsd/
ser/trunk/parser/
ser/trunk/pass_fd.c
ser/trunk/pass_fd.h
ser/trunk/profile/
ser/trunk/proxy.c
ser/trunk/proxy.h
ser/trunk/pt.h
ser/trunk/qvalue.c
ser/trunk/qvalue.h
ser/trunk/re.c
ser/trunk/re.h
ser/trunk/receive.c
ser/trunk/receive.h
ser/trunk/resolve.c
ser/trunk/resolve.h
ser/trunk/route.c
ser/trunk/route.h
ser/trunk/route_struct.c
ser/trunk/route_struct.h
ser/trunk/rpm/
ser/trunk/script_cb.c
ser/trunk/script_cb.h
ser/trunk/scripts/
ser/trunk/ser.8
ser/trunk/ser.cfg.5
ser/trunk/socket_info.c
ser/trunk/socket_info.h
ser/trunk/solaris/
ser/trunk/sr_module.c
ser/trunk/sr_module.h
ser/trunk/stats.c
ser/trunk/stats.h
ser/trunk/str.h
ser/trunk/tags
ser/trunk/tags.h
ser/trunk/tcp_conn.h
ser/trunk/tcp_init.h
ser/trunk/tcp_main.c
ser/trunk/tcp_read.c
ser/trunk/tcp_server.h
ser/trunk/test/
ser/trunk/timer.c
ser/trunk/timer.h
ser/trunk/tmp/
ser/trunk/trim.h
ser/trunk/tsend.c
ser/trunk/tsend.h
ser/trunk/types.h
ser/trunk/udp_server.c
ser/trunk/udp_server.h
ser/trunk/unixsock_server.c
ser/trunk/unixsock_server.h
ser/trunk/usr_avp.c
ser/trunk/usr_avp.h
ser/trunk/ut.h
ser/trunk/utils/
ser/trunk/version.h
Modified:
ser/trunk/debian/changelog
ser/trunk/debian/control
Log:
* Welcome to pkg-voip-maintainers
Deleted: ser/trunk/AUTHORS
===================================================================
--- ser/trunk/AUTHORS 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/AUTHORS 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,94 +0,0 @@
-# $Id: AUTHORS,v 1.13 2004/12/16 17:39:46 andrei Exp $
-# The format of this file was inspired by the Linux kernel CREDITS file.
-#
-# Authors and contributors are listed alphabetically (first name).
-#
-# The fields are: name (N), email (E), web-address (W), CVS account login (C),
-# PGP key ID and fingerprint (P), description (D), and snail-mail address (S).
-
-N: Andrei Pelinescu - Onciul
-C: andrei
-E: pelinescu-onciul at fokus.fraunhofer.de
-P: 2CF56A2D D96D 8B80 BA31 9B93 6208 5D68 3910 FA00 2CF5 6A2D
-D:
-
-N: Bogdan Andrei Iancu
-C: bogdan
-E:
-D:
-
-N: Daniel-Constantin Mierla
-C: dcm
-E: mierla at fokus.fraunhofer.de
-D:
-
-N: Gabriel Vasile
-C: gabriel
-E:
-D:
-
-N: Greg Fausak
-C: lgfausak
-E:
-D:
-
-N: Jan Janak
-C: janakj
-E: jan at iptel.org
-W: http://iptel.org/~janakj
-P: F8190A31 FCC0 3F4A 1ACB 84C2 505C 573E CC03 B08E F819 0A31
-D:
-
-N: Jamey Hicks
-C: jamey
-E:
-D:
-
-
-N: Jiri Kuthan
-C: jiri
-E:
-D:
-
-N: Juha Heinanen
-C: jih
-E: jh at song.fi
-W: http://lohi.eng.song.fi
-D:
-
-N: Maxim Sobolev
-C: sobomax
-E:
-D:
-
-N: Miklos Tirpak
-C: tirpi
-E:
-D:
-
-N: Nils Ohlmeier
-C: calrissian, noh
-E: nils at iptel.org
-W: http://www.ohlmeier.org
-P: BAD6CA40 B5E7 4FB0 800F 0A2C E3E9 4073 C7C3 F275 BAD6 CA40
-D:
-
-N: Ramona-Elena Modroiu
-C: ramona
-E:
-D:
-
-N: Raphael Coeffic
-C: rco
-E: raphael.coeffic at gmx.de
-
-N: Ricardo Baratto
-C: ric
-E:
-D:
-
-N: Stelios Sidiroglou-Douskos
-C: ssi
-E:
-D:
-
Deleted: ser/trunk/COPYING
===================================================================
--- ser/trunk/COPYING 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/COPYING 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,320 +0,0 @@
-
--------------------------------------------------------------------------
-IMPORTANT NOTES
-
-1) The GPL applies to this copy of SIP Express Router software (ser).
- For a license to use the ser software under conditions
- other than those described here, or to purchase support for this
- software, please contact iptel.org by e-mail at the following addresses:
-
- info at iptel.org
-
- (see http://www.gnu.org/copyleft/gpl-faq.html#TOCHeardOtherLicense
- for an explanation how parallel licenses comply with GPL)
-
-2) ser software allows programmers to plug-in external modules to the
- core part. Note that GPL mandates all plug-ins developed for the
- ser software released under GPL license to be GPL-ed as well.
-
- (see http://www.gnu.org/copyleft/gpl-faq.html#GPLAndPlugins
- for a detailed explanation)
-
-3) Note that the GPL bellow is copyrighted by the Free Software Foundation,
- but the ser software is copyrighted by FhG
-
--------------------------------------------------------------------------
-
-GNU Licence FAQ
-
-This FAQ provides answers to most frequently asked questions. To fully
-understand implications of the GNU license, read it.
-
-- you can run SER for any purpose
-- you can redistribute it as long as you include source code and
- license conditions with the distribution
-- you cannot release programs derived from SER without releasing
- their source code
-
-
--------------------------------------------------------------------------
-
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
Deleted: ser/trunk/CREDITS
===================================================================
--- ser/trunk/CREDITS 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/CREDITS 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,36 +0,0 @@
-Current ser core team in alphabetical order as of 23 November 2004:
-
-Andrei Pelinescu - Onciul
-Bogdan Andrei Iancu
-Daniel-Constantin Mierla
-Jan Janak
-Jiri Kuthan
-
-
-Contributors:
-
-Adrian Georgescu
-Dan Pascu
-Greg Fausak
-Jamey Hicks
-Juha Heinanen
-Maxim Sobolev
-Miklos Tirpak
-Nils Ohlmeier
-Ramona-Elena Modroiu
-Raphael Coeffic
-
-
-Emeritus contributors (old ser contributors now off doing other things):
-
-Gabriel Vasile
-Ricardo Baratto
-Stelios Sidiroglou-Douskos
-
-
-Outstanding email support (ser users which helped a lot other people on
- ser's mailing lists):
-
-Java Rockx
-Klaus Darilion
-Zeus Ng
Deleted: ser/trunk/ChangeLog
===================================================================
--- ser/trunk/ChangeLog 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/ChangeLog 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,82 +0,0 @@
-================================= Release 0.9.6 ==============================
-
-2006-01-11 Jan Janak <jan at iptel.org>
-
- * debian: Fixed config file checking in debian start script
-
- * tm: Added missing diversion header to SIP message cloner,
- this caused crash in diversion module, reported by Adrian
- Georgescu and Dan Pascu
-
-================================= Release 0.9.5 ==============================
-
-2005-12-14 Andrei Pelinescu-Onciul <andrei at iptel.org>
-
- * core: malloc real_used/initial size accounting fixes (*realloc
- shrink accounting fix; initial size does not contain the
- overhead anymore)
- DBG_F_MALLOC typo and warning fixes
-
-2005-12-06 Michal Matyska <michal at iptel.org>
-
- * nathelper: Documentation of nat_uac_test had switched
- descriptions of tests for flags 1 and 2.
-
-2005-12-06 Andrei Pelinescu-Onciul <andrei at iptel.org>
-
- * tm: insert_timer used to eat too much cpu, decreasing dramatically
- the performance if lots of calls per second are made (unstable
- test results: ~1500 cps w/o the bugfix and ~6000 with the bug fix)
-
-2005-12-06 Andrei Pelinescu-Onciul <andrei at iptel.org>
-
- * core: fixed statements in ifs w/o {}
- (now if (cond) a(); else b(); should work)
- fixed debug config printing
-
-2005-12-05 Jan Janak <jan at iptel.org>
-
- * tm: fixed misplaced set_avp list, courtesy of
- cesc.santa at gmail.com
-
-2005-12-02 Andrei Pelinescu-Onciul <andrei at iptel.org>
-
- * makefiles: backport from unstable gcc version number
- detections -- fixes gentoo gcc version detection
- (thanks to Dennis Kisilyov) (closes SER-81)
-
-2005-11-29 Andrei Pelinescu-Onciul <andrei at iptel.org>
-
- * core: int2reverse_hex/reverse_hex2int fixes
- (tm with large "labels" was affected by it)
-
-2005-11-29 Jan Janak <jan at iptel.org>
-
- * tm: Fixed local ACK matching, courtesy of
- cesc.santa at gmail.com
-
-2005-11-21 Jan Janak <jan at iptel.org>
-
- * domain: Fixed hash problem (was not case-insensitive)
- reported and patch provided by
- Axel Böger <Axel.Boeger at freenet-ag.de>
-
-2005-11-01 Jan Janak <jan at iptel.org>
-
- * domain: Free memory allocated for hash table entry in case
- of failure
-
-2005-10-04 Jan Janak <jan at iptel.org>
-
- * tm: timer avp race condition fix backported from head
- * registrar: Race condition in registered function fixed (SER-79)
-
-2005-09-29 Jan Janak <jan at iptel.org>
-
- * usrloc: Missing unlock_udomain added (SER-75)
-
-2005-09-05 Jan Janak <jan at iptel.org>
-
- * tm: bugfix - terminate timers when canceling a transaction
-
-================================= Release 0.9.4 ==============================
Deleted: ser/trunk/INSTALL
===================================================================
--- ser/trunk/INSTALL 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/INSTALL 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,496 +0,0 @@
-$Id: INSTALL,v 1.40.2.1 2005/09/12 06:09:49 andrei Exp $
-
-
- ===========================================
-
- SIP Express Router (ser) Installation Notes
-
- http://www.iptel.org/ser/
-
- ===========================================
-
- This memo gives you hints how to set up SER quickly. To
- understand how SER works and how to configure it properly,
- read admin's guide available from SER website. We also
- urge you to read latest ISSUES (available from SER website
- too) and check for potential problems in this release.
- Users of previous releases are encouraged to read NEWS to
- learn how to move to this new SER version.
-
-
-TOC
-
-1. Supported Architectures and Requirements
-2. Howto Build ser From Source Distribution
-3. Quick-Start Installation Guide
- A) Getting Help
- B) Disclaimers
- C) Quick Start
- D) ser with Persistent Data Storage
-4. Troubleshooting
-
-
-
-1. Supported Architectures and Requirements
--------------------------------------------
-
-Supported operating systems: Linux, FreeBSD, NetBSD, OpenBSD, Solaris, Darwin
-Supported architectures: i386, x86_64 (amd64), armv4l, sparc64, powerpc,
- powerpc64
-Experimental architectures: mips1, mips2, sparc32, alpha
-
-(for other architectures the Makefiles might need to be edited)
-
-There are various configuration options defined in the Makefile.
-
-
-Requirements:
-
-- gcc or icc : gcc >= 2.9x; 3.[12] recommended (it will work with older version
- but it might require some options tweaking for best performance)
-- bison or yacc (Berkley yacc)
-- flex
-- GNU make (on Linux this is the standard "make", on *BSD and Solaris is
- called "gmake") version >= 3.79.
-- sed and tr (used in the makefiles)
-- GNU tar ("gtar" on Solaris) and gzip if you want "make tar" to work
-- GNU install, BSD install or Solaris install if you want "make
- install", "make bin", "make sunpkg" to work
-- libmysqlclient & libz (zlib) if you want mysql support (the mysql module)
-- libexpat if you want the jabber gateway support (the jabber module)
-- libxml2 if you want to compile the cpl-c (CPL support) or pa (presence)
-modules
-- libradiusclient-ng (> 5.0) if you need radius support (the auth_radius,
-group_radius, uri_radius and avp_radius modules)
-- libpq if you need postgres support (the postgres module)
-
-
-OS Notes:
-
- FreeBSD/OpenBSD/NetBSD: make sure gmake, bison or yacc & flex are installed.
-
- FreeBSD 5.4:
-
- If you want to compile all the modules, you will need the following packages:
- - mysql-client-* (any version, install one of the mysql*-client ports) for
- libmysqlclient
- - postgresql-libpqxx-2.4.2_1 (/usr/ports/databases/postgresql-libpqxx) for
- libpq
- - expat-1.95.8 (/usr/ports/textproc/expat2) for libexpat
- - libxml2-2.6.18 (/usr/ports/textproc/libxml2) for libxml2
- - radiusclient-0.4.7 (/usr/ports/net/radiusclient) for libradiusclient-ng
- NOTE: you'll need to add radiusclient_ng=4 to the gmake command line if you
- use the 0.4.* version.
-
- Compile example (all the modules and ser in a tar.gz):
- gmake bin radiusclient_ng=4 include_modules="mysql jabber cpl-c auth_radius group_radius uri_radius postgres pa"
-
- OpenBSD 3.7
- - mysql-client-4.0.23 (/usr/ports/databases/mysql) for libmysqlclient
- - expat-1.95.6 (/usr/ports/textproc/expat) for libexpat
- - libxml-2.6.16p0 (/usr/ports/textproc/libxml) for libxml2
- - radiusclient-ng-0.5.1 from
- http://download.berlios.de/radiusclient-ng/radiusclient-ng-0.5.1.tar.gz
- (you need to download and install it, since there is no "official"
- openbsd port for it) for libradiusclient-ng
- Compile example (all the modules and ser in a tar.gz):
- gmake bin include_modules="mysql jabber cpl-c auth_radius group_radius uri_radius pa"
-
- NetBSD 2.0
- - mysql-client-4.1.12 (/usr/pkgsrc/databases/mysql4-client) for libmysqlclient
- - expat-1.95.8nb2 (/usr/pkgsrc/textproc/expat) for libexpat
- - libxml2-2.6.19 (/usr/pkgsrc/textproc/libxml2) for libxml2
- - radiusclient-ng-0.5.1 (see OpenBSD)
-
- Compile example (all the modules and ser in a tar.gz):
- gmake bin include_modules="mysql jabber cpl-c auth_radius group_radius uri_radius pa"
-
- Solaris 10
-
- As above; you can use Solaris's yacc instead of bison. You might
- need also gtar and ginstall. If you don't have ginstall you can use Solaris
- install, just make sure it's in the PATH (it's usually in /usr/sbin) and
- add INSTALL=install either to the environment or to the make command line
- (e.g.: gmake INSTALL=install all).
-
- Needed packages:
- [TODO]
-
- Compile example (all the modules and ser in a tar.gz):
- gmake bin INSTALL=install include_modules="mysql jabber cpl-c auth_radius group_radius uri_radius postgres pa"
-
- Linux
-
- Needed packages for compiling all the modules:
- Debian:
- - libmysqlclient-dev for libmysqlclient
- - libpq-dev for libpq
- - libexpat1-dev for libexpat
- - libxml2-dev for libxml2
- - libradiusclient-ng-dev for libradiusclient (you can download the
- package from http://apt.sip-router.org/debian/dists/unstable/main/binary-i386/libradiusclient-ng-dev_0.5.1-0.5_i386.deb ).
- NOTE: you can get up-to-date ser packages or libradiusclient packages
- from http://apt.sip-router.org: add to your /etc/apt/sources.list the
- following lines:
- deb http://apt.sip-router.org/debian testing main contrib non-free
- deb http://apt.sip-router.org/debian unstable main contrib non-free
- and then: apt-get update; apt-get install libradiusclient-ng-dev
- (or, if you want to use the pre-built modules:
- apt-get install ser ser-cpl-module ser-jabber-module ser-mysq-module ser-pa-module ser-postgres-module ser-radius-modules )
-
-
- Compile example (all the modules and ser in a tar.gz):
- make bin include_modules="mysql jabber cpl-c auth_radius group_radius uri_radius postgres pa"
-
-
-2. Howto Build ser From Source Distribution
--------------------------------------------
-
-
-(NOTE: if make doesn't work try gmake instead)
-
-- compile with default options:
-
-make #builds only ser core, equivalent to make ser
-make modules
-
-or make all #builds everything
-
-By default make all will not build modules that require external libraries or
-that are considered to be "experimental". The modules that have external
-dependecies are: mysql, jabber, cpl-c, auth_radius, group_radius, uri_radius,
-avp_radius, postgres, pa.
-To build all of them (provided you have all the required libraries installed)
-use:
- make all include_modules="mysql jabber cpl-c auth_radius group_radius uri_radius avp_radius postgres pa"
-If you want to install or to build a binary package (a tar.gz with ser and
- the modules), substitute "all" in the above command with "install" or "bin".
-
-
-More compile examples:
-
-- compile with profiling
-
-make PROFILE=-pg all
-
--compile debug mode version
-
-make mode=debug all
-
--compile debug version with profiling
-
-make mode=debug PROFILE=-pg all
-
--compile only the print module
-
-make modules=modules/print modules
-
--compile all the "default" modules except textops and vm
-
-make skip_modules="textops vm" modules
-
--compile all default modules and include uri_radius (not compiled by default):
-
-make include_modules="uri_radius" modules
-
--compile all the modules from the modules subdirectory (even the one excluded
-by default):
-
-make exclude_modules="" modules
-
--compile all the modules from the modules subdirectory excluding vm:
-
-make exclude_modules=vm modules
-
-or
-
-make exclude_modules="" skip_modules=vm modules
-
-
--compile with the "tm" module statically linked and with profiling
-
-make static_modules=tm PROFILE=-pg all
-
--compile with gcc-3.2 instead of gcc
-
-make CC=gcc-3.2 all
-
-or
-
-CC=gcc-3.2 make all
-
-
-
-Make targets:
-
-Clean:
-
-make clean (clean the modules too)
-make proper (clean also the dependencies)
-make distclean (the same as proper)
-make mantainer-clean (clean everything, including auto generated files,
- tags, *.dbg a.s.o)
-
-Compile:
-
-make proper
-make
-(or gmake on non-Linux systems)
-make modules
-or make modules exclude_modules="CVS print" etc.
-
-Make tags:
-
-make TAGS
-
-Create a tar.gz with the sources (in ../):
-
-make tar
-
-Create a tar.gz with the binary distribution (in ../):
-
-make bin
-
-Create a gzipped solaris package (in ../):
-
-make sunpkg
-
-Create debian packages (in ../):
-
-make deb
-
-or
-
-dpkg-buildpackage
-
-Install:
-
-make prefix=/usr/local install
-
-Note: If you use prefix parameter in make install then you also need
-to use this parameter in previous make commands, i.e. make, make modules,
-or make all. If you fail to do this then SER will look for the default
-configuration file in a wrong directory, because the directory of the
-default configuration file is hard coded into ser during compile time.
-When you use a different prefix parameter when installing then the
-directory hard coded in ser and the directory in which the file will be
-installed by make install will not match. (You can specify exact location
-of the configuration file using -f parameter of ser).
-
-For example, if you do the following:
-make all
-make prefix=/ install
-
-Then the installation will put the default configuration file into
-/etc/ser/ser.cfg (because prefix is /), but ser will look for the file
-in /usr/local/etc/ser/ser.cfg (because there was no prefix parameter
-in make all and /usr/local is the default value of prefix).
-
-Workaround is trivial, use the same parameters in all make commands:
-make prefix=/ all
-make prefix=/ install
-
-That applies to other make parameters as well (for example parameters
-"modules" or "excluded_modules").
-
-
-3. Quick-Start Installation Guide
-----------------------------------------------
-
-A) Getting Help
-
-This guide gives you instructions on how to set up the SIP Express
-Router (ser) on your box quickly. In case the default configuration
-does not fly, check documentation at ser site
- http://www.iptel.org/ser/
-to learn how to configure SER for your site.
-
-If the documentation does not resolve your problem you may try contacting
-our user forum by E-mail at serusers at iptel.org -- that is the mailing list
-of ser community. To participate in the mailing list, subscribe at the
-following web address:
- http://mail.iptel.org/mailman/listinfo/serusers
-
-To participate in our commercial support program, contact info at iptel.org.
-The support program will provide you with most timely and accurate help
-for configuration, integration, development and any other technical
-activity.
-
-
-B) Disclaimers
-
-Note well the default "quick-start" configuration is very simple in order
-to be easily installable. It provides minimum features. Particularly,
-authentication is by default disabled, which means anyone can register using
-any name with the server. (This is on purpose to avoid installation
-dependencies on MySQL which is needed for storing user credentials.)
-
-
-C) Quick Start
-
-The following step-by step guide gives you instructions how to install the
-sql-free distribution of ser. If you need persistence and authentication,
-then you have to install additional MySql support -- proceed to section D)
-after you are finished with C).
-
-1) Download an RPM or debian package from our site
- http://www.iptel.org/ser
-If you don't use an rpm or debian based distribution, try our tar.gz'ed binaries
- (ser-$(version)_$(os)_$(arch).tar.gz, e.g: ser-0.8.8_linux_i386.tar.gz).
-If you use Solaris 8 you can try our solaris package.
-If you use Gentoo Linux you do not have to download a package.
-
-2) install the package
-RPM:
- rpm -i <package_name>
-debian:
- dpkg -i <package_name>
-gentoo:
- emerge ser
- (or if use only stable packets:
- ACCEPT_KEYWORDS="~x86" emerge ser)
-tar.gz:
- cd /; tar zxvf <package_name>_os_arch.tar.gz
- (it will install in /usr/local/, and the configuration file in
- /usr/local/etc/ser/ser.cfg)
-Solaris:
- gunzip <package_name>.gz ; pkgadd -d <package_name>
-*BSD:
- pkg_add package_name
-
-3) start the server
-RPM + gentoo:
- /etc/init.d/ser start
-debian:
- ser is started automatically after the install
- (in case something fails you can start it with /etc/init.d/ser start)
-tar.gz:
- the tar.gz does not include an init.d script, you'll have to create one of
- your own or adapt one from the source distribution (debian/init.d,
- rpm/ser.init.*, gentoo/ser.init)
- You can start ser directly with /usr/local/sbin/ser.
-Solaris:
- see tar.gz.
-
-4) optionally, watch server's health using the
- serctl utility
- - to do so, first set the environment variable SIP_DOMAIN to your domain
- name, e.g., in Bourne shell, call
- export SIP_DOMAIN="myserver.foobar.com"
- - if you are using other than 'localhost' mysql server for maintaining
- subscriber database, change the variable 'SQL_HOST' to the proper
- host name in the serctl script
- - run the serctl utility
- /usr/sbin/serctl moni
- or
- /usr/local/sbin/serctl moni (if you installed from a tar.gz or solaris
- package)
-
-5) Register with the server using your favorite
- SIP User Agent. You may want to look at configuration
- hints for use of iptel.org site at
- http://www.iptel.org/phpBB/viewforum.php?forum=1&8
- For example, users of Windows Messenger need to set
- in Tools->Options->Accounts the following values:
- Sign-in Name: <username>@<your_server_address>
- Advanced->Configure Settings (on)
- Advanced->Server: <your_server_address>
- Connect Using: UDP
-
-
-
-D) ser with Persistent Data Storage
-
-The default configuration is very simple and features many simplifications.
-In particular, it does not authenticate users and loses User Location database
-on reboot. To provide persistence, keep user credentials and remember users'
-locations across reboots, ser can be configured to use MySQL. Before you proceed,
-you need to make sure MySQL is installed on your box. Your MySQL server must be
-configured to deal with a large number of connection. To increase it, set the
-following line in [mysqld] section of your configuration file:
-
- set-variable = max_connections=500
-
-1) Download the package containing mysql support for ser from:
- http://www.iptel.org/ser/
- (rpm and deb provided, most of the binary tar.gz distributions and the
- solaris package include it; if it is not present you'll have to rebuild
- from the source).
- For gentoo please include 'mysql' to your USE variable in /etc/make.conf
- or give it as variable to the emerge command.
-2) install the package
- rpm -i <package_name>
- or
- dpkg -i <package_name>
- or
- emerge ser
- (if do not want to put 'mysql' into your USE variable you can type:
- USE="mysql" emerge ser)
-3) create MySQL tables
- - if you have a previously installed SER on your system, use
- /usr/sbin/ser_mysql.sh reinstall
- to convert your SER database into new structures
- - otherwise, if this is your very first installation, use
- /usr/sbin/ser_mysql.sh create
- to create SER database structures
- (you will be prompted for password of MySql "root" user)
-4) configure ser to use SQL
- uncomment all lines in configuration file ser.cfg which are related to
- authentication:
- - loadmodule "/usr/lib/ser/modules/mysql.so"
- - loadmodule "/usr/lib/ser/modules/auth.so"
- - loadmodule "/usr/lib/ser/modules/auth_db.so"
- - modparam("usrloc", "db_mode", 2)
- - modparam("auth", "calculate_ha1", yes)
- - modparam("auth_db", "password_column", "password")
- - if (!www_authorize("iptel.org", "subscriber")) {
- www_challenge("iptel.org", "0");
- break;
- };
-5) be sure to replace realm, the first parameter in www_* actions,
- with name of your server; some broken UAC implementations don't
- authenticate otherwise; the authentication command in your
- configuration script should look then like this:
- if (!www_authorize("myserver.foobar.com", "subscriber")) {
- www_challenge("myserver.foobar.com", "0");
- break;
- }
-6) restart the server
- /etc/init.d/ser restart
-7) you can now start managing the server using the serctl utility;
- you need to first set the environment variable SIP_DOMAIN to your
- local SIP realm, e.g.,
- export SIP_DOMAIN="myserver.foobar.com"
-
- a) watch the server status using 'serctl moni'
- b) try to login with your SIP client as user 'admin' with password 'heslo'
- c) try adding new users using
- 'serctl add <name> <password> <email>'
-
-
-4. Troubleshooting
-------------------
-
-Q: Windows Messenger authentication fails.
-
-A: The most likely reason for this problem is a bug in Windows Messenger.
-WM only authenticates if server name in request URI equals authentication
-realm. After a challenge is sent by SIP server, WM does not resubmit the
-challenged request at all and pops up authentication window again. If you
-want to authenticate WM, you need to set up your realm value to equal server
-name. If your server has no name, IP address can be used as realm too.
-
-Q: SIP requests are replied by ser with "483 Too Many Hops" or
- "513 Message Too Large"
-
-A: In both cases, the reason is probably an error in request routing script
- which caused an infinite loop. You can easily verify whether this happens
- by watching SIP traffic on loopback interface. A typical reason for misrouting
- is a failure to match local domain correctly. If a server fails to recognize
- a request for itself, it will try to forward it to current URI in believe it
- would forward them to a foreign domain. Alas, it forwards the request to itself
- again. This continues to happen until value of max_forwards header field reaches
- zero or the request grows too big. Solutions is easy: make sure that domain matching
- is correctly configured. A quick way to achieve that is to introduce a config
- option to ser.cfg: alias=domainname, where domainname shall be replaced with
- name of domain, which you wish to server and which appears in request-URIs.
Deleted: ser/trunk/ISSUES
===================================================================
--- ser/trunk/ISSUES 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/ISSUES 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,236 +0,0 @@
-#
-# $Id: ISSUES,v 1.27 2004/08/24 08:45:09 janakj Exp $
-#
-
-This is a collection of issues which have shown up
-since the version 0.8.8 was released. The issues are
-ordered by numbers of ser versions to which they relate,
-beginning with the newest release. Issues related to
-operating systems are summarized in the bottom.
---------------------------------------------------------------
-Desc: ser crashes on startup if a group is specified (-g or group=)
-Ser version: <=0.8.12
-Reason: bad copy & paste :-)
-Patch: http://www.mobile-ip.de/~andrei/ser/main_group.patch
-Workaround: update from cvs or apply the corresponding patch
-CVS status: fixed
---------------------------------------------------------------
-Desc: textops search REs like "^From" fail to match on RH8
-Ser version: all
-Reason: there is a bug in RH8 libc, this kind of REs will never match
- in case insensitive mode
-Test: compile test/re_test.c (gcc re_test.c -o re_test) and try
- echo -e "From:\nTo:" |./re_test -v '^From'
- if your system is ok you should see 1 match, if not (and
- your libc has this bug), 0 matches.
-Workaround: ?upgrade?
---------------------------------------------------------------
-Desc: textops REs match newline in constructs such [^@]
-Ser version: all
-Reason: there is a bug in newer linux libc versions (at least in
- Debian libc6 2.3.x, Gentoo 1.4 lib 2.3.2, RH8, RH9, Fedora)
-Test: compile test/re_test.c (gcc re_test.c -o re_test) and try
- echo -e "From:\nTo:" |./re_test -v '[^.]+'
- if your system is ok you should see 2 matches, if not (and
- your libc has this bug), only 1 match.
-Workaround: - use an older or fixed libc6 or avoid [^something]
- - rewrite [^something] as [^something[:cntrl:]]
----------------------------------------------------------------
-Desc: memory leaks occurs if SIP requests are processed in which
- a Via header field occurs in end of header and includes
- a parameter
-Ser version: 0.8.10
-Reason: parameter fragment is not linked to a list when EoH is
- encountered
-Patch: http://www.iptel.org/ser/issues/via_ml_0810.patch
-CVS Status: fixed
----------------------------------------------------------------
-Desc: ser segfaults on receipt of some messages (occurs
- rather rarely with a very high number of messages,
- typically during stress tests)
-Ser version: 0.8.10 and before
-Reason: valid TM label value 0 is considered mistakenly
- a special value
-Workaround: turn syn_branch config option off
-Patch: http://www.iptel.org/ser/issues/hash_fix.patch
-CVS Status: fixed
----------------------------------------------------------------
-Desc: serctl returns "read: Illegal option -s" for "add user"
-Ser version: 0.8.10 and before
-Reason: serctl's use of some shell script commands not portable
-Workaround: download serctl 1.45 and set SUBSCRIBER_COLUMN back
- to user_id
-Download: http://cvs.berlios.de/cgi-bin/viewcvs.cgi/*checkout*/ser/sip_router/scripts/sc?rev=1.45
-CVS Status: fixed
----------------------------------------------------------------
-Desc: 3261 ACKs for 200s are consumed by stateful processing
-Ser version: 0.8.10
-Reason: 200/ACKs which happen to have the same transaction ID
- as original INVITE were not distinguished from hbh
- ACKs and consequently absorbed
-Patch: http://www.iptel.org/ser/issues/tid3261ack.patch
-Workaround: apply the patch to 0.8.10 sources
-CVS status: fixed
----------------------------------------------------------------
-Desc: on sparc machines, usage of mysql library causes a bus error
-Ser version: 0.8.10
-Reason: ser is compiled with DBG_QM_MALLOC, which mistakenly uses
- only alignment of four (ROUNDTO) -- insufficient for sparc
- boxes, mysql library uses long long
-Workaround: recompile with DBG_QM_MALLOC turned off or ROUNDTO redefined
- to 8
-CVS status: fixed
----------------------------------------------------------------
-Desc: nonce validation doesn't work correctly on big endian machines.
-BugId: 498
-Ser version: 0.8.10
-Patch: http://iptel.org/~janakj/nonce.c.patch
-Workaround: Apply the patch to 0.8.10 sources
-CVS status: fixed
----------------------------------------------------------------
-Desc: ser 0.8.10 memory leak when an INVITE containing Route
- header fields is received.
- Symptoms: ser reports No memory left or crashes with BUG: qm_*: fragm.
-BugId:n/a
-Ser version: 0.8.10
-Patch: http://iptel.org/~janakj/invroute.patch
-Workaround: Apply the patch to 0.8.10 sources
-CVS status: fixed
----------------------------------------------------------------
-Desc: ser 0.8.10 fails to remove consumed verified credentials properly
- and leaves characters in forwarded messages when consume_credentials
- is used
-BugId:n/a
-Ser version: 0.8.10
-Module: http://www.iptel.org/~jiri/ser/auth.tar.gz
-Workaround: compile the auth module newly from sources above or
- don't remove credentials (they only harm in terms of
- packet size)
-CVS status: fixed
----------------------------------------------------------------
-Desc: ser 0.8.10 and earlier versions crash if contact list
- excessively long
-BugId: n/a
-Ser version: 0.8.8, 0.8.9, 0.8.10
-Patch: http://www.iptel.org/ser/security/secalert-002-0_8_10.patch
-Workaround: apply the patch to 0.8.10 sources
-CVS status: fixed
----------------------------------------------------------------
-Desc: ser 0.8.10 won't compile with bison 1.75
-BugId: n/a
-Ser version: 0.8.8, 0.8.9, 0.8.10
-Patch:
- 0.8.10 http://www.mobile-ip.de/~andrei/ser/0.8.10/ser-0.8.10-bison-1.75.patch
- 0.8.9 http://www.mobile-ip.de/~andrei/ser/0.8.9/ser-0.8.9-bison-1.75.patch
-Workaround: update from cvs, apply the corresponding patch or downgrade bison
-CVS status: fixed
----------------------------------------------------------------
-
-=================================================================================
-* ser 0.8.10 released, all the issues below this are fixed in ser 0.8.10, all the
-* issues above are not :-)
-=================================================================================
-
-Desc: ser 0.8.9 won't log to stderr or syslog unless dontfork is set
- (introduced when trying to fix bug 376)
-BugId: n/a
-Ser version: =0.8.9 (0.8.8 is ok)
-Patch: http://www.mobile-ip.de/~andrei/ser/0.8.9/ser-0.8.9_log.patch
-Workaround: update from cvs or apply the patch.
-CVS status: fixed
----------------------------------------------------------------
-Desc: local domain mismatch resulting in infinite loops
- (With default configuration and domain names in a request
- URI's, ser may not match "owned domain" in the
- script's uri==myself condition, consider the request to
- be for outside domain, and forward it to itself, resulting
- in an infinite loop and "482" returned back to UAC.)
-BugId: n/a
-Reason: aliases do not support reverse DNS lookups yet
-Workaround: Start ser with "alias=hostname" in config file
-CVS status: fixed
----------------------------------------------------------------
-Desc: sendto problems on FreeBSD
- (when using tm sendto fails because of bad sockaddr len passed
- to it)
-BugId: n/a
-Workaround: update from cvs or apply the following patch:
- http://www.mobile-ip.de/~andrei/ser/0.8.9/update_sock_struct_from_ip.patch
-CVS status: fixed
----------------------------------------------------------------
-Desc: full ipv6 addresses (w/o ::) are converted to 0:0:0:0:0:0:0
- (ser will listen on :: instead of the specified address)
-BugId: n/a
-Workaround: use ipv6 addresses w/ :: or compile ser without -DDNS_IP_HACK
- (Makefile.defs).
-CVS status: fixed
-
-================================================================================
-* ser 0.8.9 released, all the issues below this are fixed in ser 0.8.9, all the
-* issues above are not :-)
-================================================================================
-
-Desc: in default configuration, SER prints '127.0.0.1' in
- Warning header field of all replies
-BugId: 372
-Workaround: use listen=<ip_address> in your configuration file;
- that will make SER listen only on one interface (and not
- on '127.0.0.1' in parallel) and advertise correct IP
- address
-Bug reason: multiple listening address ignored in message
- translator
-CVS status: fixed
----------------------------------------------------------------
-Desc: serctl add ... returns "user exists"
-BugId: 374
-Workaround: either use serweb for adding new users or update
- the serctl utility from CVS; the fixed version is at
- http://www.iptel.org/ser/issues/374/
-Bug reason: phplib_id ignored in sc
-CVS Status: fixed
----------------------------------------------------------------
-Desc: SMS, MSILO & JABBER modules fail to load because of unresolved
-dependency on im.so
-BugId: 375
-Workaround: change the makefiles & recompile
-Bug reason: removal of RTLD_GLOBAL from dlopen.
-CVS status: fixed
----------------------------------------------------------------
-Desc: when forking & std_error=yes no open FD is closed
-BugId: 376
-CVS status: fixed
----------------------------------------------------------------
-Desc: exec module missing in binary RPM distro
-BugId: -
-CVS status: fixed
-Workaround: compile from source distribution
----------------------------------------------------------------
-Desc: when debug=3 & iptel.cfg is used mysql module fails in submit_query.
-Workaround: use debug=9 or use log_stderr
-Reason: unknown
-BugId: 377
-Cvs status: not fixed
-
-
-================================================================================
-* OS-related issues
-================================================================================
-
-----------------------------------------------------------------
-Desc: ser won't run on linux kernels <2.4 (fails with EINVAL when
- initializing the shared memory)
-BugId: n/a
-Ser version: 0.8.8, 0.8.9, 0.8.10
-Workaround: Upgrade to a 2.4.* kernel (older kernels don't support shared
- mmaping of /dev/zero ) or recompile ser with SYSV shm instead of
- mmap (remove -DSHM_MMAP from Makefile.defs)
-CVS status: n/a
----------------------------------------------------------------
-Desc: Solaris resolver memory leak
- (getipnodebyname on Solaris has a memory leak. unpatched
- solaris 8 installations will fail after processing
- ~ 360000 requests)
-BugId: n/a
-CVS status: n/a
-Workaround: patch your Solaris OS
----------------------------------------------------------------
Deleted: ser/trunk/Makefile
===================================================================
--- ser/trunk/Makefile 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/Makefile 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,354 +0,0 @@
-# $Id: Makefile,v 1.136.2.5 2005/11/02 17:45:38 andrei Exp $
-#
-# sip_router makefile
-#
-# WARNING: requires gmake (GNU Make)
-# Arch supported: Linux, FreeBSD, SunOS (tested on Solaris 8), OpenBSD (3.2),
-# NetBSD (1.6).
-#
-# History:
-# --------
-# created by andrei
-# 2003-02-24 make install no longer overwrites ser.cfg - patch provided
-# by Maxim Sobolev <sobomax at FreeBSD.org> and
-# Tomas Björklund <tomas at webservices.se>
-# 2003-03-11 PREFIX & LOCALBASE must also be exported (andrei)
-# 2003-04-07 hacked to work with solaris install (andrei)
-# 2003-04-17 exclude modules overwritable from env. or cmd. line,
-# added include_modules and skip_modules (andrei)
-# 2003-05-30 added extra_defs & EXTRA_DEFS
-# Makefile.defs force-included to allow recursive make
-# calls -- see comment (andrei)
-# 2003-06-02 make tar changes -- unpacks in $NAME-$RELEASE (andrei)
-# 2003-06-03 make install-cfg will properly replace the module path
-# in the cfg (re: /usr/.*lib/ser/modules)
-# ser.cfg.default is installed only if there is a previous
-# cfg. -- fixes packages containing ser.cfg.default (andrei)
-# 2003-08-29 install-modules-doc split from install-doc, added
-# install-modules-all, removed README.cfg (andrei)
-# added skip_cfg_install (andrei)
-# 2004-09-02 install-man will automatically "fix" the path of the files
-# referred in the man pages
-#
-
-auto_gen=lex.yy.c cfg.tab.c #lexx, yacc etc
-auto_gen_others=cfg.tab.h # auto generated, non-c
-
-#include source related defs
-include Makefile.sources
-
-# whether or not to install ser.cfg or just ser.cfg.default
-# (ser.cfg will never be overwritten by make install, this is usefull
-# when creating packages)
-skip_cfg_install?=
-
-#extra modules to exclude
-skip_modules?=
-
-# if not set on the cmd. line or the env, exclude this modules:
-exclude_modules?= cpl ext extcmd \
- postgres snmp \
- im \
- jabber mysql \
- cpl-c \
- auth_radius group_radius uri_radius avp_radius \
- pa
-# always exclude the CVS dir
-override exclude_modules+= CVS $(skip_modules)
-
-#always include this modules
-include_modules?=
-
-# first 2 lines are excluded because of the experimental or incomplete
-# status of the modules
-# the rest is excluded because it depends on external libraries
-#
-static_modules=
-static_modules_path=$(addprefix modules/, $(static_modules))
-extra_sources=$(wildcard $(addsuffix /*.c, $(static_modules_path)))
-extra_objs=$(extra_sources:.c=.o)
-
-static_defs= $(foreach mod, $(static_modules), \
- -DSTATIC_$(shell echo $(mod) | tr [:lower:] [:upper:]) )
-
-override extra_defs+=$(static_defs) $(EXTRA_DEFS)
-export extra_defs
-
-modules=$(filter-out $(addprefix modules/, \
- $(exclude_modules) $(static_modules)), \
- $(wildcard modules/*))
-modules:=$(filter-out $(modules), $(addprefix modules/, $(include_modules) )) \
- $(modules)
-modules_names=$(shell echo $(modules)| \
- sed -e 's/modules\/\([^/ ]*\)\/*/\1.so/g' )
-modules_basenames=$(shell echo $(modules)| \
- sed -e 's/modules\/\([^/ ]*\)\/*/\1/g' )
-#modules_names=$(patsubst modules/%, %.so, $(modules))
-modules_full_path=$(join $(modules), $(addprefix /, $(modules_names)))
-
-
-ALLDEP=Makefile Makefile.sources Makefile.defs Makefile.rules
-
-#include general defs (like CC, CFLAGS a.s.o)
-# hack to force makefile.defs re-inclusion (needed when make calls itself with
-# other options -- e.g. make bin)
-makefile_defs=0
-DEFS:=
-include Makefile.defs
-
-NAME=$(MAIN_NAME)
-
-#export relevant variables to the sub-makes
-export DEFS PROFILE CC LD MKDEP MKTAGS CFLAGS LDFLAGS MOD_CFLAGS MOD_LDFLAGS
-export LIBS
-export LEX YACC YACC_FLAGS
-export PREFIX LOCALBASE
-# export relevant variables for recursive calls of this makefile
-# (e.g. make deb)
-#export LIBS
-#export TAR
-#export NAME RELEASE OS ARCH
-#export cfg-prefix cfg-dir bin-prefix bin-dir modules-prefix modules-dir
-#export doc-prefix doc-dir man-prefix man-dir ut-prefix ut-dir
-#export cfg-target modules-target
-#export INSTALL INSTALL-CFG INSTALL-BIN INSTALL-MODULES INSTALL-DOC INSTALL-MAN
-#export INSTALL-TOUCH
-
-tar_extra_args+=$(addprefix --exclude=$(notdir $(CURDIR))/, \
- $(auto_gen) $(auto_gen_others))
-ifneq ($(TLS),)
- tar_extra_args+=
-else
- tar_extra_args+=--exclude=$(notdir $(CURDIR))/tls*
-endif
-# include the common rules
-include Makefile.rules
-
-#extra targets
-
-$(NAME): $(extra_objs) # static_modules
-
-lex.yy.c: cfg.lex cfg.tab.h $(ALLDEP)
- $(LEX) $<
-
-cfg.tab.c cfg.tab.h: cfg.y $(ALLDEP)
- $(YACC) $(YACC_FLAGS) $<
-
-.PHONY: all
-all: $(NAME) modules
-
-
-
-.PHONY: modules
-modules:
- - at for r in $(modules) "" ; do \
- if [ -n "$$r" ]; then \
- echo "" ; \
- echo "" ; \
- $(MAKE) -C $$r ; \
- fi ; \
- done
-
-$(extra_objs):
- - at echo "Extra objs: $(extra_objs)"
- - at for r in $(static_modules_path) "" ; do \
- if [ -n "$$r" ]; then \
- echo "" ; \
- echo "Making static module $r" ; \
- $(MAKE) -C $$r static ; \
- fi ; \
- done
-
-
-
-dbg: ser
- gdb -command debug.gdb
-
-.PHONY: tar
-.PHONY: dist
-
-dist: tar
-
-tar:
- $(TAR) -C .. \
- --exclude=$(notdir $(CURDIR))/test* \
- --exclude=$(notdir $(CURDIR))/tmp* \
- --exclude=$(notdir $(CURDIR))/debian/ser \
- --exclude=$(notdir $(CURDIR))/debian/ser-* \
- --exclude=$(notdir $(CURDIR))/ser_tls* \
- --exclude=CVS* \
- --exclude=.cvsignore \
- --exclude=*.[do] \
- --exclude=*.so \
- --exclude=*.il \
- --exclude=$(notdir $(CURDIR))/ser \
- --exclude=*.gz \
- --exclude=*.bz2 \
- --exclude=*.tar \
- --exclude=*.patch \
- --exclude=.\#* \
- --exclude=*.swp \
- ${tar_extra_args} \
- -cf - $(notdir $(CURDIR)) | \
- (mkdir -p tmp/_tar1; mkdir -p tmp/_tar2 ; \
- cd tmp/_tar1; $(TAR) -xf - ) && \
- mv tmp/_tar1/$(notdir $(CURDIR)) \
- tmp/_tar2/"$(NAME)-$(RELEASE)" && \
- (cd tmp/_tar2 && $(TAR) \
- -zcf ../../"$(NAME)-$(RELEASE)_src".tar.gz \
- "$(NAME)-$(RELEASE)" ) ; \
- rm -rf tmp/_tar1; rm -rf tmp/_tar2
-
-# binary dist. tar.gz
-.PHONY: bin
-bin:
- mkdir -p tmp/ser/usr/local
- $(MAKE) install basedir=tmp/ser prefix=/usr/local
- $(TAR) -C tmp/ser/ -zcf ../$(NAME)-$(RELEASE)_$(OS)_$(ARCH).tar.gz .
- rm -rf tmp/ser
-
-.PHONY: deb
-deb:
- dpkg-buildpackage -rfakeroot -tc
-
-.PHONY: sunpkg
-sunpkg:
- mkdir -p tmp/ser
- mkdir -p tmp/ser_sun_pkg
- $(MAKE) install basedir=tmp/ser prefix=/usr/local
- (cd solaris; \
- pkgmk -r ../tmp/ser/usr/local -o -d ../tmp/ser_sun_pkg/ -v "$(RELEASE)" ;\
- cd ..)
- cat /dev/null > ../$(NAME)-$(RELEASE)-$(OS)-$(ARCH)-local
- pkgtrans -s tmp/ser_sun_pkg/ ../$(NAME)-$(RELEASE)-$(OS)-$(ARCH)-local \
- IPTELser
- gzip -9 ../$(NAME)-$(RELEASE)-$(OS)-$(ARCH)-local
- rm -rf tmp/ser
- rm -rf tmp/ser_sun_pkg
-
-
-.PHONY: install
-install: all mk-install-dirs install-cfg install-bin install-modules \
- install-doc install-man
-
-.PHONY: dbinstall
-dbinstall:
- - at echo "Initializing ser database"
- scripts/ser_mysql.sh create
- - at echo "Done"
-
-mk-install-dirs: $(cfg-prefix)/$(cfg-dir) $(bin-prefix)/$(bin-dir) \
- $(modules-prefix)/$(modules-dir) $(doc-prefix)/$(doc-dir) \
- $(man-prefix)/$(man-dir)/man8 $(man-prefix)/$(man-dir)/man5
-
-
-$(cfg-prefix)/$(cfg-dir):
- mkdir -p $(cfg-prefix)/$(cfg-dir)
-
-$(bin-prefix)/$(bin-dir):
- mkdir -p $(bin-prefix)/$(bin-dir)
-
-$(modules-prefix)/$(modules-dir):
- mkdir -p $(modules-prefix)/$(modules-dir)
-
-
-$(doc-prefix)/$(doc-dir):
- mkdir -p $(doc-prefix)/$(doc-dir)
-
-$(man-prefix)/$(man-dir)/man8:
- mkdir -p $(man-prefix)/$(man-dir)/man8
-
-$(man-prefix)/$(man-dir)/man5:
- mkdir -p $(man-prefix)/$(man-dir)/man5
-
-# note: on solaris 8 sed: ? or \(...\)* (a.s.o) do not work
-install-cfg: $(cfg-prefix)/$(cfg-dir)
- sed -e "s#/usr/.*lib/ser/modules/#$(modules-target)#g" \
- < etc/ser.cfg > $(cfg-prefix)/$(cfg-dir)ser.cfg.sample
- chmod 644 $(cfg-prefix)/$(cfg-dir)ser.cfg.sample
- if [ -z "${skip_cfg_install}" -a \
- ! -f $(cfg-prefix)/$(cfg-dir)ser.cfg ]; then \
- mv -f $(cfg-prefix)/$(cfg-dir)ser.cfg.sample \
- $(cfg-prefix)/$(cfg-dir)ser.cfg; \
- fi
- # radius dictionary
- $(INSTALL-TOUCH) $(cfg-prefix)/$(cfg-dir)/dictionary.ser
- $(INSTALL-CFG) etc/dictionary.ser $(cfg-prefix)/$(cfg-dir)
-# $(INSTALL-CFG) etc/ser.cfg $(cfg-prefix)/$(cfg-dir)
-
-install-bin: $(bin-prefix)/$(bin-dir) utils/gen_ha1/gen_ha1 utils/serunix/serunix
- $(INSTALL-TOUCH) $(bin-prefix)/$(bin-dir)/ser
- $(INSTALL-BIN) ser $(bin-prefix)/$(bin-dir)
- $(INSTALL-TOUCH) $(bin-prefix)/$(bin-dir)/sc
- $(INSTALL-BIN) scripts/sc $(bin-prefix)/$(bin-dir)
- mv -f $(bin-prefix)/$(bin-dir)/sc $(bin-prefix)/$(bin-dir)/serctl
- $(INSTALL-TOUCH) $(bin-prefix)/$(bin-dir)/ser_mysql.sh
- $(INSTALL-BIN) scripts/ser_mysql.sh $(bin-prefix)/$(bin-dir)
- $(INSTALL-TOUCH) $(bin-prefix)/$(bin-dir)/gen_ha1
- $(INSTALL-BIN) utils/gen_ha1/gen_ha1 $(bin-prefix)/$(bin-dir)
- $(INSTALL-TOUCH) $(bin-prefix)/$(bin-dir)/serunix
- $(INSTALL-BIN) utils/serunix/serunix $(bin-prefix)/$(bin-dir)
-
-utils/gen_ha1/gen_ha1:
- cd utils/gen_ha1; $(MAKE) all
-
-utils/serunix/serunix:
- cd utils/serunix; $(MAKE) all
-
-install-modules: modules $(modules-prefix)/$(modules-dir)
- - at for r in $(modules_full_path) "" ; do \
- if [ -n "$$r" ]; then \
- if [ -f "$$r" ]; then \
- $(INSTALL-TOUCH) \
- $(modules-prefix)/$(modules-dir)/`basename "$$r"` ; \
- $(INSTALL-MODULES) "$$r" $(modules-prefix)/$(modules-dir) ; \
- else \
- echo "ERROR: module $$r not compiled" ; \
- fi ;\
- fi ; \
- done
-
-
-install-modules-all: install-modules install-modules-doc
-
-
-install-doc: $(doc-prefix)/$(doc-dir) install-modules-doc
- $(INSTALL-TOUCH) $(doc-prefix)/$(doc-dir)/INSTALL
- $(INSTALL-DOC) INSTALL $(doc-prefix)/$(doc-dir)
- $(INSTALL-TOUCH) $(doc-prefix)/$(doc-dir)/README-MODULES
- $(INSTALL-DOC) README-MODULES $(doc-prefix)/$(doc-dir)
- $(INSTALL-TOUCH) $(doc-prefix)/$(doc-dir)/AUTHORS
- $(INSTALL-DOC) AUTHORS $(doc-prefix)/$(doc-dir)
- $(INSTALL-TOUCH) $(doc-prefix)/$(doc-dir)/NEWS
- $(INSTALL-DOC) NEWS $(doc-prefix)/$(doc-dir)
- $(INSTALL-TOUCH) $(doc-prefix)/$(doc-dir)/README
- $(INSTALL-DOC) README $(doc-prefix)/$(doc-dir)
-
-
-install-modules-doc: $(doc-prefix)/$(doc-dir)
- - at for r in $(modules_basenames) "" ; do \
- if [ -n "$$r" ]; then \
- if [ -f modules/"$$r"/README ]; then \
- $(INSTALL-TOUCH) $(doc-prefix)/$(doc-dir)/README ; \
- $(INSTALL-DOC) modules/"$$r"/README \
- $(doc-prefix)/$(doc-dir)/README ; \
- mv -f $(doc-prefix)/$(doc-dir)/README \
- $(doc-prefix)/$(doc-dir)/README."$$r" ; \
- fi ; \
- fi ; \
- done
-
-
-install-man: $(man-prefix)/$(man-dir)/man8 $(man-prefix)/$(man-dir)/man5
- sed -e "s#/etc/ser/ser\.cfg#$(cfg-target)ser.cfg#g" \
- -e "s#/usr/sbin/#$(bin-target)#g" \
- -e "s#/usr/lib/ser/modules/#$(modules-target)#g" \
- -e "s#/usr/share/doc/ser/#$(doc-target)#g" \
- < ser.8 > $(man-prefix)/$(man-dir)/man8/ser.8
- chmod 644 $(man-prefix)/$(man-dir)/man8/ser.8
- sed -e "s#/etc/ser/ser\.cfg#$(cfg-target)ser.cfg#g" \
- -e "s#/usr/sbin/#$(bin-target)#g" \
- -e "s#/usr/lib/ser/modules/#$(modules-target)#g" \
- -e "s#/usr/share/doc/ser/#$(doc-target)#g" \
- < ser.cfg.5 > $(man-prefix)/$(man-dir)/man5/ser.cfg.5
- chmod 644 $(man-prefix)/$(man-dir)/man5/ser.cfg.5
Deleted: ser/trunk/Makefile.defs
===================================================================
--- ser/trunk/Makefile.defs 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/Makefile.defs 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,1126 +0,0 @@
-# $Id: Makefile.defs,v 1.296.2.30 2006/01/11 00:25:58 janakj Exp $
-#
-# makefile defs (CC, LD,a.s.o)
-#
-# Environment variables:
-# PREFIX, LOCALBASE, BASEDIR
-# INSTALL, TAR , CC, LEX, YACC,
-# CPU, CC_EXTRA_OPTS,
-# exclude_modules, skip_modules, include_modules
-# extra_defs
-#
-# History:
-# --------
-# created by andrei
-# 2003-02-24 added LOCALBASE, fixed doc-dir for freebsd - patch provided
-# by Maxim Sobolev <sobomax at FreeBSD.org>
-# 2003-02-25 added -DDISABLE_NAGLE (andrei)
-# 2003-03-02 added -DDIGEST_DOMAIN (janakj)
-# 2003-03-10 added -xcode=pic32 for module compilation w/ sun cc
-# (too many symbols for pic13) (andrei)
-# 2003-04-16 added CC_EXTRA_OPTS, s/march/mcpu, added CPU (cpu to optimize
-# for, used only with gcc-3.x) (andrei)
-# 2003-05-23 check if this makefile was already included (andrei)
-# removed -DDIGEST_DOMAIN (andrei)
-# 2003-05-30 added extra_defs (andrei)
-# 2003-06-06 moved compiler detection before DEFS (andrei)
-# 2003-06-10 removed -m32 for gcc 3.x/sparc64 -- it will use
-# arch. default: -m32 on solaris, -m64 on *bsd (andrei)
-# 2003-09-25 added -pthread into LIBS when compiling on FreeBSD/alpha
-# and other FreeBSD arches for which no fast locking assembly
-# code exists (sobomax)
-# 2003-11-08 mips1 support introduced (andrei)
-# 2003-11-24 openbsd 3.4 (elf) fixes (andrei)
-# 2004-07-27 darwin (mac os x) port (andrei)
-# 2004-09-12 mips2 & cobalt support introduced (andrei)
-# 2004-09-28 x86_64 support introduced (andrei)
-# 2004-12-14 gcc-3.4 special case added (andrei)
-# 2004-12-15 HAVE_ALLOCA_H added (andrei)
-# 2004-12-19 amd64 transformed in x86_64 (andrei)
-# 2005-04-27 alpha support added (andrei)
-# 2005-06-01 use $(LOCALBASE) instead of /usr/{local,pkg} (andrei)
-# 2005-06-06 ppc64 support & missing ppc optimizations section added (andrei)
-# 2005-07-06 gcc 4.0 optimizations support (andrei)
-# 2005-07-25 better solaris arch detection (andrei)
-# 2005-10-02 distcc get gcc version hack (andrei)
-
-
-# check if already included/exported
-
-ifeq ($(makefile_defs), 1)
-else
-makefile_defs=1
-export makefile_defs
-
-# main binary name
-MAIN_NAME=ser
-
-#version number
-VERSION = 0
-PATCHLEVEL = 9
-SUBLEVEL = 6
-EXTRAVERSION =
-
-RELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
-OS = $(shell uname -s | sed -e s/SunOS/solaris/ | tr "[A-Z]" "[a-z]")
-
-ifeq ($(OS),solaris)
- GETARCH=uname -p
-else
- GETARCH=uname -m
-endif
-
-ARCH := $(shell $(GETARCH) |sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
- -e s/armv4l/arm/ -e "s/Power Macintosh/ppc/" \
- -e "s/cobalt/mips2/" \
- -e s/amd64/x86_64/ )
-# fix sparc -> sparc64
-ifeq ($(ARCH),sparc)
- ifeq ($(shell uname -m),sun4u)
- ARCH := sparc64
- endif
-endif
-
-OSREL = $(shell uname -r)
-
-# TLS support
-TLS ?=
-ifneq ($(TLS),)
- RELEASE:=$(RELEASE)-tls
-endif
-# extra CC command line options (e.g -march=athlon-mp)
-CC_EXTRA_OPTS ?=
-
-# dirs
-cfg-dir = etc/ser/
-bin-dir = sbin/
-modules-dir = lib/ser/modules/
-ifeq ($(OS), linux)
- doc-dir = share/doc/ser/
- man-dir = share/man/
- LOCALBASE ?= /usr/local
-else
-ifeq ($(OS), freebsd)
- doc-dir = share/doc/ser/
- man-dir = man/
- LOCALBASE ?= /usr/local
-else
-ifeq ($(OS), openbsd)
- doc-dir = share/doc/ser/
- man-dir = man/
- LOCALBASE ?= /usr/local
-else
-ifeq ($(OS), netbsd)
- doc-dir = share/doc/ser
- man-dir = man/
- LOCALBASE ?= /usr/pkg
-else
-ifeq ($(OS), darwin)
- doc-dir = share/doc/ser/
- man-dir = man/
- LOCALBASE ?= /usr/local
-else
- doc-dir = doc/ser/
- man-dir = man/
- LOCALBASE ?= /usr/local
-endif
-endif
-endif
-endif
-endif
-
- # install location
-DESTDIR ?= $(LOCALBASE)
-PREFIX ?= $(DESTDIR)
-prefix = $(PREFIX)
-# install path is $(basedir) $(prefix)
-# example:
-# creating a bin. archive in /tmp, which unpacks in /usr/local
-# basedir=/tmp
-# prefix=/usr/local
-
-BASEDIR ?=
-basedir = $(BASEDIR)
-# install prefixes for various stuff
-cfg-prefix = $(basedir)$(prefix)
-bin-prefix = $(basedir)$(prefix)
-modules-prefix = $(basedir)$(prefix)
-doc-prefix = $(basedir)$(prefix)
-man-prefix = $(basedir)$(prefix)
-ut-prefix = $(basedir)$(prefix)
-
-
-# target dirs for various stuff
-cfg-target = $(prefix)/$(cfg-dir)
-bin-target = $(prefix)/$(bin-dir)
-modules-target = $(prefix)/$(modules-dir)
-doc-target = $(prefix)/$(doc-dir)
-
-
-ifeq ($(OS), solaris)
-#use GNU versions
-INSTALL ?= ginstall
-TAR ?= gtar
-else
-INSTALL ?= install
-TAR ?= tar
-endif
-
-INSTALL-TOUCH = touch # used to create the file first (good to
- # make solaris install work)
-INSTALL-CFG = $(INSTALL) -m 644
-INSTALL-BIN = $(INSTALL) -m 755
-INSTALL-MODULES = $(INSTALL) -m 755
-INSTALL-DOC = $(INSTALL) -m 644
-INSTALL-MAN = $(INSTALL) -m 644
-
-#set some vars from the environment (and not make builtins)
-CC := $(shell echo "$${CC}")
-LEX := $(shell echo "$${LEX}")
-YACC := $(shell echo "$${YACC}")
-
-
-
-
-# find compiler name & version
-ifeq ($(CC),)
- CC=gcc
-endif
-LD= $(CC)
-CC_LONGVER=$(shell if $(CC) -v 2>/dev/null; then \
- $(CC) -v 2>&1 ;\
- else \
- $(CC) -V 2>&1 ; \
- fi )
-MKTAGS=ctags -R .
-
-#find-out the compiler's name
-
-ifneq (,$(findstring gcc, $(CC_LONGVER)))
- CC_NAME=gcc
- CC_VER=$(word 1,$(CC)) $(shell $(CC) - --version|head -n 1|cut -d" " -f 3|\
- sed -e 's/^.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/'\
- -e 's/^[^0-9].*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/')
- # sun sed is a little brain damaged => this complicated expression
- MKDEP=$(CC) -MM
- #transform gcc version into 2.9x or 3.0
- CC_SHORTVER=$(shell echo "$(CC_VER)" | cut -d" " -f 2| \
- sed -e 's/[^0-9]*-\(.*\)/\1/'| \
- sed -e 's/2\.9.*/2.9x/' -e 's/3\.[0-3]\..*/3.0/' -e \
- 's/3\.[0-3]/3.0/' -e 's/3\.[4-9]\..*/3.4/' -e \
- 's/3\.[4-9]/3.4/' -e 's/4\.[0-9]\..*/4.x/' -e \
- 's/4\.[0-9]/4.x/' )
-endif
-
-ifneq (, $(findstring Sun, $(CC_LONGVER)))
- CC_NAME=suncc
- CC_SHORTVER=$(shell echo "$(CC_LONGVER)"|head -n 1| \
- sed -e 's/.*\([0-9]\.[0-9]\).*/\1/g' )
- CC_VER=$(CC) $(CC_SHORTVER)
- MKDEP=$(CC) -xM1
-endif
-
-ifneq (, $(findstring Intel(R) C++ Compiler, $(CC_LONGVER)))
- # very nice: gcc compatible
- CC_NAME=icc
- CC_FULLVER=$(shell echo "$(CC_LONGVER)"|head -n 1| \
- sed -e 's/.*Version \([0-9]\.[0-9]\.[0-9]*\).*/\1/g' )
- CC_SHORTVER=$(shell echo "$(CC_FULLVER)" | cut -d. -f1,2 )
- CC_VER=$(CC) $(CC_FULLVER)
- MKDEP=$(CC) -MM
-endif
-
-
-ifeq (,$(CC_NAME))
-#not found
- CC_NAME=$(CC)
- CC_SHORTVER=unknown
- CC_VER=unknown
- MKDEP=gcc -MM
-$(warning Unknown compiler $(CC)\; supported compilers: \
- gcc, sun cc, intel icc )
-endif
-
-
-# compile-time options
-#
-# -DSTATS
-# allows to print out number of packets processed on CTRL-C;
-# implementation still nasty and reports per-process
-# -DNO_DEBUG
-# turns off some of the debug messages (DBG(...)).
-# -DNO_LOG
-# completely turns of all the logging (and DBG(...))
-# -DEXTRA_DEBUG
-# compiles in some extra debugging code
-# -DDNS_IP_HACK
-# faster ip address resolver for ip strings (e.g "127.0.0.1")
-# -DSHM_MEM
-# compiles in shared mem. support, needed by some modules and
-# by USE_SHM_MEM
-# -DSHM_MMAP
-# use mmap instead of SYSV shared memory
-# -DPKG_MALLOC
-# uses a faster malloc (exclusive w/ USE_SHM_MEM)
-# -DUSE_SHM_MEM
-# all pkg_malloc => shm_malloc (most mallocs use a common sh.
-# mem. segment); don't define PKG_MALLOC if you want this!
-# -DDBG_QM_MALLOC
-# qm_malloc debug code, will cause pkg_malloc and shm_malloc
-# to keep and display lot of debuging information: file name,
-# function, line number of malloc/free call for each block,
-# extra error checking (trying to free the same pointer
-# twice, trying to free a pointer alloc'ed with a different
-# malloc etc.)
-# -DVQ_MALLOC
-# additional option to PKG_MALLOC which utilizes a fater then
-# qm version
-# (not true anymore, q_malloc performs approx. the same)
-# -DF_MALLOC
-# an even faster malloc, not recommended for debugging
-# -DDBG_MALLOC
-# issues additional debugging information if lock/unlock is called
-# -DFAST_LOCK
-# uses fast arhitecture specific locking (see the arh. specific section)
-# -DUSE_SYSV_SEM
-# uses sys v sems for locking (slower & limited number)
-# -DUSE_PTHREAD_MUTEX
-# uses pthread mutexes, faster than sys v or posix sems, but do not
-# work on all systems inter-processes (e.g. linux)
-# -DUSE_POSIX_SEM
-# uses posix semaphores for locking (faster than sys v)
-# -DBUSY_WAIT
-# uses busy waiting on the lock (FAST_LOCK)
-# -DADAPTIVE_WAIT
-# try busy waiting for a while and if the lock is still held go to
-# force reschedule (FAST_LOCK)
-# -DADAPTIVE_WAIT_LOOPS=number
-# number of loops we busy wait, after "number" loops have elapsed we
-# force a reschedule (FAST_LOCK)
-# -DNOSMP
-# don't use smp compliant locking (faster but won't work on SMP machines)
-# (not yet enabled) (FAST_LOCK)
-# -DNO_PINGTEL_TAG_HACK
-# if enabled, To-header-field will be less liberal and will not accept
-# 'tag=' (tag parameter with equal sign and without value); it is called
-# this way because such message was sighted from a Pingtel phone
-# -DWITH_SNMP_MOD
-# if enabled, allows forking of the snmp agent just before child
-# forking (done at the top of main_loop). Needed if you want
-# to use the snmp module.
-# -DUSE_TCP
-# compiles in tcp support
-# -DDISABLE_NAGLE
-# disable the tcp Nagle algorithm (lower delay)
-# -DUSE_TLS
-# compiles in tls support, requires -DUSE_TCP. Please use
-# make TLS=1 instead. (tls support is highly experimental for now)
-
-
-DEFS+= $(extra_defs) \
- -DNAME='"$(MAIN_NAME)"' -DVERSION='"$(RELEASE)"' -DARCH='"$(ARCH)"' \
- -DOS='"$(OS)"' -DCOMPILER='"$(CC_VER)"' -D__CPU_$(ARCH) -D__OS_$(OS) \
- -DCFG_DIR='"$(cfg-target)"'\
- -DPKG_MALLOC \
- -DSHM_MEM -DSHM_MMAP \
- -DDNS_IP_HACK \
- -DUSE_IPV6 \
- -DUSE_MCAST \
- -DUSE_TCP \
- -DDISABLE_NAGLE \
- -DF_MALLOC \
- #-DDBG_QM_MALLOC \
- #-DDBG_F_MALLOC \
- #-DNO_DEBUG \
- #-DNO_LOG \
- #-DVQ_MALLOC \
- #-DCONTACT_BUG \
- #-DDBG_LOCK \
- #-DNOSMP \
- #-DEXTRA_DEBUG \
- #-DUSE_SHM_MEM \
- #-DSTATS \
- #-DNO_LOG
-
-#PROFILE= -pg #set this if you want profiling
-
-# WARNING: do not add mode=debug or mode=release anymore in the Makefile,
-# use make mode=debug all instead. Anyway no by default ser is compiled w/
-# debugging symbols in all cases (-g). --andrei
-
-ifneq ($(TLS),)
- DEFS+= -DUSE_TLS
-endif
-
-ifeq ($(mode),)
- mode = release
-endif
-
-ifeq ($(mode),debug)
- DEFS+= -DEXTRA_DEBUG
-endif
-
-# platform dependent settings
-
-# find ld & as name (gnu or solaris)
-ifeq ($(OS), solaris)
-ifeq ($(CC_NAME), gcc)
- LDGCC=$(shell $(CC) -v 2>&1 | grep with-ld| \
- sed -e 's/.*--with-ld=\([^ ][^ ]*\).*/\1/' )
- ASGCC=$(shell $(CC) -v 2>&1 | grep with-as| \
- sed -e 's/.*--with-as=\([^ ][^ ]*\).*/\1/' )
- LDPATH=$(shell if [ -z "$(LDGCC)" ] ; then echo "ld" ;\
- else \
- if $(LDGCC) -V 2>/dev/null 1>/dev/null; then \
- echo $(LDGCC); \
- else echo "ld" ; \
- fi\
- fi)
- ASPATH=$(shell if [ -z "$(ASGCC)" ] ; then echo "as" ;\
- else \
- if $(ASGCC) -V 2>/dev/null 1>/dev/null; then \
- echo $(ASGCC); \
- else echo "as" ; \
- fi\
- fi)
-
- LDTYPE=$(shell if $(LDPATH) -V 1>/dev/null 2>/dev/null; then \
- if $(LDPATH) -V 2>&1|grep GNU >/dev/null; \
- then echo gnu; \
- else \
- if $(LDPATH) -V 2>&1|grep Solaris >/dev/null;\
- then echo solaris; \
- else \
- echo unknown ; \
- fi \
- fi \
- fi)
- ASTYPE=$(shell if $(ASPATH) -V 1>/dev/null 2>/dev/null </dev/null; \
- then \
- if $(ASPATH) -V 2>&1 </dev/null |grep GNU >/dev/null; \
- then echo gnu; \
- else \
- if $(ASPATH) -V 2>&1 </dev/null |grep Sun >/dev/null;\
- then echo solaris; \
- else \
- echo unknown ; \
- fi \
- fi \
- fi)
-#$(warning "using ld=$(LDPATH)/$(LDTYPE), as=$(ASPATH)/$(ASTYPE)")
-
-endif
-endif
-
-# arh. specific definitions
-ifeq ($(ARCH), i386)
- use_fast_lock=yes
-endif
-
-ifeq ($(ARCH), x86_64)
- use_fast_lock=yes
-endif
-
-ifeq ($(ARCH), sparc64)
-ifeq ($(CC_NAME), gcc)
- use_fast_lock=yes
-endif
-endif
-
-ifeq ($(ARCH), sparc)
- # smp no supported on sparc32
- DEFS+= -DNOSMP
- use_fast_lock=yes
-endif
-
-ifeq ($(ARCH), arm)
- use_fast_lock=yes
-endif
-
-ifeq ($(ARCH), ppc)
- use_fast_lock=yes
-endif
-
-ifeq ($(ARCH), ppc64)
- use_fast_lock=yes
-endif
-
-ifeq ($(ARCH), mips)
-# mips1 arch. (e.g. R3000) - no hardware locking support
- use_fast_lock=no
-endif
-
-ifeq ($(ARCH), mips2)
-# mips2 arch and newer (mips3=R4000, mips4=R5000 a.s.o)
- use_fast_lock=yes
-endif
-
-ifeq ($(ARCH), alpha)
- use_fast_lock=yes
-endif
-
-ifeq ($(use_fast_lock), yes)
- DEFS+= -DFAST_LOCK -DADAPTIVE_WAIT -DADAPTIVE_WAIT_LOOPS=1024
- found_lock_method=yes
-endif
-
-CFLAGS=
-LDFLAGS=
-# setting CFLAGS
-ifeq ($(mode), release)
- #if i386
-ifeq ($(ARCH), i386)
- # if gcc
-ifeq ($(CC_NAME), gcc)
- #common stuff
- CFLAGS=-g -O9 -funroll-loops -Wcast-align $(PROFILE) \
- -Wall
- #if gcc 4.0+
-ifeq ($(CC_SHORTVER), 4.x)
- CPU ?= athlon64
- CFLAGS+=-minline-all-stringops -malign-double \
- -falign-loops \
- -ftree-vectorize \
- -mtune=$(CPU)
-else
- #if gcc 3.4+
-ifeq ($(CC_SHORTVER), 3.4)
- CPU ?= athlon
- CFLAGS+=-minline-all-stringops -malign-double \
- -falign-loops \
- -mtune=$(CPU)
-else
- #if gcc 3.0+
-ifeq ($(CC_SHORTVER), 3.0)
- CPU ?= athlon
- CFLAGS+=-minline-all-stringops -malign-double \
- -falign-loops \
- -mcpu=$(CPU)
-else
-ifeq ($(CC_SHORTVER), 2.9x) #older gcc version (2.9[1-5])
-$(warning Old gcc detected ($(CC_SHORTVER)), use gcc >= 3.1 \
- for better results)
-
- CFLAGS+=-m486 \
- -malign-loops=4
-else
- #really old version
-$(warning You are using an old and unsupported gcc \
- version ($(CC_SHORTVER)), compile at your own risk!)
-
-endif # CC_SHORTVER, 2.9x
-endif # CC_SHORTVER, 3.0
-endif # CC_SHORTVER, 3.4
-endif # CC_SHORTVER, 4.x
-
-else # CC_NAME, gcc
-ifeq ($(CC_NAME), icc)
- CFLAGS=-g -O3 -ipo -ipo_obj -unroll $(PROFILE) \
- -tpp6 -xK #-openmp #optimize for PIII
- # -prefetch doesn't seem to work
- #( ty to inline acroos files, unroll loops,prefetch,
- # optimize for PIII, use PIII instructions & vect.,
- # mutlithread loops)
-else
- #other compilers
-$(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc)
-endif #CC_NAME, icc
-endif #CC_NAME, gcc
-endif #ARCH, i386
-
-#x86_64
-ifeq ($(ARCH), x86_64)
- # if gcc
-ifeq ($(CC_NAME), gcc)
- #common stuff
- CFLAGS=-g -O9 -funroll-loops -Wcast-align $(PROFILE) \
- -Wall
- #if gcc 4.0+
-ifeq ($(CC_SHORTVER), 4.x)
- CPU ?= opteron
- CFLAGS+=-minline-all-stringops \
- -falign-loops \
- -ftree-vectorize \
- -mtune=$(CPU)
-else
- #if gcc 3.4
-ifeq ($(CC_SHORTVER), 3.4)
- CPU ?= athlon64
- CFLAGS+=-minline-all-stringops \
- -falign-loops
-else
- #if gcc 3.0
-ifeq ($(CC_SHORTVER), 3.0)
- CPU ?= athlon64
- CFLAGS+=-minline-all-stringops \
- -falign-loops
- #-mcpu=$(CPU) \ # not working on all x86_64 gccs
- #-mcpu=athlon
-else
-ifeq ($(CC_SHORTVER), 2.9x) #older gcc version (2.9[1-5])
-$(warning Old gcc detected ($(CC_SHORTVER)), use gcc >= 3.1 \
- for better results)
-
- CFLAGS+=-m486 \
- -malign-loops=4
-else
- #really old version
-$(warning You are using an old and unsupported gcc \
- version ($(CC_SHORTVER)), compile at your own risk!)
-
-endif # CC_SHORTVER, 2.9x
-endif # CC_SHORTVER, 3.0
-endif # CC_SHORTVER, 3.4
-endif # CC_SHORTVER, 4.x
-
-else # CC_NAME, gcc
-ifeq ($(CC_NAME), icc)
- CFLAGS=-g -O3 -ipo -ipo_obj -unroll $(PROFILE) \
- -tpp6 -xK #-openmp #optimize for PIII
- # -prefetch doesn't seem to work
- #( ty to inline acroos files, unroll loops,prefetch,
- # optimize for PIII, use PIII instructions & vect.,
- # mutlithread loops)
-else
- #other compilers
-$(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc)
-endif #CC_NAME, icc
-endif #CC_NAME, gcc
-endif #ARCH, x86_64
-
- #if sparc
-ifeq ($(ARCH), sparc64)
- #if gcc
-ifeq ($(CC_NAME), gcc)
- #common stuff
- CFLAGS=-g -O9 -funroll-loops $(PROFILE) \
- -Wall\
- #-Wcast-align \
- #-Wmissing-prototypes
- #if gcc 4.x
-ifeq ($(CC_SHORTVER), 4.x)
- CPU ?= ultrasparc
- #use 32bit for now
- CFLAGS+=-mcpu=ultrasparc -minline-all-stringops \
- -mtune=$(CPU) \
- -ftree-vectorize
-else
- #if gcc 3.4
-ifeq ($(CC_SHORTVER), 3.4)
- CPU ?= ultrasparc
- #use 32bit for now
- CFLAGS+= -mcpu=ultrasparc -mtune=$(CPU)
-else
- #if gcc 3.0
-ifeq ($(CC_SHORTVER), 3.0)
- CPU ?= ultrasparc
- #use 32bit for now
- CFLAGS+= -mcpu=ultrasparc -mtune=$(CPU) \
- # use -m64 to force 64 bit (but add it also to LDFLAGS),
- # -m32 for 32 bit (default on solaris),
- # nothing for arch. default
- # -mcpu=v9 or ultrasparc? # -mtune implied by -mcpu
- #-mno-epilogue #try to inline function exit code
- #-mflat # omit save/restore
- #-,faster-structs #faster non Sparc ABI structure copy ops
-else # CC_SHORTVER, 3.0
-ifeq ($(CC_SHORTVER), 2.9x) #older gcc version (2.9[1-5])
-$(warning Old gcc detected ($(CC_SHORTVER)), use gcc >= 3.1 \
- for better results)
-ifneq ($(OS), netbsd)
- # on netbsd/sparc64, gcc 2.95.3 does not compile
- # ser with -mv8
- CFLAGS+= -mv8
-endif
-ifeq ($(ASTYPE), solaris)
- CFLAGS+= -Wa,-xarch=v8plus
-endif
-else #CC_SHORTVER, 2.9x
- #really old version
-$(warning You are using an old and unsupported gcc \
- version ($(CC_SHORTVER)), compile at your own risk!)
-
- CFLAGS+= -mv8
-ifeq ($(ASTYPE), solaris)
- CFLAGS+= -Wa,-xarch=v8plus
-endif
-
-endif #CC_SHORTVER, 2.9x
-endif #CC_SHORTVER, 3.0
-endif #CC_SHORTVER, 3.4
-endif #CC_SHORTVER, 4.x
-
-else #CC_NAME, gcc
-ifeq ($(CC_NAME), suncc)
- CFLAGS+=-g -xO5 -fast -native -xarch=v8plusa -xCC \
- -xc99 # C99 support
- # -Dinline="" # add this if cc < 5.3 (define inline as null)
-else
- #other compilers
-$(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc)
-endif #CC_NAME, suncc
-endif #CC_NAME, gcc
-endif #ARCH, sparc64
-
- #if ipaq/netwinder
-ifeq ($(ARCH), arm)
- # if gcc
-ifeq ($(CC_NAME), gcc)
- #common stuff
- CFLAGS=-O9 -funroll-loops -Wcast-align $(PROFILE) \
- -Wall
- #if gcc 4.x+
-ifeq ($(CC_SHORTVER), 4.x)
- CFLAGS+=-mcpu=strongarm1100 -minline-all-stringops \
- -ftree-vectorize
-else
- #if gcc 3.4+
-ifeq ($(CC_SHORTVER), 3.4)
- CFLAGS+= -mcpu=strongarm1100
-else
- #if gcc 3.0
-ifeq ($(CC_SHORTVER), 3.0)
- CFLAGS+= -mcpu=strongarm1100
- #-mcpu=athlon
-else
-ifeq ($(CC_SHORTVER), 2.9x) #older gcc version (2.9[1-5])
-$(warning Old gcc detected ($(CC_SHORTVER)), use gcc 3.0.x \
- for better results)
-
- CFLAGS+=
-else
- #really old version
-$(warning You are using an old and unsupported gcc \
- version ($(CC_SHORTVER)), compile at your own risk!)
-
-endif # CC_SHORTVER, 2.9x
-endif # CC_SHORTVER, 3.0
-endif # CC_SHORTVER, 3.4
-endif # CC_SHORTVER, 4.0
-
-else # CC_NAME, gcc
- #other compilers
-$(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc)
-endif #CC_NAME, gcc
-endif #ARCH, arm
-
- #if mips (R3000)
-ifeq ($(ARCH), mips)
- # if gcc
-ifeq ($(CC_NAME), gcc)
- #common stuff
- CFLAGS=-O9 -funroll-loops -Wcast-align $(PROFILE) \
- -Wall
- #if gcc 4.0+
-ifeq ($(CC_SHORTVER), 4.x)
- CFLAGS+=-mcpu=r3000 -minline-all-stringops \
- -ftree-vectorize
-else
- #if gcc 3.4+
-ifeq ($(CC_SHORTVER), 3.4)
- CFLAGS+= -mcpu=r3000
-else
- #if gcc 3.0
-ifeq ($(CC_SHORTVER), 3.0)
- CFLAGS+= -mcpu=r3000
- #-mcpu=athlon
-else
-ifeq ($(CC_SHORTVER), 2.9x) #older gcc version (2.9[1-5])
-$(warning Old gcc detected ($(CC_SHORTVER)), use gcc 3.0.x \
- for better results)
-
- CFLAGS+=-mcpu=r3000
-else
- #really old version
-$(warning You are using an old and unsupported gcc \
- version ($(CC_SHORTVER)), compile at your own risk!)
-
-endif # CC_SHORTVER, 2.9x
-endif # CC_SHORTVER, 3.0
-endif # CC_SHORTVER, 3.4
-endif # CC_SHORTVER, 4.x
-
-else # CC_NAME, gcc
- #other compilers
-$(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc)
-endif #CC_NAME, gcc
-endif #ARCH, mips
-
- #if >=mips2 (R4000, R5000, R6000 ....)
-ifeq ($(ARCH), mips2)
- # if gcc
-ifeq ($(CC_NAME), gcc)
- #common stuff
- CFLAGS= -mips2 -O9 -funroll-loops $(PROFILE) \
- -Wall
- #if gcc 4.0+
-ifeq ($(CC_SHORTVER), 4.x)
- CFLAGS+=-minline-all-stringops -ftree-vectorize
-else
- #if gcc 3.4+
-ifeq ($(CC_SHORTVER), 3.4)
- CFLAGS+=
-else
- #if gcc 3.0
-ifeq ($(CC_SHORTVER), 3.0)
- CFLAGS+=
-else
-ifeq ($(CC_SHORTVER), 2.9x) #older gcc version (2.9[1-5])
-$(warning Old gcc detected ($(CC_SHORTVER)), use gcc 3.0.x \
- for better results)
- CFLAGS+=
-else
- #really old version
-$(warning You are using an old and unsupported gcc \
- version ($(CC_SHORTVER)), compile at your own risk!)
-
-endif # CC_SHORTVER, 2.9x
-endif # CC_SHORTVER, 3.0
-endif # CC_SHORTVER, 3.4
-endif # CC_SHORTVER, 4.x
-
-else # CC_NAME, gcc
- #other compilers
-$(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc)
-endif #CC_NAME, gcc
-endif #ARCH, mips2
-
-
-#if alpha
-ifeq ($(ARCH), alpha)
- # if gcc
-ifeq ($(CC_NAME), gcc)
- #common stuff
- CFLAGS= -O9 -funroll-loops $(PROFILE) -Wall
- #if gcc 4.0+
-ifeq ($(CC_SHORTVER), 4.x)
- CFLAGS+=-minline-all-stringops
-else
- #if gcc 3.4+
-ifeq ($(CC_SHORTVER), 3.4)
- CFLAGS+=
-else
- #if gcc 3.0
-ifeq ($(CC_SHORTVER), 3.0)
- CFLAGS+=
-else
-ifeq ($(CC_SHORTVER), 2.9x) #older gcc version (2.9[1-5])
-$(warning Old gcc detected ($(CC_SHORTVER)), use gcc 3.0.x \
- for better results)
- CFLAGS+=
-else
- #really old version
-$(warning You are using an old and unsupported gcc \
- version ($(CC_SHORTVER)), compile at your own risk!)
-
-endif # CC_SHORTVER, 2.9x
-endif # CC_SHORTVER, 3.0
-endif # CC_SHORTVER, 3.4
-endif # CC_SHORTVER, 4.x
-
-else # CC_NAME, gcc
- #other compilers
-$(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc)
-endif #CC_NAME, gcc
-endif #ARCH, alpha
-
-#if ppc
-ifeq ($(ARCH), ppc)
- # if gcc
-ifeq ($(CC_NAME), gcc)
- #common stuff
- CFLAGS= -O9 -funroll-loops $(PROFILE) -Wall
- #if gcc 4.0+
-ifeq ($(CC_SHORTVER), 4.x)
- CPU ?= powerpc
- CFLAGS+=-ftree-vectorize \
- -mtune=$(CPU) -maltivec
-else
- #if gcc 3.4+
-ifeq ($(CC_SHORTVER), 3.4)
- CFLAGS+=
-else
- #if gcc 3.0
-ifeq ($(CC_SHORTVER), 3.0)
- CFLAGS+=
-else
-ifeq ($(CC_SHORTVER), 2.9x) #older gcc version (2.9[1-5])
-$(warning Old gcc detected ($(CC_SHORTVER)), use gcc 3.0.x \
- for better results)
- CFLAGS+=
-else
- #really old version
-$(warning You are using an old and unsupported gcc \
- version ($(CC_SHORTVER)), compile at your own risk!)
-
-endif # CC_SHORTVER, 2.9x
-endif # CC_SHORTVER, 3.0
-endif # CC_SHORTVER, 3.4
-endif # CC_SHORTVER, 4.x
-
-else # CC_NAME, gcc
- #other compilers
-$(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc)
-endif #CC_NAME, gcc
-endif #ARCH, ppc
-
-#if ppc64
-ifeq ($(ARCH), ppc64)
- # if gcc
-ifeq ($(CC_NAME), gcc)
- #common stuff
- CFLAGS= -O9 -funroll-loops $(PROFILE) -Wall
-ifeq ($(CC_SHORTVER), 4.x)
- CPU ?= powerpc64
- CFLAGS+=-ftree-vectorize \
- -mtune=$(CPU) -maltivec
-else
- #if gcc 3.4+
-ifeq ($(CC_SHORTVER), 3.4)
- CFLAGS+=
-else
- #if gcc 3.0
-ifeq ($(CC_SHORTVER), 3.0)
- CFLAGS+=
-else
-ifeq ($(CC_SHORTVER), 2.9x) #older gcc version (2.9[1-5])
-$(warning Old gcc detected ($(CC_SHORTVER)), use gcc 3.0.x \
- for better results)
- CFLAGS+=
-else
- #really old version
-$(warning You are using an old and unsupported gcc \
- version ($(CC_SHORTVER)), compile at your own risk!)
-
-endif # CC_SHORTVER, 2.9x
-endif # CC_SHORTVER, 3.0
-endif # CC_SHORTVER, 3.4
-endif # CC_SHORTVER, 4.x
-
-else # CC_NAME, gcc
- #other compilers
-$(error Unsupported compiler ($(CC):$(CC_NAME)), try gcc)
-endif #CC_NAME, gcc
-endif #ARCH, ppc
-
-CFLAGS+= $(CC_EXTRA_OPTS)
-
-
-# setting LDFLAGS
-ifeq ($(CC_NAME), gcc)
-ifeq ($(LDTYPE), solaris)
- # solaris ld
- LDFLAGS+=-O2 $(PROFILE)
- MOD_LDFLAGS=-G $(LDFLAGS)
-else
- #gcc and maybe others, => gnu ld
- LDFLAGS+=-Wl,-O2 -Wl,-E $(PROFILE)
- MOD_LDFLAGS=-shared $(LDFLAGS)
-endif
-endif
-ifeq ($(CC_NAME), icc)
- #gcc and maybe others
- LDFLAGS+=-Wl,-O2 -Wl,-E $(PROFILE)
- MOD_LDFLAGS=-shared $(LDFLAGS)
-endif
-ifeq ($(CC_NAME), suncc)
- LDFLAGS+=-xO5 $(PROFILE)
- MOD_LDFLAGS=-G $(LDFLAGS)
-endif
- # we need -fPIC -DPIC only for shared objects, we don't need them for
- # the executable file, because it's always loaded at a fixed address
- # -andrei
-else #mode,release
-ifeq ($(CC_NAME), gcc)
- CFLAGS=-g -Wcast-align $(PROFILE)
-ifeq ($(ARCH), sparc64)
- CFLAGS+= -mcpu=ultrasparc
-endif
-ifeq ($(LDTYPE), solaris)
- #solaris ld
- LDFLAGS+=-g $(PROFILE)
- MOD_LDFLAGS=-G $(LDFLAGS)
-else
- #gnu or other ld type
- LDFLAGS+=-g -Wl,-E $(PROFILE)
- MOD_LDFLAGS=-shared $(LDFLAGS)
-endif
-endif
-ifeq ($(CC_NAME), icc)
- CFLAGS=-g $(PROFILE)
- LDFLAGS+=-g -Wl,-E $(PROFILE)
- MOD_LDFLAGS=-shared $(LDFLAGS)
-endif
-ifeq ($(CC_NAME), suncc)
- CFLAGS= -g $(PROFILE)
- LDFLAGS+=-g $(PROFILE)
- MOD_LDFLAGS=-G $(LDFLAGS)
-endif
-
-endif #mode=release
-
-
-#*FLAGS used for compiling the modules
-ifeq ($(CC_NAME), gcc)
-MOD_CFLAGS=-fPIC -DPIC $(CFLAGS)
-endif
-ifeq ($(CC_NAME), icc)
-MOD_CFLAGS=-Kpic $(CFLAGS)
-endif
-ifeq ($(CC_NAME), suncc)
-MOD_CFLAGS=-xcode=pic32 $(CFLAGS)
-endif
-
-ifeq ($(LEX),)
- LEX=flex
-endif
-ifeq ($(YACC),)
- YACC=bison
-endif
-YACC_FLAGS=-d -b cfg
-# on solaris add -lxnet (e.g. LIBS= -lxnet)
-LIBS= -lfl -ldl -lresolv
-
-
-#os specific stuff
-ifeq ($(OS), linux)
- DEFS+=-DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD \
- -DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H
- ifneq ($(found_lock_method), yes)
- DEFS+= -DUSE_SYSV_SEM # try posix sems
- found_lock_method=yes
- endif
-endif
-
-ifeq ($(OS), solaris)
- DEFS+= -DHAVE_GETIPNODEBYNAME -DHAVE_SYS_SOCKIO_H -DHAVE_SCHED_YIELD \
- -DHAVE_ALLOCA_H -DUSE_SIGACTION
- ifneq ($(found_lock_method), yes)
- DEFS+= -DUSE_PTHREAD_MUTEX # try pthread sems
- found_lock_method=yes
- endif
- ifeq ($(mode), release)
- #use these only if you're using gcc with Solaris ld
- #LDFLAGS=-O2 $(PROFILE)
- #MOD_LDFLAGS=-O2 -G
- else
- #LDFLAGS=-g $(PROFILE)
- #MOD_LDFLAGS=-g -G
- endif
-ifneq ($(TLS),)
- DEFS+= -I/usr/local/ssl/include
-endif
- YACC=yacc
-
-ifeq ($(CC_NAME), suncc)
- LIBS= -lfast -ldl -lresolv
-endif
- OLD_SOLARIS= $(shell echo "$(OSREL)" | \
- sed -e 's/^5\.[0-6][^0-9]*$$/yes/' )
- LIBS+= -L$(LOCALBASE)/lib -lfl -lxnet -lnsl
-ifeq ($(OLD_SOLARIS), yes)
- LIBS+=-lposix4
-else
- LIBS+=-lrt
-endif
- # -lrt needed for sched_yield
-endif
-
-ifeq ($(OS), freebsd)
- DEFS+=-DHAVE_SOCKADDR_SA_LEN -DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN \
- -DHAVE_SCHED_YIELD -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_CONNECT_ECONNRESET_BUG
- ifneq ($(found_lock_method), yes)
- DEFS+= -DUSE_PTHREAD_MUTEX # try pthread sems
- found_lock_method=yes
- LIBS= -pthread -lfl #dlopen is in libc
- else
- LIBS= -lfl #dlopen is in libc
- endif
- YACC=yacc
-endif
-
-ifeq ($(OS), openbsd)
- DEFS+=-DHAVE_SOCKADDR_SA_LEN -DHAVE_GETHOSTBYNAME2 \
- -DHAVE_UNION_SEMUN -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_CONNECT_ECONNRESET_BUG
- ifneq ($(found_lock_method), yes)
- DEFS+= -DUSE_PTHREAD_MUTEX # try pthread sems
- found_lock_method=yes
- endif
- # (symbols on openbsd are prefixed by "_")
- YACC=yacc
- # no sched_yield on openbsd unless linking with c_r (not recommended)
- LIBS= -lfl
- OPENBSD_IS_AOUT= $(shell echo "$(OSREL)" | \
- sed -e 's/^3\.[0-3][^0-9]*$$/yes/' |sed -e 's/^[0-2]\..*/yes/')
-# exception: on sparc openbsd 3.2 is elf and not aout
-ifeq ($(OSREL), 3.2)
-ifeq ($(ARCH), sparc)
- OPENBSD_IS_AOUT:=no
-endif
-ifeq ($(ARCH), sparc64)
- OPENBSD_IS_AOUT:=no
-endif
-endif
-
-ifeq ($(OPENBSD_IS_AOUT), yes)
- DEFS+=-DDLSYM_PREFIX='"_"'
- LDFLAGS= # openbsd ld doesn't like -O2 or -E
-endif
-endif # if opensd
-
-ifeq ($(OS), netbsd)
- DEFS+=-DHAVE_SOCKADDR_SA_LEN -DHAVE_GETHOSTBYNAME2 \
- -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_CONNECT_ECONNRESET_BUG
- ifneq ($(found_lock_method), yes)
- DEFS+= -DUSE_SYSV_SEM # try pthread sems
- found_lock_method=yes
- endif
- YACC=yacc
- LIBS= -lfl
-endif
-
-# OS X support, same as freebsd
-ifeq ($(OS), darwin)
- DEFS+=-DHAVE_SOCKADDR_SA_LEN -DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN \
- -DHAVE_SCHED_YIELD -DHAVE_MSGHDR_MSG_CONTROL \
- -DUSE_ANON_MMAP \
- -DNDEBUG -DHAVE_CONNECT_ECONNRESET_BUG
- # -DNDEBUG used to turn off assert (assert wants to call
- # eprintf which doesn't seem to be defined in any shared lib
- ifneq ($(found_lock_method), yes)
- DEFS+= -DUSE_PTHREAD_MUTEX # try pthread sems
- found_lock_method=yes
- LIBS= -pthread -lfl -lresolv #dlopen is in libc
- else
- LIBS= -lfl -lresolv #dlopen is in libc
- endif
- LDFLAGS= # darwin doesn't like -O2 or -E
- MOD_LDFLAGS= -bundle -bundle_loader ../../$(MAIN_NAME)
- YACC=yacc
-endif
-
-ifneq (,$(findstring CYGWIN, $(OS)))
- #cygwin is the same as common
- ifneq ($(found_lock_method), yes)
- DEFS+= -DUSE_SYSV_SEM # try sys v sems
- found_lock_method=yes
- endif
-endif
-
-#add libssl if needed
-ifneq ($(TLS),)
-DEFS+= -I$(LOCALBASE)/ssl/include
-LIBS+= -L$(LOCALBASE)/lib -L$(LOCALBASE)/ssl/lib -lssl -lcrypto
-endif
-
-ifneq ($(found_lock_method), yes)
-$(warning No locking method found so far, trying SYS V sems)
- DEFS+= -DUSE_SYSV_SEM # try sys v sems
- found_lock_method=yes
-endif
-
-
-
-
-
-endif # ifeq ($(makefile_defs, 1)
Deleted: ser/trunk/Makefile.modules
===================================================================
--- ser/trunk/Makefile.modules 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/Makefile.modules 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,40 +0,0 @@
-#
-# $Id: Makefile.modules,v 1.7 2004/09/07 15:48:52 andrei Exp $
-#
-# module Makefile
-#(to be included from each module)
-#
-MOD_NAME=$(NAME:.so=)
-
-ALLDEP=Makefile ../../Makefile.sources ../../Makefile.rules \
- ../../Makefile.modules
-
-#override modules value, a module cannot have submodules
-override modules=
-override static_modules=
-override static_modules_path=
-
-
-ifeq ($(MAKELEVEL), 0)
-# make called directly in the module dir!
-
-$(warning "you should run make from the main ser directory")
-ifneq ($(makefile_defs), 1)
-$(error "the local makefile does not include Makefile.defs!")
-endif
-
-else
-# called by the main Makefile
-
-ALLDEP+=../../Makefile ../../Makefile.defs
-
-endif
-
-include ../../Makefile.sources
-
-ifeq (,$(filter $(MOD_NAME), $(static_modules)))
-CFLAGS:=$(MOD_CFLAGS)
-LDFLAGS:=$(MOD_LDFLAGS)
-endif
-
-include ../../Makefile.rules
Deleted: ser/trunk/Makefile.radius
===================================================================
--- ser/trunk/Makefile.radius 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/Makefile.radius 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,37 +0,0 @@
-#
-# $Id: Makefile.radius,v 1.1.2.2 2005/09/07 16:22:59 andrei Exp $
-#
-#
-# Radiusclient library detection comes here
-#
-# (To be included from Makefiles of radius related modules)
-#
-# The purpose of this makefile is to perform radiusclient library
-# detection and setup library and include paths in DEFS and LIBS
-# variables. In addition RADIUSCLIENT_NG_4 will be defined when
-# libradiusclient-ng version 4 is detected. That means the module
-# should include radiusclient.h, otherwise radiusclient-ng.h
-# should be included. Variable RADIUSCLIENT_LIB contains the
-# name of the shared library.
-#
-
-#
-# Radiusclient-ng is often installed from tarballs so we
-# need to look int /usr/local/lib as well
-#
-DEFS+=-I$(LOCALBASE)/include
-
-ifneq ($(radiusclient_ng), 4)
-
-# radiusclient-ng 5+
-# DEFS+=-DRADIUSCLIENT_NG_5P
-RADIUSCLIENT_LIB=radiusclient-ng
-
-else
-
-DEFS+=-DRADIUSCLIENT_NG_4
-RADIUSCLIENT_LIB=radiusclient
-
-endif
-
-LIBS=-L$(LOCALBASE)/lib -l$(RADIUSCLIENT_LIB)
Deleted: ser/trunk/Makefile.rules
===================================================================
--- ser/trunk/Makefile.rules 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/Makefile.rules 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,85 +0,0 @@
-#
-# $Id: Makefile.rules,v 1.14.2.2 2005/11/02 17:45:39 andrei Exp $
-#
-#
-# common Makefile rules, included by main Makefile & the modules
-#
-
-#
-# Uses: NAME, ALLDEP, CC, CFLAGS, DEFS, LIBS, MKDEP, auto_gen, auto_gen_others,
-# depends, objs, extra_objs, static_modules, static_modules_path
-# (all this must be defined previously!, see Makefile.defs & Makefile)
-#
-
-
-
-#implicit rules
-%.o:%.c $(ALLDEP)
- $(CC) $(CFLAGS) $(DEFS) -c $< -o $@
-
-%.d: %.c $(ALLDEP)
- @set -e; $(MKDEP) $(DEFS) $< \
- | sed 's#\(\($*D)\)\?$(*F)\)\.o[ :]*#$*.o $@ : #g' > $@; \
- [ -s $@ ] || rm -f $@
-
-
-# normal rules
-$(NAME): $(objs) $(ALLDEP)
- $(LD) $(LDFLAGS) $(objs) $(extra_objs) $(LIBS) -o $(NAME)
-
-
-.PHONY: all
-all: $(NAME) modules
-
-.PHONY: dep
-dep: $(depends)
-
-.PHONY: static
-static: $(objs)
-
-.PHONY: clean
-clean:
- - at rm -f $(objs) $(NAME) $(objs:.o=.il) 2>/dev/null
- - at for r in $(modules) $(static_modules_path) "" ; do \
- if [ -d "$$r" ]; then \
- echo "module $$r" ; \
- $(MAKE) -C $$r clean ; \
- fi ; \
- done
- @if [ -n "$(modules)" -a -d utils/gen_ha1 ]; then \
- cd utils/gen_ha1; $(MAKE) clean; \
- cd ../serunix; $(MAKE) clean; \
- fi
-
-.PHONY: proper
-.PHONY: distclean
-.PHONY: realclean
-proper realclean distclean: clean
- - at rm -f $(depends) $(auto_gen) $(auto_gen_others) 2>/dev/null
- - at for r in $(modules) "" ; do \
- if [ -d "$$r" ]; then \
- $(MAKE) -C $$r proper ; \
- fi ; \
- done
-
-.PHONY: mantainer-cleaan
-mantainer-clean: distclean
- -rm -f TAGS tags *.dbg .*.swp
- - at for r in $(modules) "" ; do \
- if [ -d "$$r" ]; then \
- $(MAKE) -C $$r mantainer-clean; \
- fi ; \
- done
-
-
-.PHONY: TAGS
-TAGS:
- $(MKTAGS)
-
-ifeq (,$(MAKECMDGOALS))
-include $(depends)
-endif
-ifneq (,$(filter-out clean proper distclean realclean mantainer-clean TAGS \
- tar modules, $(MAKECMDGOALS)))
-include $(depends)
-endif
Deleted: ser/trunk/Makefile.sources
===================================================================
--- ser/trunk/Makefile.sources 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/Makefile.sources 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,25 +0,0 @@
-#
-# $Id: Makefile.sources,v 1.13 2003/06/30 16:23:36 andrei Exp $
-#
-# common Makefile variables
-# (source files, objs, etc)
-
-
-#
-# expects: auto_gen defined
-#
-# defines: sources, objs, depends
-#
-
-sources=$(filter-out $(auto_gen), $(wildcard *.c) $(wildcard mem/*.c) \
- $(wildcard parser/*.c) $(wildcard parser/digest/*.c) \
- $(wildcard parser/contact/*.c) $(wildcard db/*.c) ) $(auto_gen)
-ifneq ($(TLS),)
- sources+= $(wildcard tls/*.c)
-endif
-objs=$(sources:.c=.o)
-extra_objs=
-depends=$(sources:.c=.d)
-modules=
-static_modules=
-static_modules_path=
Deleted: ser/trunk/NEWS
===================================================================
--- ser/trunk/NEWS 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/NEWS 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,429 +0,0 @@
-Release notes for SIP Express Router (ser)
-***********************************************
-
-$Id: NEWS,v 1.38.2.3 2005/09/06 13:22:43 andrei Exp $
-
-0.9.4 fixes/improvements (0.9.4 is a bug fix release for 0.9.3)
-
-general:
- - gcc 4.0 support
- - mutlicast options are set for all the sockets
- - mediaproxy: memory leak, unchecked memory allocations
- - postgress: some bugs and cleanups (compiles cleanly now)
- - tm: shm cloned lumps (SER-55)
- - tm: t_fifo: 64-bit fix
- - tm: dst_uri clone fix
- - tm: t_newtran/t_restransmit* races (!)
- - usloc: memory leak
-
-solaris:
- - serctl, better ISA detection, signals
-*bsd:
- - multicast options are properly set
-openbsd:
- - tcp 64 bit fix
-
-
-
-0.9.3 changes
-
-
-new archs:
- - alpha experimental support
- - mips2/cobalt experimental support
- - x86_64 support
- - OS X (darwin) support
- - sparc32 single cpu highly experimental support
- - ppc64 experimental support
-
-modules:
- - enum - support for more than one NAPTR
- - msilo - explicit multidomain support -- recipient's user ID is stored in
- the columns username and domain -- r_uri column kept for compatibility
- reasons (will be removed in future) but not filled by this version of
- module
- - mysql - implements a connection pool, all modules will use same connection
- to access the database
- - nathelper received port test (flag 16 for nat_uac_test): compares the
- source port of the message with sip port in the first Via and returns
- true if different.
- - permsions - support for multiple allow/deny files, allow_register function
- - TM has a new parameter: restart_fr_on_each_reply. If set (default)
- fr_inv timer will be restarted for each provisional reply, if not set
- it will be restarted only for the first reply and for replies >=180
- (but only if increasing, eg.: 180, 181 ...). Usefull when dealing with bad
- UAs that re-transmit 180s.
- - TM saves the avp list into transactions, and make it available into
- callbacks, failure and reply routes.
- - TM contains new command - t_write_unix("/tmp/sems.sock", "announcement")
- sends a message using unix socket interface instead of FIFO interface.
- - TM contains new config variable - unix_tx_timeout -- it specifies the
- transmit timeout of t_write_sock
- - VM functionality was transfered into TM module. Instead of fetching the
- email value from DB (as VM), TM looks for the "email" attribute to get the
- value.
- vm() function was replaced with t_write_req()
- vm_reply() fifo functions was replcated by TM with t_reply() fifo function
- NOTE!! because current version of SEMS/AA try to send reply via vm_reply,
- it will not work with the TM version.
- - xlog - printing the body of any header by specifying the name; new
- specifiers for user-agent, message buffer, message length, message's flags,
- message id.
-
-new modules:
- - avp / avp_db / avp_radius - load and check avps per caller or callee
- - avpops - flexible module for operations with avps and database, introducing
- a pseudo-varible support in SER configuration file
- - cpl-c - implementation of Call Processing Language
- - dispatcher - implements a dispatcher for incoming requests using hashes
- over parts of the request to select the destination
- - diversion - implements the Diversion extensions as per
- draft-levy-sip-diversion-08
- - flatstore - simple module that implements very fast inserts for accounting
- purposes
- - gflags - keeps a bitmap of flags in shared memory and may be used to change
- behaviour of server based on value of the flags
- - options - answer server options requests
- - speeddial - provides on-server speed dial facilities
- - uri_db - split from uri module, performs various checks related to SIP URI
- over database fields
-
-removed modules:
- - vm - the functionality was transfered to tm module (see t_write_req(...)
- method)
-
-core:
- - new parts:
- UNIX domain socket server implemented
- - changes:
- - command line: removed -p port and extended -l:
- -l [proto:]addr[:port] , where proto=udp|tcp and
- addr= host|ip_address|interface_name. The format is the same
- as for listen in the config file. ipv6 addresses must be enclosed in
- [].
- - added from_uri & to_uri: behave exactly like uri but use the
- "From:"/"To:" uris
- (e.g.: if (from_uri==myself) ..., if (to_uri=~"^sip:test@")... )
- - config: better escape support in strings (e.g. \", \<cr>, \x0a, \012)
- - bad network addresses are now automatically fixed
- (e.g. 192.168.1.80/27 => 192.168.1.64/27)
- - avp (Attribute-Value Pair) support added
- - avp alias support added
- - multicast support added (see mcast_loopback & mcast_ttl)
- - saving of procces group id enabled, if the -G option is specified
- (a safe way to quickly kill all ser processes)
- - core dump-ing is enabled by default, see also disable_core_dump
- - protocol and port can be specified in the alias and listen lines, e.g.:
- alias= tcp:foo.bar:* udp:test.bar:5080 foo.com
- listen= eth0 tcp:eth0:5065 udp:127.0.0.1 [3ffe::1]
- - multiple operator support: ==, != for special operations (e.g myself, ip)
- ==, !=, ~= for strings
- ==, !=, >, <, >=, <= for integers
- - database api changed to support usage of different drivers
- simultaneously. The database URL must start now with the name of the
- driver (module). Example: for mysql the DB URL
- 'sql://user:password@dbhost:port/database' must be specified now as
- 'mysql://user:password@dbhost:port/database'
- - new config variables:
- mcast_loopback = <yes/no> - loopback sent multicast datagram, default no.
- mcast_ttl = number - set multicast ttl, default OS specific (usually 1).
- sock_mode = <permissions> (e.g. sock_mode=0600: default value = 0660)
- ser unix sockets and fifo will be created with this permissions
- (old name fifo_mode is still supported, but deprecated)
- sock_user = username|"uid"
- sock_group = groupname|"gid"
- change the owner and/or group of the ser unix sockets or fifo
- Short example config snippet:
- sock_mode=0600 # ser socket/fifo mode
- sock_user="www-data" # ser socket/fifo owner
- sock_group=nogroup
- user=nobody # ser user (ser will suid to it)
- disable_core_dump= yes|no
- by default core dump limits are set to unlimited or a high enough
- value, set this config variable o yes to disable core dump-ing
- (will set core limits to 0)
- open_files_limit= number
- if set and bigger than the current open file limit, ser will try
- to increase its open file limit to this number. Note: ser must be
- started as root to be able to increase a limit past the hard limit
- (which, for open files, is 1024 on most systems)
- tcp_connect_timeout= seconds
- time before an ongoing connect will be aborted
- tcp_send_timeout= seconds
- time after a tcp connection will be closed if it is not available
- for writing in this interval (and ser wants to send something on it)
- tcp_accept_aliases= yes|no
- if a message received over a tcp connection has "alias" in its via
- a new tcp alias port will be created for the connection the message
- came from (the alias port will be set to the via one).
- Based on draft-ietf-sip-connect-reuse-00.txt, but using only the port
- (host aliases are too dangerous IMHO, involve extra DNS
- lookups and the need for them is questionable)
- See force_tcp_alias for more details.
- log_facility = LOG_LOCAL0
- if ser logs to syslog, you can control the facility for logging. Very
- useful when you want to divert all ser logs to a different log file.
- See man page syslog(3) for more detailes.
- unix_sock = "/tmp/ser.sock"
- The name of the socket the unixsock server should listen on.
- unix_sock_children = 1
- The number of children that will listen on the unix domain socket.
- unix_tx_timeout = 2000
- Timeout (in ms) used when sending replies through unix sockets.
- - new script commands:
- force_send_socket([proto:]address[:port])
- sends the message from the specified socket (it _must_ be one of the
- sockets ser listens on). If the protocol doesn't match (e.g. udp
- message "forced" to a tcp socket) the closest socket of the same
- protocol is used.
- force_tcp_alias()
- force_tcp_alias(port)
- adds a tcp port alias for the current connection (if tcp).
- Usefull if you want to send all the trafic to port_alias through
- the same connection this request came from [it could help
- for firewall or nat traversal].
- With no parameters adds the port from the message via as the alias.
- When the "aliased" connection is closed (e.g. it's idle for too
- much time), all the port aliases are removed.
- Note: by default ser closes idle connection after 3 minutes (stable)
- or 1 minute (unstable) so to take full advantage of tcp aliases for
- things like firewall and nat traversal, redefine TCP_CON_*TIMEOUT
- in tcp_conn.h and recompile. Also right now there can be maximum
- 3 port aliases to a connection (you shouldn't need more than one).
- To change this redefine TCP_CON_MAX_ALIASES in the same file
- (set it to you desired value + 1; 1 is needed for the real port).
-
-utilities:
- - ngrep patch for displaying new lines in captured SIP messages is no longer
- needed; use ngrep V 1.42 with the option "-W byline"
-
-
-
-***********************************************
-* Changes/fixes introduced in 0.8.12
-***********************************************
-+--------------------------------------------------------+
-| WARNING: if you want to use a 0.8.11 config script |
-| with 0.8.12, replace if ( len_gt(number) ) with: |
-| if ( msg:len > bumber ) |
-+--------------------------------------------------------+
-
-New Features
-============
-
-texops:
- - subst('s/re/repl/flags') support
-core:
- - added switch to check the config file (-c)
- - changes: removed len_gt() and replaced with if (msg:len op number|max_len)
- - multiple operator support: ==, != for special operations (e.g myself, ip)
- ==, !=, ~= for strings
- ==, !=, >, <, >=, <= for integers
- - new config variables:
- advertised_address= ip | string
- address advertised in via and in the DST_* lumps (e.g RR)
- This is the default value, if empty (default) the socket
- address will be used.
- WARNING: - don't set it unless you know what you are doing
- (e.g. nat traversal)
- - you can set anything here, no check is made
- (e.g. foo.bar will be accepted even if
- foo.bar doesn't exist)
- advertised_port= no
- port advertised in via and in the DST_*lumps (e.g. RR)
- This is the default value, if empty (default) the socket
- port will be used.
- Same warnings as above.
- - new script commands:
- set_advertised_address(ip|string)
- same as advertised_address but it affects only the current message:
- Message host/lump address= the set_advertised one if
- present, else advertised_address else socket address.
- set_advertised_port(no)
- same as advertised_port but it affects only the current
- message; see set_advertised_address & s/address/port/g
-
-usrloc:
- - usernames are case insensitive
-
-registrar:
- - lookup function succeeds when appending of a branch failed
-
-auth_db:
- - support for rpid stored in database (thanks to Jakob Schlyter)
-
-Bug fixes
-=========
-- memory leak in digest credentials parser fixed
-- authenticathion ha1 didn't include domain if username was of the form
- user at domain and calculate_ha1 was set to yes (modules/auth_db)
-- tm reply processing race condition (modules/tm), special thanks go to
- Dong Liu
-- Many bugs in pa module fixed, works with registrar again.
-
-Security updates
-================
-
-- fifo processing code will write responses only to other
- fifos and only if they are not hard-linked, also default
- ser fifo persmissions were changed to 0600.
-
-Performance improvements
-========================
-- tuned internal malloc implementation parameters to better reflect the
-actual workload (malloc is a little bit faster now)
-
-
-
-***********************************************
-* Changes introduced in 0.8.11
-***********************************************
-
-+--------------------------------------------------------+
-| CAUTION: the 0.8.11 release include changes which |
-| are incompatible with scripts and databases used |
-| in previous versions. Care is advised when upgrading |
-| from previous releases to 0.8.11. |
-+--------------------------------------------------------+
-
-New features
-=============
-- RFC3261 support
- - TCP support and cross-transport forwarding [core]
- - loose routing support [rr module]
-- New modules
- - vm -- voicemail interface [vm]
- - ENUM support [enum]
- - presence agent [pa]
- - dynamic domain management -- allows to manipulate
- hosting of multiple domains in run-time [module]
- - flat-text-file database support [dbtext]
- - rich access control lists [permissions]
-- Feature Improvements
- - click-to-dial, which is based on improved tm/FIFO
- that better supports external applications [tm module]
- - web accounting -- acc module can report to serweb
- on placed calls [acc module]
- - improved exec module (header fields passed now
- as environment variables to scripts) [exec module]
-- Architectural Improvements
- - powerpc fast locking support
- - netbsd support
- - 64 bits arch. support (e.g. netbsd/sparc64).
-- New Experimental Features (not tested at all yet)
- - nathelper utility for Cisco/ATA NAT traversal [nathelper]
- - another NAT traversal utility [mangler]
- - postgress support [postgress]
- - fcp module [fcp]
- - pdt module (prefix2domain) [pdt]
-
-Changes to use of ser scripts
-=============================
-
-About Multiple Transport Support
---------------------------------
-SER now suports multiple transport protocols: UDP and TCP. As there
-may be UAs which support only either protocol and cannot speak to
-each other directly, we recommend to alway record-route SIP requests,
-to keep the transport-translating SER in path. Also, if a destination
-transport is not known, stateful forwarding is recommended -- use of
-stateless forwarding for TCP2UDP would result in loss of reliability.
-
-
-core
-----
-- reply_route has been renamed to failure_route -- the old name caused
- too much confusion
-- forward_tcp and forward_udp can force SER to forward via specific
- transport protocol
-
-acc module:
------------
-- radius and sql support integrated in this module; you need to
- recompile to enable it
-- acc_flag is now called log_flag to better reflect it relates
- to the syslog mode (as opposed to sql/radius); for the same
- reasons, the accounting action is now called "acc_log_request"
- and the option for missed calls "log_missed_calls"
-- log_fmt allows now to specify what will be printed to syslog
-
-auth module:
-------------
-- auth module has been split in auth, auth_db, auth_radius, group
- group_radius, uri and uri_radius
-- all the parameters that were part of former auth module are now
- part of auth_db module
-- auth_db module contains all functions needed for database
- authentication
-- auth_radius contains functions needed for radius authentication
-- group module contains group membership checking functions
-- group_radius contains radius group membeship checking functions
-- is_in_group has been renamed to is_user_in and places to groups
- module
-- check_to and check_from have been moved to the uri module
-
-
-im module:
-----------
-- im is no longer used and has been obsoleted by TM
-
-exec module:
-------------
-- exec_uri and exec_user have been obsoleted by exec_dset;
- exec_dset is identical to exec_uri in capabilities; it
- additionaly passes content of request elements (header
- fields and URI parts) in environment variables; users of
- exec_user can use exec_dset now and use the "URI_USER"
- variable to learn user part of URI
-- exec_dset and exec_msg return false, if return value of
- script does not euqal zero
-- exec_dset takes an additional parameter, which enables
- validation of SIP URIs returned by external application
-
-jabber module:
---------------
-- presence support for Jabber users is enabled loading the PA
- module and using handle_subscribe("jabber") for SUBSCRIBE
- requests to jabber user
-
-msilo module:
--------------
-- m_store has now a parameter to set what should be considered
- for storing as destination uri. This enables support for saving
- the messages on negative replies.
-
-radius_acc module:
-------------------
-- radius_acc module has been removed and radius accounting
- is now part of acc module
-
-registrar/usrloc modules:
--------------------------
-- multi domain support, the modules user username at domain as AOR
- if enabled
-- descent modification time ordering of contacts
-- case sensitive/insensitive comparison of URI can be enabled
-
-rr module:
-----------
-- addRecordRoute has been replaced with record_route
-- rewriteFromRoute has been replaced with loose_route()
-- a new option, "enable_full_lr" can be set to make life
- with misimplemented UAs easier and put LR in from "lr=on"
-- rr module can insert two Record-Route header fields when
- necesarry (disconnected networks, UDP->TCP and so on)
-
-tm module:
-----------
-- t_reply_unsafe, used in former versions within reply_routes,
- is deprecated; now t_reply is used from any places in script
-- t_on_negative is renamed to t_on_failure -- the old name just
- caused too much confusion
-- FIFO t_uac used by some applications (like serweb) has been
- replaced with t_uac_dlg (which allows easier use by dialog-
- oriented applications, like click-to-dial)
-- if you wish to do forward to another destination from
- failure_route (reply_route formerly), you need to call t_relay
- or t_relay_to explicitely now
-- t_relay_to has been replaced with t_relay_to_udp and t_relay_to_tcp
-
Deleted: ser/trunk/README
===================================================================
--- ser/trunk/README 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/README 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,107 +0,0 @@
-$Id: README,v 1.12 2004/12/16 17:46:44 andrei Exp $
-
-
- iptel.org SIP Express Router (ser)
- http://www.iptel.org/ser/
-
-
-
-I. About SIP Express Router (ser)
-II. Feature List
-III. About iptel.org
-IV. Obtaining Help
-V. Contact, Licensing and More Information
-
-
- SIP Express Router (SER) is an industrial-strength, free VoIP
-server based on the session initiation protocol (SIP RFC2543-bis).
-It is engineered to power IP telephony infrastructures up to large
-scale. The server keeps track of users, sets up VoIP sessions,
-relays instant messages and creates space for new plug-in
-applications. Its proven interoperability guarantees seamless
-integration with components from other vendors, eliminating the
-risk of a single-vendor trap. It has successfully participated in
-various interoperability tests in which it worked with the products
-of other leading SIP vendors.
-
-The SIP Express Router enables a flexible plug-in model for new
-applications: Third parties can easily link their plug-ins with
-the server code and provide thereby advanced and customized
-services. In this way, plug-ins such as SNMP support, RADIUS
-accounting, or SMS gateway have already been developed and are
-provided as advanced features. Other modules are underway:
-Presence server, firewall control, and more.
-
-Its performance and robustness allows it to serve millions of users
-and accommodate needs of very large operators. With a $3000 dual-CPU,
-the SIP Express Router is able to power IP telephony services in an
-area as large as the Bay Area during peak hours. Even on an IPAQ PDA,
-the server withstands 150 calls per second (CPS)! The server has been
-powering our iptel.org free SIP site withstanding heavy daily load
-that is further increasing with the popularity of Microsoft's
-Messenger.
-
-The SIP Express Router is extremely configurable to allow the creation
-of various routing and admission policies as well as setting up new
-and customized services. Its configurability allows it to serve many
-roles: network security barrier, application server, or PSTN gateway
-guard for example.
-
-
-II. Feature List
-
-Based on the latest standards, the SIP Express Router (SER) includes
-support for registrar, proxy and redirect mode. Further it acts as
-an application server with support for CPL, instant messaging and
-presence (IM&P) including a 2G/SMS gateway, a call control policy
-language, call number translation, private dial plans and accounting,
-authorization and authentication (AAA) services. SER runs on Sun/
-Solaris, PC/Linux, IPAQ/Linux platforms and supports both IPv4 and
-IPv6.
-
-Most of SER features are implemented as plug-in modules. See
-README-MODULES for a description of modules available in
-ser distribution.
-
-
-III. About iptel.org
-
-iptel.org is a know-how organization spun off from Germany's national
-research company FhG Fokus. One of the first SIP implementations ever,
-low-QoS enhancements, interoperability tests and VoIP-capable firewall
-control concepts are examples of well-known FhG's work.
-
-iptel.org continues to keep this know-how leadership in SIP.
-The access rate of the company's site, a well-known source of
-technological information, is a best proof of interest. Thousands
-of hits come every day from the whole Internet.
-
-IV. Obtaining Help
-
-We offer best-effort free support for ser. "best-effort" means
-that we try to solve your problems via email as soon as we can,
-subject to available manpower. If you need commercial support,
-contact info at iptel.org.
-
-To receive feedback to your inquiries, we recommend you to subscribe
-to the serusers mailing list and post your queries there. This mailing
-list is set up for mutual help by the community of ser users and developers.
-To participate in the mailing list, subscribe at the following web address:
- http://mail.iptel.org/mailman/listinfo/serusers.
-Send your questions to
- serusers at iptel.org.
-
-V. Contact, Licensing and More Information
-
-For any additional information, send an inquiry to info at iptel.org.
-Licensing conditions other than GPL are available on request.
-
-Most up-to-date information is always available at our website,
- http://www.iptel.org/ser/
-
-Particularly, it includes:
-- administrator's guide
-- installation guidelines (INSTALL)
-- download links
-- list of known issues (ISSUES)
-- etc.
Deleted: ser/trunk/README-MODULES
===================================================================
--- ser/trunk/README-MODULES 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/README-MODULES 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,363 +0,0 @@
-# $Id: README-MODULES,v 1.12 2004/12/16 17:39:46 andrei Exp $
-
-'Owner' field contains a developers CVS username, see file
-AUTHORS for more details.
-
-'Use' tells how deployable a module is. Regular indicates
-we deploy and use this feature in our infrastructure.
-Experimental tells we are still gaining operation experience.
-Temporary labels modules which momentarily fix some
-bugs/lacks and will disappear later. Example modules
-are primarily useful as educational source code for
-ser programmers.
-
-'Maturity' is label as stable if a module has been deployed
-for longer time, alpha if it is still being developed and
-beta if it is under test.
-
-'Depends on' field tells which modules the module needs.
-
-Modules underway include firewall control, and more.
-If you are interested in any of these or other modules,
-write us to info at iptel.org.
-
-List of currently available ser modules:
-
-Name: acc
-Owner: jiri
-Use: regular
-Maturity: stable
-Depends on: tm
-Purpose: Transaction accounting/example (the module server also as an
- example of how to bind to transaction management)
-
-Name: auth
-Owner: janakj
-Use: regular
-Maturity: stable
-Depends on: sl
-Purpose: Common functions for digest authentication
-
-Name: auth_db
-Owner: janakj
-Use: regular
-Maturity: stable
-Depends on: mysql auth
-Purpose: Database support for digest authentication
-
-Name: auth_radius
-Owner: janakj
-Use: experimental
-Maturity: beta
-Depends on: auth
-Purpose: Radius support for digest authentication
-
-Name: avp
-Owner: jiri
-Use: regular
-Maturity: beta
-Depends on: -
-Purpose: Loads and checks avps per caller or callee
-
-Name: avp_db
-Owner: janakj
-Use: regular
-Maturity: beta
-Depends on: mysql avp
-Purpose: Database support for avps
-
-Name: avp_db
-Owner: janakj
-Use: regular
-Maturity: beta
-Depends on: avp
-Purpose: Radius support for avps
-
-Name: avpops
-Owner: ramona
-Use: regular
-Maturity: beta
-Depends on:
-Purpose: avp operations, pseudo-variable support
-
-Name: cpl-c
-Owner: bogdan
-Use: regular
-Maturity: beta
-Depends on: -
-Purpose: Call Processing Language
-
-Name: dbtext
-Owner: dcm
-Use: experimental
-Maturity: alpha
-Depends on: -
-Purpose: Database emulation in plaintext files
-
-Name: dispatcher
-Owner: dcm
-Use: experimental
-Maturity: alpha
-Depends on: -
-Purpose: Implements a dispatcher for incoming requests using hashes
-
-Name: diversion
-Owner: janakj
-Use: experimental
-Maturity: alpha
-Depends on: -
-Purpose: Support for the Diversion extensions (draft-levy-sip-diversion-08)
-
-Name: exec
-Owner: jiri
-Use: experimental
-Maturity: beta
-Depends on: -
-Purpose: Execution of external URI processing logic
-
-Name: ext
-Owner: bogdan
-Use: experimental
-Maturity: alpha
-Depends on: -
-Purpose: Execution of external URI processing logic
-
-Name: extcmd
-Owner: bogdan
-Use: experimental
-Maturity: alpha
-Depends on: -
-Purpose: Execution of external commands
-
-Name: flatstore
-Owner: janakj
-Use: experimental
-Maturity: beta
-Depends on: -
-Purpose: Very fast accounting in flat text files
-
-Name: gflags
-Owner: jiri
-Use: experimental
-Maturity: beta
-Depends on: -
-Purpose: global flags that can be changed by fifo commands
-
-Name: group
-Owner: janakj
-Use: regular
-Maturity: stable
-Depends on: database
-Purpose: Group membership checking using database
-
-Name: group_radius
-Owner: janakj
-Use: experimental
-Maturity: beta
-Depends on: -
-Purpose: Group membership checking using Radius
-
-Name: jabber
-Owner: dcm
-Use: experimental
-Maturity: beta
-Depends on: database tm
-Purpose: SIMPLE 2 Jabber gateway
-
-Name: maxfwd
-Owner: bogdan
-Use: regular
-Maturity: stable
-Depends on: -
-Purpose: Max-Forwards check
-
-Name: msilo
-Owner: dcm
-Use: experimental
-Maturity: beta
-Depends on: database tm
-Purpose: Message store
-
-Name: mysql
-Owner: janakj
-Use: regular
-Maturity: stable
-Depends on: -
-Purpose: MySQL database support
-
-Name: options
-Owner: calrissian
-Use: experimental
-Maturity: beta
-Depends on: -
-Purpose: Answers server options requests
-
-Name: pa
-Owner: janakj
-Use: experimental
-Maturity: alpha
-Depends on: tm (usrloc jabber)
-Purpose: Presence agent
-
-Name: pike
-Owner: bogdan
-Use: experimental
-Maturity: alpha
-Depends on: -
-Purpose: Excessive load detection
-
-Name: print
-Owner: andrei
-Use: example
-Maturity: stable
-Depends on: -
-Purpose: Printing messages to stdout
-
-Name: registrar
-Owner: janakj
-Use: regular
-Maturity: stable
-Depends on: usrloc sl
-Purpose: Registrar
-
-Name: rr
-Owner: janakj
-Use: regular
-Maturity: stable
-Depends on: -
-Purpose: Routing and Record-Routing
-
-Name: sl
-Owner: bogdan
-Use: regular
-Maturity: stable
-Depends on: -
-Purpose: Stateless replies
-
-Name: sms
-Owner: bogdan
-Use: regular
-Maturity: stable
-Depends on: tm
-Purpose: SMS gateway
-
-Name: snmp
-Owner: ric
-Use: removed
-Maturity: removed
-Depends on: -
-Purpose: SNMP Management
-
-Name: speeddial
-Owner: ramona
-Use: regular
-Maturity: beta
-Depends on: -
-Purpose: On-server speed dial facilities
-
-Name: textops
-Owner: andrei
-Use: regular
-Maturity: stable
-Depends on: -
-Purpose: Message Textual Operations
-
-Name: tm
-Owner: jiri
-Use: regular
-Maturity: beta
-Depends on: -
-Purpose: Transaction Management
-
-Name: uri
-Owner: janakj
-Use: regular
-Maturity: stable
-Depends on: database
-Purpose: Various URI checks
-
-Name: uri_db
-Owner: janakj
-Use: experimental
-Maturity: beta
-Depends on: mysql uri
-Purpose: URI checking using DB
-
-Name: uri_radius
-Owner: janakj
-Use: experimental
-Maturity: beta
-Depends on: -
-Purpose: URI checking using Radius
-
-Name: usrloc
-Owner: janakj
-Use: regular
-Maturity: stable
-Depends on: database
-Purpose: User location support
-
-Name: vm
-Owner: rco
-Use: removed (functionality moved in tm)
-Maturity: removed
-Depends on: tm
-Purpose: Voicemail interface
-
-Name: xlog
-Owner: ramona
-Use: regular
-Maturity: stable
-Depends on:
-Purpose: formatted logging (printf style)
-
-Contributions
--------------
-Name: domain
-Owner: jih
-Use: experimental
-Maturity: beta
-Depends on: mysql
-Purpose: Local domain lists and related functions
-
-Name: enum
-Owner: jih
-Use: experimental
-Maturity: beta
-Depends on: -
-Purpose: Enum support
-
-Name: domain
-Owner: jih
-Use: experimental
-Maturity: beta
-Depends on: -
-Purpose: support for maintenance of multiple domains
-
-Name: mediaproxy
-Owner: danp, agprojects
-Use: regular
-Maturity: stable
-Depends on: mediaproxy media relay
-Purpose: nat traversal
-
-Name: nathelper
-Owner: sobomax
-Use: regular
-Maturity: stable
-Depends on: rtpproxy
-Purpose: nat traversal
-
-Name: permissions
-Owner: tirpi
-Use: experimental
-Maturity: beta
-Depends on: -
-Purpose: hosts.allow-like ACLs
-
-Name: postgress
-Owner: lgfausak
-Use: experimental
-Maturity: beta
-Depends on: -
-Purpose: Postgress DB support
Deleted: ser/trunk/README.cfg
===================================================================
--- ser/trunk/README.cfg 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/README.cfg 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,66 +0,0 @@
-$Id: README.cfg,v 1.1 2002/09/26 12:16:17 andrei Rel $
-
-[ under construction :) ]
-
-Sources:
-
- - set your tab stop to 4 (in vi: set ts=4).
-
-
-Compile & Install:
-
-- read INSTALL
-- compile & sip_router -h
-
-
-Configuration files:
-
- Example configuration files in ./tests/*.cfg
-
- Global parameters:
- - debug
- - listen
- - alias
- - port
- - fork
- - children_no
- - log_stderror
- - fifo
- - loadmodule "path/modulename"
- ...
-
- Logical expressions [missing]
- Operators:
- ==
- =~
- and/&
- or/|
- not/!
- Lvalues:
- - uri
- - method
- - src_ip
- - dst_ip
- - myself
- Rvalues:
- - string
- - integer
- - ipv4 or ipv6 address
- - netv4 or netv6 address
- - myself (matches any uri or ip address the server listens on or
- registered as an alias for the server)
-
- Commands:
- - forward
- - send
- - error [not implemented yet ]
- - log
- - exec
- - route/goto
- - drop/break
- - if {} else{}
- Modules:
- - loadmodule "..."
- - commands registered by modules
-
-
Deleted: ser/trunk/TODO
===================================================================
--- ser/trunk/TODO 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/TODO 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,214 +0,0 @@
-$Id: TODO,v 1.88 2004/11/15 16:46:14 andrei Exp $
-
-( - todo, x - done)
-x change subst_run/str to return error (different from not found)
-x change subst_user as on serdev
-x tm : fake_env: fake also bind_address (else the default will be used
- in the failure route)
-- [core] parse_uri support for new uri params
-x [core] on sig_child, kill the processes if they don't exit in a
- reasonable time
-- [doc] document force_rport()
-- [fifo] fix fgets error handling (it does not set errno always,
- , right now kills all ser if interrupted by a signal on ?solaris?)
-- [mem] make shm_realloc be fragmentation friendly: call shm_compact_frags
- for the small frags?, don't produce smaller frags -- be wastefull?
-- [mem] qm_compact_frags (compacts frags if possible), keep a
- fragment count/bucket and if too much mem. is blocked in one bucket
- de-frag.
-x [mem] investigate: don't produce frag if frag size < request
- (should reduce the unrequested fragments number)
-x [mem] investigate: keep an used/unused flag per fragment, on free
- check if neighboring frags were not used and if so defragment
-- [timer] multiple timers? at least ticks should no be affected by the amount
- of work done in the timer handlers
-- [tcp] ser intiated tcp connections use INADDR_ANY (they should be bound first
- to some ip/port ?function of the dest?)
-- [tcp] need to confirm fd receipt after send_fd, before closing it (this might
- happen in tcp_send new conn.) (see FreeBSD send BUGS for more info)
-x [tcp] make send_all, send non-blocking ready ?
-x [tcp] tcp_send w/ timeout (to avoid waiting forever to send DOS)
-
-- forward port fixes from testing
-- [udp] use recvmsg to get the dst ip address in udp_rcv_loop
- (it won't work on solaris, but...)
-x nathelper: extract_body broken-> uses content_length value form the
- message instead of recalculating it + duplicate code for get_body()
-- fix check_sel_op -- add proto for uri proto checks
-- [tcp] add setting for infinite tcp conn life?
-
-- fix 2 different fixups for diff. no of parameter
- (add no of params to struct action?) -- linked to var. no. of params
-x alias support fot tcp/tls port numbers
-- warning builder set_advertised address support
-- grep parse_uri & replace with parse_sip_msg_uri (e.g do_action!)
-x update AUTHORS, debian/copyright, ser.8, ser.cfg.5 from stable
-x update Makefile* from stable
-x update all package specs from stable
-- [tcp] add BUG checks for fd > 0 && fd <= maxfd to all selects?
-- [tcp] switch to poll if HAVE_POLL defined (it's unifix so everybody
- should have it, but it would be slower on systems emulating it, like
- older linuxes)
-- [tcp] switch to epoll if HAVE_EPOLL defined (linux 2.6.*)
-- [tcp] switch to SIGIO if no epoll (linux only, better than poll)
-x tcp_main_loop: BUG cases should "conitnue;"
-x change len_gt into and expr (e.g msg:len).
-x sipit: uri == myself doesn't match tls port = 5061
- -- updated: new socket_info list code should fix it
-x sipit: fix check_self & *_alias to work with tcp & tls
- -- updated: new socket_info list code should fix it
-x sipit: fix ipv6 references in check_self
-x regex subst on uris?
-x port receive.c pre_script_cb fix from stable
-x extend alias to include port numbers :
- something like alias= foo1.bar:5080 foo2.bar foo3.bar:*
-x extend listen and alias to include port numbers and protocol:
- tcp foo.bar:5063, udp foo.bar:5062, foo2.bar
-x added set_advertised_{address,port} -- was: add force_via, force_srcip a.s.o
-(the advertised addresses should be overwritable from the script).
-x ? add force_outbound_socket(ip)? (choose an apropriate socket from the
- listen list for sending the msg; works on udp only)
-
-release:
-- unlink_timer_lists -- unsafe ???
-x print_cseq_num max. size fix.
-x backport: tcp conn id fix to stable + destroy_tcp
-x backport: acc mem. leak fixes
-x backport: dns mem. leak fixes (resolve.[ch])
-x backport: id_builder receive_msg mem. leak (msg_translator.c)
-x backport: check_self ipv6/case fixes (forward.c)
-x change tcp timeouts to 2 or 3 min?
-x check via ipv6 fixes and backport to stable
-x fix kill(0, SIGTERM) on startup error (will kill also the launching shell
- if non-interactive)
-- fix modules destroy (some modules will try to free uninitialized resources
- if modules_init was not called first)
-x fix CC_VER bug in newer Makefile (move DEFS after CC?)
-x openbsd 3.2 packages -> doc in share/doc (and not in doc)
-- openbsd 3.2 -> add jabber and mysql to the package
-x fix modules makefiles (so that cd modules/foo; make will also link the proper
- libs)
-x fix -march=..., or compile w/ i386 for the release
-x resolver should resolve [ipv6]
-x remove parse_uri debugging info
-- fix DBG("<%.*s>", len, _null_)
-x add -t, -w, -u -g equivalents to the config file
-x force add rport : force_rport()
-- kill all the fprintf
-see also tcp & tm
-
-
-
-not so critical:
-x replace remaining mallocs/frees at least in msg_translator.c
-- add $(INCLUDES) to the Makefiles
-x make ser suncc ready
-- fix parse_cseq!!! (it doesnt parse 1234\n INVITE a.s.o)
-x fix 0 parameter module f. call
-x better Via parsing (handle ' ' in uri, eg: foo.bar : 1234 ; received=) and
- ipv6 addresses ([fec0:aa::01]).
-- fix format string vulnerability in log()
-- fix alignment access problems (warning on Sun)
-x (different way) add request header bitmap field for the modules
-- introduce variables & function in the script language (cfg. file)
-- ? variable number of params functions in script (no longer limited to 2)?
-- kill bind_idx
-x fix bind_address for tcp (in some way)
-x add conflict in debs/rpms/etc (conflict w/ older ser-mysql, ser-jabber)
-x new packages ser-radius etc
-x tcp_destroy (called on ser exit)
-- BUG:?? ipv6 only and try to send to ipv4 => getsendsocket=>0 (send_ipv6=0)
- the reverse is also true
-- SUBST lumps for replies (involves setting the send_socket in forward_reply,
- before build_res_from_res, & adding it to buid_res_from_res).
-
-
-High priority:
-x- parse_uri should not copy anymore the uri members (and it should not 0
- terminate them anylonger).
-x fix/replace T_REF/T_UNREF
-x review all the tm locking
-x if () {} else {}
-x plugin interface
-x ipv6 support
-x reply ("response line")
-x drop ACKs for our replies
-x add To-tag (for the replies)
-x add User-Agent (for the replies)
-
-Low priority:
-- icmp error handling
-x fix via address someday
-- fix listen=0.0.0.0 case (see [udp] use recvmsg...)
-x forward to received= if present
-- make it easier to register a statically linkable module.
-x add support for -u user and -g group (not only -u uid, -g uid)
-x change uid/gid after opening the sockets
-- exec improvments (add format strings to it)
-x command line switch for checking the config file syntax
-- config file version (a la sendmail)
-0 loop detection
-- cfg. file reload
-- flags for using names or ip adresses in Via ?
-- escape char injection/printing fix (verify all log/printed messages
- for terminal escapes and remove them)
-
-x handle SIGCHLD, SIGHUP
-- use a standard lex compatible .lex format (instead of flex)
-x try & use native compiler & ld if possible
-
-x make install
-x init.d scripts (and rc.local? for *BSD or Slackware)
-x man page
-- autoconf scripts
-x Debian package build files
-x the same for rpm
-x the same for *BSD
-
-
-x jku: branch hash computation over canonical values
-0 jku: loop checking
-- jku: try CRC as opposed to MD5
-
-
-x freopen stdin, stdout, stderr to /dev/null
-- add a section on building ser & configuring it for maximum performance
- (-DF_MALLOC, -DNO_DBG, ... sip_warning=0, a.s.o)
-x add src_port, dst_port, proto to cfg.{y,lex}
-x generic locking lib
-x convert tm to use new locking lib
-
-optimizations:
-- better timer interface with hashes (a la openbsd)
-- change lumps (flags for malloc type, recursive? see COND lumps )
-- atomic ops?
-- assembly for some very common used function
-- getsock* cache
-- fd cache for tcp_send
-- dns cache? (see DNS)
-- make option to use openssl MD5 (HMAC_Init(hmac_ctx, (void*)key, 16, md5_md))
- [ 0.9.7 version is really fast ]
-
-
-tcp stuff:
-x timeout on long sends
-x tcp disable nagle
-x set TOS to minimize delay
-x tcp locking/atomic ops review
-- tcp fix simultaneous connects (ser process is blocked until connect timeouts
- => possible DOS)
-
-tm optimizations:
-
-- inline/macro/drop for: get_tm_table, set_kr, lock_hash, unlock_hash,
- set_t, get_t
-- replace snprintfs int build_uac_request, *_dlg
-- fix the huge param no. in this functions (use structs if neccessary):
- build_uac_request, build_uac_request_dlg, t_uac, t_uac_dlg
-- uri2proxy - t_uac_dlg => extra malloc/free (no üroxy needed here)
-
-dns stuff:
- - dns cache
- - support for NAPTR (naptr(domain, pref_proto)=> srv_rec + proto => srv(srv_rec, proto) => A or AAAA => A/AAAA(name))
- - support for fallback (inside the same A/AAAA record, other ip; if fails => other SRV ; if it fails too other NAPTR
-[see rfc3263]
Deleted: ser/trunk/action.c
===================================================================
--- ser/trunk/action.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/action.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,741 +0,0 @@
-/*
- * $Id: action.c,v 1.66 2004/11/30 16:28:23 andrei Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * History:
- * ---------
- * 2003-02-28 scratchpad compatibility abandoned (jiri)
- * 2003-01-29 removed scratchpad (jiri)
- * 2003-03-19 fixed set* len calculation bug & simplified a little the code
- * (should be a little faster now) (andrei)
- * replaced all mallocs/frees w/ pkg_malloc/pkg_free (andrei)
- * 2003-04-01 Added support for loose routing in forward (janakj)
- * 2003-04-12 FORCE_RPORT_T added (andrei)
- * 2003-04-22 strip_tail added (jiri)
- * 2003-10-02 added SET_ADV_ADDR_T & SET_ADV_PORT_T (andrei)
- * 2003-10-29 added FORCE_TCP_ALIAS_T (andrei)
- * 2004-11-30 added FORCE_SEND_SOCKET_T (andrei)
- */
-
-
-#include "comp_defs.h"
-
-#include "action.h"
-#include "config.h"
-#include "error.h"
-#include "dprint.h"
-#include "proxy.h"
-#include "forward.h"
-#include "udp_server.h"
-#include "route.h"
-#include "parser/msg_parser.h"
-#include "parser/parse_uri.h"
-#include "ut.h"
-#include "sr_module.h"
-#include "mem/mem.h"
-#include "globals.h"
-#include "dset.h"
-#ifdef USE_TCP
-#include "tcp_server.h"
-#endif
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netdb.h>
-#include <stdlib.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <string.h>
-
-#ifdef DEBUG_DMALLOC
-#include <dmalloc.h>
-#endif
-
-
-/* ret= 0! if action -> end of list(e.g DROP),
- > 0 to continue processing next actions
- and <0 on error */
-int do_action(struct action* a, struct sip_msg* msg)
-{
- int ret;
- int v;
- union sockaddr_union* to;
- struct socket_info* send_sock;
- struct proxy_l* p;
- char* tmp;
- char *new_uri, *end, *crt;
- int len;
- int user;
- struct sip_uri uri, next_hop;
- struct sip_uri *u;
- unsigned short port;
- int proto;
-
- /* reset the value of error to E_UNSPEC so avoid unknowledgable
- functions to return with error (status<0) and not setting it
- leaving there previous error; cache the previous value though
- for functions which want to process it */
- prev_ser_error=ser_error;
- ser_error=E_UNSPEC;
-
- ret=E_BUG;
- switch ((unsigned char)a->type){
- case DROP_T:
- ret=0;
- break;
- case FORWARD_T:
-#ifdef USE_TCP
- case FORWARD_TCP_T:
-#endif
-#ifdef USE_TLS
- case FORWARD_TLS_T:
-#endif
- case FORWARD_UDP_T:
-
- if (a->type==FORWARD_UDP_T) proto=PROTO_UDP;
-#ifdef USE_TCP
- else if (a->type==FORWARD_TCP_T) proto= PROTO_TCP;
-#endif
-#ifdef USE_TLS
- else if (a->type==FORWARD_TLS_T) proto= PROTO_TLS;
-#endif
- else proto= PROTO_NONE;
- if (a->p1_type==URIHOST_ST){
- /*parse uri*/
-
- if (msg->dst_uri.len) {
- ret = parse_uri(msg->dst_uri.s, msg->dst_uri.len, &next_hop);
- u = &next_hop;
- } else {
- ret = parse_sip_msg_uri(msg);
- u = &msg->parsed_uri;
- }
-
- if (ret<0) {
- LOG(L_ERR, "ERROR: do_action: forward: bad_uri "
- " dropping packet\n");
- break;
- }
-
- switch (a->p2_type){
- case URIPORT_ST:
- port=u->port_no;
- break;
- case NUMBER_ST:
- port=a->p2.number;
- break;
- default:
- LOG(L_CRIT, "BUG: do_action bad forward 2nd"
- " param type (%d)\n", a->p2_type);
- ret=E_UNSPEC;
- goto error_fwd_uri;
- }
- if (proto == PROTO_NONE){ /* only if proto not set get it
- from the uri */
- switch(u->proto){
- case PROTO_NONE:
- proto=PROTO_UDP;
- break;
- case PROTO_UDP:
-#ifdef USE_TCP
- case PROTO_TCP:
-#endif
-#ifdef USE_TLS
- case PROTO_TLS:
-#endif
- proto=u->proto;
- break;
- default:
- LOG(L_ERR,"ERROR: do action: forward: bad uri"
- " transport %d\n", u->proto);
- ret=E_BAD_PROTO;
- goto error_fwd_uri;
- }
-#ifdef USE_TLS
- if (u->secure){
- if (u->proto==PROTO_UDP){
- LOG(L_ERR, "ERROR: do_action: forward: secure uri"
- " incompatible with transport %d\n", u->proto);
- ret=E_BAD_PROTO;
- goto error_fwd_uri;
- }
- proto=PROTO_TLS;
- }
-#endif
- }
- /* create a temporary proxy*/
- p=mk_proxy(&u->host, port, proto);
- if (p==0){
- LOG(L_ERR, "ERROR: bad host name in uri,"
- " dropping packet\n");
- ret=E_BAD_ADDRESS;
- goto error_fwd_uri;
- }
- ret=forward_request(msg, p, proto);
- /*free_uri(&uri); -- no longer needed, in sip_msg*/
- free_proxy(p); /* frees only p content, not p itself */
- pkg_free(p);
- if (ret>=0) ret=1;
- }else if ((a->p1_type==PROXY_ST) && (a->p2_type==NUMBER_ST)){
- if (proto==PROTO_NONE)
- proto=msg->rcv.proto;
- ret=forward_request(msg,(struct proxy_l*)a->p1.data, proto);
- if (ret>=0) ret=1;
- }else{
- LOG(L_CRIT, "BUG: do_action: bad forward() types %d, %d\n",
- a->p1_type, a->p2_type);
- ret=E_BUG;
- }
- break;
- case SEND_T:
- case SEND_TCP_T:
- if ((a->p1_type!= PROXY_ST)|(a->p2_type!=NUMBER_ST)){
- LOG(L_CRIT, "BUG: do_action: bad send() types %d, %d\n",
- a->p1_type, a->p2_type);
- ret=E_BUG;
- break;
- }
- to=(union sockaddr_union*)
- pkg_malloc(sizeof(union sockaddr_union));
- if (to==0){
- LOG(L_ERR, "ERROR: do_action: "
- "memory allocation failure\n");
- ret=E_OUT_OF_MEM;
- break;
- }
-
- p=(struct proxy_l*)a->p1.data;
-
- if (p->ok==0){
- if (p->host.h_addr_list[p->addr_idx+1])
- p->addr_idx++;
- else
- p->addr_idx=0;
- p->ok=1;
- }
- ret=hostent2su( to, &p->host, p->addr_idx,
- (p->port)?p->port:SIP_PORT );
- if (ret==0){
- p->tx++;
- p->tx_bytes+=msg->len;
- if (a->type==SEND_T){
- /*udp*/
- send_sock=get_send_socket(msg, to, PROTO_UDP);
- if (send_sock!=0){
- ret=udp_send(send_sock, msg->buf, msg->len, to);
- }else{
- ret=-1;
- }
- }
-#ifdef USE_TCP
- else{
- /*tcp*/
- ret=tcp_send(PROTO_TCP, msg->buf, msg->len, to, 0);
- }
-#endif
- }
- pkg_free(to);
- if (ret<0){
- p->errors++;
- p->ok=0;
- }else ret=1;
-
- break;
- case LOG_T:
- if ((a->p1_type!=NUMBER_ST)|(a->p2_type!=STRING_ST)){
- LOG(L_CRIT, "BUG: do_action: bad log() types %d, %d\n",
- a->p1_type, a->p2_type);
- ret=E_BUG;
- break;
- }
- LOG(a->p1.number, a->p2.string);
- ret=1;
- break;
-
- /* jku -- introduce a new branch */
- case APPEND_BRANCH_T:
- if ((a->p1_type!=STRING_ST)) {
- LOG(L_CRIT, "BUG: do_action: bad append_branch_t %d\n",
- a->p1_type );
- ret=E_BUG;
- break;
- }
- ret=append_branch( msg, a->p1.string,
- a->p1.string ? strlen(a->p1.string):0,
- 0, 0, a->p2.number);
- break;
-
- /* jku begin: is_length_greater_than */
- case LEN_GT_T:
- if (a->p1_type!=NUMBER_ST) {
- LOG(L_CRIT, "BUG: do_action: bad len_gt type %d\n",
- a->p1_type );
- ret=E_BUG;
- break;
- }
- /* DBG("XXX: message length %d, max %d\n",
- msg->len, a->p1.number ); */
- ret = msg->len >= a->p1.number ? 1 : -1;
- break;
- /* jku end: is_length_greater_than */
-
- /* jku - begin : flag processing */
-
- case SETFLAG_T:
- if (a->p1_type!=NUMBER_ST) {
- LOG(L_CRIT, "BUG: do_action: bad setflag() type %d\n",
- a->p1_type );
- ret=E_BUG;
- break;
- }
- if (!flag_in_range( a->p1.number )) {
- ret=E_CFG;
- break;
- }
- setflag( msg, a->p1.number );
- ret=1;
- break;
-
- case RESETFLAG_T:
- if (a->p1_type!=NUMBER_ST) {
- LOG(L_CRIT, "BUG: do_action: bad resetflag() type %d\n",
- a->p1_type );
- ret=E_BUG;
- break;
- }
- if (!flag_in_range( a->p1.number )) {
- ret=E_CFG;
- break;
- }
- resetflag( msg, a->p1.number );
- ret=1;
- break;
-
- case ISFLAGSET_T:
- if (a->p1_type!=NUMBER_ST) {
- LOG(L_CRIT, "BUG: do_action: bad isflagset() type %d\n",
- a->p1_type );
- ret=E_BUG;
- break;
- }
- if (!flag_in_range( a->p1.number )) {
- ret=E_CFG;
- break;
- }
- ret=isflagset( msg, a->p1.number );
- break;
- /* jku - end : flag processing */
-
- case ERROR_T:
- if ((a->p1_type!=STRING_ST)|(a->p2_type!=STRING_ST)){
- LOG(L_CRIT, "BUG: do_action: bad error() types %d, %d\n",
- a->p1_type, a->p2_type);
- ret=E_BUG;
- break;
- }
- LOG(L_NOTICE, "WARNING: do_action: error(\"%s\", \"%s\") "
- "not implemented yet\n", a->p1.string, a->p2.string);
- ret=1;
- break;
- case ROUTE_T:
- if (a->p1_type!=NUMBER_ST){
- LOG(L_CRIT, "BUG: do_action: bad route() type %d\n",
- a->p1_type);
- ret=E_BUG;
- break;
- }
- if ((a->p1.number>RT_NO)||(a->p1.number<0)){
- LOG(L_ERR, "ERROR: invalid routing table number in"
- "route(%lu)\n", a->p1.number);
- ret=E_CFG;
- break;
- }
- ret=((ret=run_actions(rlist[a->p1.number], msg))<0)?ret:1;
- break;
- case EXEC_T:
- if (a->p1_type!=STRING_ST){
- LOG(L_CRIT, "BUG: do_action: bad exec() type %d\n",
- a->p1_type);
- ret=E_BUG;
- break;
- }
- LOG(L_NOTICE, "WARNING: exec(\"%s\") not fully implemented,"
- " using dumb version...\n", a->p1.string);
- ret=system(a->p1.string);
- if (ret!=0){
- LOG(L_NOTICE, "WARNING: exec() returned %d\n", ret);
- }
- ret=1;
- break;
- case REVERT_URI_T:
- if (msg->new_uri.s) {
- pkg_free(msg->new_uri.s);
- msg->new_uri.len=0;
- msg->new_uri.s=0;
- msg->parsed_uri_ok=0; /* invalidate current parsed uri*/
- };
- ret=1;
- break;
- case SET_HOST_T:
- case SET_HOSTPORT_T:
- case SET_USER_T:
- case SET_USERPASS_T:
- case SET_PORT_T:
- case SET_URI_T:
- case PREFIX_T:
- case STRIP_T:
- case STRIP_TAIL_T:
- user=0;
- if (a->type==STRIP_T || a->type==STRIP_TAIL_T) {
- if (a->p1_type!=NUMBER_ST) {
- LOG(L_CRIT, "BUG: do_action: bad set*() type %d\n",
- a->p1_type);
- break;
- }
- } else if (a->p1_type!=STRING_ST){
- LOG(L_CRIT, "BUG: do_action: bad set*() type %d\n",
- a->p1_type);
- ret=E_BUG;
- break;
- }
- if (a->type==SET_URI_T){
- if (msg->new_uri.s) {
- pkg_free(msg->new_uri.s);
- msg->new_uri.len=0;
- }
- msg->parsed_uri_ok=0;
- len=strlen(a->p1.string);
- msg->new_uri.s=pkg_malloc(len+1);
- if (msg->new_uri.s==0){
- LOG(L_ERR, "ERROR: do_action: memory allocation"
- " failure\n");
- ret=E_OUT_OF_MEM;
- break;
- }
- memcpy(msg->new_uri.s, a->p1.string, len);
- msg->new_uri.s[len]=0;
- msg->new_uri.len=len;
-
- ret=1;
- break;
- }
- if (msg->new_uri.s) {
- tmp=msg->new_uri.s;
- len=msg->new_uri.len;
- }else{
- tmp=msg->first_line.u.request.uri.s;
- len=msg->first_line.u.request.uri.len;
- }
- if (parse_uri(tmp, len, &uri)<0){
- LOG(L_ERR, "ERROR: do_action: bad uri <%s>, dropping"
- " packet\n", tmp);
- ret=E_UNSPEC;
- break;
- }
-
- new_uri=pkg_malloc(MAX_URI_SIZE);
- if (new_uri==0){
- LOG(L_ERR, "ERROR: do_action: memory allocation "
- " failure\n");
- ret=E_OUT_OF_MEM;
- break;
- }
- end=new_uri+MAX_URI_SIZE;
- crt=new_uri;
- /* begin copying */
- len=strlen("sip:"); if(crt+len>end) goto error_uri;
- memcpy(crt,"sip:",len);crt+=len;
-
- /* user */
-
- /* prefix (-jiri) */
- if (a->type==PREFIX_T) {
- tmp=a->p1.string;
- len=strlen(tmp); if(crt+len>end) goto error_uri;
- memcpy(crt,tmp,len);crt+=len;
- /* whatever we had before, with prefix we have username
- now */
- user=1;
- }
-
- if ((a->type==SET_USER_T)||(a->type==SET_USERPASS_T)) {
- tmp=a->p1.string;
- len=strlen(tmp);
- } else if (a->type==STRIP_T) {
- if (a->p1.number>uri.user.len) {
- LOG(L_WARN, "Error: too long strip asked; "
- " deleting username: %lu of <%.*s>\n",
- a->p1.number, uri.user.len, uri.user.s );
- len=0;
- } else if (a->p1.number==uri.user.len) {
- len=0;
- } else {
- tmp=uri.user.s + a->p1.number;
- len=uri.user.len - a->p1.number;
- }
- } else if (a->type==STRIP_TAIL_T) {
- if (a->p1.number>uri.user.len) {
- LOG(L_WARN, "WARNING: too long strip_tail asked; "
- " deleting username: %lu of <%.*s>\n",
- a->p1.number, uri.user.len, uri.user.s );
- len=0;
- } else if (a->p1.number==uri.user.len) {
- len=0;
- } else {
- tmp=uri.user.s;
- len=uri.user.len - a->p1.number;
- }
- } else {
- tmp=uri.user.s;
- len=uri.user.len;
- }
-
- if (len){
- if(crt+len>end) goto error_uri;
- memcpy(crt,tmp,len);crt+=len;
- user=1; /* we have an user field so mark it */
- }
-
- if (a->type==SET_USERPASS_T) tmp=0;
- else tmp=uri.passwd.s;
- /* passwd */
- if (tmp){
- len=uri.passwd.len; if(crt+len+1>end) goto error_uri;
- *crt=':'; crt++;
- memcpy(crt,tmp,len);crt+=len;
- }
- /* host */
- if (user || tmp){ /* add @ */
- if(crt+1>end) goto error_uri;
- *crt='@'; crt++;
- }
- if ((a->type==SET_HOST_T) ||(a->type==SET_HOSTPORT_T)) {
- tmp=a->p1.string;
- if (tmp) len = strlen(tmp);
- else len=0;
- } else {
- tmp=uri.host.s;
- len = uri.host.len;
- }
- if (tmp){
- if(crt+len>end) goto error_uri;
- memcpy(crt,tmp,len);crt+=len;
- }
- /* port */
- if (a->type==SET_HOSTPORT_T) tmp=0;
- else if (a->type==SET_PORT_T) {
- tmp=a->p1.string;
- if (tmp) len = strlen(tmp);
- else len = 0;
- } else {
- tmp=uri.port.s;
- len = uri.port.len;
- }
- if (tmp){
- if(crt+len+1>end) goto error_uri;
- *crt=':'; crt++;
- memcpy(crt,tmp,len);crt+=len;
- }
- /* params */
- tmp=uri.params.s;
- if (tmp){
- len=uri.params.len; if(crt+len+1>end) goto error_uri;
- *crt=';'; crt++;
- memcpy(crt,tmp,len);crt+=len;
- }
- /* headers */
- tmp=uri.headers.s;
- if (tmp){
- len=uri.headers.len; if(crt+len+1>end) goto error_uri;
- *crt='?'; crt++;
- memcpy(crt,tmp,len);crt+=len;
- }
- *crt=0; /* null terminate the thing */
- /* copy it to the msg */
- if (msg->new_uri.s) pkg_free(msg->new_uri.s);
- msg->new_uri.s=new_uri;
- msg->new_uri.len=crt-new_uri;
- msg->parsed_uri_ok=0;
- ret=1;
- break;
- case IF_T:
- /* if null expr => ignore if? */
- if ((a->p1_type==EXPR_ST)&&a->p1.data){
- v=eval_expr((struct expr*)a->p1.data, msg);
- if (v<0){
- if (v==EXPR_DROP){ /* hack to quit on DROP*/
- ret=0;
- break;
- }else{
- LOG(L_WARN,"WARNING: do_action:"
- "error in expression\n");
- }
- }
-
- ret=1; /*default is continue */
- if (v>0) {
- if ((a->p2_type==ACTIONS_ST)&&a->p2.data){
- ret=run_actions((struct action*)a->p2.data, msg);
- }
- }else if ((a->p3_type==ACTIONS_ST)&&a->p3.data){
- ret=run_actions((struct action*)a->p3.data, msg);
- }
- }
- break;
- case MODULE_T:
- if ( ((a->p1_type==CMDF_ST)&&a->p1.data)/*&&
- ((a->p2_type==STRING_ST)&&a->p2.data)*/ ){
- ret=((cmd_function)(a->p1.data))(msg, (char*)a->p2.data,
- (char*)a->p3.data);
- }else{
- LOG(L_CRIT,"BUG: do_action: bad module call\n");
- }
- break;
- case FORCE_RPORT_T:
- msg->msg_flags|=FL_FORCE_RPORT;
- ret=1; /* continue processing */
- break;
- case SET_ADV_ADDR_T:
- if (a->p1_type!=STR_ST){
- LOG(L_CRIT, "BUG: do_action: bad set_advertised_address() "
- "type %d\n", a->p1_type);
- ret=E_BUG;
- break;
- }
- msg->set_global_address=*((str*)a->p1.data);
- ret=1; /* continue processing */
- break;
- case SET_ADV_PORT_T:
- if (a->p1_type!=STR_ST){
- LOG(L_CRIT, "BUG: do_action: bad set_advertised_port() "
- "type %d\n", a->p1_type);
- ret=E_BUG;
- break;
- }
- msg->set_global_port=*((str*)a->p1.data);
- ret=1; /* continue processing */
- break;
-#ifdef USE_TCP
- case FORCE_TCP_ALIAS_T:
- if ( msg->rcv.proto==PROTO_TCP
-#ifdef USE_TLS
- || msg->rcv.proto==PROTO_TLS
-#endif
- ){
-
- if (a->p1_type==NOSUBTYPE) port=msg->via1->port;
- else if (a->p1_type==NUMBER_ST) port=(int)a->p1.number;
- else{
- LOG(L_CRIT, "BUG: do_action: bad force_tcp_alias"
- " port type %d\n", a->p1_type);
- ret=E_BUG;
- break;
- }
-
- if (tcpconn_add_alias(msg->rcv.proto_reserved1, port,
- msg->rcv.proto)!=0){
- LOG(L_ERR, " ERROR: receive_msg: tcp alias failed\n");
- ret=E_UNSPEC;
- break;
- }
- }
-#endif
- ret=1; /* continue processing */
- break;
- case FORCE_SEND_SOCKET_T:
- if (a->p1_type!=SOCKETINFO_ST){
- LOG(L_CRIT, "BUG: do_action: bad force_send_socket argument"
- " type: %d\n", a->p1_type);
- ret=E_BUG;
- break;
- }
- msg->force_send_socket=(struct socket_info*)a->p1.data;
- ret=1; /* continue processing */
- break;
- default:
- LOG(L_CRIT, "BUG: do_action: unknown type %d\n", a->type);
- }
-/*skip:*/
- return ret;
-
-error_uri:
- LOG(L_ERR, "ERROR: do_action: set*: uri too long\n");
- if (new_uri) pkg_free(new_uri);
- return E_UNSPEC;
-error_fwd_uri:
- /*free_uri(&uri); -- not needed anymore, using msg->parsed_uri*/
- return ret;
-}
-
-
-
-/* returns: 0, or 1 on success, <0 on error */
-/* (0 if drop or break encountered, 1 if not ) */
-int run_actions(struct action* a, struct sip_msg* msg)
-{
- struct action* t;
- int ret=E_UNSPEC;
- static int rec_lev=0;
- struct sr_module *mod;
-
- rec_lev++;
- if (rec_lev>ROUTE_MAX_REC_LEV){
- LOG(L_ERR, "WARNING: too many recursive routing table lookups (%d)"
- " giving up!\n", rec_lev);
- ret=E_UNSPEC;
- goto error;
- }
-
- if (a==0){
- LOG(L_ERR, "WARNING: run_actions: null action list (rec_level=%d)\n",
- rec_lev);
- ret=0;
- }
-
- for (t=a; t!=0; t=t->next){
- ret=do_action(t, msg);
- if(ret==0) break;
- /* ignore errors */
- /*else if (ret<0){ ret=-1; goto error; }*/
- }
-
- rec_lev--;
- /* process module onbreak handlers if present */
- if (rec_lev==0 && ret==0)
- for (mod=modules;mod;mod=mod->next)
- if (mod->exports && mod->exports->onbreak_f) {
- mod->exports->onbreak_f( msg );
- DBG("DEBUG: %s onbreak handler called\n", mod->exports->name);
- }
- return ret;
-
-
-error:
- rec_lev--;
- return ret;
-}
-
-
-
Deleted: ser/trunk/action.h
===================================================================
--- ser/trunk/action.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/action.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,43 +0,0 @@
-/*
- * $Id: action.h,v 1.4 2004/08/24 08:45:10 janakj Exp $
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-#ifndef action_h
-#define action_h
-
-#include "parser/msg_parser.h"
-#include "route_struct.h"
-
-int do_action(struct action* a, struct sip_msg* msg);
-int run_actions(struct action* a, struct sip_msg* msg);
-
-
-
-
-
-#endif
Deleted: ser/trunk/ccopts.sh
===================================================================
--- ser/trunk/ccopts.sh 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/ccopts.sh 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,127 +0,0 @@
-#!/bin/sh
-
-#$Id: ccopts.sh,v 1.1 2002/11/07 15:26:11 andrei Exp $
-#
-# returns the CFLAGS for the given compiler (maximum optimizations)
-#
-
-
-ARCH=`uname -m |sed -e s/i.86/i386/ -e s/sun4u/sparc64/ `
-
-# gcc 3.x optimize for:
-x86CPU=athlon
-WARN_ARCH="WARNING: Not tested on architecture $ARCH, using default flags"
-
-if [ $# -lt 1 ]
-then
- echo "ERROR: you must specify the compiler name" 1>&2
- exit 1
-fi
-
-if [ "$1" = "-h" ]
-then
- echo "Usage: "
- echo " $0 compiler_name"
- exit 1
-fi
-
-
-if CCVER=`./ccver.sh $1`
-then
- NAME=`echo "$CCVER"|cut -d" " -f 1`
- VER=`echo "$CCVER"|cut -d" " -f 2`
- MAJOR_VER=`echo "$CCVER"|cut -d" " -f 3`
-else
- echo "ERROR executing ./ccver.sh" 2>&1
- exit 1
-fi
-
-echo "name=$NAME, ver=$VER, mver=$MAJOR_VER"
-case $NAME
-in
-gcc)
- #common stuff
- CFLAGS="-O9 -funroll-loops -Winline -Wall"
- case $MAJOR_VER
- in
- 3)
- case $ARCH
- in
- i386)
- CFLAGS="$CFLAGS -minline-all-stringops -malign-double"
- CFLAGS="$CFLAGS -falign-loops -march=$x86CPU"
- ;;
- sparc64)
- CFLAGS="$CFLAGS -mcpu=ultrasparc -mtune=ultrasparc"
- CFLAGS="$CFLAGS -m32"
- #other interesting options:
- # -mcpu=v9 or ultrasparc? # -mtune implied by -mcpu
- #-mno-epilogue #try to inline function exit code
- #-mflat # omit save/restore
- #-faster-structs #faster non Sparc ABI structure copy
- ;;
- armv4l)
- CFLAGS="$CFLAGS -mcpu=strongarm1100"
- ;;
- *)
- echo "$WARN_ARCH" 1>&2
- ;;
- esac
- ;;
- 2|*)
- case $ARCH
- in
- i386)
- CFLAGS="$CFLAGS -m486 -malign-loops=4"
- ;;
- sparc64)
- CFLAGS="$CFLAGS -mv8 -Wa,-xarch=v8plus"
- ;;
- armv4l)
- ;;
- *)
- echo "$WARN_ARCH" 1>&2
- ;;
- esac
- ;;
- esac
- ;;
-
-icc)
- CFLAGS="-O3 -ipo -ipo_obj -unroll"
- case $ARCH
- in
- i386)
- CFLAGS="$CFLAGS -tpp6 -xK"
- #-openmp #optimize for PIII
- # -prefetch doesn't seem to work
- #( ty to inline acroos files, unroll loops,prefetch,
- # optimize for PIII, use PIII instructions & vect.,
- # mutlithread loops)
- ;;
- *)
- echo "$WARN_ARCH" 1>&2
- ;;
- esac
- ;;
-
-suncc)
- CFLAGS="-xO5 -fast -native -xCC -xc99"
- case $ARCH
- in
- sparc64)
- CFLAGS="$CFLAGS -xarch=v8plusa"
- ;;
- *)
- echo "$WARN_ARCH" 1>&2
- ;;
- esac
- ;;
-
-*)
- echo "WARNING: unknown compiler $NAME, trying _very_ generic flags" 1>&2
- CFLAGS="-O2"
-esac
-
-
-echo "CFLAGS=$CFLAGS"
Deleted: ser/trunk/ccver.sh
===================================================================
--- ser/trunk/ccver.sh 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/ccver.sh 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,83 +0,0 @@
-#!/bin/sh
-
-#$Id: ccver.sh,v 1.3 2004/08/24 08:45:10 janakj Exp $
-#
-# finds CC version and prints it in the following format:
-# compiler_name version major_version
-#
-
-
-
-if [ $# -lt 1 ]
-then
- echo "Error: you must specify the compiler name" 1>&2
- exit 1
-fi
-
-if [ "$1" = "-h" ]
-then
- echo "Usage: "
- echo " $0 compiler_name"
- exit 1
-fi
-
-
-CC=$1
-
-if which $CC >/dev/null
-then
- (test ! -x `which $CC`) && echo "Error: $CC not executable" 1>&2 && exit 1
-else
- echo "Error: $CC not found or not executable" 1>&2
- exit 1
-fi
-
-
-if $CC -v 2>/dev/null 1>/dev/null
-then
- FULLVER=`$CC -v 2>&1`
-else
- FULLVER=`$CC -V 2>&1`
-fi
-
-
-
-if [ -n "$FULLVER" ]
-then
- # check if gcc
- if echo "$FULLVER"|grep gcc >/dev/null
- then
- NAME=gcc
- VER=`$CC --version|head -n 1| \
- sed -e 's/^[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/'\
- -e 's/^[^.0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/'`
- elif echo "$FULLVER"|grep Sun >/dev/null
- then
- NAME=suncc
- VER=`echo "$FULLVER"|head -n 1| \
- sed -e 's/.*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/'`
- elif echo "$FULLVER"|grep "Intel(R) C++ Compiler" >/dev/null
- then
- NAME=icc
- VER=`echo "$FULLVER"|head -n 1| \
- sed -e 's/.*Version \([0-9]\.[0-9]\.[0-9]*\).*/\1/' `
- fi
-
- # find major ver
- if [ -n "$VER" -a -z "$MAJOR_VER" ]
- then
- MAJOR_VER=`echo "$VER" |cut -d. -f1`
- fi
-fi
-
-
-#unknown
-if [ -z "$NAME" ]
-then
- NAME="unknown"
- VER="unknown"
- MAJOR_VER="unknown"
-fi
-
-
-echo "$NAME $VER $MAJOR_VER"
Deleted: ser/trunk/cfg.lex
===================================================================
--- ser/trunk/cfg.lex 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/cfg.lex 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,613 +0,0 @@
-/*
- * $Id: cfg.lex,v 1.64 2004/11/30 16:28:23 andrei Exp $
- *
- * scanner for cfg files
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * History:
- * -------
- * 2003-01-29 src_port added (jiri)
- * 2003-01-23 mhomed added (jiri)
- * 2003-03-19 replaced all the mallocs/frees w/ pkg_malloc/pkg_free (andrei)
- * 2003-04-01 added dst_port, proto (tcp, udp, tls), af(inet, inet6) (andrei)
- * 2003-04-05 s/reply_route/failure_route, onreply_route introduced (jiri)
- * 2003-04-12 added force_rport, chdir and wdir (andrei)
- * 2003-04-22 strip_tail added (jiri)
- * 2003-07-03 tls* (disable, certificate, private_key, ca_list, verify,
- * require_certificate added (andrei)
- * 2003-07-06 more tls config. vars added: tls_method, tls_port_no (andrei)
- * 2003-10-02 added {,set_}advertised_{address,port} (andrei)
- * 2003-10-07 added hex and octal numbers support (andrei)
- * 2003-10-10 replaced len_gt w/ msg:len (andrei)
- * 2003-10-13 added fifo_dir (andrei)
- * 2003-10-28 added tcp_accept_aliases (andrei)
- * 2003-11-29 added {tcp_send, tcp_connect, tls_*}_timeout (andrei)
- * 2004-03-30 added DISABLE_CORE and OPEN_FD_LIMIT (andrei)
- * 2004-04-28 added sock_mode (replaces fifo_mode), sock_user &
- * sock_group (andrei)
- * 2004-05-03 applied multicast support patch from janakj
- * added MCAST_TTL (andrei)
- * 2004-10-08 more escapes: \", \xHH, \nnn and minor optimizations (andrei)
- * 2004-10-19 added FROM_URI and TO_URI (andrei)
- * 2004-11-30 added force_send_socket
- */
-
-
-%{
- #include "cfg.tab.h"
- #include "dprint.h"
- #include "globals.h"
- #include "mem/mem.h"
- #include <string.h>
- #include <stdlib.h>
- #include "ip_addr.h"
-
-
- /* states */
- #define INITIAL_S 0
- #define COMMENT_S 1
- #define COMMENT_LN_S 2
- #define STRING_S 3
-
- #define STR_BUF_ALLOC_UNIT 128
- struct str_buf{
- char* s;
- char* crt;
- int left;
- };
-
-
- static int comment_nest=0;
- static int state=0;
- static struct str_buf s_buf;
- int line=1;
- int column=1;
- int startcolumn=1;
-
- static char* addchar(struct str_buf *, char);
- static char* addstr(struct str_buf *, char*, int);
- static void count();
-
-
-%}
-
-/* start conditions */
-%x STRING1 STRING2 COMMENT COMMENT_LN
-
-/* action keywords */
-FORWARD forward
-FORWARD_TCP forward_tcp
-FORWARD_UDP forward_udp
-FORWARD_TLS forward_tls
-DROP "drop"|"break"
-SEND send
-SEND_TCP send_tcp
-LOG log
-ERROR error
-ROUTE route
-ROUTE_FAILURE failure_route
-ROUTE_ONREPLY onreply_route
-EXEC exec
-FORCE_RPORT "force_rport"|"add_rport"
-FORCE_TCP_ALIAS "force_tcp_alias"|"add_tcp_alias"
-SETFLAG setflag
-RESETFLAG resetflag
-ISFLAGSET isflagset
-SET_HOST "rewritehost"|"sethost"|"seth"
-SET_HOSTPORT "rewritehostport"|"sethostport"|"sethp"
-SET_USER "rewriteuser"|"setuser"|"setu"
-SET_USERPASS "rewriteuserpass"|"setuserpass"|"setup"
-SET_PORT "rewriteport"|"setport"|"setp"
-SET_URI "rewriteuri"|"seturi"
-REVERT_URI "revert_uri"
-PREFIX "prefix"
-STRIP "strip"
-STRIP_TAIL "strip_tail"
-APPEND_BRANCH "append_branch"
-IF "if"
-ELSE "else"
-SET_ADV_ADDRESS "set_advertised_address"
-SET_ADV_PORT "set_advertised_port"
-FORCE_SEND_SOCKET "force_send_socket"
-
-/*ACTION LVALUES*/
-URIHOST "uri:host"
-URIPORT "uri:port"
-
-MAX_LEN "max_len"
-
-
-/* condition keywords */
-METHOD method
-/* hack -- the second element in first line is referable
- as either uri or status; it only would makes sense to
- call it "uri" from route{} and status from onreply_route{}
-*/
-URI "uri"|"status"
-FROM_URI "from_uri"
-TO_URI "to_uri"
-SRCIP src_ip
-SRCPORT src_port
-DSTIP dst_ip
-DSTPORT dst_port
-PROTO proto
-AF af
-MYSELF myself
-MSGLEN "msg:len"
-/* operators */
-EQUAL =
-EQUAL_T ==
-GT >
-LT <
-GTE >=
-LTE <=
-DIFF !=
-MATCH =~
-NOT !|"not"
-AND "and"|"&&"|"&"
-OR "or"|"||"|"|"
-PLUS "+"
-MINUS "-"
-
-/* config vars. */
-DEBUG debug
-FORK fork
-LOGSTDERROR log_stderror
-LOGFACILITY log_facility
-LISTEN listen
-ALIAS alias
-DNS dns
-REV_DNS rev_dns
-PORT port
-STAT statistics
-MAXBUFFER maxbuffer
-CHILDREN children
-CHECK_VIA check_via
-SYN_BRANCH syn_branch
-MEMLOG "memlog"|"mem_log"
-SIP_WARNING sip_warning
-FIFO fifo
-FIFO_DIR fifo_dir
-SOCK_MODE "fifo_mode"|"sock_mode"|"file_mode"
-SOCK_USER "fifo_user"|"sock_user"
-SOCK_GROUP "fifo_group"|"sock_group"
-FIFO_DB_URL fifo_db_url
-UNIX_SOCK unix_sock
-UNIX_SOCK_CHILDREN unix_sock_children
-UNIX_TX_TIMEOUT unix_tx_timeout
-SERVER_SIGNATURE server_signature
-REPLY_TO_VIA reply_to_via
-USER "user"|"uid"
-GROUP "group"|"gid"
-CHROOT "chroot"
-WDIR "workdir"|"wdir"
-MHOMED mhomed
-DISABLE_TCP "disable_tcp"
-TCP_CHILDREN "tcp_children"
-TCP_ACCEPT_ALIASES "tcp_accept_aliases"
-TCP_SEND_TIMEOUT "tcp_send_timeout"
-TCP_CONNECT_TIMEOUT "tcp_connect_timeout"
-DISABLE_TLS "disable_tls"
-TLSLOG "tlslog"|"tls_log"
-TLS_PORT_NO "tls_port_no"
-TLS_METHOD "tls_method"
-TLS_VERIFY "tls_verify"
-TLS_REQUIRE_CERTIFICATE "tls_require_certificate"
-TLS_CERTIFICATE "tls_certificate"
-TLS_PRIVATE_KEY "tls_private_key"
-TLS_CA_LIST "tls_ca_list"
-TLS_HANDSHAKE_TIMEOUT "tls_handshake_timeout"
-TLS_SEND_TIMEOUT "tls_send_timeout"
-ADVERTISED_ADDRESS "advertised_address"
-ADVERTISED_PORT "advertised_port"
-DISABLE_CORE "disable_core_dump"
-OPEN_FD_LIMIT "open_files_limit"
-MCAST_LOOPBACK "mcast_loopback"
-MCAST_TTL "mcast_ttl"
-
-LOADMODULE loadmodule
-MODPARAM modparam
-
-/* values */
-YES "yes"|"true"|"on"|"enable"
-NO "no"|"false"|"off"|"disable"
-UDP "udp"|"UDP"
-TCP "tcp"|"TCP"
-TLS "tls"|"TLS"
-INET "inet"|"INET"
-INET6 "inet6"|"INET6"
-SSLv23 "sslv23"|"SSLv23"|"SSLV23"
-SSLv2 "sslv2"|"SSLv2"|"SSLV2"
-SSLv3 "sslv3"|"SSLv3"|"SSLV3"
-TLSv1 "tlsv1"|"TLSv1"|"TLSV1"
-
-LETTER [a-zA-Z]
-DIGIT [0-9]
-ALPHANUM {LETTER}|{DIGIT}|[_]
-NUMBER 0|([1-9]{DIGIT}*)
-ID {LETTER}{ALPHANUM}*
-HEX [0-9a-fA-F]
-HEXNUMBER 0x{HEX}+
-OCTNUMBER 0[0-7]+
-HEX4 {HEX}{1,4}
-IPV6ADDR ({HEX4}":"){7}{HEX4}|({HEX4}":"){1,7}(":"{HEX4}){1,7}|":"(":"{HEX4}){1,7}|({HEX4}":"){1,7}":"|"::"
-QUOTES \"
-TICK \'
-SLASH "/"
-SEMICOLON ;
-RPAREN \)
-LPAREN \(
-LBRACE \{
-RBRACE \}
-LBRACK \[
-RBRACK \]
-COMMA ","
-COLON ":"
-STAR \*
-DOT \.
-CR \n
-
-
-
-COM_LINE #
-COM_START "/\*"
-COM_END "\*/"
-
-EAT_ABLE [\ \t\b\r]
-
-%%
-
-
-<INITIAL>{EAT_ABLE} { count(); }
-
-<INITIAL>{FORWARD} {count(); yylval.strval=yytext; return FORWARD; }
-<INITIAL>{FORWARD_TCP} {count(); yylval.strval=yytext; return FORWARD_TCP; }
-<INITIAL>{FORWARD_TLS} {count(); yylval.strval=yytext; return FORWARD_TLS; }
-<INITIAL>{FORWARD_UDP} {count(); yylval.strval=yytext; return FORWARD_UDP; }
-<INITIAL>{DROP} { count(); yylval.strval=yytext; return DROP; }
-<INITIAL>{SEND} { count(); yylval.strval=yytext; return SEND; }
-<INITIAL>{SEND_TCP} { count(); yylval.strval=yytext; return SEND_TCP; }
-<INITIAL>{LOG} { count(); yylval.strval=yytext; return LOG_TOK; }
-<INITIAL>{ERROR} { count(); yylval.strval=yytext; return ERROR; }
-<INITIAL>{SETFLAG} { count(); yylval.strval=yytext; return SETFLAG; }
-<INITIAL>{RESETFLAG} { count(); yylval.strval=yytext; return RESETFLAG; }
-<INITIAL>{ISFLAGSET} { count(); yylval.strval=yytext; return ISFLAGSET; }
-<INITIAL>{MSGLEN} { count(); yylval.strval=yytext; return MSGLEN; }
-<INITIAL>{ROUTE} { count(); yylval.strval=yytext; return ROUTE; }
-<INITIAL>{ROUTE_ONREPLY} { count(); yylval.strval=yytext;
- return ROUTE_ONREPLY; }
-<INITIAL>{ROUTE_FAILURE} { count(); yylval.strval=yytext;
- return ROUTE_FAILURE; }
-<INITIAL>{EXEC} { count(); yylval.strval=yytext; return EXEC; }
-<INITIAL>{SET_HOST} { count(); yylval.strval=yytext; return SET_HOST; }
-<INITIAL>{SET_HOSTPORT} { count(); yylval.strval=yytext; return SET_HOSTPORT; }
-<INITIAL>{SET_USER} { count(); yylval.strval=yytext; return SET_USER; }
-<INITIAL>{SET_USERPASS} { count(); yylval.strval=yytext; return SET_USERPASS; }
-<INITIAL>{SET_PORT} { count(); yylval.strval=yytext; return SET_PORT; }
-<INITIAL>{SET_URI} { count(); yylval.strval=yytext; return SET_URI; }
-<INITIAL>{REVERT_URI} { count(); yylval.strval=yytext; return REVERT_URI; }
-<INITIAL>{PREFIX} { count(); yylval.strval=yytext; return PREFIX; }
-<INITIAL>{STRIP} { count(); yylval.strval=yytext; return STRIP; }
-<INITIAL>{STRIP_TAIL} { count(); yylval.strval=yytext; return STRIP_TAIL; }
-<INITIAL>{APPEND_BRANCH} { count(); yylval.strval=yytext;
- return APPEND_BRANCH; }
-<INITIAL>{FORCE_RPORT} { count(); yylval.strval=yytext; return FORCE_RPORT; }
-<INITIAL>{FORCE_TCP_ALIAS} { count(); yylval.strval=yytext;
- return FORCE_TCP_ALIAS; }
-<INITIAL>{IF} { count(); yylval.strval=yytext; return IF; }
-<INITIAL>{ELSE} { count(); yylval.strval=yytext; return ELSE; }
-
-<INITIAL>{SET_ADV_ADDRESS} { count(); yylval.strval=yytext;
- return SET_ADV_ADDRESS; }
-<INITIAL>{SET_ADV_PORT} { count(); yylval.strval=yytext;
- return SET_ADV_PORT; }
-<INITIAL>{FORCE_SEND_SOCKET} { count(); yylval.strval=yytext;
- return FORCE_SEND_SOCKET; }
-
-<INITIAL>{URIHOST} { count(); yylval.strval=yytext; return URIHOST; }
-<INITIAL>{URIPORT} { count(); yylval.strval=yytext; return URIPORT; }
-
-<INITIAL>{MAX_LEN} { count(); yylval.strval=yytext; return MAX_LEN; }
-
-<INITIAL>{METHOD} { count(); yylval.strval=yytext; return METHOD; }
-<INITIAL>{URI} { count(); yylval.strval=yytext; return URI; }
-<INITIAL>{FROM_URI} { count(); yylval.strval=yytext; return FROM_URI; }
-<INITIAL>{TO_URI} { count(); yylval.strval=yytext; return TO_URI; }
-<INITIAL>{SRCIP} { count(); yylval.strval=yytext; return SRCIP; }
-<INITIAL>{SRCPORT} { count(); yylval.strval=yytext; return SRCPORT; }
-<INITIAL>{DSTIP} { count(); yylval.strval=yytext; return DSTIP; }
-<INITIAL>{DSTPORT} { count(); yylval.strval=yytext; return DSTPORT; }
-<INITIAL>{PROTO} { count(); yylval.strval=yytext; return PROTO; }
-<INITIAL>{AF} { count(); yylval.strval=yytext; return AF; }
-<INITIAL>{MYSELF} { count(); yylval.strval=yytext; return MYSELF; }
-
-<INITIAL>{DEBUG} { count(); yylval.strval=yytext; return DEBUG; }
-<INITIAL>{FORK} { count(); yylval.strval=yytext; return FORK; }
-<INITIAL>{LOGSTDERROR} { yylval.strval=yytext; return LOGSTDERROR; }
-<INITIAL>{LOGFACILITY} { yylval.strval=yytext; return LOGFACILITY; }
-<INITIAL>{LISTEN} { count(); yylval.strval=yytext; return LISTEN; }
-<INITIAL>{ALIAS} { count(); yylval.strval=yytext; return ALIAS; }
-<INITIAL>{DNS} { count(); yylval.strval=yytext; return DNS; }
-<INITIAL>{REV_DNS} { count(); yylval.strval=yytext; return REV_DNS; }
-<INITIAL>{PORT} { count(); yylval.strval=yytext; return PORT; }
-<INITIAL>{STAT} { count(); yylval.strval=yytext; return STAT; }
-<INITIAL>{MAXBUFFER} { count(); yylval.strval=yytext; return MAXBUFFER; }
-<INITIAL>{CHILDREN} { count(); yylval.strval=yytext; return CHILDREN; }
-<INITIAL>{CHECK_VIA} { count(); yylval.strval=yytext; return CHECK_VIA; }
-<INITIAL>{SYN_BRANCH} { count(); yylval.strval=yytext; return SYN_BRANCH; }
-<INITIAL>{MEMLOG} { count(); yylval.strval=yytext; return MEMLOG; }
-<INITIAL>{SIP_WARNING} { count(); yylval.strval=yytext; return SIP_WARNING; }
-<INITIAL>{USER} { count(); yylval.strval=yytext; return USER; }
-<INITIAL>{GROUP} { count(); yylval.strval=yytext; return GROUP; }
-<INITIAL>{CHROOT} { count(); yylval.strval=yytext; return CHROOT; }
-<INITIAL>{WDIR} { count(); yylval.strval=yytext; return WDIR; }
-<INITIAL>{MHOMED} { count(); yylval.strval=yytext; return MHOMED; }
-<INITIAL>{DISABLE_TCP} { count(); yylval.strval=yytext; return DISABLE_TCP; }
-<INITIAL>{TCP_CHILDREN} { count(); yylval.strval=yytext; return TCP_CHILDREN; }
-<INITIAL>{TCP_ACCEPT_ALIASES} { count(); yylval.strval=yytext;
- return TCP_ACCEPT_ALIASES; }
-<INITIAL>{TCP_SEND_TIMEOUT} { count(); yylval.strval=yytext;
- return TCP_SEND_TIMEOUT; }
-<INITIAL>{TCP_CONNECT_TIMEOUT} { count(); yylval.strval=yytext;
- return TCP_CONNECT_TIMEOUT; }
-<INITIAL>{DISABLE_TLS} { count(); yylval.strval=yytext; return DISABLE_TLS; }
-<INITIAL>{TLSLOG} { count(); yylval.strval=yytext; return TLS_PORT_NO; }
-<INITIAL>{TLS_PORT_NO} { count(); yylval.strval=yytext; return TLS_PORT_NO; }
-<INITIAL>{TLS_METHOD} { count(); yylval.strval=yytext; return TLS_METHOD; }
-<INITIAL>{TLS_VERIFY} { count(); yylval.strval=yytext; return TLS_VERIFY; }
-<INITIAL>{TLS_REQUIRE_CERTIFICATE} { count(); yylval.strval=yytext;
- return TLS_REQUIRE_CERTIFICATE; }
-<INITIAL>{TLS_CERTIFICATE} { count(); yylval.strval=yytext;
- return TLS_CERTIFICATE; }
-<INITIAL>{TLS_PRIVATE_KEY} { count(); yylval.strval=yytext;
- return TLS_PRIVATE_KEY; }
-<INITIAL>{TLS_CA_LIST} { count(); yylval.strval=yytext;
- return TLS_CA_LIST; }
-<INITIAL>{TLS_HANDSHAKE_TIMEOUT} { count(); yylval.strval=yytext;
- return TLS_HANDSHAKE_TIMEOUT; }
-<INITIAL>{TLS_SEND_TIMEOUT} { count(); yylval.strval=yytext;
- return TLS_SEND_TIMEOUT; }
-<INITIAL>{FIFO} { count(); yylval.strval=yytext; return FIFO; }
-<INITIAL>{FIFO_DIR} { count(); yylval.strval=yytext; return FIFO_DIR; }
-<INITIAL>{FIFO_DB_URL} { count(); yylval.strval=yytext; return FIFO_DB_URL; }
-<INITIAL>{SOCK_MODE} { count(); yylval.strval=yytext; return SOCK_MODE; }
-<INITIAL>{SOCK_USER} { count(); yylval.strval=yytext; return SOCK_USER; }
-<INITIAL>{SOCK_GROUP} { count(); yylval.strval=yytext; return SOCK_GROUP; }
-<INITIAL>{UNIX_SOCK} { count(); yylval.strval=yytext; return UNIX_SOCK; }
-<INITIAL>{UNIX_SOCK_CHILDREN} { count(); yylval.strval=yytext; return UNIX_SOCK_CHILDREN; }
-<INITIAL>{UNIX_TX_TIMEOUT} { count(); yylval.strval=yytext; return UNIX_TX_TIMEOUT; }
-<INITIAL>{SERVER_SIGNATURE} { count(); yylval.strval=yytext; return SERVER_SIGNATURE; }
-<INITIAL>{REPLY_TO_VIA} { count(); yylval.strval=yytext; return REPLY_TO_VIA; }
-<INITIAL>{ADVERTISED_ADDRESS} { count(); yylval.strval=yytext;
- return ADVERTISED_ADDRESS; }
-<INITIAL>{ADVERTISED_PORT} { count(); yylval.strval=yytext;
- return ADVERTISED_PORT; }
-<INITIAL>{DISABLE_CORE} { count(); yylval.strval=yytext;
- return DISABLE_CORE; }
-<INITIAL>{OPEN_FD_LIMIT} { count(); yylval.strval=yytext;
- return OPEN_FD_LIMIT; }
-<INITIAL>{MCAST_LOOPBACK} { count(); yylval.strval=yytext;
- return MCAST_LOOPBACK; }
-<INITIAL>{MCAST_TTL} { count(); yylval.strval=yytext;
- return MCAST_TTL; }
-<INITIAL>{LOADMODULE} { count(); yylval.strval=yytext; return LOADMODULE; }
-<INITIAL>{MODPARAM} { count(); yylval.strval=yytext; return MODPARAM; }
-
-<INITIAL>{EQUAL} { count(); return EQUAL; }
-<INITIAL>{EQUAL_T} { count(); return EQUAL_T; }
-<INITIAL>{GT} { count(); return GT; }
-<INITIAL>{LT} { count(); return LT; }
-<INITIAL>{GTE} { count(); return GTE; }
-<INITIAL>{LTE} { count(); return LTE; }
-<INITIAL>{DIFF} { count(); return DIFF; }
-<INITIAL>{MATCH} { count(); return MATCH; }
-<INITIAL>{NOT} { count(); return NOT; }
-<INITIAL>{AND} { count(); return AND; }
-<INITIAL>{OR} { count(); return OR; }
-<INITIAL>{PLUS} { count(); return PLUS; }
-<INITIAL>{MINUS} { count(); return MINUS; }
-
-
-
-<INITIAL>{IPV6ADDR} { count(); yylval.strval=yytext; return IPV6ADDR; }
-<INITIAL>{NUMBER} { count(); yylval.intval=atoi(yytext);return NUMBER; }
-<INITIAL>{HEXNUMBER} { count(); yylval.intval=(int)strtol(yytext, 0, 16);
- return NUMBER; }
-<INITIAL>{OCTNUMBER} { count(); yylval.intval=(int)strtol(yytext, 0, 8);
- return NUMBER; }
-<INITIAL>{YES} { count(); yylval.intval=1; return NUMBER; }
-<INITIAL>{NO} { count(); yylval.intval=0; return NUMBER; }
-<INITIAL>{TCP} { count(); return TCP; }
-<INITIAL>{UDP} { count(); return UDP; }
-<INITIAL>{TLS} { count(); return TLS; }
-<INITIAL>{INET} { count(); yylval.intval=AF_INET; return NUMBER; }
-<INITIAL>{INET6} { count();
- #ifdef USE_IPV6
- yylval.intval=AF_INET6;
- #else
- yylval.intval=-1; /* no match*/
- #endif
- return NUMBER; }
-<INITIAL>{SSLv23} { count(); yylval.strval=yytext; return SSLv23; }
-<INITIAL>{SSLv2} { count(); yylval.strval=yytext; return SSLv2; }
-<INITIAL>{SSLv3} { count(); yylval.strval=yytext; return SSLv3; }
-<INITIAL>{TLSv1} { count(); yylval.strval=yytext; return TLSv1; }
-
-<INITIAL>{COMMA} { count(); return COMMA; }
-<INITIAL>{SEMICOLON} { count(); return SEMICOLON; }
-<INITIAL>{COLON} { count(); return COLON; }
-<INITIAL>{STAR} { count(); return STAR; }
-<INITIAL>{RPAREN} { count(); return RPAREN; }
-<INITIAL>{LPAREN} { count(); return LPAREN; }
-<INITIAL>{LBRACE} { count(); return LBRACE; }
-<INITIAL>{RBRACE} { count(); return RBRACE; }
-<INITIAL>{LBRACK} { count(); return LBRACK; }
-<INITIAL>{RBRACK} { count(); return RBRACK; }
-<INITIAL>{SLASH} { count(); return SLASH; }
-<INITIAL>{DOT} { count(); return DOT; }
-<INITIAL>\\{CR} {count(); } /* eat the escaped CR */
-<INITIAL>{CR} { count();/* return CR;*/ }
-
-
-<INITIAL>{QUOTES} { count(); state=STRING_S; BEGIN(STRING1); }
-<INITIAL>{TICK} { count(); state=STRING_S; BEGIN(STRING2); }
-
-
-<STRING1>{QUOTES} { count(); state=INITIAL_S; BEGIN(INITIAL);
- yytext[yyleng-1]=0; yyleng--;
- addstr(&s_buf, yytext, yyleng);
- yylval.strval=s_buf.s;
- memset(&s_buf, 0, sizeof(s_buf));
- return STRING;
- }
-<STRING2>{TICK} { count(); state=INITIAL_S; BEGIN(INITIAL);
- yytext[yyleng-1]=0; yyleng--;
- addstr(&s_buf, yytext, yyleng);
- yylval.strval=s_buf.s;
- memset(&s_buf, 0, sizeof(s_buf));
- return STRING;
- }
-<STRING2>.|{EAT_ABLE}|{CR} { yymore(); }
-
-<STRING1>\\n { count(); addchar(&s_buf, '\n'); }
-<STRING1>\\r { count(); addchar(&s_buf, '\r'); }
-<STRING1>\\a { count(); addchar(&s_buf, '\a'); }
-<STRING1>\\t { count(); addchar(&s_buf, '\t'); }
-<STRING1>\\{QUOTES} { count(); addchar(&s_buf, '"'); }
-<STRING1>\\\\ { count(); addchar(&s_buf, '\\'); }
-<STRING1>\\x{HEX}{1,2} { count(); addchar(&s_buf,
- (char)strtol(yytext+2, 0, 16)); }
- /* don't allow \[0-7]{1}, it will eat the backreferences from
- subst_uri if allowed (although everybody should use '' in subt_uri) */
-<STRING1>\\[0-7]{2,3} { count(); addchar(&s_buf,
- (char)strtol(yytext+1, 0, 8)); }
-<STRING1>\\{CR} { count(); } /* eat escaped CRs */
-<STRING1>.|{EAT_ABLE}|{CR} { addchar(&s_buf, *yytext); }
-
-
-<INITIAL,COMMENT>{COM_START} { count(); comment_nest++; state=COMMENT_S;
- BEGIN(COMMENT); }
-<COMMENT>{COM_END} { count(); comment_nest--;
- if (comment_nest==0){
- state=INITIAL_S;
- BEGIN(INITIAL);
- }
- }
-<COMMENT>.|{EAT_ABLE}|{CR} { count(); };
-
-<INITIAL>{COM_LINE}.*{CR} { count(); }
-
-<INITIAL>{ID} { count(); addstr(&s_buf, yytext, yyleng);
- yylval.strval=s_buf.s;
- memset(&s_buf, 0, sizeof(s_buf));
- return ID; }
-
-
-<<EOF>> {
- switch(state){
- case STRING_S:
- LOG(L_CRIT, "ERROR: cfg. parser: unexpected EOF in"
- " unclosed string\n");
- if (s_buf.s){
- pkg_free(s_buf.s);
- memset(&s_buf, 0,
- sizeof(s_buf));
- }
- break;
- case COMMENT_S:
- LOG(L_CRIT, "ERROR: cfg. parser: unexpected EOF:"
- " %d comments open\n", comment_nest);
- break;
- case COMMENT_LN_S:
- LOG(L_CRIT, "ERROR: unexpected EOF:"
- "comment line open\n");
- break;
- }
- return 0;
- }
-
-%%
-
-
-static char* addchar(struct str_buf* dst, char c)
-{
- return addstr(dst, &c, 1);
-}
-
-
-
-static char* addstr(struct str_buf* dst_b, char* src, int len)
-{
- char *tmp;
- unsigned size;
- unsigned used;
-
- if (dst_b->left<(len+1)){
- used=(unsigned)(dst_b->crt-dst_b->s);
- size=used+len+1;
- /* round up to next multiple */
- size+= STR_BUF_ALLOC_UNIT-size%STR_BUF_ALLOC_UNIT;
- tmp=pkg_malloc(size);
- if (tmp==0) goto error;
- if (dst_b->s){
- memcpy(tmp, dst_b->s, used);
- pkg_free(dst_b->s);
- }
- dst_b->s=tmp;
- dst_b->crt=dst_b->s+used;
- dst_b->left=size-used;
- }
- memcpy(dst_b->crt, src, len);
- dst_b->crt+=len;
- *(dst_b->crt)=0;
- dst_b->left-=len;
-
- return dst_b->s;
-error:
- LOG(L_CRIT, "ERROR:lex:addstr: memory allocation error\n");
- return 0;
-}
-
-
-
-static void count()
-{
- int i;
-
- startcolumn=column;
- for (i=0; i<yyleng;i++){
- if (yytext[i]=='\n'){
- line++;
- column=startcolumn=1;
- }else if (yytext[i]=='\t'){
- column++;
- /*column+=8 -(column%8);*/
- }else{
- column++;
- }
- }
-}
-
-
Deleted: ser/trunk/cfg.y
===================================================================
--- ser/trunk/cfg.y 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/cfg.y 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,1716 +0,0 @@
-/*
- * $Id: cfg.y,v 1.84.2.3 2005/12/06 12:17:17 andrei Exp $
- *
- * cfg grammar
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
- /*
- * History:
- * ---------
- * 2003-01-29 src_port added (jiri)
- * 2003-01-23 mhomed added (jiri)
- * 2003-03-19 replaced all mallocs/frees with pkg_malloc/pkg_free (andrei)
- * 2003-03-19 Added support for route type in find_export (janakj)
- * 2003-03-20 Regex support in modparam (janakj)
- * 2003-04-01 added dst_port, proto , af (andrei)
- * 2003-04-05 s/reply_route/failure_route, onreply_route introduced (jiri)
- * 2003-04-12 added force_rport, chroot and wdir (andrei)
- * 2003-04-15 added tcp_children, disable_tcp (andrei)
- * 2003-04-22 strip_tail added (jiri)
- * 2003-07-03 tls* (disable, certificate, private_key, ca_list, verify,
- * require_certificate added (andrei)
- * 2003-07-06 more tls config. vars added: tls_method, tls_port_no (andrei)
- * 2003-10-02 added {,set_}advertised_{address,port} (andrei)
- * 2003-10-10 added <,>,<=,>=, != operators support
- * added msg:len (andrei)
- * 2003-10-11 if(){} doesn't require a ';' after it anymore (andrei)
- * 2003-10-13 added FIFO_DIR & proto:host:port listen/alias support (andrei)
- * 2003-10-24 converted to the new socket_info lists (andrei)
- * 2003-10-28 added tcp_accept_aliases (andrei)
- * 2003-11-20 added {tcp_connect, tcp_send, tls_*}_timeout (andrei)
- * 2004-03-30 added DISABLE_CORE and OPEN_FD_LIMIT (andrei)
- * 2004-04-29 added SOCK_MODE, SOCK_USER & SOCK_GROUP (andrei)
- * 2004-05-03 applied multicast support patch (MCAST_LOOPBACK) from janakj
- added MCAST_TTL (andrei)
- * 2004-07-05 src_ip & dst_ip will detect ip addresses between quotes
- * (andrei)
- * 2004-10-19 added FROM_URI, TO_URI (andrei)
- * 2004-11-30 added force_send_socket (andrei)
- * 2005-11-16 fixed if (cond) cmd; (andrei)
- */
-
-
-%{
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <string.h>
-#include <errno.h>
-#include "route_struct.h"
-#include "globals.h"
-#include "route.h"
-#include "dprint.h"
-#include "sr_module.h"
-#include "modparam.h"
-#include "ip_addr.h"
-#include "resolve.h"
-#include "socket_info.h"
-#include "name_alias.h"
-#include "ut.h"
-#include "dset.h"
-
-
-#include "config.h"
-#ifdef USE_TLS
-#include "tls/tls_config.h"
-#endif
-
-#ifdef DEBUG_DMALLOC
-#include <dmalloc.h>
-#endif
-
-/* hack to avoid alloca usage in the generated C file (needed for compiler
- with no built in alloca, like icc*/
-#undef _ALLOCA_H
-
-
-extern int yylex();
-static void yyerror(char* s);
-static char* tmp;
-static int i_tmp;
-static void* f_tmp;
-static struct socket_id* lst_tmp;
-static int rt; /* Type of route block for find_export */
-static str* str_tmp;
-static str s_tmp;
-static struct ip_addr* ip_tmp;
-
-static void warn(char* s);
-static struct socket_id* mk_listen_id(char*, int, int);
-
-
-%}
-
-%union {
- long intval;
- unsigned long uval;
- char* strval;
- struct expr* expr;
- struct action* action;
- struct net* ipnet;
- struct ip_addr* ipaddr;
- struct socket_id* sockid;
-}
-
-/* terminals */
-
-
-/* keywords */
-%token FORWARD
-%token FORWARD_TCP
-%token FORWARD_TLS
-%token FORWARD_UDP
-%token SEND
-%token SEND_TCP
-%token DROP
-%token LOG_TOK
-%token ERROR
-%token ROUTE
-%token ROUTE_FAILURE
-%token ROUTE_ONREPLY
-%token EXEC
-%token SET_HOST
-%token SET_HOSTPORT
-%token PREFIX
-%token STRIP
-%token STRIP_TAIL
-%token APPEND_BRANCH
-%token SET_USER
-%token SET_USERPASS
-%token SET_PORT
-%token SET_URI
-%token REVERT_URI
-%token FORCE_RPORT
-%token FORCE_TCP_ALIAS
-%token IF
-%token ELSE
-%token SET_ADV_ADDRESS
-%token SET_ADV_PORT
-%token FORCE_SEND_SOCKET
-%token URIHOST
-%token URIPORT
-%token MAX_LEN
-%token SETFLAG
-%token RESETFLAG
-%token ISFLAGSET
-%token METHOD
-%token URI
-%token FROM_URI
-%token TO_URI
-%token SRCIP
-%token SRCPORT
-%token DSTIP
-%token DSTPORT
-%token PROTO
-%token AF
-%token MYSELF
-%token MSGLEN
-%token UDP
-%token TCP
-%token TLS
-
-/* config vars. */
-%token DEBUG
-%token FORK
-%token LOGSTDERROR
-%token LOGFACILITY
-%token LISTEN
-%token ALIAS
-%token DNS
-%token REV_DNS
-%token PORT
-%token STAT
-%token CHILDREN
-%token CHECK_VIA
-%token SYN_BRANCH
-%token MEMLOG
-%token SIP_WARNING
-%token FIFO
-%token FIFO_DIR
-%token SOCK_MODE
-%token SOCK_USER
-%token SOCK_GROUP
-%token FIFO_DB_URL
-%token UNIX_SOCK
-%token UNIX_SOCK_CHILDREN
-%token UNIX_TX_TIMEOUT
-%token SERVER_SIGNATURE
-%token REPLY_TO_VIA
-%token LOADMODULE
-%token MODPARAM
-%token MAXBUFFER
-%token USER
-%token GROUP
-%token CHROOT
-%token WDIR
-%token MHOMED
-%token DISABLE_TCP
-%token TCP_ACCEPT_ALIASES
-%token TCP_CHILDREN
-%token TCP_CONNECT_TIMEOUT
-%token TCP_SEND_TIMEOUT
-%token DISABLE_TLS
-%token TLSLOG
-%token TLS_PORT_NO
-%token TLS_METHOD
-%token TLS_HANDSHAKE_TIMEOUT
-%token TLS_SEND_TIMEOUT
-%token SSLv23
-%token SSLv2
-%token SSLv3
-%token TLSv1
-%token TLS_VERIFY
-%token TLS_REQUIRE_CERTIFICATE
-%token TLS_CERTIFICATE
-%token TLS_PRIVATE_KEY
-%token TLS_CA_LIST
-%token ADVERTISED_ADDRESS
-%token ADVERTISED_PORT
-%token DISABLE_CORE
-%token OPEN_FD_LIMIT
-%token MCAST_LOOPBACK
-%token MCAST_TTL
-
-
-
-
-/* operators */
-%nonassoc EQUAL
-%nonassoc EQUAL_T
-%nonassoc GT
-%nonassoc LT
-%nonassoc GTE
-%nonassoc LTE
-%nonassoc DIFF
-%nonassoc MATCH
-%left OR
-%left AND
-%left NOT
-%left PLUS
-%left MINUS
-
-/* values */
-%token <intval> NUMBER
-%token <strval> ID
-%token <strval> STRING
-%token <strval> IPV6ADDR
-
-/* other */
-%token COMMA
-%token SEMICOLON
-%token RPAREN
-%token LPAREN
-%token LBRACE
-%token RBRACE
-%token LBRACK
-%token RBRACK
-%token SLASH
-%token DOT
-%token CR
-%token COLON
-%token STAR
-
-
-/*non-terminals */
-%type <expr> exp exp_elem /*, condition*/
-%type <action> action actions cmd if_cmd stm exp_stm
-%type <ipaddr> ipv4 ipv6 ipv6addr ip
-%type <ipnet> ipnet
-%type <strval> host
-%type <strval> listen_id
-%type <sockid> id_lst
-%type <sockid> phostport
-%type <intval> proto port
-%type <intval> equalop strop intop
-%type <strval> host_sep
-%type <intval> uri_type
-/*%type <route_el> rules;
- %type <route_el> rule;
-*/
-
-
-
-%%
-
-
-cfg: statements
- ;
-
-statements: statements statement {}
- | statement {}
- | statements error { yyerror(""); YYABORT;}
- ;
-
-statement: assign_stm
- | module_stm
- | {rt=REQUEST_ROUTE;} route_stm
- | {rt=FAILURE_ROUTE;} failure_route_stm
- | {rt=ONREPLY_ROUTE;} onreply_route_stm
- | CR /* null statement*/
- ;
-
-listen_id: ip { tmp=ip_addr2a($1);
- if(tmp==0){
- LOG(L_CRIT, "ERROR: cfg. parser: bad ip "
- "address.\n");
- $$=0;
- }else{
- $$=pkg_malloc(strlen(tmp)+1);
- if ($$==0){
- LOG(L_CRIT, "ERROR: cfg. parser: out of "
- "memory.\n");
- }else{
- strncpy($$, tmp, strlen(tmp)+1);
- }
- }
- }
- | STRING { $$=pkg_malloc(strlen($1)+1);
- if ($$==0){
- LOG(L_CRIT, "ERROR: cfg. parser: out of "
- "memory.\n");
- }else{
- strncpy($$, $1, strlen($1)+1);
- }
- }
- | host { $$=pkg_malloc(strlen($1)+1);
- if ($$==0){
- LOG(L_CRIT, "ERROR: cfg. parser: out of "
- "memory.\n");
- }else{
- strncpy($$, $1, strlen($1)+1);
- }
- }
- ;
-
-proto: UDP { $$=PROTO_UDP; }
- | TCP { $$=PROTO_TCP; }
- | TLS { $$=PROTO_TLS; }
- | STAR { $$=0; }
- ;
-
-port: NUMBER { $$=$1; }
- | STAR { $$=0; }
-;
-
-phostport: listen_id { $$=mk_listen_id($1, 0, 0); }
- | listen_id COLON port { $$=mk_listen_id($1, 0, $3); }
- | proto COLON listen_id { $$=mk_listen_id($3, $1, 0); }
- | proto COLON listen_id COLON port { $$=mk_listen_id($3, $1, $5);}
- | listen_id COLON error { $$=0; yyerror(" port number expected"); }
- ;
-
-id_lst: phostport { $$=$1 ; }
- | phostport id_lst { $$=$1; $$->next=$2; }
- ;
-
-
-assign_stm: DEBUG EQUAL NUMBER { debug=$3; }
- | DEBUG EQUAL error { yyerror("number expected"); }
- | FORK EQUAL NUMBER { dont_fork= ! $3; }
- | FORK EQUAL error { yyerror("boolean value expected"); }
- | LOGSTDERROR EQUAL NUMBER { if (!config_check) log_stderr=$3; }
- | LOGSTDERROR EQUAL error { yyerror("boolean value expected"); }
- | LOGFACILITY EQUAL ID {
- if ( (i_tmp=str2facility($3))==-1)
- yyerror("bad facility (see syslog(3) man page)");
- if (!config_check)
- log_facility=i_tmp;
- }
- | LOGFACILITY EQUAL error { yyerror("ID expected"); }
- | DNS EQUAL NUMBER { received_dns|= ($3)?DO_DNS:0; }
- | DNS EQUAL error { yyerror("boolean value expected"); }
- | REV_DNS EQUAL NUMBER { received_dns|= ($3)?DO_REV_DNS:0; }
- | REV_DNS EQUAL error { yyerror("boolean value expected"); }
- | PORT EQUAL NUMBER { port_no=$3; }
- | STAT EQUAL STRING {
- #ifdef STATS
- stat_file=$3;
- #endif
- }
- | MAXBUFFER EQUAL NUMBER { maxbuffer=$3; }
- | MAXBUFFER EQUAL error { yyerror("number expected"); }
- | PORT EQUAL error { yyerror("number expected"); }
- | CHILDREN EQUAL NUMBER { children_no=$3; }
- | CHILDREN EQUAL error { yyerror("number expected"); }
- | CHECK_VIA EQUAL NUMBER { check_via=$3; }
- | CHECK_VIA EQUAL error { yyerror("boolean value expected"); }
- | SYN_BRANCH EQUAL NUMBER { syn_branch=$3; }
- | SYN_BRANCH EQUAL error { yyerror("boolean value expected"); }
- | MEMLOG EQUAL NUMBER { memlog=$3; }
- | MEMLOG EQUAL error { yyerror("int value expected"); }
- | SIP_WARNING EQUAL NUMBER { sip_warning=$3; }
- | SIP_WARNING EQUAL error { yyerror("boolean value expected"); }
- | FIFO EQUAL STRING { fifo=$3; }
- | FIFO EQUAL error { yyerror("string value expected"); }
- | FIFO_DIR EQUAL STRING { fifo_dir=$3; }
- | FIFO_DIR EQUAL error { yyerror("string value expected"); }
- | SOCK_MODE EQUAL NUMBER { sock_mode=$3; }
- | SOCK_MODE EQUAL error { yyerror("int value expected"); }
- | SOCK_USER EQUAL STRING { sock_user=$3; }
- | SOCK_USER EQUAL ID { sock_user=$3; }
- | SOCK_USER EQUAL error { yyerror("string value expected"); }
- | SOCK_GROUP EQUAL STRING { sock_group=$3; }
- | SOCK_GROUP EQUAL ID { sock_group=$3; }
- | SOCK_GROUP EQUAL error { yyerror("string value expected"); }
- | FIFO_DB_URL EQUAL STRING { fifo_db_url=$3; }
- | FIFO_DB_URL EQUAL error { yyerror("string value expected"); }
- | UNIX_SOCK EQUAL STRING { unixsock_name=$3; }
- | UNIX_SOCK EQUAL error { yyerror("string value expected"); }
- | UNIX_SOCK_CHILDREN EQUAL NUMBER { unixsock_children=$3; }
- | UNIX_SOCK_CHILDREN EQUAL error { yyerror("int value expected\n"); }
- | UNIX_TX_TIMEOUT EQUAL NUMBER { unixsock_tx_timeout=$3; }
- | UNIX_TX_TIMEOUT EQUAL error { yyerror("int value expected\n"); }
- | USER EQUAL STRING { user=$3; }
- | USER EQUAL ID { user=$3; }
- | USER EQUAL error { yyerror("string value expected"); }
- | GROUP EQUAL STRING { group=$3; }
- | GROUP EQUAL ID { group=$3; }
- | GROUP EQUAL error { yyerror("string value expected"); }
- | CHROOT EQUAL STRING { chroot_dir=$3; }
- | CHROOT EQUAL ID { chroot_dir=$3; }
- | CHROOT EQUAL error { yyerror("string value expected"); }
- | WDIR EQUAL STRING { working_dir=$3; }
- | WDIR EQUAL ID { working_dir=$3; }
- | WDIR EQUAL error { yyerror("string value expected"); }
- | MHOMED EQUAL NUMBER { mhomed=$3; }
- | MHOMED EQUAL error { yyerror("boolean value expected"); }
- | DISABLE_TCP EQUAL NUMBER {
- #ifdef USE_TCP
- tcp_disable=$3;
- #else
- warn("tcp support not compiled in");
- #endif
- }
- | DISABLE_TCP EQUAL error { yyerror("boolean value expected"); }
- | TCP_ACCEPT_ALIASES EQUAL NUMBER {
- #ifdef USE_TCP
- tcp_accept_aliases=$3;
- #else
- warn("tcp support not compiled in");
- #endif
- }
- | TCP_ACCEPT_ALIASES EQUAL error { yyerror("boolean value expected"); }
- | TCP_CHILDREN EQUAL NUMBER {
- #ifdef USE_TCP
- tcp_children_no=$3;
- #else
- warn("tcp support not compiled in");
- #endif
- }
- | TCP_CHILDREN EQUAL error { yyerror("number expected"); }
- | TCP_CONNECT_TIMEOUT EQUAL NUMBER {
- #ifdef USE_TCP
- tcp_connect_timeout=$3;
- #else
- warn("tcp support not compiled in");
- #endif
- }
- | TCP_CONNECT_TIMEOUT EQUAL error { yyerror("number expected"); }
- | TCP_SEND_TIMEOUT EQUAL NUMBER {
- #ifdef USE_TCP
- tcp_send_timeout=$3;
- #else
- warn("tcp support not compiled in");
- #endif
- }
- | TCP_SEND_TIMEOUT EQUAL error { yyerror("number expected"); }
- | DISABLE_TLS EQUAL NUMBER {
- #ifdef USE_TLS
- tls_disable=$3;
- #else
- warn("tls support not compiled in");
- #endif
- }
- | DISABLE_TLS EQUAL error { yyerror("boolean value expected"); }
- | TLSLOG EQUAL NUMBER {
- #ifdef USE_TLS
- tls_log=$3;
- #else
- warn("tls support not compiled in");
- #endif
- }
- | TLSLOG EQUAL error { yyerror("int value expected"); }
- | TLS_PORT_NO EQUAL NUMBER {
- #ifdef USE_TLS
- tls_port_no=$3;
- #else
- warn("tls support not compiled in");
- #endif
- }
- | TLS_PORT_NO EQUAL error { yyerror("number expected"); }
- | TLS_METHOD EQUAL SSLv23 {
- #ifdef USE_TLS
- tls_method=TLS_USE_SSLv23;
- #else
- warn("tls support not compiled in");
- #endif
- }
- | TLS_METHOD EQUAL SSLv2 {
- #ifdef USE_TLS
- tls_method=TLS_USE_SSLv2;
- #else
- warn("tls support not compiled in");
- #endif
- }
- | TLS_METHOD EQUAL SSLv3 {
- #ifdef USE_TLS
- tls_method=TLS_USE_SSLv3;
- #else
- warn("tls support not compiled in");
- #endif
- }
- | TLS_METHOD EQUAL TLSv1 {
- #ifdef USE_TLS
- tls_method=TLS_USE_TLSv1;
- #else
- warn("tls support not compiled in");
- #endif
- }
- | TLS_METHOD EQUAL error {
- #ifdef USE_TLS
- yyerror("SSLv23, SSLv2, SSLv3 or TLSv1"
- " expected");
- #else
- warn("tls support not compiled in");
- #endif
- }
-
- | TLS_VERIFY EQUAL NUMBER {
- #ifdef USE_TLS
- tls_verify_cert=$3;
- #else
- warn("tls support not compiled in");
- #endif
- }
- | TLS_VERIFY EQUAL error { yyerror("boolean value expected"); }
- | TLS_REQUIRE_CERTIFICATE EQUAL NUMBER {
- #ifdef USE_TLS
- tls_require_cert=$3;
- #else
- warn( "tls support not compiled in");
- #endif
- }
- | TLS_REQUIRE_CERTIFICATE EQUAL error { yyerror("boolean value"
- " expected"); }
- | TLS_CERTIFICATE EQUAL STRING {
- #ifdef USE_TLS
- tls_cert_file=$3;
- #else
- warn("tls support not compiled in");
- #endif
- }
- | TLS_CERTIFICATE EQUAL error { yyerror("string value expected"); }
- | TLS_PRIVATE_KEY EQUAL STRING {
- #ifdef USE_TLS
- tls_pkey_file=$3;
- #else
- warn("tls support not compiled in");
- #endif
- }
- | TLS_PRIVATE_KEY EQUAL error { yyerror("string value expected"); }
- | TLS_CA_LIST EQUAL STRING {
- #ifdef USE_TLS
- tls_ca_file=$3;
- #else
- warn("tls support not compiled in");
- #endif
- }
- | TLS_CA_LIST EQUAL error { yyerror("string value expected"); }
- | TLS_HANDSHAKE_TIMEOUT EQUAL NUMBER {
- #ifdef USE_TLS
- tls_handshake_timeout=$3;
- #else
- warn("tls support not compiled in");
- #endif
- }
- | TLS_HANDSHAKE_TIMEOUT EQUAL error { yyerror("number expected"); }
- | TLS_SEND_TIMEOUT EQUAL NUMBER {
- #ifdef USE_TLS
- tls_send_timeout=$3;
- #else
- warn("tls support not compiled in");
- #endif
- }
- | TLS_SEND_TIMEOUT EQUAL error { yyerror("number expected"); }
- | SERVER_SIGNATURE EQUAL NUMBER { server_signature=$3; }
- | SERVER_SIGNATURE EQUAL error { yyerror("boolean value expected"); }
- | REPLY_TO_VIA EQUAL NUMBER { reply_to_via=$3; }
- | REPLY_TO_VIA EQUAL error { yyerror("boolean value expected"); }
- | LISTEN EQUAL id_lst {
- for(lst_tmp=$3; lst_tmp; lst_tmp=lst_tmp->next){
- if (add_listen_iface( lst_tmp->name,
- lst_tmp->port,
- lst_tmp->proto,
- 0
- )!=0){
- LOG(L_CRIT, "ERROR: cfg. parser: failed"
- " to add listen address\n");
- break;
- }
- }
- }
- | LISTEN EQUAL error { yyerror("ip address or hostname"
- "expected"); }
- | ALIAS EQUAL id_lst {
- for(lst_tmp=$3; lst_tmp; lst_tmp=lst_tmp->next)
- add_alias(lst_tmp->name, strlen(lst_tmp->name),
- lst_tmp->port, lst_tmp->proto);
- }
- | ALIAS EQUAL error { yyerror(" hostname expected"); }
- | ADVERTISED_ADDRESS EQUAL listen_id {
- default_global_address.s=$3;
- default_global_address.len=strlen($3);
- }
- |ADVERTISED_ADDRESS EQUAL error {yyerror("ip address or hostname "
- "expected"); }
- | ADVERTISED_PORT EQUAL NUMBER {
- tmp=int2str($3, &i_tmp);
- if ((default_global_port.s=pkg_malloc(i_tmp))
- ==0){
- LOG(L_CRIT, "ERROR: cfg. parser:"
- " out of memory.\n");
- default_global_port.len=0;
- }else{
- default_global_port.len=i_tmp;
- memcpy(default_global_port.s, tmp,
- default_global_port.len);
- };
- }
- |ADVERTISED_PORT EQUAL error {yyerror("ip address or hostname "
- "expected"); }
- | DISABLE_CORE EQUAL NUMBER {
- disable_core_dump=$3;
- }
- | DISABLE_CORE EQUAL error { yyerror("boolean value expected"); }
- | OPEN_FD_LIMIT EQUAL NUMBER {
- open_files_limit=$3;
- }
- | OPEN_FD_LIMIT EQUAL error { yyerror("number expected"); }
- | MCAST_LOOPBACK EQUAL NUMBER {
- #ifdef USE_MCAST
- mcast_loopback=$3;
- #else
- warn("no multicast support compiled in");
- #endif
- }
- | MCAST_LOOPBACK EQUAL error { yyerror("boolean value expected"); }
- | MCAST_TTL EQUAL NUMBER {
- #ifdef USE_MCAST
- mcast_ttl=$3;
- #else
- warn("no multicast support compiled in");
- #endif
- }
- | MCAST_TTL EQUAL error { yyerror("number expected"); }
- | error EQUAL { yyerror("unknown config variable"); }
- ;
-
-module_stm: LOADMODULE STRING { DBG("loading module %s\n", $2);
- if (load_module($2)!=0){
- yyerror("failed to load module");
- }
- }
- | LOADMODULE error { yyerror("string expected"); }
- | MODPARAM LPAREN STRING COMMA STRING COMMA STRING RPAREN {
- if (set_mod_param_regex($3, $5, STR_PARAM, $7) != 0) {
- yyerror("Can't set module parameter");
- }
- }
- | MODPARAM LPAREN STRING COMMA STRING COMMA NUMBER RPAREN {
- if (set_mod_param_regex($3, $5, INT_PARAM, (void*)$7) != 0) {
- yyerror("Can't set module parameter");
- }
- }
- | MODPARAM error { yyerror("Invalid arguments"); }
- ;
-
-
-ip: ipv4 { $$=$1; }
- |ipv6 { $$=$1; }
- ;
-
-ipv4: NUMBER DOT NUMBER DOT NUMBER DOT NUMBER {
- $$=pkg_malloc(
- sizeof(struct ip_addr));
- if ($$==0){
- LOG(L_CRIT, "ERROR: cfg. "
- "parser: out of memory.\n"
- );
- }else{
- memset($$, 0,
- sizeof(struct ip_addr));
- $$->af=AF_INET;
- $$->len=4;
- if (($1>255) || ($1<0) ||
- ($3>255) || ($3<0) ||
- ($5>255) || ($5<0) ||
- ($7>255) || ($7<0)){
- yyerror("invalid ipv4"
- "address");
- $$->u.addr32[0]=0;
- /* $$=0; */
- }else{
- $$->u.addr[0]=$1;
- $$->u.addr[1]=$3;
- $$->u.addr[2]=$5;
- $$->u.addr[3]=$7;
- /*
- $$=htonl( ($1<<24)|
- ($3<<16)| ($5<<8)|$7 );
- */
- }
- }
- }
- ;
-
-ipv6addr: IPV6ADDR {
- $$=pkg_malloc(sizeof(struct ip_addr));
- if ($$==0){
- LOG(L_CRIT, "ERROR: cfg. parser: out of memory.\n");
- }else{
- memset($$, 0, sizeof(struct ip_addr));
- $$->af=AF_INET6;
- $$->len=16;
- #ifdef USE_IPV6
- if (inet_pton(AF_INET6, $1, $$->u.addr)<=0){
- yyerror("bad ipv6 address");
- }
- #else
- yyerror("ipv6 address & no ipv6 support compiled in");
- YYABORT;
- #endif
- }
- }
- ;
-
-ipv6: ipv6addr { $$=$1; }
- | LBRACK ipv6addr RBRACK {$$=$2; }
-;
-
-
-route_stm: ROUTE LBRACE actions RBRACE { push($3, &rlist[DEFAULT_RT]); }
-
- | ROUTE LBRACK NUMBER RBRACK LBRACE actions RBRACE {
- if (($3<RT_NO) && ($3>=0)){
- push($6, &rlist[$3]);
- }else{
- yyerror("invalid routing "
- "table number");
- YYABORT; }
- }
- | ROUTE error { yyerror("invalid route statement"); }
- ;
-
-failure_route_stm: ROUTE_FAILURE LBRACK NUMBER RBRACK LBRACE actions RBRACE {
- if (($3<FAILURE_RT_NO)&&($3>=1)){
- push($6, &failure_rlist[$3]);
- } else {
- yyerror("invalid reply routing"
- "table number");
- YYABORT; }
- }
- | ROUTE_FAILURE error { yyerror("invalid failure_route statement"); }
- ;
-
-onreply_route_stm: ROUTE_ONREPLY LBRACK NUMBER RBRACK LBRACE actions RBRACE {
- if (($3<ONREPLY_RT_NO)&&($3>=1)){
- push($6, &onreply_rlist[$3]);
- } else {
- yyerror("invalid reply routing"
- "table number");
- YYABORT; }
- }
- | ROUTE_ONREPLY error { yyerror("invalid onreply_route statement"); }
- ;
-/*
-rules: rules rule { push($2, &$1); $$=$1; }
- | rule {$$=$1; }
- | rules error { $$=0; yyerror("invalid rule"); }
- ;
-
-rule: condition actions CR {
- $$=0;
- if (add_rule($1, $2, &$$)<0) {
- yyerror("error calling add_rule");
- YYABORT;
- }
- }
- | CR { $$=0;}
- | condition error { $$=0; yyerror("bad actions in rule"); }
- ;
-
-condition: exp {$$=$1;}
-*/
-
-exp: exp AND exp { $$=mk_exp(AND_OP, $1, $3); }
- | exp OR exp { $$=mk_exp(OR_OP, $1, $3); }
- | NOT exp { $$=mk_exp(NOT_OP, $2, 0); }
- | LPAREN exp RPAREN { $$=$2; }
- | exp_elem { $$=$1; }
- ;
-
-equalop: EQUAL_T {$$=EQUAL_OP; }
- | DIFF {$$=DIFF_OP; }
- ;
-
-intop: equalop {$$=$1; }
- | GT {$$=GT_OP; }
- | LT {$$=LT_OP; }
- | GTE {$$=GTE_OP; }
- | LTE {$$=LTE_OP; }
- ;
-
-strop: equalop {$$=$1; }
- | MATCH {$$=MATCH_OP; }
- ;
-
-uri_type: URI {$$=URI_O;}
- | FROM_URI {$$=FROM_URI_O;}
- | TO_URI {$$=TO_URI_O;}
- ;
-
-exp_elem: METHOD strop STRING {$$= mk_elem( $2, STRING_ST,
- METHOD_O, $3);
- }
- | METHOD strop ID {$$ = mk_elem( $2, STRING_ST,
- METHOD_O, $3);
- }
- | METHOD strop error { $$=0; yyerror("string expected"); }
- | METHOD error { $$=0; yyerror("invalid operator,"
- "== , !=, or =~ expected");
- }
- | uri_type strop STRING {$$ = mk_elem( $2, STRING_ST,
- $1, $3);
- }
- | uri_type strop host {$$ = mk_elem( $2, STRING_ST,
- $1, $3);
- }
- | uri_type equalop MYSELF { $$=mk_elem( $2, MYSELF_ST,
- $1, 0);
- }
- | uri_type strop error { $$=0; yyerror("string or MYSELF expected"); }
- | uri_type error { $$=0; yyerror("invalid operator,"
- " == , != or =~ expected");
- }
- | SRCPORT intop NUMBER { $$=mk_elem( $2, NUMBER_ST,
- SRCPORT_O, (void *) $3 ); }
- | SRCPORT intop error { $$=0; yyerror("number expected"); }
- | SRCPORT error { $$=0; yyerror("==, !=, <,>, >= or <= expected"); }
- | DSTPORT intop NUMBER { $$=mk_elem( $2, NUMBER_ST,
- DSTPORT_O, (void *) $3 ); }
- | DSTPORT intop error { $$=0; yyerror("number expected"); }
- | DSTPORT error { $$=0; yyerror("==, !=, <,>, >= or <= expected"); }
- | PROTO intop proto { $$=mk_elem( $2, NUMBER_ST,
- PROTO_O, (void *) $3 ); }
- | PROTO intop error { $$=0;
- yyerror("protocol expected (udp, tcp or tls)");
- }
- | PROTO error { $$=0; yyerror("equal/!= operator expected"); }
- | AF intop NUMBER { $$=mk_elem( $2, NUMBER_ST,
- AF_O, (void *) $3 ); }
- | AF intop error { $$=0; yyerror("number expected"); }
- | AF error { $$=0; yyerror("equal/!= operator expected"); }
- | MSGLEN intop NUMBER { $$=mk_elem( $2, NUMBER_ST,
- MSGLEN_O, (void *) $3 ); }
- | MSGLEN intop MAX_LEN { $$=mk_elem( $2, NUMBER_ST,
- MSGLEN_O, (void *) BUF_SIZE); }
- | MSGLEN intop error { $$=0; yyerror("number expected"); }
- | MSGLEN error { $$=0; yyerror("equal/!= operator expected"); }
- | SRCIP equalop ipnet { $$=mk_elem( $2, NET_ST,
- SRCIP_O, $3);
- }
- | SRCIP strop STRING { s_tmp.s=$3;
- s_tmp.len=strlen($3);
- ip_tmp=str2ip(&s_tmp);
- if (ip_tmp==0)
- ip_tmp=str2ip6(&s_tmp);
- if (ip_tmp){
- $$=mk_elem( $2, NET_ST, SRCIP_O,
- mk_net_bitlen(ip_tmp,
- ip_tmp->len*8) );
- }else{
- $$=mk_elem( $2, STRING_ST,
- SRCIP_O, $3);
- }
- }
- | SRCIP strop host { $$=mk_elem( $2, STRING_ST,
- SRCIP_O, $3);
- }
- | SRCIP equalop MYSELF { $$=mk_elem( $2, MYSELF_ST,
- SRCIP_O, 0);
- }
- | SRCIP strop error { $$=0; yyerror( "ip address or hostname"
- "expected" ); }
- | SRCIP error { $$=0;
- yyerror("invalid operator, ==, != or =~ expected");}
- | DSTIP equalop ipnet { $$=mk_elem( $2, NET_ST,
- DSTIP_O, $3);
- }
- | DSTIP strop STRING { s_tmp.s=$3;
- s_tmp.len=strlen($3);
- ip_tmp=str2ip(&s_tmp);
- if (ip_tmp==0)
- ip_tmp=str2ip6(&s_tmp);
- if (ip_tmp){
- $$=mk_elem( $2, NET_ST, DSTIP_O,
- mk_net_bitlen(ip_tmp,
- ip_tmp->len*8) );
- }else{
- $$=mk_elem( $2, STRING_ST,
- DSTIP_O, $3);
- }
- }
- | DSTIP strop host { $$=mk_elem( $2, STRING_ST,
- DSTIP_O, $3);
- }
- | DSTIP equalop MYSELF { $$=mk_elem( $2, MYSELF_ST,
- DSTIP_O, 0);
- }
- | DSTIP strop error { $$=0; yyerror( "ip address or hostname"
- "expected" ); }
- | DSTIP error { $$=0;
- yyerror("invalid operator, ==, != or =~ expected");}
- | MYSELF equalop uri_type { $$=mk_elem( $2, MYSELF_ST,
- $3, 0);
- }
- | MYSELF equalop SRCIP { $$=mk_elem( $2, MYSELF_ST,
- SRCIP_O, 0);
- }
- | MYSELF equalop DSTIP { $$=mk_elem( $2, MYSELF_ST,
- DSTIP_O, 0);
- }
- | MYSELF equalop error { $$=0;
- yyerror(" URI, SRCIP or DSTIP expected"); }
- | MYSELF error { $$=0;
- yyerror ("invalid operator, == or != expected");
- }
- | exp_stm { $$=mk_elem( NO_OP, ACTIONS_ST, ACTION_O, $1 ); }
- | NUMBER {$$=mk_elem( NO_OP, NUMBER_ST, NUMBER_O, (void*)$1 ); }
- ;
-
-ipnet: ip SLASH ip { $$=mk_net($1, $3); }
- | ip SLASH NUMBER { if (($3<0) || ($3>$1->len*8)){
- yyerror("invalid bit number in netmask");
- $$=0;
- }else{
- $$=mk_net_bitlen($1, $3);
- /*
- $$=mk_net($1,
- htonl( ($3)?~( (1<<(32-$3))-1 ):0 ) );
- */
- }
- }
- | ip { $$=mk_net_bitlen($1, $1->len*8); }
- | ip SLASH error { $$=0;
- yyerror("netmask (eg:255.0.0.0 or 8) expected");
- }
- ;
-
-
-
-host_sep: DOT {$$=".";}
- | MINUS {$$="-"; }
- ;
-
-host: ID { $$=$1; }
- | host host_sep ID { $$=(char*)pkg_malloc(strlen($1)+1+strlen($3)+1);
- if ($$==0){
- LOG(L_CRIT, "ERROR: cfg. parser: memory allocation"
- " failure while parsing host\n");
- }else{
- memcpy($$, $1, strlen($1));
- $$[strlen($1)]=*$2;
- memcpy($$+strlen($1)+1, $3, strlen($3));
- $$[strlen($1)+1+strlen($3)]=0;
- }
- pkg_free($1); pkg_free($3);
- }
- | host DOT error { $$=0; pkg_free($1); yyerror("invalid hostname"); }
- ;
-
-
-exp_stm: cmd { $$=$1; }
- | if_cmd { $$=$1; }
- | LBRACE actions RBRACE { $$=$2; }
- ;
-
-stm: action { $$=$1; }
- | LBRACE actions RBRACE { $$=$2; }
- ;
-
-actions: actions action {$$=append_action($1, $2); }
- | action {$$=$1;}
- | actions error { $$=0; yyerror("bad command"); }
- ;
-
-action: cmd SEMICOLON {$$=$1;}
- | if_cmd {$$=$1;}
- | SEMICOLON /* null action */ {$$=0;}
- | cmd error { $$=0; yyerror("bad command: missing ';'?"); }
- ;
-
-if_cmd: IF exp stm { $$=mk_action3( IF_T,
- EXPR_ST,
- ACTIONS_ST,
- NOSUBTYPE,
- $2,
- $3,
- 0);
- }
- | IF exp stm ELSE stm { $$=mk_action3( IF_T,
- EXPR_ST,
- ACTIONS_ST,
- ACTIONS_ST,
- $2,
- $3,
- $5);
- }
- ;
-
-cmd: FORWARD LPAREN host RPAREN { $$=mk_action( FORWARD_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- 0);
- }
- | FORWARD LPAREN STRING RPAREN { $$=mk_action( FORWARD_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- 0);
- }
- | FORWARD LPAREN ip RPAREN { $$=mk_action( FORWARD_T,
- IP_ST,
- NUMBER_ST,
- (void*)$3,
- 0);
- }
- | FORWARD LPAREN host COMMA NUMBER RPAREN { $$=mk_action(FORWARD_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- (void*)$5);
- }
- | FORWARD LPAREN STRING COMMA NUMBER RPAREN {$$=mk_action(FORWARD_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- (void*)$5);
- }
- | FORWARD LPAREN ip COMMA NUMBER RPAREN { $$=mk_action(FORWARD_T,
- IP_ST,
- NUMBER_ST,
- (void*)$3,
- (void*)$5);
- }
- | FORWARD LPAREN URIHOST COMMA URIPORT RPAREN {
- $$=mk_action(FORWARD_T,
- URIHOST_ST,
- URIPORT_ST,
- 0,
- 0);
- }
-
-
- | FORWARD LPAREN URIHOST COMMA NUMBER RPAREN {
- $$=mk_action(FORWARD_T,
- URIHOST_ST,
- NUMBER_ST,
- 0,
- (void*)$5);
- }
- | FORWARD LPAREN URIHOST RPAREN {
- $$=mk_action(FORWARD_T,
- URIHOST_ST,
- NUMBER_ST,
- 0,
- 0);
- }
- | FORWARD error { $$=0; yyerror("missing '(' or ')' ?"); }
- | FORWARD LPAREN error RPAREN { $$=0; yyerror("bad forward"
- "argument"); }
- | FORWARD_UDP LPAREN host RPAREN { $$=mk_action( FORWARD_UDP_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- 0);
- }
- | FORWARD_UDP LPAREN STRING RPAREN { $$=mk_action( FORWARD_UDP_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- 0);
- }
- | FORWARD_UDP LPAREN ip RPAREN { $$=mk_action( FORWARD_UDP_T,
- IP_ST,
- NUMBER_ST,
- (void*)$3,
- 0);
- }
- | FORWARD_UDP LPAREN host COMMA NUMBER RPAREN { $$=mk_action(
- FORWARD_UDP_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- (void*)$5);
- }
- | FORWARD_UDP LPAREN STRING COMMA NUMBER RPAREN {$$=mk_action(
- FORWARD_UDP_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- (void*)$5);
- }
- | FORWARD_UDP LPAREN ip COMMA NUMBER RPAREN { $$=mk_action(
- FORWARD_UDP_T,
- IP_ST,
- NUMBER_ST,
- (void*)$3,
- (void*)$5);
- }
- | FORWARD_UDP LPAREN URIHOST COMMA URIPORT RPAREN {
- $$=mk_action(FORWARD_UDP_T,
- URIHOST_ST,
- URIPORT_ST,
- 0,
- 0);
- }
-
-
- | FORWARD_UDP LPAREN URIHOST COMMA NUMBER RPAREN {
- $$=mk_action(FORWARD_UDP_T,
- URIHOST_ST,
- NUMBER_ST,
- 0,
- (void*)$5);
- }
- | FORWARD_UDP LPAREN URIHOST RPAREN {
- $$=mk_action(FORWARD_UDP_T,
- URIHOST_ST,
- NUMBER_ST,
- 0,
- 0);
- }
- | FORWARD_UDP error { $$=0; yyerror("missing '(' or ')' ?"); }
- | FORWARD_UDP LPAREN error RPAREN { $$=0; yyerror("bad forward_udp"
- "argument"); }
- | FORWARD_TCP LPAREN host RPAREN { $$=mk_action( FORWARD_TCP_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- 0);
- }
- | FORWARD_TCP LPAREN STRING RPAREN { $$=mk_action( FORWARD_TCP_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- 0);
- }
- | FORWARD_TCP LPAREN ip RPAREN { $$=mk_action( FORWARD_TCP_T,
- IP_ST,
- NUMBER_ST,
- (void*)$3,
- 0);
- }
- | FORWARD_TCP LPAREN host COMMA NUMBER RPAREN { $$=mk_action(
- FORWARD_TCP_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- (void*)$5);
- }
- | FORWARD_TCP LPAREN STRING COMMA NUMBER RPAREN {$$=mk_action(
- FORWARD_TCP_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- (void*)$5);
- }
- | FORWARD_TCP LPAREN ip COMMA NUMBER RPAREN { $$=mk_action(FORWARD_TCP_T,
- IP_ST,
- NUMBER_ST,
- (void*)$3,
- (void*)$5);
- }
- | FORWARD_TCP LPAREN URIHOST COMMA URIPORT RPAREN {
- $$=mk_action(FORWARD_TCP_T,
- URIHOST_ST,
- URIPORT_ST,
- 0,
- 0);
- }
-
-
- | FORWARD_TCP LPAREN URIHOST COMMA NUMBER RPAREN {
- $$=mk_action(FORWARD_TCP_T,
- URIHOST_ST,
- NUMBER_ST,
- 0,
- (void*)$5);
- }
- | FORWARD_TCP LPAREN URIHOST RPAREN {
- $$=mk_action(FORWARD_TCP_T,
- URIHOST_ST,
- NUMBER_ST,
- 0,
- 0);
- }
- | FORWARD_TCP error { $$=0; yyerror("missing '(' or ')' ?"); }
- | FORWARD_TCP LPAREN error RPAREN { $$=0; yyerror("bad forward_tcp"
- "argument"); }
- | FORWARD_TLS LPAREN host RPAREN {
- #ifdef USE_TLS
- $$=mk_action( FORWARD_TLS_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- 0);
- #else
- $$=0;
- yyerror("tls support not "
- "compiled in");
- #endif
- }
- | FORWARD_TLS LPAREN STRING RPAREN {
- #ifdef USE_TLS
- $$=mk_action( FORWARD_TLS_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- 0);
- #else
- $$=0;
- yyerror("tls support not "
- "compiled in");
- #endif
- }
- | FORWARD_TLS LPAREN ip RPAREN {
- #ifdef USE_TLS
- $$=mk_action( FORWARD_TLS_T,
- IP_ST,
- NUMBER_ST,
- (void*)$3,
- 0);
- #else
- $$=0;
- yyerror("tls support not "
- "compiled in");
- #endif
- }
- | FORWARD_TLS LPAREN host COMMA NUMBER RPAREN {
- #ifdef USE_TLS
- $$=mk_action( FORWARD_TLS_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- (void*)$5);
- #else
- $$=0;
- yyerror("tls support not "
- "compiled in");
- #endif
- }
- | FORWARD_TLS LPAREN STRING COMMA NUMBER RPAREN {
- #ifdef USE_TLS
- $$=mk_action( FORWARD_TLS_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- (void*)$5);
- #else
- $$=0;
- yyerror("tls support not "
- "compiled in");
- #endif
- }
- | FORWARD_TLS LPAREN ip COMMA NUMBER RPAREN {
- #ifdef USE_TLS
- $$=mk_action( FORWARD_TLS_T,
- IP_ST,
- NUMBER_ST,
- (void*)$3,
- (void*)$5);
- #else
- $$=0;
- yyerror("tls support not "
- "compiled in");
- #endif
- }
- | FORWARD_TLS LPAREN URIHOST COMMA URIPORT RPAREN {
- #ifdef USE_TLS
- $$=mk_action( FORWARD_TLS_T,
- URIHOST_ST,
- URIPORT_ST,
- 0,
- 0);
- #else
- $$=0;
- yyerror("tls support not "
- "compiled in");
- #endif
- }
-
-
- | FORWARD_TLS LPAREN URIHOST COMMA NUMBER RPAREN {
- #ifdef USE_TLS
- $$=mk_action( FORWARD_TLS_T,
- URIHOST_ST,
- NUMBER_ST,
- 0,
- (void*)$5);
- #else
- $$=0;
- yyerror("tls support not "
- "compiled in");
- #endif
- }
- | FORWARD_TLS LPAREN URIHOST RPAREN {
- #ifdef USE_TLS
- $$=mk_action( FORWARD_TLS_T,
- URIHOST_ST,
- NUMBER_ST,
- 0,
- 0);
- #else
- $$=0;
- yyerror("tls support not "
- "compiled in");
- #endif
- }
- | FORWARD_TLS error { $$=0; yyerror("missing '(' or ')' ?"); }
- | FORWARD_TLS LPAREN error RPAREN { $$=0; yyerror("bad forward_tls"
- "argument"); }
-
- | SEND LPAREN host RPAREN { $$=mk_action( SEND_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- 0);
- }
- | SEND LPAREN STRING RPAREN { $$=mk_action( SEND_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- 0);
- }
- | SEND LPAREN ip RPAREN { $$=mk_action( SEND_T,
- IP_ST,
- NUMBER_ST,
- (void*)$3,
- 0);
- }
- | SEND LPAREN host COMMA NUMBER RPAREN { $$=mk_action( SEND_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- (void*)$5);
- }
- | SEND LPAREN STRING COMMA NUMBER RPAREN {$$=mk_action( SEND_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- (void*)$5);
- }
- | SEND LPAREN ip COMMA NUMBER RPAREN { $$=mk_action( SEND_T,
- IP_ST,
- NUMBER_ST,
- (void*)$3,
- (void*)$5);
- }
- | SEND error { $$=0; yyerror("missing '(' or ')' ?"); }
- | SEND LPAREN error RPAREN { $$=0; yyerror("bad send"
- "argument"); }
- | SEND_TCP LPAREN host RPAREN { $$=mk_action( SEND_TCP_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- 0);
- }
- | SEND_TCP LPAREN STRING RPAREN { $$=mk_action( SEND_TCP_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- 0);
- }
- | SEND_TCP LPAREN ip RPAREN { $$=mk_action( SEND_TCP_T,
- IP_ST,
- NUMBER_ST,
- (void*)$3,
- 0);
- }
- | SEND_TCP LPAREN host COMMA NUMBER RPAREN { $$=mk_action( SEND_TCP_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- (void*)$5);
- }
- | SEND_TCP LPAREN STRING COMMA NUMBER RPAREN {$$=mk_action( SEND_TCP_T,
- STRING_ST,
- NUMBER_ST,
- $3,
- (void*)$5);
- }
- | SEND_TCP LPAREN ip COMMA NUMBER RPAREN { $$=mk_action( SEND_TCP_T,
- IP_ST,
- NUMBER_ST,
- (void*)$3,
- (void*)$5);
- }
- | SEND_TCP error { $$=0; yyerror("missing '(' or ')' ?"); }
- | SEND_TCP LPAREN error RPAREN { $$=0; yyerror("bad send_tcp"
- "argument"); }
- | DROP LPAREN RPAREN {$$=mk_action(DROP_T,0, 0, 0, 0); }
- | DROP {$$=mk_action(DROP_T,0, 0, 0, 0); }
- | LOG_TOK LPAREN STRING RPAREN {$$=mk_action( LOG_T, NUMBER_ST,
- STRING_ST,(void*)4,$3);
- }
- | LOG_TOK LPAREN NUMBER COMMA STRING RPAREN {$$=mk_action( LOG_T,
- NUMBER_ST,
- STRING_ST,
- (void*)$3,
- $5);
- }
- | LOG_TOK error { $$=0; yyerror("missing '(' or ')' ?"); }
- | LOG_TOK LPAREN error RPAREN { $$=0; yyerror("bad log"
- "argument"); }
- | SETFLAG LPAREN NUMBER RPAREN {$$=mk_action( SETFLAG_T, NUMBER_ST, 0,
- (void *)$3, 0 ); }
- | SETFLAG error { $$=0; yyerror("missing '(' or ')'?"); }
- | RESETFLAG LPAREN NUMBER RPAREN {$$=mk_action( RESETFLAG_T, NUMBER_ST, 0,
- (void *)$3, 0 ); }
- | RESETFLAG error { $$=0; yyerror("missing '(' or ')'?"); }
- | ISFLAGSET LPAREN NUMBER RPAREN {$$=mk_action( ISFLAGSET_T, NUMBER_ST, 0,
- (void *)$3, 0 ); }
- | ISFLAGSET error { $$=0; yyerror("missing '(' or ')'?"); }
- | ERROR LPAREN STRING COMMA STRING RPAREN {$$=mk_action(ERROR_T,
- STRING_ST,
- STRING_ST,
- $3,
- $5);
- }
- | ERROR error { $$=0; yyerror("missing '(' or ')' ?"); }
- | ERROR LPAREN error RPAREN { $$=0; yyerror("bad error"
- "argument"); }
- | ROUTE LPAREN NUMBER RPAREN { $$=mk_action(ROUTE_T, NUMBER_ST,
- 0, (void*)$3, 0);
- }
- | ROUTE error { $$=0; yyerror("missing '(' or ')' ?"); }
- | ROUTE LPAREN error RPAREN { $$=0; yyerror("bad route"
- "argument"); }
- | EXEC LPAREN STRING RPAREN { $$=mk_action( EXEC_T, STRING_ST, 0,
- $3, 0);
- }
- | SET_HOST LPAREN STRING RPAREN { $$=mk_action(SET_HOST_T, STRING_ST,
- 0, $3, 0); }
- | SET_HOST error { $$=0; yyerror("missing '(' or ')' ?"); }
- | SET_HOST LPAREN error RPAREN { $$=0; yyerror("bad argument, "
- "string expected"); }
-
- | PREFIX LPAREN STRING RPAREN { $$=mk_action(PREFIX_T, STRING_ST,
- 0, $3, 0); }
- | PREFIX error { $$=0; yyerror("missing '(' or ')' ?"); }
- | PREFIX LPAREN error RPAREN { $$=0; yyerror("bad argument, "
- "string expected"); }
- | STRIP_TAIL LPAREN NUMBER RPAREN { $$=mk_action(STRIP_TAIL_T,
- NUMBER_ST, 0, (void *) $3, 0); }
- | STRIP_TAIL error { $$=0; yyerror("missing '(' or ')' ?"); }
- | STRIP_TAIL LPAREN error RPAREN { $$=0; yyerror("bad argument, "
- "number expected"); }
-
- | STRIP LPAREN NUMBER RPAREN { $$=mk_action(STRIP_T, NUMBER_ST,
- 0, (void *) $3, 0); }
- | STRIP error { $$=0; yyerror("missing '(' or ')' ?"); }
- | STRIP LPAREN error RPAREN { $$=0; yyerror("bad argument, "
- "number expected"); }
- | APPEND_BRANCH LPAREN STRING COMMA STRING RPAREN {
- { qvalue_t q;
- if (str2q(&q, $5, strlen($5)) < 0) {
- yyerror("bad argument, q value expected");
- }
- $$=mk_action(APPEND_BRANCH_T, STRING_ST, NUMBER_ST, $3,
- (void *)(long)q); }
- }
-
- | APPEND_BRANCH LPAREN STRING RPAREN { $$=mk_action( APPEND_BRANCH_T,
- STRING_ST, NUMBER_ST, $3, (void *)Q_UNSPECIFIED) ; }
- | APPEND_BRANCH LPAREN RPAREN { $$=mk_action( APPEND_BRANCH_T,
- STRING_ST, NUMBER_ST, 0, (void *)Q_UNSPECIFIED ) ; }
- | APPEND_BRANCH { $$=mk_action( APPEND_BRANCH_T, STRING_ST, 0, 0, 0 ) ; }
-
- | SET_HOSTPORT LPAREN STRING RPAREN { $$=mk_action( SET_HOSTPORT_T,
- STRING_ST, 0, $3, 0); }
- | SET_HOSTPORT error { $$=0; yyerror("missing '(' or ')' ?"); }
- | SET_HOSTPORT LPAREN error RPAREN { $$=0; yyerror("bad argument,"
- " string expected"); }
- | SET_PORT LPAREN STRING RPAREN { $$=mk_action( SET_PORT_T, STRING_ST,
- 0, $3, 0); }
- | SET_PORT error { $$=0; yyerror("missing '(' or ')' ?"); }
- | SET_PORT LPAREN error RPAREN { $$=0; yyerror("bad argument, "
- "string expected"); }
- | SET_USER LPAREN STRING RPAREN { $$=mk_action( SET_USER_T, STRING_ST,
- 0, $3, 0); }
- | SET_USER error { $$=0; yyerror("missing '(' or ')' ?"); }
- | SET_USER LPAREN error RPAREN { $$=0; yyerror("bad argument, "
- "string expected"); }
- | SET_USERPASS LPAREN STRING RPAREN { $$=mk_action( SET_USERPASS_T,
- STRING_ST, 0, $3, 0); }
- | SET_USERPASS error { $$=0; yyerror("missing '(' or ')' ?"); }
- | SET_USERPASS LPAREN error RPAREN { $$=0; yyerror("bad argument, "
- "string expected"); }
- | SET_URI LPAREN STRING RPAREN { $$=mk_action( SET_URI_T, STRING_ST,
- 0, $3, 0); }
- | SET_URI error { $$=0; yyerror("missing '(' or ')' ?"); }
- | SET_URI LPAREN error RPAREN { $$=0; yyerror("bad argument, "
- "string expected"); }
- | REVERT_URI LPAREN RPAREN { $$=mk_action( REVERT_URI_T, 0,0,0,0); }
- | REVERT_URI { $$=mk_action( REVERT_URI_T, 0,0,0,0); }
- | FORCE_RPORT LPAREN RPAREN { $$=mk_action(FORCE_RPORT_T,0, 0, 0, 0); }
- | FORCE_RPORT {$$=mk_action(FORCE_RPORT_T,0, 0, 0, 0); }
- | FORCE_TCP_ALIAS LPAREN NUMBER RPAREN {
- #ifdef USE_TCP
- $$=mk_action(FORCE_TCP_ALIAS_T,NUMBER_ST, 0,
- (void*)$3, 0);
- #else
- yyerror("tcp support not compiled in");
- #endif
- }
- | FORCE_TCP_ALIAS LPAREN RPAREN {
- #ifdef USE_TCP
- $$=mk_action(FORCE_TCP_ALIAS_T,0, 0, 0, 0);
- #else
- yyerror("tcp support not compiled in");
- #endif
- }
- | FORCE_TCP_ALIAS {
- #ifdef USE_TCP
- $$=mk_action(FORCE_TCP_ALIAS_T,0, 0, 0, 0);
- #else
- yyerror("tcp support not compiled in");
- #endif
- }
- | FORCE_TCP_ALIAS LPAREN error RPAREN {$$=0;
- yyerror("bad argument, number expected");
- }
- | SET_ADV_ADDRESS LPAREN listen_id RPAREN {
- $$=0;
- if ((str_tmp=pkg_malloc(sizeof(str)))==0){
- LOG(L_CRIT, "ERROR: cfg. parser:"
- " out of memory.\n");
- }else{
- str_tmp->s=$3;
- str_tmp->len=strlen($3);
- $$=mk_action(SET_ADV_ADDR_T, STR_ST,
- 0, str_tmp, 0);
- }
- }
- | SET_ADV_ADDRESS LPAREN error RPAREN { $$=0; yyerror("bad argument, "
- "string expected"); }
- | SET_ADV_ADDRESS error {$$=0; yyerror("missing '(' or ')' ?"); }
- | SET_ADV_PORT LPAREN NUMBER RPAREN {
- $$=0;
- tmp=int2str($3, &i_tmp);
- if ((str_tmp=pkg_malloc(sizeof(str)))==0){
- LOG(L_CRIT, "ERROR: cfg. parser:"
- " out of memory.\n");
- }else{
- if ((str_tmp->s=pkg_malloc(i_tmp))==0){
- LOG(L_CRIT, "ERROR: cfg. parser:"
- " out of memory.\n");
- }else{
- memcpy(str_tmp->s, tmp, i_tmp);
- str_tmp->len=i_tmp;
- $$=mk_action(SET_ADV_PORT_T, STR_ST,
- 0, str_tmp, 0);
- }
- }
- }
- | SET_ADV_PORT LPAREN error RPAREN { $$=0; yyerror("bad argument, "
- "string expected"); }
- | SET_ADV_PORT error {$$=0; yyerror("missing '(' or ')' ?"); }
- | FORCE_SEND_SOCKET LPAREN phostport RPAREN {
- $$=mk_action(FORCE_SEND_SOCKET_T,
- SOCKID_ST, 0, $3, 0);
- }
- | FORCE_SEND_SOCKET LPAREN error RPAREN { $$=0; yyerror("bad argument,"
- " [proto:]host[:port] expected"); }
- | FORCE_SEND_SOCKET error {$$=0; yyerror("missing '(' or ')' ?"); }
- | ID LPAREN RPAREN { f_tmp=(void*)find_export($1, 0, rt);
- if (f_tmp==0){
- if (find_export($1, 0, 0)) {
- yyerror("Command cannot be used in the block\n");
- } else {
- yyerror("unknown command, missing"
- " loadmodule?\n");
- }
- $$=0;
- }else{
- $$=mk_action( MODULE_T,
- CMDF_ST,
- 0,
- f_tmp,
- 0
- );
- }
- }
- | ID LPAREN STRING RPAREN { f_tmp=(void*)find_export($1, 1, rt);
- if (f_tmp==0){
- if (find_export($1, 1, 0)) {
- yyerror("Command cannot be used in the block\n");
- } else {
- yyerror("unknown command, missing"
- " loadmodule?\n");
- }
- $$=0;
- }else{
- $$=mk_action( MODULE_T,
- CMDF_ST,
- STRING_ST,
- f_tmp,
- $3
- );
- }
- }
- | ID LPAREN STRING COMMA STRING RPAREN
- { f_tmp=(void*)find_export($1, 2, rt);
- if (f_tmp==0){
- if (find_export($1, 2, 0)) {
- yyerror("Command cannot be used in the block\n");
- } else {
- yyerror("unknown command, missing"
- " loadmodule?\n");
- }
- $$=0;
- }else{
- $$=mk_action3( MODULE_T,
- CMDF_ST,
- STRING_ST,
- STRING_ST,
- f_tmp,
- $3,
- $5
- );
- }
- }
- | ID LPAREN error RPAREN { $$=0; yyerror("bad arguments"); }
- ;
-
-
-%%
-
-extern int line;
-extern int column;
-extern int startcolumn;
-static void warn(char* s)
-{
- LOG(L_WARN, "cfg. warning: (%d,%d-%d): %s\n", line, startcolumn,
- column, s);
- cfg_errors++;
-}
-
-static void yyerror(char* s)
-{
- LOG(L_CRIT, "parse error (%d,%d-%d): %s\n", line, startcolumn,
- column, s);
- cfg_errors++;
-}
-
-
-static struct socket_id* mk_listen_id(char* host, int proto, int port)
-{
- struct socket_id* l;
- l=pkg_malloc(sizeof(struct socket_id));
- if (l==0){
- LOG(L_CRIT,"ERROR: cfg. parser: out of memory.\n");
- }else{
- l->name=host;
- l->port=port;
- l->proto=proto;
- l->next=0;
- }
- return l;
-}
-
-
-/*
-int main(int argc, char ** argv)
-{
- if (yyparse()!=0)
- fprintf(stderr, "parsing error\n");
-}
-*/
Deleted: ser/trunk/comp_defs.h
===================================================================
--- ser/trunk/comp_defs.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/comp_defs.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,41 +0,0 @@
-/*
- * $Id: comp_defs.h,v 1.4 2004/08/24 08:45:10 janakj Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/* compatibility defs for emergency roll-back if things do not work ;
- * if that happens:
- * a) define PRESERVE_ZT (affects most of parser)
- * b) define DONT_REMOVE_ZT (affects first line)
- * c) define SCRATCH
- * d) undefine REMOVE_ALL_ZT (affects via)
- */
-
-
-#ifndef _COMP_DEFS_H
-#define _COMP_DEFS_H
-
-
-#endif
Deleted: ser/trunk/config.h
===================================================================
--- ser/trunk/config.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/config.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,205 +0,0 @@
-/*
- * $Id: config.h,v 1.61.2.2 2005/11/29 19:39:45 andrei Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * History:
- * --------
- * 2003-04-05 DEFAULT_*_URL introduced (jiri)
- * 2003-07-04 fixed SRV lookup prefix for TLS/sips (andrei)
- * 2005-04-25 MAX_BRANCH_PARAM_LEN too small, fixed (andrei)
- */
-
-
-
-
-#ifndef config_h
-#define config_h
-
-#include "types.h"
-
-/* default sip port if none specified */
-#define SIP_PORT 5060
-#define SIPS_PORT 5061
-
-#define CFG_FILE CFG_DIR "ser.cfg"
-
-#define TLS_PKEY_FILE CFG_DIR "cert.pem"
-#define TLS_CERT_FILE CFG_DIR "cert.pem"
-#define TLS_CA_FILE 0 /* no CA list file by default */
-
-
-/* maximum number of addresses on which we will listen */
-#define MAX_LISTEN 16
-
-/* default number of child processes started */
-#define CHILD_NO 8
-
-#define RT_NO 20 /* routing tables number */
-#define FAILURE_RT_NO RT_NO /* on_failure routing tables number */
-#define ONREPLY_RT_NO RT_NO /* on_reply routing tables number */
-#define DEFAULT_RT 0 /* default routing table */
-
-#define MAX_REC_LEV 100 /* maximum number of recursive calls */
-#define ROUTE_MAX_REC_LEV 100 /* maximum number of recursive calls
- for route()*/
-
-#define MAX_URI_SIZE 1024 /* used when rewriting URIs */
-
-#define MY_VIA "Via: SIP/2.0/UDP "
-#define MY_VIA_LEN (sizeof(MY_VIA) - 1)
-
-#define CONTENT_LENGTH "Content-Length: "
-#define CONTENT_LENGTH_LEN (sizeof(CONTENT_LENGTH)-1)
-
-#define USER_AGENT "User-Agent: Sip EXpress router"\
- "(" VERSION " (" ARCH "/" OS"))"
-#define USER_AGENT_LEN (sizeof(USER_AGENT)-1)
-
-#define SERVER_HDR "Server: Sip EXpress router "\
- "(" VERSION " (" ARCH "/" OS"))"
-#define SERVER_HDR_LEN (sizeof(SERVER_HDR)-1)
-
-#define MAX_WARNING_LEN 256
-
-#define MY_BRANCH ";branch="
-#define MY_BRANCH_LEN (sizeof(MY_BRANCH) - 1)
-
-#define MAX_PORT_LEN 7 /* ':' + max 5 letters + \0 */
-#define CRLF "\r\n"
-#define CRLF_LEN (sizeof(CRLF) - 1)
-
-#define RECEIVED ";received="
-#define RECEIVED_LEN (sizeof(RECEIVED) - 1)
-
-#define TRANSPORT_PARAM ";transport="
-#define TRANSPORT_PARAM_LEN (sizeof(TRANSPORT_PARAM) - 1)
-
-#define TOTAG_TOKEN ";tag="
-#define TOTAG_TOKEN_LEN (sizeof(TOTAG_TOKEN)-1)
-
-#define RPORT ";rport="
-#define RPORT_LEN (sizeof(RPORT) - 1)
-
-#define ID_PARAM ";i="
-#define ID_PARAM_LEN (sizeof(ID_PARAM) - 1)
-
-#define SRV_UDP_PREFIX "_sip._udp."
-#define SRV_UDP_PREFIX_LEN (sizeof(SRV_UDP_PREFIX) - 1)
-
-#define SRV_TCP_PREFIX "_sip._tcp."
-#define SRV_TCP_PREFIX_LEN (sizeof(SRV_TCP_PREFIX) - 1)
-
-#define SRV_TLS_PREFIX "_sips._tcp."
-#define SRV_TLS_PREFIX_LEN (sizeof(SRV_TLS_PREFIX) - 1)
-
-#define SRV_MAX_PREFIX_LEN SRV_TLS_PREFIX_LEN
-
-/*used only if PKG_MALLOC is defined*/
-#define PKG_MEM_POOL_SIZE 1024*1024
-
-/*used if SH_MEM is defined*/
-#define SHM_MEM_SIZE 32
-
-#define TIMER_TICK 1
-
-/* dimensioning buckets in q_malloc */
-/* size of the size2bucket table; everything beyond that asks for
- a variable-size kilo-bucket
- */
-#define MAX_FIXED_BLOCK 3072
-/* distance of kilo-buckets */
-#define BLOCK_STEP 512
-/* maximum number of possible buckets */
-#define MAX_BUCKET 15
-
-/* receive buffer size -- preferably set low to
- avoid terror of excessively huge messages; they are
- useless anyway
-*/
-#define BUF_SIZE 65535
-
-/* forwarding -- Via buffer dimensioning */
-#define MAX_VIA_LINE_SIZE 240
-#define MAX_RECEIVED_SIZE 57
-#define MAX_RPORT_SIZE 13
-
-/* maximum number of branches per transaction */
-#define MAX_BRANCHES 12
-
-/* maximum length of a FIFO server command */
-#define MAX_FIFO_COMMAND 512
-
-/* buffer dimensions for FIFO server */
-#define MAX_CONSUME_BUFFER 1024
-/* where reply pipes may be opened */
-#define DEFAULT_FIFO_DIR "/tmp/"
-/* max length of the text of fifo 'print' command */
-#define MAX_PRINT_TEXT 256
-
-/* maximum length of Contact header field in redirection replies */
-#define MAX_REDIRECTION_LEN 512
-
-/* used by FIFO statistics in module to terminate line;
- extra whitespaces are used to overwrite remainders of
- previous line if longer than current one
-*/
-#define CLEANUP_EOL " \n"
-
-/* how patient is ser with FIFO clients not awaiting a reply?
- 4 x 80ms = 0.32 sec
-*/
-#define FIFO_REPLY_RETRIES 4
-#define FIFO_REPLY_WAIT 80000
-
-/* magic cookie for transaction matching as defined in RFC3261 */
-#define MCOOKIE "z9hG4bK"
-#define MCOOKIE_LEN (sizeof(MCOOKIE)-1)
-/* Maximum length of values appended to Via-branch parameter */
-#define MAX_BRANCH_PARAM_LEN (MCOOKIE_LEN+8 /*int2hex*/ + 1 /*sep*/ + \
- MD5_LEN /* max(int2hex, MD5_LEN) */ \
- + 1 /*sep*/ + 8 /*int2hex*/ + \
- 1 /*extra space, needed by t_calc_branch*/)
-
-
-/* maximum path length */
-#define PATH_MAX_GUESS 1024
-
-#define DEFAULT_DB_URL "mysql://ser:heslo@localhost/ser"
-#define DEFAULT_DB_URL_LEN (sizeof(DEFAULT_DB_URL) - 1)
-
-#define DEFAULT_RODB_URL "mysql://serro:47serro11@localhost/ser"
-#define DEFAULT_RODB_URL_LEN (sizeof(DEFAULT_RODB_URL) - 1)
-
-/* table holding versions of other ser tables */
-#define VERSION_TABLE "version"
-#define VERSION_COLUMN "table_version"
-#define TABLENAME_COLUMN "table_name"
-
-/* minimum packet size; smaller packets will be dropped silently */
-#define MIN_UDP_PACKET 32
-
-
-
-#endif
Deleted: ser/trunk/crc.c
===================================================================
--- ser/trunk/crc.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/crc.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,309 +0,0 @@
-/*
- * $Id: crc.c,v 1.6 2004/08/24 08:45:10 janakj Exp $
- *
- * Crc - 32 + 16 BIT ANSI X3.66 + CCITT CRC checksum files
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-#include <stdio.h>
-#include "str.h"
-#include "ut.h"
-#include "crc.h"
-
-#define OK 0
-#define ERROR (-1)
-#define UPDC32(ch, crc) (crc_32_tab[((crc) ^ (ch)) & 0xff] ^ ((crc) >> 8))
-#define UPDCIT(ch, crc) (ccitt_tab[((crc) ^ (ch)) & 0xff] ^ ((crc) >> 8))
-#define UPDC16(ch, crc) (crc_16_tab[((crc) ^ (ch)) & 0xff] ^ ((crc) >> 8))
-
-/*
- * Copyright (C) 1986 Gary S. Brown. You may use this program, or
- * code or tables extracted from it, as desired without restriction.
- */
-/* First, the polynomial itself and its table of feedback terms. The */
-/* polynomial is */
-/* X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0 */
-/* Note that we take it "backwards" and put the highest-order term in */
-/* the lowest-order bit. The X^32 term is "implied"; the LSB is the */
-/* X^31 term, etc. The X^0 term (usually shown as "+1") results in */
-/* the MSB being 1. */
-
-/* added CCITT (X^16+X^12+X^5+X^0) and CRC-16 (X^16+X^15+X^2+X^0) */
-/* polynomials (Heinz Repp, Feb 4 1997) */
-
-/* Note that the usual hardware shift register implementation, which */
-/* is what we're using (we're merely optimizing it by doing eight-bit */
-/* chunks at a time) shifts bits into the lowest-order term. In our */
-/* implementation, that means shifting towards the right. Why do we */
-/* do it this way? Because the calculated CRC must be transmitted in */
-/* order from highest-order term to lowest-order term. UARTs transmit */
-/* characters in order from LSB to MSB. By storing the CRC this way, */
-/* we hand it to the UART in the order low-byte to high-byte; the UART */
-/* sends each low-bit to hight-bit; and the result is transmission bit */
-/* by bit from highest- to lowest-order term without requiring any bit */
-/* shuffling on our part. Reception works similarly. */
-
-/* The feedback terms table consists of 256, 32-bit entries. Notes: */
-/* */
-/* 1. The table can be generated at runtime if desired; code to do so */
-/* is shown later. It might not be obvious, but the feedback */
-/* terms simply represent the results of eight shift/xor opera- */
-/* tions for all combinations of data and CRC register values. */
-/* */
-/* 2. The CRC accumulation logic is the same for all CRC polynomials, */
-/* be they sixteen or thirty-two bits wide. You simply choose the */
-/* appropriate table. Alternatively, because the table can be */
-/* generated at runtime, you can start by generating the table for */
-/* the polynomial in question and use exactly the same "updcrc", */
-/* if your application needn't simultaneously handle two CRC */
-/* polynomials. (Note, however, that XMODEM is strange.) */
-/* */
-/* 3. For 16-bit CRCs, the table entries need be only 16 bits wide; */
-/* of course, 32-bit entries work OK if the high 16 bits are zero. */
-/* */
-/* 4. The values must be right-shifted by eight bits by the "updcrc" */
-/* logic; the shift must be unsigned (bring in zeroes). On some */
-/* hardware you could probably optimize the shift in assembler by */
-/* using byte-swap instructions. */
-
-unsigned long int crc_32_tab[] = { /* CRC polynomial 0xedb88320 */
-0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
-0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
-0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
-0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
-0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
-0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
-0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
-0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
-0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
-0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
-0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
-0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
-0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
-0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
-0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
-0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
-0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
-0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
-0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
-0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
-0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
-0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
-0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
-0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
-0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
-0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
-0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
-0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
-0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
-0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
-0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
-0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
-0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
-0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
-0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
-0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
-0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
-0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
-0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
-0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
-0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
-0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
-0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
-};
-
-unsigned short int ccitt_tab[] = { /* CRC polynomial 0x8408 */
-0x0000, 0x1189, 0x2312, 0x329B, 0x4624, 0x57AD, 0x6536, 0x74BF,
-0x8C48, 0x9DC1, 0xAF5A, 0xBED3, 0xCA6C, 0xDBE5, 0xE97E, 0xF8F7,
-0x1081, 0x0108, 0x3393, 0x221A, 0x56A5, 0x472C, 0x75B7, 0x643E,
-0x9CC9, 0x8D40, 0xBFDB, 0xAE52, 0xDAED, 0xCB64, 0xF9FF, 0xE876,
-0x2102, 0x308B, 0x0210, 0x1399, 0x6726, 0x76AF, 0x4434, 0x55BD,
-0xAD4A, 0xBCC3, 0x8E58, 0x9FD1, 0xEB6E, 0xFAE7, 0xC87C, 0xD9F5,
-0x3183, 0x200A, 0x1291, 0x0318, 0x77A7, 0x662E, 0x54B5, 0x453C,
-0xBDCB, 0xAC42, 0x9ED9, 0x8F50, 0xFBEF, 0xEA66, 0xD8FD, 0xC974,
-0x4204, 0x538D, 0x6116, 0x709F, 0x0420, 0x15A9, 0x2732, 0x36BB,
-0xCE4C, 0xDFC5, 0xED5E, 0xFCD7, 0x8868, 0x99E1, 0xAB7A, 0xBAF3,
-0x5285, 0x430C, 0x7197, 0x601E, 0x14A1, 0x0528, 0x37B3, 0x263A,
-0xDECD, 0xCF44, 0xFDDF, 0xEC56, 0x98E9, 0x8960, 0xBBFB, 0xAA72,
-0x6306, 0x728F, 0x4014, 0x519D, 0x2522, 0x34AB, 0x0630, 0x17B9,
-0xEF4E, 0xFEC7, 0xCC5C, 0xDDD5, 0xA96A, 0xB8E3, 0x8A78, 0x9BF1,
-0x7387, 0x620E, 0x5095, 0x411C, 0x35A3, 0x242A, 0x16B1, 0x0738,
-0xFFCF, 0xEE46, 0xDCDD, 0xCD54, 0xB9EB, 0xA862, 0x9AF9, 0x8B70,
-0x8408, 0x9581, 0xA71A, 0xB693, 0xC22C, 0xD3A5, 0xE13E, 0xF0B7,
-0x0840, 0x19C9, 0x2B52, 0x3ADB, 0x4E64, 0x5FED, 0x6D76, 0x7CFF,
-0x9489, 0x8500, 0xB79B, 0xA612, 0xD2AD, 0xC324, 0xF1BF, 0xE036,
-0x18C1, 0x0948, 0x3BD3, 0x2A5A, 0x5EE5, 0x4F6C, 0x7DF7, 0x6C7E,
-0xA50A, 0xB483, 0x8618, 0x9791, 0xE32E, 0xF2A7, 0xC03C, 0xD1B5,
-0x2942, 0x38CB, 0x0A50, 0x1BD9, 0x6F66, 0x7EEF, 0x4C74, 0x5DFD,
-0xB58B, 0xA402, 0x9699, 0x8710, 0xF3AF, 0xE226, 0xD0BD, 0xC134,
-0x39C3, 0x284A, 0x1AD1, 0x0B58, 0x7FE7, 0x6E6E, 0x5CF5, 0x4D7C,
-0xC60C, 0xD785, 0xE51E, 0xF497, 0x8028, 0x91A1, 0xA33A, 0xB2B3,
-0x4A44, 0x5BCD, 0x6956, 0x78DF, 0x0C60, 0x1DE9, 0x2F72, 0x3EFB,
-0xD68D, 0xC704, 0xF59F, 0xE416, 0x90A9, 0x8120, 0xB3BB, 0xA232,
-0x5AC5, 0x4B4C, 0x79D7, 0x685E, 0x1CE1, 0x0D68, 0x3FF3, 0x2E7A,
-0xE70E, 0xF687, 0xC41C, 0xD595, 0xA12A, 0xB0A3, 0x8238, 0x93B1,
-0x6B46, 0x7ACF, 0x4854, 0x59DD, 0x2D62, 0x3CEB, 0x0E70, 0x1FF9,
-0xF78F, 0xE606, 0xD49D, 0xC514, 0xB1AB, 0xA022, 0x92B9, 0x8330,
-0x7BC7, 0x6A4E, 0x58D5, 0x495C, 0x3DE3, 0x2C6A, 0x1EF1, 0x0F78,
-};
-
-unsigned short int crc_16_tab[] = { /* CRC polynomial 0xA001 */
-0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241,
-0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440,
-0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40,
-0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841,
-0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40,
-0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41,
-0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641,
-0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040,
-0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240,
-0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441,
-0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41,
-0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840,
-0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41,
-0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40,
-0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640,
-0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041,
-0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240,
-0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441,
-0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41,
-0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840,
-0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41,
-0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40,
-0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640,
-0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041,
-0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241,
-0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440,
-0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40,
-0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841,
-0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40,
-0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41,
-0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641,
-0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040,
-};
-
-unsigned short crcitt_string( char *s, int len )
-{
- register unsigned short ccitt;
-
- ccitt = 0xFFFF;
-
- while( len ) {
- ccitt = UPDCIT(*s, ccitt);
- s++; len--;
- }
- return ~ccitt;
-}
-
-void crcitt_string_array( char *dst, str src[], int size )
-{
- register int i;
- register unsigned short ccitt;
- register char *c;
- register int len;
- int str_len;
-
- ccitt = 0xFFFF;
- str_len=CRC16_LEN;
- for (i=0; i<size; i++ ) {
- c=src[i].s;
- len=src[i].len;
- while(len) {
- ccitt = UPDCIT( *c, ccitt );
- c++;len--;
- }
- }
- ccitt = ~ccitt;
- if (int2reverse_hex( &dst, &str_len, ccitt )==-1) {
- /* bug ... printed ccitt value longer than CRC32_LEN */
- LOG(L_CRIT, "ERROR: crcitt_string_array: string conversion incomplete\n");
- }
- /* padding */
- while( str_len ) {
- *dst='0';
- dst++;
- str_len--;
- }
-}
-
-
-
-int crc32file (char *name)
-{
- register FILE *fin;
- register unsigned long crc32;
- register unsigned short ccitt, crc16;
- register int c;
- register long charcnt;
-
- crc32 = 0xFFFFFFFF; ccitt = 0xFFFF;
- crc16 = charcnt = 0;
- if ((fin=fopen(name, "rb"))==NULL)
- {
- perror(name);
- return ERROR;
- }
- while ((c=getc(fin))!=EOF) {
- ++charcnt;
- crc32 = UPDC32(c, crc32);
- ccitt = UPDCIT(c, ccitt);
- crc16 = UPDC16(c, crc16);
- }
-
- if (ferror(fin))
- {
- perror(name);
- fclose(fin); return ERROR;
- }
- else
- {
- crc32 = ~crc32;
- ccitt = ~ccitt;
-
- printf(" %08lX %04X %04X%10ld %s\n",
- crc32, ccitt, crc16, charcnt, name);
- }
-
- fclose(fin); return OK;
-}
-
-/*
-
-int main(int argc, char **argv)
-{
- register int errors = 0;
-
- puts(" CRC-32 CCITT CRC-16 size name\n"
- "-----------------------------------------------");
-
- while( --argc > 0)
- errors |= crc32file( *++argv);
- exit(errors != 0);
-}
-*/
-
-/* End of crc.c */
-
Deleted: ser/trunk/crc.h
===================================================================
--- ser/trunk/crc.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/crc.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,18 +0,0 @@
-/* $Id: crc.h,v 1.3 2003/04/10 12:37:50 janakj Exp $*/
-
-#ifndef _CRC_H_
-#define _CRC_H_
-
-#include "str.h"
-
-#define CRC16_LEN 4
-
-extern unsigned long int crc_32_tab[];
-extern unsigned short int ccitt_tab[];
-extern unsigned short int crc_16_tab[];
-
-unsigned short crcitt_string( char *s, int len );
-void crcitt_string_array( char *dst, str src[], int size );
-
-#endif /* _CRC_H_ */
-
Deleted: ser/trunk/daemonize.c
===================================================================
--- ser/trunk/daemonize.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/daemonize.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,339 +0,0 @@
-/*
- * $Id: daemonize.c,v 1.11.2.1 2004/12/22 23:30:08 calrissian Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*
- *
- * History:
- * --------
- * 2004-02-20 removed from ser main.c into its own file (andrei)
- * 2004-03-04 moved setuid/setgid in do_suid() (andrei)
- * 2004-03-25 added increase_open_fds & set_core_dump (andrei)
- * 2004-05-03 applied pgid patch from janakj
- */
-
-
-#include <sys/types.h>
-
-#define _XOPEN_SOURCE /* needed on linux for the getpgid prototype, but
- openbsd 3.2 won't include common types (uint a.s.o)
- if defined before including sys/types.h */
-#define _XOPEN_SOURCE_EXTENDED /* same as above */
-#define __USE_XOPEN_EXTENDED /* same as above, overrides features.h */
-#define __EXTENSIONS__ /* needed on solaris: if XOPEN_SOURCE is defined
- struct timeval defintion from <sys/time.h> won't
- be included => workarround define _EXTENSIONS_
- -andrei */
-#include <signal.h>
-#include <syslog.h>
-#include <errno.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/time.h>
-#include <sys/resource.h> /* setrlimit */
-#include <unistd.h>
-
-#include "daemonize.h"
-#include "globals.h"
-#include "dprint.h"
-
-
-#define MAX_FD 32 /* maximum number of inherited open file descriptors,
- (normally it shouldn't be bigger than 3) */
-
-
-
-/* daemon init, return 0 on success, -1 on error */
-int daemonize(char* name)
-{
- FILE *pid_stream;
- pid_t pid;
- int r, p;
-
-
- p=-1;
-
- /* flush std file descriptors to avoid flushes after fork
- * (same message appearing multiple times)
- * and switch to unbuffered
- */
- setbuf(stdout, 0);
- setbuf(stderr, 0);
- if (chroot_dir&&(chroot(chroot_dir)<0)){
- LOG(L_CRIT, "Cannot chroot to %s: %s\n", chroot_dir, strerror(errno));
- goto error;
- }
-
- if (chdir(working_dir)<0){
- LOG(L_CRIT,"cannot chdir to %s: %s\n", working_dir, strerror(errno));
- goto error;
- }
-
- /* fork to become!= group leader*/
- if ((pid=fork())<0){
- LOG(L_CRIT, "Cannot fork:%s\n", strerror(errno));
- goto error;
- }else if (pid!=0){
- /* parent process => exit*/
- exit(0);
- }
- /* become session leader to drop the ctrl. terminal */
- if (setsid()<0){
- LOG(L_WARN, "setsid failed: %s\n",strerror(errno));
- }else{
- own_pgid=1;/* we have our own process group */
- }
- /* fork again to drop group leadership */
- if ((pid=fork())<0){
- LOG(L_CRIT, "Cannot fork:%s\n", strerror(errno));
- goto error;
- }else if (pid!=0){
- /*parent process => exit */
- exit(0);
- }
-
- /* added by noh: create a pid file for the main process */
- if (pid_file!=0){
-
- if ((pid_stream=fopen(pid_file, "r"))!=NULL){
- fscanf(pid_stream, "%d", &p);
- fclose(pid_stream);
- if (p==-1){
- LOG(L_CRIT, "pid file %s exists, but doesn't contain a valid"
- " pid number\n", pid_file);
- goto error;
- }
- if (kill((pid_t)p, 0)==0 || errno==EPERM){
- LOG(L_CRIT, "running process found in the pid file %s\n",
- pid_file);
- goto error;
- }else{
- LOG(L_WARN, "pid file contains old pid, replacing pid\n");
- }
- }
- pid=getpid();
- if ((pid_stream=fopen(pid_file, "w"))==NULL){
- LOG(L_WARN, "unable to create pid file %s: %s\n",
- pid_file, strerror(errno));
- goto error;
- }else{
- fprintf(pid_stream, "%i\n", (int)pid);
- fclose(pid_stream);
- }
- }
-
- if (pgid_file!=0){
- if ((pid_stream=fopen(pgid_file, "r"))!=NULL){
- fscanf(pid_stream, "%d", &p);
- fclose(pid_stream);
- if (p==-1){
- LOG(L_CRIT, "pgid file %s exists, but doesn't contain a valid"
- " pgid number\n", pgid_file);
- goto error;
- }
- }
- if (own_pgid){
- pid=getpgid(0);
- if ((pid_stream=fopen(pgid_file, "w"))==NULL){
- LOG(L_WARN, "unable to create pgid file %s: %s\n",
- pgid_file, strerror(errno));
- goto error;
- }else{
- fprintf(pid_stream, "%i\n", (int)pid);
- fclose(pid_stream);
- }
- }else{
- LOG(L_WARN, "we don't have our own process so we won't save"
- " our pgid\n");
- unlink(pgid_file); /* just to be sure nobody will miss-use the old
- value*/
- }
- }
-
- /* try to replace stdin, stdout & stderr with /dev/null */
- if (freopen("/dev/null", "r", stdin)==0){
- LOG(L_ERR, "unable to replace stdin with /dev/null: %s\n",
- strerror(errno));
- /* continue, leave it open */
- };
- if (freopen("/dev/null", "w", stdout)==0){
- LOG(L_ERR, "unable to replace stdout with /dev/null: %s\n",
- strerror(errno));
- /* continue, leave it open */
- };
- /* close stderr only if log_stderr=0 */
- if ((!log_stderr) &&(freopen("/dev/null", "w", stderr)==0)){
- LOG(L_ERR, "unable to replace stderr with /dev/null: %s\n",
- strerror(errno));
- /* continue, leave it open */
- };
-
- /* close any open file descriptors */
- closelog();
- for (r=3;r<MAX_FD; r++){
- close(r);
- }
-
- if (log_stderr==0)
- openlog(name, LOG_PID|LOG_CONS, log_facility);
- /* LOG_CONS, LOG_PERRROR ? */
-
- return 0;
-
-error:
- return -1;
-}
-
-
-
-int do_suid()
-{
- if (gid){
- if(setgid(gid)<0){
- LOG(L_CRIT, "cannot change gid to %d: %s\n", gid, strerror(errno));
- goto error;
- }
- }
-
- if(uid){
- if(setuid(uid)<0){
- LOG(L_CRIT, "cannot change uid to %d: %s\n", uid, strerror(errno));
- goto error;
- }
- }
- return 0;
-error:
- return -1;
-}
-
-
-
-/* try to increase the open file limit */
-int increase_open_fds(int target)
-{
- struct rlimit lim;
- struct rlimit orig;
-
- if (getrlimit(RLIMIT_NOFILE, &lim)<0){
- LOG(L_CRIT, "cannot get the maximum number of file descriptors: %s\n",
- strerror(errno));
- goto error;
- }
- orig=lim;
- DBG("current open file limits: %lu/%lu\n",
- (unsigned long)lim.rlim_cur, (unsigned long)lim.rlim_max);
- if ((lim.rlim_cur==RLIM_INFINITY) || (target<=lim.rlim_cur))
- /* nothing to do */
- goto done;
- else if ((lim.rlim_max==RLIM_INFINITY) || (target<=lim.rlim_max)){
- lim.rlim_cur=target; /* increase soft limit to target */
- }else{
- /* more than the hard limit */
- LOG(L_INFO, "trying to increase the open file limit"
- " past the hard limit (%ld -> %d)\n",
- (unsigned long)lim.rlim_max, target);
- lim.rlim_max=target;
- lim.rlim_cur=target;
- }
- DBG("increasing open file limits to: %lu/%lu\n",
- (unsigned long)lim.rlim_cur, (unsigned long)lim.rlim_max);
- if (setrlimit(RLIMIT_NOFILE, &lim)<0){
- LOG(L_CRIT, "cannot increase the open file limit to"
- " %lu/%lu: %s\n",
- (unsigned long)lim.rlim_cur, (unsigned long)lim.rlim_max,
- strerror(errno));
- if (orig.rlim_max>orig.rlim_cur){
- /* try to increase to previous maximum, better than not increasing
- * at all */
- lim.rlim_max=orig.rlim_max;
- lim.rlim_cur=orig.rlim_max;
- if (setrlimit(RLIMIT_NOFILE, &lim)==0){
- LOG(L_CRIT, " maximum number of file descriptors increased to"
- " %u\n",(unsigned)orig.rlim_max);
- }
- }
- goto error;
- }
-done:
- return 0;
-error:
- return -1;
-}
-
-
-
-/* enable core dumps */
-int set_core_dump(int enable, int size)
-{
- struct rlimit lim;
- struct rlimit newlim;
-
- if (enable){
- if (getrlimit(RLIMIT_CORE, &lim)<0){
- LOG(L_CRIT, "cannot get the maximum core size: %s\n",
- strerror(errno));
- goto error;
- }
- if (lim.rlim_cur<size){
- /* first try max limits */
- newlim.rlim_max=RLIM_INFINITY;
- newlim.rlim_cur=newlim.rlim_max;
- if (setrlimit(RLIMIT_CORE, &newlim)==0) goto done;
- /* now try with size */
- if (lim.rlim_max<size){
- newlim.rlim_max=size;
- }
- newlim.rlim_cur=newlim.rlim_max;
- if (setrlimit(RLIMIT_CORE, &newlim)==0) goto done;
- /* if this failed too, try rlim_max, better than nothing */
- newlim.rlim_max=lim.rlim_max;
- newlim.rlim_cur=newlim.rlim_max;
- if (setrlimit(RLIMIT_CORE, &newlim)<0){
- LOG(L_CRIT, "could increase core limits at all: %s\n",
- strerror (errno));
- }else{
- LOG(L_CRIT, "core limits increased only to %lu\n",
- (unsigned long)lim.rlim_max);
- }
- goto error; /* it's an error we haven't got the size we wanted*/
- }
- goto done; /*nothing to do */
- }else{
- /* disable */
- newlim.rlim_cur=0;
- newlim.rlim_max=0;
- if (setrlimit(RLIMIT_CORE, &newlim)<0){
- LOG(L_CRIT, "failed to disable core dumps: %s\n",
- strerror(errno));
- goto error;
- }
- }
-done:
- DBG("core dump limits set to %lu\n", (unsigned long)newlim.rlim_cur);
- return 0;
-error:
- return -1;
-}
Deleted: ser/trunk/daemonize.h
===================================================================
--- ser/trunk/daemonize.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/daemonize.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,43 +0,0 @@
-/*
- * $Id: daemonize.h,v 1.3 2004/08/24 08:45:10 janakj Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*
- *
- * History:
- * --------
- * 2004-02-20 created by andrei
- */
-
-#ifndef _daemonize_h
-#define _daemonize_h
-
-int daemonize(char* name);
-int do_suid();
-int increase_open_fds(int target);
-int set_core_dump(int enable, int size);
-
-
-#endif
Deleted: ser/trunk/data_lump.c
===================================================================
--- ser/trunk/data_lump.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/data_lump.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,597 +0,0 @@
-/* $Id: data_lump.c,v 1.18.2.1 2005/07/27 12:32:22 andrei Exp $
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * History:
- * --------
- * 2003-01-19 support for duplication lump lists added (jiri)
- * 2003-03-31 added subst lumps --they expand in ip addr, port a.s.o (andrei)
- * 2003-04-01 added conditional lump support functions (andrei)
- * 2003-10-20 anchor_lump & del_lump will automatically choose the lump list
- * based on msg->eoh comparisons (andrei)
- * 2003-10-28 added extra checks (paranoia) for {anchor,del}_lump (andrei)
- */
-
-
-#include "data_lump.h"
-#include "dprint.h"
-#include "mem/mem.h"
-#include "globals.h"
-#include "error.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef DEBUG_DMALLOC
-#include <dmalloc.h>
-#endif
-
-/* WARNING: all lump add/insert operations expect a pkg_malloc'ed char*
- * pointer the will be DEALLOCATED when the sip_msg is destroyed! */
-
-enum lump_dir { LD_NEXT, LD_BEFORE, LD_AFTER };
-
-/* adds a header to the end
- * returns pointer on success, 0 on error */
-struct lump* append_new_lump(struct lump** list, char* new_hdr,
- int len, int type)
-{
- struct lump** t;
- struct lump* tmp;
-
- for (t=list;*t;t=&((*t)->next));
-
- tmp=pkg_malloc(sizeof(struct lump));
- if (tmp==0){
- LOG(L_ERR, "ERROR: append_new_lump: out of memory\n");
- return 0;
- }
-
- memset(tmp,0,sizeof(struct lump));
- tmp->type=type;
- tmp->op=LUMP_ADD;
- tmp->u.value=new_hdr;
- tmp->len=len;
- *t=tmp;
- return tmp;
-}
-
-
-
-/* inserts a header to the beginning
- * returns pointer if success, 0 on error */
-struct lump* insert_new_lump(struct lump** list, char* new_hdr,
- int len, int type)
-{
- struct lump* tmp;
-
- tmp=pkg_malloc(sizeof(struct lump));
- if (tmp==0){
- LOG(L_ERR, "ERROR: insert_new_lump: out of memory\n");
- return 0;
- }
- memset(tmp,0,sizeof(struct lump));
- tmp->next=*list;
- tmp->type=type;
- tmp->op=LUMP_ADD;
- tmp->u.value=new_hdr;
- tmp->len=len;
- *list=tmp;
- return tmp;
-}
-
-
-
-/* inserts a header/data lump immediately after hdr
- * returns pointer on success, 0 on error */
-struct lump* insert_new_lump_after( struct lump* after, char* new_hdr,
- int len, int type)
-{
- struct lump* tmp;
-
- tmp=pkg_malloc(sizeof(struct lump));
- if (tmp==0){
- ser_error=E_OUT_OF_MEM;
- LOG(L_ERR, "ERROR: insert_new_lump_after: out of memory\n");
- return 0;
- }
- memset(tmp,0,sizeof(struct lump));
- tmp->after=after->after;
- tmp->type=type;
- tmp->op=LUMP_ADD;
- tmp->u.value=new_hdr;
- tmp->len=len;
- after->after=tmp;
- return tmp;
-}
-
-
-
-/* inserts a header/data lump immediately before "before"
- * returns pointer on success, 0 on error */
-struct lump* insert_new_lump_before( struct lump* before, char* new_hdr,
- int len, int type)
-{
- struct lump* tmp;
-
- tmp=pkg_malloc(sizeof(struct lump));
- if (tmp==0){
- ser_error=E_OUT_OF_MEM;
- LOG(L_ERR,"ERROR: insert_new_lump_before: out of memory\n");
- return 0;
- }
- memset(tmp,0,sizeof(struct lump));
- tmp->before=before->before;
- tmp->type=type;
- tmp->op=LUMP_ADD;
- tmp->u.value=new_hdr;
- tmp->len=len;
- before->before=tmp;
- return tmp;
-}
-
-
-
-/* inserts a subst lump immediately after hdr
- * returns pointer on success, 0 on error */
-struct lump* insert_subst_lump_after( struct lump* after, enum lump_subst subst,
- int type)
-{
- struct lump* tmp;
-
- tmp=pkg_malloc(sizeof(struct lump));
- if (tmp==0){
- ser_error=E_OUT_OF_MEM;
- LOG(L_ERR, "ERROR: insert_new_lump_after: out of memory\n");
- return 0;
- }
- memset(tmp,0,sizeof(struct lump));
- tmp->after=after->after;
- tmp->type=type;
- tmp->op=LUMP_ADD_SUBST;
- tmp->u.subst=subst;
- tmp->len=0;
- after->after=tmp;
- return tmp;
-}
-
-
-
-/* inserts a subst lump immediately before "before"
- * returns pointer on success, 0 on error */
-struct lump* insert_subst_lump_before( struct lump* before,
- enum lump_subst subst,
- int type)
-{
- struct lump* tmp;
-
- tmp=pkg_malloc(sizeof(struct lump));
- if (tmp==0){
- ser_error=E_OUT_OF_MEM;
- LOG(L_ERR,"ERROR: insert_new_lump_before: out of memory\n");
- return 0;
- }
- memset(tmp,0,sizeof(struct lump));
- tmp->before=before->before;
- tmp->type=type;
- tmp->op=LUMP_ADD_SUBST;
- tmp->u.subst=subst;
- tmp->len=0;
- before->before=tmp;
- return tmp;
-}
-
-
-
-/* inserts a cond lump immediately after hdr
- * returns pointer on success, 0 on error */
-struct lump* insert_cond_lump_after( struct lump* after, enum lump_conditions c,
- int type)
-{
- struct lump* tmp;
-
- tmp=pkg_malloc(sizeof(struct lump));
- if (tmp==0){
- ser_error=E_OUT_OF_MEM;
- LOG(L_ERR, "ERROR: insert_new_lump_after: out of memory\n");
- return 0;
- }
- memset(tmp,0,sizeof(struct lump));
- tmp->after=after->after;
- tmp->type=type;
- tmp->op=LUMP_ADD_OPT;
- tmp->u.cond=c;
- tmp->len=0;
- after->after=tmp;
- return tmp;
-}
-
-
-
-/* inserts a conditional lump immediately before "before"
- * returns pointer on success, 0 on error */
-struct lump* insert_cond_lump_before( struct lump* before,
- enum lump_conditions c,
- int type)
-{
- struct lump* tmp;
-
- tmp=pkg_malloc(sizeof(struct lump));
- if (tmp==0){
- ser_error=E_OUT_OF_MEM;
- LOG(L_ERR,"ERROR: insert_new_lump_before: out of memory\n");
- return 0;
- }
- memset(tmp,0,sizeof(struct lump));
- tmp->before=before->before;
- tmp->type=type;
- tmp->op=LUMP_ADD_OPT;
- tmp->u.cond=c;
- tmp->len=0;
- before->before=tmp;
- return tmp;
-}
-
-
-
-/* removes an already existing header/data lump */
-/* WARNING: this function adds the lump either to the msg->add_rm or
- * msg->body_lumps list, depending on the offset being greater than msg->eoh,
- * so msg->eoh must be parsed (parse with HDR_EOH) if you think your lump
- * might affect the body!! */
-struct lump* del_lump(struct sip_msg* msg, int offset, int len, int type)
-{
- struct lump* tmp;
- struct lump* prev, *t;
- struct lump** list;
-
- /* extra checks */
- if (offset>msg->len){
- LOG(L_CRIT, "BUG: del_lump: offset exceeds message size (%d > %d)"
- " aborting...\n", offset, msg->len);
- abort();
- }
- if (offset+len>msg->len){
- LOG(L_CRIT, " BUG: del_lump: offset + len exceeds message"
- " size (%d + %d > %d)\n", offset, len, msg->len);
- abort();
- }
- if (len==0){
- LOG(L_WARN, "WARNING: del_lump: called with 0 len (offset =%d)\n",
- offset);
- }
-
- tmp=pkg_malloc(sizeof(struct lump));
- if (tmp==0){
- LOG(L_ERR, "ERROR: insert_new_lump_before: out of memory\n");
- return 0;
- }
- memset(tmp,0,sizeof(struct lump));
- tmp->op=LUMP_DEL;
- tmp->type=type;
- tmp->u.offset=offset;
- tmp->len=len;
- prev=0;
- /* check to see whether this might be a body lump */
- if ((msg->eoh) && (offset> (int)(msg->eoh-msg->buf)))
- list=&msg->body_lumps;
- else
- list=&msg->add_rm;
- for (t=*list;t; prev=t, t=t->next){
- /* insert it sorted after offset */
- if (((t->op==LUMP_DEL)||(t->op==LUMP_NOP))&&(t->u.offset>offset))
- break;
- }
- tmp->next=t;
- if (prev) prev->next=tmp;
- else *list=tmp;
- return tmp;
-}
-
-
-
-/* add an anchor
- * WARNING: this function adds the lump either to the msg->add_rm or
- * msg->body_lumps list, depending on the offset being greater than msg->eoh,
- * so msg->eoh must be parsed (parse with HDR_EOH) if you think your lump
- * might affect the body!! */
-struct lump* anchor_lump(struct sip_msg* msg, int offset, int len, int type)
-{
- struct lump* tmp;
- struct lump* prev, *t;
- struct lump** list;
-
-
- /* extra checks */
- if (offset>msg->len){
- LOG(L_CRIT, "BUG: anchor_lump: offset exceeds message size (%d > %d)"
- " aborting...\n", offset, msg->len);
- abort();
- }
- if (len){
- LOG(L_WARN, "WARNING: anchor_lump: called with len !=0 (%d)\n", len);
- if (offset+len>msg->len)
- LOG(L_WARN, "WARNING: anchor_lump: offset + len exceeds message"
- " size (%d + %d > %d)\n", offset, len, msg->len);
- }
-
- tmp=pkg_malloc(sizeof(struct lump));
- if (tmp==0){
- ser_error=E_OUT_OF_MEM;
- LOG(L_ERR, "ERROR: insert_new_lump_before: out of memory\n");
- return 0;
- }
- memset(tmp,0,sizeof(struct lump));
- tmp->op=LUMP_NOP;
- tmp->type=type;
- tmp->u.offset=offset;
- tmp->len=len;
- prev=0;
- /* check to see whether this might be a body lump */
- if ((msg->eoh) && (offset> (int)(msg->eoh-msg->buf)))
- list=&msg->body_lumps;
- else
- list=&msg->add_rm;
-
- for (t=*list;t; prev=t, t=t->next){
- /* insert it sorted after offset */
- if (((t->op==LUMP_DEL)||(t->op==LUMP_NOP))&&(t->u.offset>offset))
- break;
- }
- tmp->next=t;
-
- if (prev) prev->next=tmp;
- else *list=tmp;
- return tmp;
-}
-
-
-
-void free_lump(struct lump* lmp)
-{
- if (lmp && (lmp->op==LUMP_ADD)){
- if (lmp->u.value){
- if (lmp->flags &(LUMPFLAG_DUPED|LUMPFLAG_SHMEM)){
- LOG(L_CRIT, "BUG: free_lump: called on a not free-able lump:"
- "%p flags=%x\n", lmp, lmp->flags);
- abort();
- }else{
- pkg_free(lmp->u.value);
- lmp->u.value=0;
- lmp->len=0;
- }
- }
- }
-}
-
-
-
-void free_lump_list(struct lump* l)
-{
- struct lump* t, *r, *foo,*crt;
- t=l;
- while(t){
- crt=t;
- t=t->next;
- /*
- dangerous recursive clean
- if (crt->before) free_lump_list(crt->before);
- if (crt->after) free_lump_list(crt->after);
- */
- /* no more recursion, clean after and before and that's it */
- r=crt->before;
- while(r){
- foo=r; r=r->before;
- free_lump(foo);
- pkg_free(foo);
- }
- r=crt->after;
- while(r){
- foo=r; r=r->after;
- free_lump(foo);
- pkg_free(foo);
- }
-
- /*clean current elem*/
- free_lump(crt);
- pkg_free(crt);
- }
-}
-
-/* free (shallow-ly) a lump and its after/before lists */
-static void free_shallow_lump( struct lump *l )
-{
- struct lump *r, *foo;
-
- r=l->before;
- while(r){
- foo=r; r=r->before;
- pkg_free(foo);
- }
- r=l->after;
- while(r){
- foo=r; r=r->after;
- pkg_free(foo);
- }
- pkg_free(l);
-}
-
-/* duplicate (shallow-ly) a lump list into pkg memory */
-static struct lump *dup_lump_list_r( struct lump *l,
- enum lump_dir dir, int *error)
-{
- int deep_error;
- struct lump *new_lump;
-
- deep_error=0; /* optimist: assume success in recursion */
- /* if at list end, terminate recursion successfully */
- if (!l) { *error=0; return 0; }
- /* otherwise duplicate current element */
- new_lump=pkg_malloc(sizeof(struct lump));
- if (!new_lump) { *error=1; return 0; }
-
- memcpy(new_lump, l, sizeof(struct lump));
- new_lump->flags=LUMPFLAG_DUPED;
- new_lump->next=new_lump->before=new_lump->after=0;
-
- switch(dir) {
- case LD_NEXT:
- new_lump->before=dup_lump_list_r(l->before,
- LD_BEFORE, &deep_error);
- if (deep_error) goto deeperror;
- new_lump->after=dup_lump_list_r(l->after,
- LD_AFTER, &deep_error);
- if (deep_error) goto deeperror;
- new_lump->next=dup_lump_list_r(l->next,
- LD_NEXT, &deep_error);
- break;
- case LD_BEFORE:
- new_lump->before=dup_lump_list_r(l->before,
- LD_BEFORE, &deep_error);
- break;
- case LD_AFTER:
- new_lump->after=dup_lump_list_r(l->after,
- LD_AFTER, &deep_error);
- break;
- default:
- LOG(L_CRIT, "BUG: dup_limp_list_r: unknown dir: "
- "%d\n", dir );
- deep_error=1;
- }
- if (deep_error) goto deeperror;
-
- *error=0;
- return new_lump;
-
-deeperror:
- LOG(L_ERR, "ERROR: dup_lump_list_r: out of mem\n");
- free_shallow_lump(new_lump);
- *error=1;
- return 0;
-}
-
-
-
-/* shallow pkg copy of a lump list
- *
- * if either original list empty or error occur returns, 0
- * is returned, pointer to the copy otherwise
- */
-struct lump* dup_lump_list( struct lump *l )
-{
- int deep_error;
-
- deep_error=0;
- return dup_lump_list_r(l, LD_NEXT, &deep_error);
-}
-
-
-
-void free_duped_lump_list(struct lump* l)
-{
- struct lump *r, *foo,*crt;
- while(l){
- crt=l;
- l=l->next;
-
- r=crt->before;
- while(r){
- foo=r; r=r->before;
- /* (+): if a new item was introduced to the shallow-ly
- * duped list, remove it completely, preserve it
- * otherwise (it is still referred by original list)
- */
- if (foo->flags!=LUMPFLAG_DUPED)
- free_lump(foo);
- pkg_free(foo);
- }
- r=crt->after;
- while(r){
- foo=r; r=r->after;
- if (foo->flags!=LUMPFLAG_DUPED) /* (+) ... see above */
- free_lump(foo);
- pkg_free(foo);
- }
-
- /*clean current elem*/
- if (crt->flags!=LUMPFLAG_DUPED) /* (+) ... see above */
- free_lump(crt);
- pkg_free(crt);
- }
-}
-
-
-
-void del_nonshm_lump( struct lump** lump_list )
-{
- struct lump *r, *foo, *crt, **prev, *prev_r;
-
- prev = lump_list;
- crt = *lump_list;
-
- while (crt) {
- if (crt->flags!=LUMPFLAG_SHMEM) {
- /* unlink it */
- foo = crt;
- crt = crt->next;
- foo->next = 0;
- /* update the 'next' link of the previous lump */
- *prev = crt;
- /* entire before/after list must be removed */
- free_lump_list( foo );
- } else {
- /* check on before and prev list for non-shmem lumps */
- r = crt->after;
- prev_r = crt;
- while(r){
- foo=r; r=r->after;
- if (foo->flags!=LUMPFLAG_SHMEM) {
- prev_r->after = r;
- free_lump(foo);
- pkg_free(foo);
- } else {
- prev_r = foo;
- }
- }
- /* before */
- r = crt->before;
- prev_r = crt;
- while(r){
- foo=r; r=r->before;
- if (foo->flags!=LUMPFLAG_SHMEM) {
- prev_r->before = r;
- free_lump(foo);
- pkg_free(foo);
- } else {
- prev_r = foo;
- }
- }
- /* go to next lump */
- prev = &(crt->next);
- crt = crt->next;
- }
- }
-}
-
Deleted: ser/trunk/data_lump.h
===================================================================
--- ser/trunk/data_lump.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/data_lump.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,84 +0,0 @@
-/*
- * $Id: data_lump.h,v 1.11 2004/08/24 08:45:10 janakj Exp $
- *
- * adding/removing headers or any other data chunk from a message
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/* History:
- * --------
- * 2003-01-29 s/int/enum ... more convenient for gdb (jiri)
- * 2003-03-31 added subst lumps -- they expand in ip addr, port a.s.o (andrei)
- * 2003-04-01 added opt (condition) lumps (andrei)
- * 2003-04-02 added more subst lumps: SUBST_{SND,RCV}_ALL
- * => ip:port;transport=proto (andrei)
- *
- */
-
-
-#ifndef data_lump_h
-#define data_lump_h
-
-#include "lump_struct.h"
-#include "parser/msg_parser.h"
-
-/* adds a header to the end */
-struct lump* append_new_lump(struct lump** list, char* new_hdr,
- int len, int type);
-/* inserts a header to the beginning */
-struct lump* insert_new_lump(struct lump** list, char* new_hdr,
- int len, int type);
-struct lump* insert_new_lump_after(struct lump* after,
- char* new_hdr, int len, int type);
-struct lump* insert_new_lump_before(struct lump* before, char* new_hdr,
- int len,int type);
-/* substitutions (replace with ip address, port etc) */
-struct lump* insert_subst_lump_after(struct lump* after, enum lump_subst subst,
- int type);
-struct lump* insert_subst_lump_before(struct lump* before,enum lump_subst subst,
- int type);
-
-/* conditional lumps */
-struct lump* insert_cond_lump_after(struct lump* after, enum lump_conditions c,
- int type);
-struct lump* insert_cond_lump_before(struct lump* after, enum lump_conditions c,
- int type);
-
-/* removes an already existing header */
-struct lump* del_lump(struct sip_msg* msg, int offset, int len, int type);
-/* set an anchor */
-struct lump* anchor_lump(struct sip_msg* msg, int offset, int len, int type);
-
-
-
-/* duplicates a lump list shallowly in pkg-mem */
-struct lump* dup_lump_list( struct lump *l );
-/* frees a shallowly duplicated lump list */
-void free_duped_lump_list(struct lump* l);
-
-
-/* remove all non-SHMEM lumps from the list */
-void del_nonshm_lump( struct lump** lump_list );
-
-#endif
Deleted: ser/trunk/data_lump_rpl.c
===================================================================
--- ser/trunk/data_lump_rpl.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/data_lump_rpl.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,157 +0,0 @@
-/*
- * $Id: data_lump_rpl.c,v 1.14 2004/12/03 19:09:31 andrei Exp $
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * History:
- * 2002-02-14 : created by bogdan
- * 2003-09-11 : lump_rpl type added - LUMP_RPL_BODY & LUMP_RPL_HDR (bogdan)
- * 2003-11-11 : build_lump_rpl merged into add_lump_rpl; types -> flags ;
- * flags LUMP_RPL_NODUP and LUMP_RPL_NOFREE added (bogdan)
- */
-
-
-#include <string.h>
-#include "dprint.h"
-#include "mem/mem.h"
-#include "data_lump_rpl.h"
-
-
-
-struct lump_rpl* add_lump_rpl(struct sip_msg *msg, char *s, int len, int flags)
-{
- struct lump_rpl *lump = 0;
- struct lump_rpl *foo;
-
- /* some checking */
- if ( (flags&(LUMP_RPL_HDR|LUMP_RPL_BODY))==(LUMP_RPL_HDR|LUMP_RPL_BODY)
- || (flags&(LUMP_RPL_HDR|LUMP_RPL_BODY))==0 || (flags&LUMP_RPL_SHMEM) ) {
- LOG(L_ERR,"ERROR:add_lump_rpl: bad flags combination (%d)!\n",flags);
- goto error;
- }
- if (len<=0 || s==0) {
- LOG(L_ERR,"ERROR:add_lump_rpl: I won't add an empty lump!\n");
- goto error;
- }
-
- /* build the lump */
- lump = (struct lump_rpl*) pkg_malloc
- ( sizeof(struct lump_rpl) + ((flags&LUMP_RPL_NODUP)?0:len) );
- if (!lump) {
- LOG(L_ERR,"ERROR:add_lump_rpl : no free pkg memory !\n");
- goto error;
- }
-
- if (flags&LUMP_RPL_NODUP) {
- lump->text.s = s;
- } else {
- lump->text.s = ((char*)lump)+sizeof(struct lump_rpl);
- memcpy( lump->text.s, s, len);
- }
- lump->text.len = len;
- lump->flags = flags;
- lump->next = 0;
-
- /* add the lump to the msg */
- if (!msg->reply_lump) {
- msg->reply_lump = lump;
- }else{
- if (!(flags&LUMP_RPL_BODY))
- for(foo=msg->reply_lump;foo->next;foo=foo->next);
- else
- for(foo=msg->reply_lump; ;foo=foo->next) {
- if (foo->flags&LUMP_RPL_BODY) {
- LOG(L_ERR,"ERROR:add_lump_rpl: LUMP_RPL_BODY "
- "already added!\n");
- pkg_free(lump);
- goto error;
- }
- if (foo->next==0)
- break;
- }
- foo->next = lump;
- }
-
- return lump;
-error:
- return 0;
-}
-
-
-
-void free_lump_rpl(struct lump_rpl* lump)
-{
- if (lump) {
- if (!((lump->flags)&LUMP_RPL_NOFREE) && ((lump->flags)&LUMP_RPL_NODUP)
- && lump->text.s)
- pkg_free(lump->text.s);
- pkg_free(lump);
- }
-}
-
-
-void unlink_lump_rpl(struct sip_msg * msg, struct lump_rpl* lump)
-{
- struct lump_rpl *foo,*prev;
-
- /* look for the lump to be unlink */
- foo = msg->reply_lump;
- prev = 0;
- while( foo && foo!=lump ) {
- prev = foo;
- foo = foo->next;
- }
-
- /* if the lump was found into the list -> unlink it */
- if (foo) {
- if (prev)
- prev->next = foo->next;
- else
- msg->reply_lump = foo->next;
- }
-}
-
-void del_nonshm_lump_rpl(struct lump_rpl** list)
-{
- struct lump_rpl* it, *tmp;
- struct lump_rpl** pred;
-
- it = *list;
- pred = list;
-
- while(it) {
- if (!(it->flags & LUMP_RPL_SHMEM)) {
- tmp = it;
- *pred = it->next;
- it = it->next;
- free_lump_rpl(tmp);
- continue;
- }
-
- pred = &it->next;
- it = it->next;
- }
-}
-
Deleted: ser/trunk/data_lump_rpl.h
===================================================================
--- ser/trunk/data_lump_rpl.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/data_lump_rpl.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,64 +0,0 @@
-/*
- * $Id: data_lump_rpl.h,v 1.8 2004/08/24 08:45:10 janakj Exp $
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * History:
- * 2002-02-14 : created by bogdan
- * 2003-09-11 : lump_rpl type added - LUMP_RPL_BODY & LUMP_RPL_HDR (bogdan)
- * 2003-11-11 : build_lump_rpl merged into add_lump_rpl; type removed;
- * flags LUMP_RPL_BODY, LUMP_RPL_NODUP and LUMP_RPL_NOFREE
- * added (bogdan)
- */
-
-
-#ifndef data_lump_rpl_h
-#define data_lump_rpl_h
-
-#include "parser/msg_parser.h"
-
-
-#define LUMP_RPL_HDR (1<<1)
-#define LUMP_RPL_BODY (1<<2)
-#define LUMP_RPL_NODUP (1<<3)
-#define LUMP_RPL_NOFREE (1<<4)
-#define LUMP_RPL_SHMEM (1<<5)
-
-struct lump_rpl
-{
- str text;
- int flags;
- struct lump_rpl* next;
-};
-
-struct lump_rpl* add_lump_rpl(struct sip_msg *, char *, int , int );
-
-void free_lump_rpl(struct lump_rpl* );
-
-void unlink_lump_rpl(struct sip_msg *, struct lump_rpl* );
-
-void del_nonshm_lump_rpl( struct lump_rpl ** );
-
-#endif
Modified: ser/trunk/debian/changelog
===================================================================
--- ser/trunk/debian/changelog 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/debian/changelog 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,3 +1,9 @@
+ser (0.9.6-1) unstable; urgency=low
+
+ * Welcome to pkg-voip-maintainers
+
+ -- Mark Purcell <msp at debian.org> Sun, 26 Feb 2006 17:40:16 +0000
+
ser (0.9.6-0.1) unstable; urgency=low
* new upstream release (bug fixes)
Modified: ser/trunk/debian/control
===================================================================
--- ser/trunk/debian/control 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/debian/control 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,7 +1,8 @@
Source: ser
Section: net
Priority: optional
-Maintainer: Andrei Pelinescu-Onciul <andrei at iptel.org>
+Maintainer: Debian VoIP Team <pkg-voip-maintainers at lists.alioth.debian.org>
+Uploaders: Mark Purcell <msp at debian.org>, Andrei Pelinescu-Onciul <andrei at iptel.org>, Jan Janak <jan at iptel.org>
Build-Depends: debhelper (>= 4), libmysqlclient-dev | libmysqlclient14-dev | libmysqlclient12-dev, libexpat1-dev, libradiusclient-ng-dev | libradius1-dev, libxml2-dev, libpq-dev | postgresql-dev
Standards-Version: 3.5.2
Deleted: ser/trunk/dprint.c
===================================================================
--- ser/trunk/dprint.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/dprint.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,81 +0,0 @@
-/*
- * $Id: dprint.c,v 1.8 2004/08/24 08:45:10 janakj Exp $
- *
- * debug print
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-#include "dprint.h"
-#include "globals.h"
-#include "pt.h"
-
-#include <stdarg.h>
-#include <stdio.h>
-#include <strings.h>
-
-static char* str_fac[]={"LOG_AUTH","LOG_CRON","LOG_DAEMON",
- "LOG_KERN","LOG_LOCAL0","LOG_LOCAL1",
- "LOG_LOCAL2","LOG_LOCAL3","LOG_LOCAL4","LOG_LOCAL5",
- "LOG_LOCAL6","LOG_LOCAL7","LOG_LPR","LOG_MAIL",
- "LOG_NEWS","LOG_USER","LOG_UUCP",
-#ifndef __OS_solaris
- "LOG_AUTHPRIV","LOG_FTP","LOG_SYSLOG",
-#endif
- 0};
-static int int_fac[]={LOG_AUTH , LOG_CRON , LOG_DAEMON ,
- LOG_KERN , LOG_LOCAL0 , LOG_LOCAL1 ,
- LOG_LOCAL2 , LOG_LOCAL3 , LOG_LOCAL4 , LOG_LOCAL5 ,
- LOG_LOCAL6 , LOG_LOCAL7 , LOG_LPR , LOG_MAIL ,
- LOG_NEWS , LOG_USER , LOG_UUCP
-#ifndef __OS_solaris
- ,LOG_AUTHPRIV,LOG_FTP,LOG_SYSLOG
-#endif
- };
-
-
-void dprint(char * format, ...)
-{
- va_list ap;
-
- fprintf(stderr, "%2d(%d) ", process_no, my_pid());
- va_start(ap, format);
- vfprintf(stderr,format,ap);
- fflush(stderr);
- va_end(ap);
-}
-
-
-int str2facility(char *s)
-{
- int i;
-
- for( i=0; str_fac[i] ; i++) {
- if (!strcasecmp(s,str_fac[i]))
- return int_fac[i];
- }
- return -1;
-}
Deleted: ser/trunk/dprint.h
===================================================================
--- ser/trunk/dprint.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/dprint.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,187 +0,0 @@
-/*
- * $Id: dprint.h,v 1.9 2004/08/24 08:45:10 janakj Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-
-#ifndef dprint_h
-#define dprint_h
-
-#include <syslog.h>
-
-
-#define L_ALERT -3
-#define L_CRIT -2
-#define L_ERR -1
-#define L_WARN 1
-#define L_NOTICE 2
-#define L_INFO 3
-#define L_DBG 4
-
-/* vars:*/
-
-extern int debug;
-extern int log_stderr;
-extern int log_facility;
-
-
-#define DPRINT_LEV 1
-/* priority at which we log */
-#define DPRINT_PRIO LOG_DEBUG
-
-
-void dprint (char* format, ...);
-
-int str2facility(char *s);
-
-
-#ifdef NO_DEBUG
- #ifdef __SUNPRO_C
- #define DPrint(...)
- #else
- #define DPrint(fmt, args...)
- #endif
-#else
- #ifdef __SUNPRO_C
- #define DPrint( ...) \
- do{ \
- if (debug>=DPRINT_LEV){ \
- if (log_stderr){ \
- dprint (__VA_ARGS__); \
- }else{ \
- syslog(DPRINT_LEV|log_facility, __VA_ARGS__); \
- }\
- } \
- }while(0)
- #else
- #define DPrint(fmt,args...) \
- do{ \
- if (debug>=DPRINT_LEV){ \
- if (log_stderr){ \
- dprint (fmt, ## args); \
- }else{ \
- syslog(DPRINT_LEV|log_facility, fmt, ## args); \
- }\
- } \
- }while(0)
- #endif
-
-#endif
-
-#ifndef NO_DEBUG
- #undef NO_LOG
-#endif
-
-#ifdef NO_LOG
- #ifdef __SUNPRO_C
- #define LOG(lev, ...)
- #else
- #define LOG(lev, fmt, args...)
- #endif
-#else
- #ifdef __SUNPRO_C
- #define LOG(lev, ...) \
- do { \
- if (debug>=(lev)){ \
- if (log_stderr) dprint (__VA_ARGS__); \
- else { \
- switch(lev){ \
- case L_CRIT: \
- syslog(LOG_CRIT|log_facility, __VA_ARGS__); \
- break; \
- case L_ALERT: \
- syslog(LOG_ALERT|log_facility, __VA_ARGS__); \
- break; \
- case L_ERR: \
- syslog(LOG_ERR|log_facility, __VA_ARGS__); \
- break; \
- case L_WARN: \
- syslog(LOG_WARNING|log_facility, __VA_ARGS__);\
- break; \
- case L_NOTICE: \
- syslog(LOG_NOTICE|log_facility, __VA_ARGS__); \
- break; \
- case L_INFO: \
- syslog(LOG_INFO|log_facility, __VA_ARGS__); \
- break; \
- case L_DBG: \
- syslog(LOG_DEBUG|log_facility, __VA_ARGS__); \
- break; \
- } \
- } \
- } \
- }while(0)
- #else
- #define LOG(lev, fmt, args...) \
- do { \
- if (debug>=(lev)){ \
- if (log_stderr) dprint (fmt, ## args); \
- else { \
- switch(lev){ \
- case L_CRIT: \
- syslog(LOG_CRIT|log_facility, fmt, ##args); \
- break; \
- case L_ALERT: \
- syslog(LOG_ALERT|log_facility, fmt, ##args); \
- break; \
- case L_ERR: \
- syslog(LOG_ERR|log_facility, fmt, ##args); \
- break; \
- case L_WARN: \
- syslog(LOG_WARNING|log_facility, fmt, ##args);\
- break; \
- case L_NOTICE: \
- syslog(LOG_NOTICE|log_facility, fmt, ##args); \
- break; \
- case L_INFO: \
- syslog(LOG_INFO|log_facility, fmt, ##args); \
- break; \
- case L_DBG: \
- syslog(LOG_DEBUG|log_facility, fmt, ##args); \
- break; \
- } \
- } \
- } \
- }while(0)
- #endif /*SUN_PRO_C*/
-#endif
-
-
-#ifdef NO_DEBUG
- #ifdef __SUNPRO_C
- #define DBG(...)
- #else
- #define DBG(fmt, args...)
- #endif
-#else
- #ifdef __SUNPRO_C
- #define DBG(...) LOG(L_DBG, __VA_ARGS__)
- #else
- #define DBG(fmt, args...) LOG(L_DBG, fmt, ## args)
- #endif
-#endif
-
-#endif /* ifndef dprint_h */
Deleted: ser/trunk/dset.c
===================================================================
--- ser/trunk/dset.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/dset.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,342 +0,0 @@
-/*
- * $Id: dset.c,v 1.15.2.1 2005/02/17 14:58:26 janakj Exp $
- *
- * destination set
- *
- * Copyright (C) 2001-2004 FhG FOKUS
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <string.h>
-#include "dprint.h"
-#include "config.h"
-#include "parser/parser_f.h"
-#include "parser/msg_parser.h"
-#include "ut.h"
-#include "hash_func.h"
-#include "error.h"
-#include "dset.h"
-#include "mem/mem.h"
-
-#define CONTACT "Contact: "
-#define CONTACT_LEN (sizeof(CONTACT) - 1)
-
-#define CONTACT_DELIM ", "
-#define CONTACT_DELIM_LEN (sizeof(CONTACT_DELIM) - 1)
-
-#define Q_PARAM ">;q="
-#define Q_PARAM_LEN (sizeof(Q_PARAM) - 1)
-
-struct branch
-{
- char uri[MAX_URI_SIZE];
- unsigned int len;
-
- /* Real destination of the request */
- char dst_uri[MAX_URI_SIZE];
- unsigned int dst_uri_len;
-
- int q; /* Preference of the contact among
- * contact within the array */
-};
-
-
-/*
- * Where we store URIs of additional transaction branches
- * (-1 because of the default branch, #0)
- */
-static struct branch branches[MAX_BRANCHES - 1];
-
-/* how many of them we have */
-unsigned int nr_branches = 0;
-
-/* branch iterator */
-static int branch_iterator = 0;
-
-/* The q parameter of the Request-URI */
-static qvalue_t ruri_q = Q_UNSPECIFIED;
-
-
-/*
- * Initialize the branch iterator, the next
- * call to next_branch will return the first
- * contact from the dset array
- */
-void init_branch_iterator(void)
-{
- branch_iterator = 0;
-}
-
-
-/*
- * Return the next branch from the dset
- * array, 0 is returned if there are no
- * more branches
- */
-char* next_branch(int* len, qvalue_t* q, char** dst_uri, int* dst_len)
-{
- unsigned int i;
-
- i = branch_iterator;
- if (i < nr_branches) {
- branch_iterator++;
- *len = branches[i].len;
- *q = branches[i].q;
- if (dst_uri && dst_len) {
- *dst_uri = branches[i].dst_uri;
- *dst_len = branches[i].dst_uri_len;
- }
- return branches[i].uri;
- } else {
- *len = 0;
- *q = Q_UNSPECIFIED;
- if (dst_uri && dst_len) {
- *dst_uri = 0;
- *dst_len = 0;
- }
- return 0;
- }
-}
-
-
-/*
- * Empty the dset array
- */
-void clear_branches(void)
-{
- nr_branches = 0;
- ruri_q = Q_UNSPECIFIED;
-}
-
-
-/*
- * Add a new branch to current transaction
- */
-int append_branch(struct sip_msg* msg, char* uri, int uri_len, char* dst_uri, int dst_uri_len, qvalue_t q)
-{
- /* if we have already set up the maximum number
- * of branches, don't try new ones
- */
- if (nr_branches == MAX_BRANCHES - 1) {
- LOG(L_ERR, "ERROR: append_branch: max nr of branches exceeded\n");
- ser_error = E_TOO_MANY_BRANCHES;
- return -1;
- }
-
- if (uri_len > MAX_URI_SIZE - 1) {
- LOG(L_ERR, "ERROR: append_branch: too long uri: %.*s\n",
- uri_len, uri);
- return -1;
- }
-
- /* if not parameterized, take current uri */
- if (uri == 0) {
- if (msg->new_uri.s) {
- uri = msg->new_uri.s;
- uri_len = msg->new_uri.len;
- } else {
- uri = msg->first_line.u.request.uri.s;
- uri_len = msg->first_line.u.request.uri.len;
- }
- }
-
- memcpy(branches[nr_branches].uri, uri, uri_len);
- /* be safe -- add zero termination */
- branches[nr_branches].uri[uri_len] = 0;
- branches[nr_branches].len = uri_len;
- branches[nr_branches].q = q;
-
- if (dst_uri && dst_uri_len) {
- memcpy(branches[nr_branches].dst_uri, dst_uri, dst_uri_len);
- branches[nr_branches].dst_uri[dst_uri_len] = 0;
- branches[nr_branches].dst_uri_len = dst_uri_len;
- } else {
- branches[nr_branches].dst_uri[0] = '\0';
- branches[nr_branches].dst_uri_len = 0;
- }
-
- nr_branches++;
- return 1;
-}
-
-
-/*
- * Create a Contact header field from the dset
- * array
- */
-char* print_dset(struct sip_msg* msg, int* len)
-{
- int cnt, i;
- unsigned int qlen;
- qvalue_t q;
- str uri;
- char* p, *qbuf;
- static char dset[MAX_REDIRECTION_LEN];
-
- if (msg->new_uri.s) {
- cnt = 1;
- *len = msg->new_uri.len;
- if (ruri_q != Q_UNSPECIFIED) {
- *len += 1 + Q_PARAM_LEN + len_q(ruri_q);
- }
- } else {
- cnt = 0;
- *len = 0;
- }
-
- init_branch_iterator();
- while ((uri.s = next_branch(&uri.len, &q, 0, 0))) {
- cnt++;
- *len += uri.len;
- if (q != Q_UNSPECIFIED) {
- *len += 1 + Q_PARAM_LEN + len_q(q);
- }
- }
-
- if (cnt == 0) return 0;
-
- *len += CONTACT_LEN + CRLF_LEN + (cnt - 1) * CONTACT_DELIM_LEN;
-
- if (*len + 1 > MAX_REDIRECTION_LEN) {
- LOG(L_ERR, "ERROR: redirection buffer length exceed\n");
- return 0;
- }
-
- memcpy(dset, CONTACT, CONTACT_LEN);
- p = dset + CONTACT_LEN;
- if (msg->new_uri.s) {
- if (ruri_q != Q_UNSPECIFIED) {
- *p++ = '<';
- }
-
- memcpy(p, msg->new_uri.s, msg->new_uri.len);
- p += msg->new_uri.len;
-
- if (ruri_q != Q_UNSPECIFIED) {
- memcpy(p, Q_PARAM, Q_PARAM_LEN);
- p += Q_PARAM_LEN;
-
- qbuf = q2str(ruri_q, &qlen);
- memcpy(p, qbuf, qlen);
- p += qlen;
- }
- i = 1;
- } else {
- i = 0;
- }
-
- init_branch_iterator();
- while ((uri.s = next_branch(&uri.len, &q, 0, 0))) {
- if (i) {
- memcpy(p, CONTACT_DELIM, CONTACT_DELIM_LEN);
- p += CONTACT_DELIM_LEN;
- }
-
- if (q != Q_UNSPECIFIED) {
- *p++ = '<';
- }
-
- memcpy(p, uri.s, uri.len);
- p += uri.len;
- if (q != Q_UNSPECIFIED) {
- memcpy(p, Q_PARAM, Q_PARAM_LEN);
- p += Q_PARAM_LEN;
-
- qbuf = q2str(q, &qlen);
- memcpy(p, qbuf, qlen);
- p += qlen;
- }
- i++;
- }
-
- memcpy(p, CRLF " ", CRLF_LEN + 1);
- return dset;
-}
-
-
-/*
- * Sets the q parameter of the Request-URI
- */
-void set_ruri_q(qvalue_t q)
-{
- ruri_q = q;
-}
-
-
-/*
- * Return the q value of the Request-URI
- */
-qvalue_t get_ruri_q(void)
-{
- return ruri_q;
-}
-
-
-
-/*
- * Get actual Request-URI
- */
-int get_request_uri(struct sip_msg* _m, str* _u)
-{
- /* Use new_uri if present */
- if (_m->new_uri.s) {
- _u->s = _m->new_uri.s;
- _u->len = _m->new_uri.len;
- } else {
- _u->s = _m->first_line.u.request.uri.s;
- _u->len = _m->first_line.u.request.uri.len;
- }
-
- return 0;
-}
-
-
-/*
- * Rewrite Request-URI
- */
-int rewrite_uri(struct sip_msg* _m, str* _s)
-{
- char* buf;
-
- buf = (char*)pkg_malloc(_s->len + 1);
- if (!buf) {
- LOG(L_ERR, "ERROR: TOI: rewrite_uri: No memory left\n");
- return -1;
- }
-
- memcpy(buf, _s->s, _s->len);
- buf[_s->len] = '\0';
-
- _m->parsed_uri_ok = 0;
- if (_m->new_uri.s) {
- pkg_free(_m->new_uri.s);
- }
-
- _m->new_uri.s = buf;
- _m->new_uri.len = _s->len;
-
- DBG("TOI: rewrite_uri: Rewriting Request-URI with '%.*s'\n", _s->len,
- buf);
- return 1;
-}
-
Deleted: ser/trunk/dset.h
===================================================================
--- ser/trunk/dset.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/dset.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,84 +0,0 @@
-/*
- * $Id: dset.h,v 1.7.2.1 2005/02/15 21:55:02 janakj Exp $
- *
- * Copyright (C) 2001-2004 FhG FOKUS
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _DSET_H
-#define _DSET_H
-
-#include "qvalue.h"
-
-struct sip_msg;
-
-extern unsigned int nr_branches;
-
-
-/*
- * Add a new branch to current transaction
- */
-int append_branch(struct sip_msg* msg, char* uri, int uri_len, char* dst_uri, int dst_uri_len, qvalue_t q);
-
-
-/*
- * Iterate through the list of transaction branches
- */
-void init_branch_iterator(void);
-
-
-/*
- * Get the next branch in the current transaction
- */
-char* next_branch(int* len, qvalue_t* q, char** dst_uri, int* dst_len);
-
-
-/*
- * Empty the array of branches
- */
-void clear_branches(void);
-
-
-/*
- * Create a Contact header field from the
- * list of current branches
- */
-char* print_dset(struct sip_msg* msg, int* len);
-
-
-/*
- * Set the q value of the Request-URI
- */
-void set_ruri_q(qvalue_t q);
-
-
-/*
- * Get the q value of the Request-URI
- */
-qvalue_t get_ruri_q(void);
-
-int get_request_uri(struct sip_msg* _m, str* _u);
-int rewrite_uri(struct sip_msg* _m, str* _s);
-
-
-#endif /* _DSET_H */
Deleted: ser/trunk/error.c
===================================================================
--- ser/trunk/error.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/error.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,225 +0,0 @@
-/*
- * $Id: error.c,v 1.10 2004/08/24 08:45:10 janakj Exp $
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * History:
- * --------
- * 2003-04-04 phrase length corrected not to include trailer 0 (jiri)
- */
-
-
-#include <stdio.h>
-#include "error.h"
-#include "str.h"
-#include "parser/msg_parser.h"
-#include "mem/mem.h"
-
-/* current function's error; */
-int ser_error=-1;
-/* previous error */
-int prev_ser_error=-1;
-
-int err2reason_phrase(
- int ser_error, /* current internal ser error */
- int *sip_error, /* the sip error code to which ser
- ser error will be turned */
- char *phrase, /* resulting error text */
- int etl, /* error text buffer length */
- char *signature ) /* extra text to be appended */
-{
-
- char *error_txt;
-
- switch( ser_error ) {
- case E_SEND:
- error_txt="Unfortunately error on sending to next hop occurred";
- *sip_error=-ser_error;
- break;
- case E_BAD_ADDRESS:
- error_txt="Unresolvable destination";
- *sip_error=-ser_error;
- break;
- case E_BAD_REQ:
- error_txt="Bad Request";
- *sip_error=-ser_error;
- break;
- case E_BAD_URI:
- error_txt="Regretfully, we were not able to process the URI";
- *sip_error=-ser_error;
- break;
- case E_BAD_TUPEL:
- error_txt="Transaction tuple incomplete";
- *sip_error=-E_BAD_REQ;
- break;
- case E_BAD_TO:
- error_txt="Bad To";
- *sip_error=-E_BAD_REQ;
- break;
- case E_EXEC:
- error_txt="Error in external logic";
- *sip_error=-E_BAD_SERVER;
- break;
- case E_TOO_MANY_BRANCHES:
- error_txt="Forking capacity exceeded";
- *sip_error=-E_BAD_SERVER;
- break;
-
- case E_Q_INV_CHAR:
- error_txt="Invalid character in q parameter";
- *sip_error=-E_BAD_REQ;
- break;
-
- case E_Q_EMPTY:
- error_txt="Empty q parameter";
- *sip_error=-E_BAD_REQ;
- break;;
-
- case E_Q_TOO_BIG:
- error_txt="q parameter too big";
- *sip_error=-E_BAD_REQ;
- break;
-
- case E_Q_DEC_MISSING:
- error_txt="Decimal part missing in q";
- *sip_error=-E_BAD_REQ;
- break;
-
- case E_OUT_OF_MEM:
- /* dont disclose lack of mem in release mode */
-#ifdef DEBUG
- error_txt="Excuse me I ran out of memory";
- *sip_error=500;
- break;
-#endif
- default:
- error_txt="I'm terribly sorry, server error occurred";
- *sip_error=500;
- break;
- }
- return snprintf( phrase, etl, "%s (%d/%s)", error_txt,
- -ser_error, signature );
-}
-
-char *error_text( int code )
-{
- switch(code) {
-
- case 100: return "Trying";
- case 180: return "Ringing";
- case 181: return "Call is Being Forwarded";
- case 182: return "Queued";
- case 183: return "Session Progress";
-
- case 200: return "OK";
-
- case 300: return "Multiple Choices";
- case 301: return "Moved Permanently";
- case 302: return "Moved Temporarily";
- case 305: return "Use Proxy";
- case 380: return "Alternative Service";
-
- case 400: return "Bad Request";
- case 401: return "Unauthorized";
- case 402: return "Payment Required";
- case 403: return "Forbidden";
- case 404: return "Not Found";
- case 405: return "Method not Allowed";
- case 406: return "Not Acceptable";
- case 407: return "Proxy authentication Required";
- case 408: return "Request Timeout";
- case 410: return "Gone";
- case 413: return "Request Entity Too Large";
- case 414: return "Request-URI Too Long";
- case 415: return "Unsupported Media Type";
- case 416: return "Unsupported URI Scheme";
- case 417: return "Bad Extension";
- case 421: return "Extension Required";
- case 423: return "Interval Too Brief";
- case 480: return "Temporarily Unavailable";
- case 481: return "Call/Transaction Does not Exist";
- case 482: return "Loop Detected";
- case 483: return "Too Many Hops";
- case 484: return "Address Incomplete";
- case 485: return "Ambiguous";
- case 486: return "Busy Here";
- case 487: return "Request Terminated";
- case 488: return "Not Acceptable Here";
- case 491: return "Request Pending";
-
- case 500: return "Server Internal Error";
- case 501: return "Not Implemented";
- case 502: return "Bad Gateway";
- case 503: return "Service Unavailable";
- case 504: return "Server Time-out";
- case 505: return "Version not Supported";
- case 513: return "Message Too Large";
-
- case 600: return "Busy Everywhere";
- case 603: return "Decline";
- case 604: return "Does not Exist Anywhere";
- case 606: return "Not Acceptable";
-
- }
-
- if (code>=600) return "Global Failure";
- else if (code>=500) return "Server Failure";
- else if (code>=400) return "Request Failure";
- else if (code>=300) return "Redirection";
- else if (code>=200) return "Successful";
- else if (code>=100) return "Provisional";
- else return "Unspecified";
-}
-
-void get_reply_status( str *status, struct sip_msg *reply, int code )
-{
- str phrase;
-
- status->s=0;
-
- if (reply==0) {
- LOG(L_CRIT, "BUG: get_reply_status called with 0 msg\n");
- return;
- }
-
- if (reply==FAKED_REPLY) {
- phrase.s=error_text(code);
- phrase.len=strlen(phrase.s);
- } else {
- phrase=reply->first_line.u.reply.reason;
- }
- status->len=phrase.len+3/*code*/+1/*space*/;
- status->s=pkg_malloc(status->len+1/*ZT */);
- if (!status->s) {
- LOG(L_ERR, "ERROR: get_reply_status: no mem\n");
- return;
- }
- status->s[3]=' ';
- status->s[2]='0'+code % 10; code=code/10;
- status->s[1]='0'+code% 10; code=code/10;
- status->s[0]='0'+code % 10;
- memcpy(&status->s[4], phrase.s, phrase.len);
- status->s[status->len]=0;
-}
Deleted: ser/trunk/error.h
===================================================================
--- ser/trunk/error.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/error.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,93 +0,0 @@
-/*
- * $Id: error.h,v 1.12 2004/08/24 08:45:10 janakj Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-#ifndef error_h
-#define error_h
-
-#define E_UNSPEC -1
-#define E_OUT_OF_MEM -2
-#define E_BAD_RE -3
-/* #define E_BAD_ADDRESS -4 */
-#define E_BUG -5
-#define E_CFG -6
-#define E_NO_SOCKET -7
-/* unresolvable topmost Via */
-#define E_BAD_VIA -8
-/* incomplete transaction tuple */
-#define E_BAD_TUPEL -9
-/* script programming error */
-#define E_SCRIPT -10
-/* error in execution of external tools */
-#define E_EXEC -11
-/* too many branches demanded */
-#define E_TOO_MANY_BRANCHES -12
-#define E_BAD_TO -13
-/* invalid params */
-#define E_INVALID_PARAMS -14
-
-#define E_Q_INV_CHAR -15 /* Invalid character in q */
-#define E_Q_EMPTY -16 /* Empty q */
-#define E_Q_TOO_BIG -17 /* q too big (> 1) */
-#define E_Q_DEC_MISSING -18 /* Decimal part missing */
-
-
-#define E_SEND -477
-/* unresolvable next-hop address */
-#define E_BAD_ADDRESS -478
-/* unparseable URI */
-#define E_BAD_URI -479
-/* bad protocol, like */
-#define E_BAD_PROTO -480
-/* malformed request */
-#define E_BAD_REQ -400
-
-/* error in server */
-#define E_BAD_SERVER -500
-
-
-#define MAX_REASON_LEN 128
-
-#include "str.h"
-
-/* processing status of the last command */
-extern int ser_error;
-extern int prev_ser_error;
-
-struct sip_msg;
-
-/* ser error -> SIP error */
-int err2reason_phrase( int ser_error, int *sip_error,
- char *phrase, int etl, char *signature );
-
-/* SIP error core -> SIP text */
-char *error_text( int code );
-
-/* return pkg_malloc-ed reply status in status->s */
-void get_reply_status( str *status, struct sip_msg *reply, int code );
-
-#endif
Deleted: ser/trunk/fastlock.h
===================================================================
--- ser/trunk/fastlock.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/fastlock.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,235 +0,0 @@
-/*
- * fast architecture specific locking
- *
- * $Id: fastlock.h,v 1.25.2.2 2005/06/06 16:27:32 andrei Exp $
- *
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*
- *
- *History:
- *--------
- * 2002-02-05 created by andrei
- * 2003-01-16 added PPC locking code contributed by Dinos Dorkofikis
- * <kdor at intranet.gr>
- * 2004-09-12 added MIPS locking for ISA>=2 (>r3000) (andrei)
- * 2004-12-16 for now use the same locking code for sparc32 as for sparc64
- * (it will work only if NOSMP is defined) (andrei)
- * 2005-04-27 added alpha locking code (andrei)
- * 2005-06-06 ppc locking code enabled also for ppc64, note however
- * that the version in HEAD might be more reliable (andrei)
- *
- */
-
-
-#ifndef fastlock_h
-#define fastlock_h
-
-#ifdef HAVE_SCHED_YIELD
-#include <sched.h>
-#else
-#include <unistd.h>
- /* fake sched_yield */
- #define sched_yield() sleep(0)
-#endif
-
-
-typedef volatile int fl_lock_t;
-
-
-
-#define init_lock( l ) (l)=0
-
-
-
-/*test and set lock, ret 1 if lock held by someone else, 0 otherwise*/
-inline static int tsl(fl_lock_t* lock)
-{
- int val;
-
-#if defined(__CPU_i386) || defined(__CPU_x86_64)
-
-#ifdef NOSMP
- val=0;
- asm volatile(
- " btsl $0, %1 \n\t"
- " adcl $0, %0 \n\t"
- : "=q" (val), "=m" (*lock) : "0"(val) : "memory", "cc" /* "cc" */
- );
-#else
- val=1;
- asm volatile(
- " xchg %b1, %0" : "=q" (val), "=m" (*lock) : "0" (val) : "memory"
- );
-#endif /*NOSMP*/
-#elif defined(__CPU_sparc64) || defined(__CPU_sparc)
- asm volatile(
- "ldstub [%1], %0 \n\t"
-#ifndef NOSMP
- "membar #StoreStore | #StoreLoad \n\t"
-#endif
- : "=r"(val) : "r"(lock):"memory"
- );
-
-#elif defined __CPU_arm
- asm volatile(
- "# here \n\t"
- "swpb %0, %1, [%2] \n\t"
- : "=r" (val)
- : "r"(1), "r" (lock) : "memory"
- );
-
-#elif defined(__CPU_ppc) || defined(__CPU_ppc64)
- asm volatile(
- "1: lwarx %0, 0, %2\n\t"
- " cmpwi %0, 0\n\t"
- " bne 0f\n\t"
- " stwcx. %1, 0, %2\n\t"
- " bne- 1b\n\t"
- "0:\n\t"
- : "=r" (val)
- : "r"(1), "b" (lock) :
- "memory", "cc"
- );
-#elif defined __CPU_mips2
- long tmp;
- tmp=1; /* just to kill a gcc 2.95 warning */
-
- asm volatile(
- ".set noreorder\n\t"
- "1: ll %1, %2 \n\t"
- " li %0, 1 \n\t"
- " sc %0, %2 \n\t"
- " beqz %0, 1b \n\t"
- " nop \n\t"
- ".set reorder\n\t"
- : "=&r" (tmp), "=&r" (val), "=m" (*lock)
- : "0" (tmp), "2" (*lock)
- : "cc"
- );
-#elif defined __CPU_alpha
- long tmp;
- tmp=0;
- /* lock low bit set to 1 when the lock is hold and to 0 otherwise */
- asm volatile(
- "1: ldl %0, %1 \n\t"
- " blbs %0, 2f \n\t" /* optimization if locked */
- " ldl_l %0, %1 \n\t"
- " blbs %0, 2f \n\t"
- " lda %2, 1 \n\t" /* or: or $31, 1, %2 ??? */
- " stl_c %2, %1 \n\t"
- " beq %2, 1b \n\t"
- " mb \n\t"
- "2: \n\t"
- :"=&r" (val), "=m"(*lock), "=r"(tmp)
- :"1"(*lock) /* warning on gcc 3.4: replace it with m or remove
- it and use +m in the input line ? */
- : "memory"
- );
-#else
-#error "unknown architecture"
-#endif
- return val;
-}
-
-
-
-inline static void get_lock(fl_lock_t* lock)
-{
-#ifdef ADAPTIVE_WAIT
- int i=ADAPTIVE_WAIT_LOOPS;
-#endif
-
- while(tsl(lock)){
-#ifdef BUSY_WAIT
-#elif defined ADAPTIVE_WAIT
- if (i>0) i--;
- else sched_yield();
-#else
- sched_yield();
-#endif
- }
-}
-
-
-
-inline static void release_lock(fl_lock_t* lock)
-{
-#if defined(__CPU_i386) || defined(__CPU_x86_64)
- char val;
- val=0;
- asm volatile(
- " movb $0, (%0)" : /*no output*/ : "r"(lock): "memory"
- /*" xchg %b0, %1" : "=q" (val), "=m" (*lock) : "0" (val) : "memory"*/
- );
-#elif defined(__CPU_sparc64) || defined(__CPU_sparc)
- asm volatile(
-#ifndef NOSMP
- "membar #LoadStore | #StoreStore \n\t" /*is this really needed?*/
-#endif
- "stb %%g0, [%0] \n\t"
- : /*no output*/
- : "r" (lock)
- : "memory"
- );
-#elif defined __CPU_arm
- asm volatile(
- " str %0, [%1] \n\r"
- : /*no outputs*/
- : "r"(0), "r"(lock)
- : "memory"
- );
-#elif defined(__CPU_ppc) || defined(__CPU_ppc64)
- asm volatile(
- "sync\n\t"
- "stw %0, 0(%1)\n\t"
- : /* no output */
- : "r"(0), "b" (lock)
- : "memory"
- );
- *lock = 0;
-#elif defined __CPU_mips2
- asm volatile(
- ".set noreorder \n\t"
- " sync \n\t"
- " sw $0, %0 \n\t"
- ".set reorder \n\t"
- : /*no output*/ : "m" (*lock) : "memory"
- );
-#elif defined __CPU_alpha
- asm volatile(
- " mb \n\t"
- " stl $31, %0 \n\t"
- : "=m"(*lock) :/* no input*/ : "memory" /* because of the mb */
- );
-#else
-#error "unknown architecture"
-#endif
-}
-
-
-
-#endif
Deleted: ser/trunk/fifo_server.c
===================================================================
--- ser/trunk/fifo_server.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/fifo_server.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,912 +0,0 @@
-/*
- * $Id: fifo_server.c,v 1.51 2004/09/28 18:10:08 andrei Exp $
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * Fifo server is a very powerful tool used to access easily
- * ser's internals via textual interface, similarly to
- * how internals of many operating systems are accessible
- * via the proc file system. This might be used for
- * making ser do things for you (such as initiating new
- * transaction from webpages) or inspect server's health.
- *
- * FIFO server allows new functionality to be registered
- * with it -- thats what register_fifo_cmd is good for.
- * Remember, the initialization must take place before
- * forking; best in init_module functions. When a function
- * is registered, it can be always evoked by sending its
- * name prefixed by colon to the FIFO.
- *
- * There are few commands already implemented in core.
- * These are 'uptime' for looking at how long the server
- * is alive and 'print' for debugging purposes.
- *
- * Every command sent to FIFO must be sent atomically to
- * avoid intermixing with other commands and MUST be
- * terminated by empty line so that the server is to able
- * to find its end if it does not understand the command.
- *
- * File test/transaction.fifo illustrates example of use
- * of t_uac command (part of TM module).
- *
- * History:
- * --------
- * 2003-03-29 destroy pkg mem introduced (jiri)
- * 2003-03-19 replaced all mallocs/frees w/ pkg_malloc/pkg_free (andrei)
- * 2003-01-29 new built-in fifo commands: arg and pwd (jiri)
- * 2003-10-07 fifo security fixes: permissions, always delete old fifo,
- * reply fifo checks -- added fifo_check (andrei)
- * 2003-10-13 added fifo_dir for reply fifos (andrei)
- * 2003-10-30 DB interface exported via FIFO (bogdan)
- * 2004-03-09 open_fifo_server split into init_ and start_ (andrei)
- * 2004-04-29 added chown(sock_user, sock_group) (andrei)
- * 2004-06-06 updated to the new DB interface & init_db_fifo (andrei)
- * 2004-09-19 fifo is deleted on exit (destroy_fifo) (andrei)
- */
-
-
-#include <limits.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <string.h>
-#include <time.h>
-#include <stdarg.h>
-#ifdef USE_TCP
-#include <sys/socket.h>
-#endif
-
-#include "dprint.h"
-#include "ut.h"
-#include "error.h"
-#include "config.h"
-#include "globals.h"
-#include "fifo_server.h"
-#include "mem/mem.h"
-#include "sr_module.h"
-#include "pt.h"
-#include "db/db_fifo.h"
-
-/* FIFO server vars */
-char *fifo=0; /* FIFO name */
-char* fifo_dir=DEFAULT_FIFO_DIR; /* dir where reply fifos are allowed */
-char *fifo_db_url = 0;
-pid_t fifo_pid;
-
-
-/* file descriptors */
-static int fifo_read=0;
-static int fifo_write=0;
-static FILE *fifo_stream=0;
-
-/* list of fifo command */
-static struct fifo_command *cmd_list=0;
-
-/* up time */
-static time_t up_since;
-static char up_since_ctime[MAX_CTIME_LEN];
-
-static struct fifo_command *lookup_fifo_cmd( char *name )
-{
- struct fifo_command *c;
- for(c=cmd_list; c; c=c->next) {
- if (strcasecmp(c->name, name)==0) return c;
- }
- return 0;
-}
-
-int register_fifo_cmd(fifo_cmd f, char *cmd_name, void *param)
-{
- struct fifo_command *new_cmd;
-
- if (lookup_fifo_cmd(cmd_name)) {
- LOG(L_ERR, "ERROR: register_fifo_cmd: attempt to register synonyms\n");
- return E_BUG;
- }
- new_cmd=pkg_malloc(sizeof(struct fifo_command));
- if (new_cmd==0) {
- LOG(L_ERR, "ERROR: register_fifo_cmd: out of mem\n");
- return E_OUT_OF_MEM;
- }
- new_cmd->f=f;
- new_cmd->name=cmd_name;
- new_cmd->param=param;
-
- new_cmd->next=cmd_list;
- cmd_list=new_cmd;
-
- DBG("DEBUG: register_fifo_cmd: new command (%s) registered\n", cmd_name );
-
- return 1;
-}
-
-void destroy_fifo()
-{
- struct fifo_command *c, *foo;
-
- c=cmd_list;
-
- while(c) {
- foo=c->next;
- pkg_free(c);
- c=foo;
- }
- if (fifo_stream){
- fclose(fifo_stream);
- fifo_stream=0;
- /* if FIFO was created, delete it */
- if (fifo && strlen(fifo)){
- if (unlink(fifo)<0){
- LOG(L_ERR, "WARNING: destroy_fifo: cannot delete fifo (%s):"
- " %s\n", fifo, strerror(errno));
- }
- }
- }
-}
-
-
-int read_line( char *b, int max, FILE *stream, int *read )
-{
- int len;
- int retry_cnt;
-
- retry_cnt=0;
-
-retry:
- if (fgets(b, max, stream)==NULL) {
- LOG(L_ERR, "ERROR: fifo_server fgets failed: %s\n",
- strerror(errno));
- /* on Linux, fgets sometimes returns ESPIPE -- give
- it few more chances
- */
- if (errno==ESPIPE) {
- retry_cnt++;
- if (retry_cnt<4) goto retry;
- }
- /* interrupted by signal or ... */
- if ((errno==EINTR)||(errno==EAGAIN)) goto retry;
- kill(0, SIGTERM);
- }
- /* if we did not read whole line, our buffer is too small
- and we cannot process the request; consume the remainder of
- request
- */
- len=strlen(b);
- if (len && !(b[len-1]=='\n' || b[len-1]=='\r')) {
- LOG(L_ERR, "ERROR: read_line: request line too long\n");
- return 0;
- }
- /* trim from right */
- while(len) {
- if(b[len-1]=='\n' || b[len-1]=='\r'
- || b[len-1]==' ' || b[len-1]=='\t' ) {
- len--;
- b[len]=0;
- } else break;
- }
- *read=len;
- return 1;
-}
-
-static void consume_request( FILE *stream )
-{
- int len;
- char buffer[MAX_CONSUME_BUFFER];
-
- while(!read_line(buffer, MAX_CONSUME_BUFFER, stream, &len));
-
-}
-
-int read_eol( FILE *stream )
-{
- int len;
- char buffer[MAX_CONSUME_BUFFER];
- if (!read_line(buffer, MAX_CONSUME_BUFFER, stream, &len) || len!=0) {
- LOG(L_ERR, "ERROR: read_eol: EOL expected: %.10s...\n",
- buffer );
- return 0;
- }
- return 1;
-}
-
-/* read from input until empty line is encountered */
-int read_line_set(char *buf, int max_len, FILE *fifo, int *len)
-{
- int set_len;
- char *c;
- int line_len;
-
- c=buf;set_len=0;
- while(1) {
- if (!read_line(c,max_len,fifo,&line_len)) {
- LOG(L_ERR, "ERROR: fifo_server: line expected\n");
- return 0;
- }
- /* end encountered ... return */
- if (line_len==0 || (line_len==1 && c[0]=='.' )) {
- *len=set_len;
- return 1;
- }
- max_len-=line_len; c+=line_len; set_len+=line_len;
- if (max_len<CRLF_LEN) {
- LOG(L_ERR, "ERROR: fifo_server: no place for CRLF\n");
- return 0;
- }
- memcpy(c, CRLF, CRLF_LEN);
- max_len-=CRLF_LEN; c+=CRLF_LEN; set_len+=CRLF_LEN;
- }
-}
-
-
-/* read from input until line with only dot in it is encountered */
-int read_body(char *buf, int max_len, FILE *fifo, int *len)
-{
- int set_len;
- char *c;
- int line_len;
-
- c=buf;set_len=0;
- while(1) {
- if (!read_line(c,max_len,fifo,&line_len)) {
- LOG(L_ERR, "ERROR: fifo_server: line expected\n");
- return 0;
- }
- /* end encountered ... return */
- if (line_len==1 && *c=='.') {
- *len=set_len;
- return 1;
- }
- max_len-=line_len; c+=line_len; set_len+=line_len;
- if (max_len<CRLF_LEN) {
- LOG(L_ERR, "ERROR: fifo_server: no place for CRLF\n");
- return 0;
- }
- memcpy(c, CRLF, CRLF_LEN);
- max_len-=CRLF_LEN; c+=CRLF_LEN; set_len+=CRLF_LEN;
- }
-}
-
-static char *trim_filename( char * file )
-{
- int prefix_len, fn_len;
- char *new_fn;
-
- /* we only allow files in "/tmp" -- any directory
- changes are not welcome
- */
- if (strchr(file,'.') || strchr(file,'/')
- || strchr(file, '\\')) {
- LOG(L_ERR, "ERROR: trim_filename: forbidden filename: %s\n"
- , file);
- return 0;
- }
- prefix_len=strlen(fifo_dir); fn_len=strlen(file);
- new_fn=pkg_malloc(prefix_len+fn_len+1);
- if (new_fn==0) {
- LOG(L_ERR, "ERROR: trim_filename: no mem\n");
- return 0;
- }
-
- memcpy(new_fn, fifo_dir, prefix_len);
- memcpy(new_fn+prefix_len, file, fn_len );
- new_fn[prefix_len+fn_len]=0;
-
- return new_fn;
-}
-
-
-
-/* reply fifo security checks:
- * checks if fd is a fifo, is not hardlinked and it's not a softlink
- * opened file descriptor + file name (for soft link check)
- * returns 0 if ok, <0 if not */
-static int fifo_check(int fd, char* fname)
-{
- struct stat fst;
- struct stat lst;
-
- if (fstat(fd, &fst)<0){
- LOG(L_ERR, "ERROR: fifo_check: fstat failed: %s\n",
- strerror(errno));
- return -1;
- }
- /* check if fifo */
- if (!S_ISFIFO(fst.st_mode)){
- LOG(L_ERR, "ERROR: fifo_check: %s is not a fifo\n", fname);
- return -1;
- }
- /* check if hard-linked */
- if (fst.st_nlink>1){
- LOG(L_ERR, "ERROR: security: fifo_check: %s is hard-linked %d times\n",
- fname, (unsigned)fst.st_nlink);
- return -1;
- }
-
- /* lstat to check for soft links */
- if (lstat(fname, &lst)<0){
- LOG(L_ERR, "ERROR: fifo_check: lstat failed: %s\n",
- strerror(errno));
- return -1;
- }
- if (S_ISLNK(lst.st_mode)){
- LOG(L_ERR, "ERROR: security: fifo_check: %s is a soft link\n",
- fname);
- return -1;
- }
- /* if this is not a symbolic link, check to see if the inode didn't
- * change to avoid possible sym.link, rm sym.link & replace w/ fifo race
- */
- if ((lst.st_dev!=fst.st_dev)||(lst.st_ino!=fst.st_ino)){
- LOG(L_ERR, "ERROR: security: fifo_check: inode/dev number differ"
- ": %d %d (%s)\n",
- (int)fst.st_ino, (int)lst.st_ino, fname);
- return -1;
- }
- /* success */
- return 0;
-}
-
-
-
-/* tell FIFO client what happened via reply pipe */
-void fifo_reply( char *reply_fifo, char *reply_fmt, ... )
-{
- FILE *file_handle;
- int r;
- va_list ap;
-
- file_handle=open_reply_pipe(reply_fifo);
- if (file_handle==0) {
- LOG(L_ERR, "ERROR: fifo_reply: no reply pipe %s\n",
- reply_fifo);
- return;
- }
-retry:
- va_start(ap, reply_fmt);
- r=vfprintf(file_handle, reply_fmt, ap);
- va_end(ap);
- if (r<=0) {
- LOG(L_ERR, "ERROR: fifo_error: write error (%s): %s\n",
- fifo, strerror(errno));
- if ((errno==EINTR)||(errno==EAGAIN)||(errno==EWOULDBLOCK)) {
- goto retry;
- }
- }
- fclose(file_handle);
-}
-
-FILE *open_reply_pipe( char *pipe_name )
-{
-
- int fifofd;
- FILE *file_handle;
- int flags;
-
- int retries=FIFO_REPLY_RETRIES;
-
- if (!pipe_name || *pipe_name==0) {
- DBG("DEBUG: open_reply_pipe: no file to write to about missing cmd\n");
- return 0;
- }
-
-tryagain:
- /* open non-blocking to make sure that a broken client will not
- * block the FIFO server forever */
- fifofd=open( pipe_name, O_WRONLY | O_NONBLOCK );
- if (fifofd==-1) {
- /* retry several times if client is not yet ready for getting
- feedback via a reply pipe
- */
- if (errno==ENXIO) {
- /* give up on the client - we can't afford server blocking */
- if (retries==0) {
- LOG(L_ERR, "ERROR: open_reply_pipe: no client at %s\n",
- pipe_name );
- return 0;
- }
- /* don't be noisy on the very first try */
- if (retries!=FIFO_REPLY_RETRIES)
- DBG("DEBUG: open_reply_pipe: retry countdown: %d\n", retries );
- sleep_us( FIFO_REPLY_WAIT );
- retries--;
- goto tryagain;
- }
- /* some other opening error */
- LOG(L_ERR, "ERROR: open_reply_pipe: open error (%s): %s\n",
- pipe_name, strerror(errno));
- return 0;
- }
- /* security checks: is this really a fifo?, is
- * it hardlinked? is it a soft link? */
- if (fifo_check(fifofd, pipe_name)<0) goto error;
-
- /* we want server blocking for big writes */
- if ( (flags=fcntl(fifofd, F_GETFL, 0))<0) {
- LOG(L_ERR, "ERROR: open_reply_pipe (%s): getfl failed: %s\n",
- pipe_name, strerror(errno));
- goto error;
- }
- flags&=~O_NONBLOCK;
- if (fcntl(fifofd, F_SETFL, flags)<0) {
- LOG(L_ERR, "ERROR: open_reply_pipe (%s): setfl cntl failed: %s\n",
- pipe_name, strerror(errno));
- goto error;
- }
-
- /* create an I/O stream */
- file_handle=fdopen( fifofd, "w");
- if (file_handle==NULL) {
- LOG(L_ERR, "ERROR: open_reply_pipe: open error (%s): %s\n",
- pipe_name, strerror(errno));
- goto error;
- }
- return file_handle;
-error:
- close(fifofd);
- return 0;
-}
-
-static void fifo_server(FILE *fifo_stream)
-{
- char buf[MAX_FIFO_COMMAND];
- int line_len;
- char *file_sep, *command, *file;
- struct fifo_command *f;
-
- file_sep=command=file=0;
-
- /* register a diagnostic FIFO command */
- register_core_fifo();
-
- while(1) {
-
- /* commands must look this way ':<command>:[filename]' */
- if (!read_line(buf, MAX_FIFO_COMMAND, fifo_stream, &line_len)) {
- /* line breaking must have failed -- consume the rest
- and proceed to a new request
- */
- LOG(L_ERR, "ERROR: fifo_server: command expected\n");
- goto consume;
- }
- if (line_len==0) {
- LOG(L_DBG, "INFO: fifo_server: command empty\n");
- continue;
- }
- if (line_len<3) {
- LOG(L_ERR, "ERROR: fifo_server: command must have at least 3 chars\n");
- goto consume;
- }
- if (*buf!=CMD_SEPARATOR) {
- LOG(L_ERR, "ERROR: fifo_server: command must begin with %c: %.*s\n",
- CMD_SEPARATOR, line_len, buf );
- goto consume;
- }
- command=buf+1;
- file_sep=strchr(command, CMD_SEPARATOR );
- if (file_sep==NULL) {
- LOG(L_ERR, "ERROR: fifo_server: file separator missing\n");
- goto consume;
- }
- if (file_sep==command) {
- LOG(L_ERR, "ERROR: fifo_server: empty command\n");
- goto consume;
- }
- if (*(file_sep+1)==0) file=NULL;
- else {
- file=file_sep+1;
- file=trim_filename(file);
- if (file==0) {
- LOG(L_ERR, "ERROR: fifo_server: trimming filename\n");
- goto consume;
- }
- }
- /* make command zero-terminated */
- *file_sep=0;
-
- f=lookup_fifo_cmd( command );
- if (f==0) {
- LOG(L_ERR, "ERROR: fifo_server: command %s is not available\n",
- command);
- fifo_reply(file, "500 command '%s' not available\n", command);
- goto consume;
- }
- if (f->f(fifo_stream, file)<0) {
- LOG(L_ERR, "ERROR: fifo_server: command (%s) "
- "processing failed\n", command );
- goto consume;
- }
-
-consume:
- if (file) { pkg_free(file); file=0;}
- consume_request(fifo_stream);
- DBG("**** done consume\n");
- }
-}
-
-int init_fifo_server()
-{
- char *t;
- struct stat filestat;
- int n;
- long opt;
-
- if (fifo==NULL) {
- DBG("DBG: open_fifo_server: no fifo will be opened\n");
- /* everything is ok, we just do not want to start */
- return 1;
- }
- if (strlen(fifo)==0) {
- DBG("DBG: open_fifo_server: fifo disabled\n");
- return 1;
- }
- DBG("DBG: open_uac_fifo: opening fifo...\n");
- n=stat(fifo, &filestat);
- if (n==0){
- /* FIFO exist, delete it (safer) */
- if (unlink(fifo)<0){
- LOG(L_ERR, "ERROR: open_fifo_server: cannot delete old fifo (%s):"
- " %s\n", fifo, strerror(errno));
- return -1;
- }
- }else if (n<0 && errno!=ENOENT){
- LOG(L_DBG, "DEBUG: open_fifo_server: FIFO stat failed: %s\n",
- strerror(errno));
- }
- /* create FIFO ... */
- if ((mkfifo(fifo, sock_mode)<0)) {
- LOG(L_ERR, "ERROR: open_fifo_server; can't create FIFO: "
- "%s (mode=%d)\n",
- strerror(errno), sock_mode);
- return -1;
- }
- DBG("DEBUG: FIFO created @ %s\n", fifo );
- if ((chmod(fifo, sock_mode)<0)) {
- LOG(L_ERR, "ERROR: open_fifo_server; can't chmod FIFO: "
- "%s (mode=%d)\n",
- strerror(errno), sock_mode);
- return -1;
- }
- if ((sock_uid!=-1) || (sock_gid!=-1)){
- if (chown(fifo, sock_uid, sock_gid)<0){
- LOG(L_ERR, "ERROR: open_fifo_server: failed to change the"
- " owner/group for %s to %d.%d; %s[%d]\n",
- fifo, sock_uid, sock_gid, strerror(errno), errno);
- return -1;
- }
- }
-
-
- DBG("DEBUG: fifo %s opened, mode=%d\n", fifo, sock_mode );
- time(&up_since);
- t=ctime(&up_since);
- if (strlen(t)+1>=MAX_CTIME_LEN) {
- LOG(L_ERR, "ERROR: open_fifo_server: "
- "too long date %d\n", (int)strlen(t));
- return -1;
- }
- memcpy(up_since_ctime,t,strlen(t)+1);
- /* open it non-blocking or else wait here until someone
- * opens it for writing */
- fifo_read=open(fifo, O_RDONLY|O_NONBLOCK, 0);
- if (fifo_read<0) {
- LOG(L_ERR, "ERROR: init_fifo_server: fifo_read did not open: %s\n",
- strerror(errno));
- return -1;
- }
- fifo_stream=fdopen(fifo_read, "r");
- if (fifo_stream==NULL) {
- LOG(L_ERR, "ERROR: init_fifo_server: fdopen failed: %s\n",
- strerror(errno));
- return -1;
- }
- /* make sure the read fifo will not close */
- fifo_write=open(fifo, O_WRONLY|O_NONBLOCK, 0);
- if (fifo_write<0) {
- LOG(L_ERR, "ERROR: init_fifo_server: fifo_write did not open: %s\n",
- strerror(errno));
- return -1;
- }
- /* set read fifo blocking mode */
- if ((opt=fcntl(fifo_read, F_GETFL))==-1){
- LOG(L_ERR, "ERROR: init_fifo_server: fcntl(F_GETFL) failed: %s [%d]\n",
- strerror(errno), errno);
- return -1;
- }
- if (fcntl(fifo_read, F_SETFL, opt & (~O_NONBLOCK))==-1){
- LOG(L_ERR, "ERROR: init_fifo_server: fcntl(F_SETFL) failed: %s [%d]\n",
- strerror(errno), errno);
- return -1;
- }
- return 0;
-}
-
-
-
-int start_fifo_server()
-{
-#ifdef USE_TCP
- int sockfd[2];
-#endif
- if (fifo_stream==0) return 1; /* no error, we just don't start it */
-#ifdef USE_TCP
- if (socketpair(AF_UNIX, SOCK_STREAM, 0, sockfd)<0){
- LOG(L_ERR, "ERROR: open_fifo_server: socketpair failed: %s\n",
- strerror(errno));
- return -1;
- }
-#endif
- process_no++;
- fifo_pid=fork();
- if (fifo_pid<0) {
- LOG(L_ERR, "ERROR: open_fifo_server: failure to fork: %s\n",
- strerror(errno));
- return -1;
- }
- if (fifo_pid==0) { /* child == FIFO server */
- LOG(L_INFO, "INFO: fifo process starting: %d\n", getpid());
- /* call per-child module initialization too -- some
- FIFO commands may need it
- */
-#ifdef USE_TCP
- close(sockfd[0]);
- unix_tcp_sock=sockfd[1];
-#endif
- if (init_child(PROC_FIFO) < 0 ) {
- LOG(L_ERR, "ERROR: open_uac_fifo: init_child failed\n");
- return -1;
- }
- /* a real server doesn't die if writing to reply fifo fails */
- signal(SIGPIPE, SIG_IGN);
- LOG(L_INFO, "SER: open_uac_fifo: fifo server up at %s...\n",
- fifo);
- fifo_server( fifo_stream ); /* never returns */
- }
- /* dad process */
- pt[process_no].pid=fifo_pid;
- strncpy(pt[process_no].desc, "fifo server", MAX_PT_DESC );
-#ifdef USE_TCP
- close(sockfd[1]);
- pt[process_no].unix_sock=sockfd[0];
- pt[process_no].idx=-1; /* this is not "tcp" process*/
-#endif
- return 1;
-}
-
-static int print_version_cmd( FILE *stream, char *response_file )
-{
- if (response_file) {
- fifo_reply(response_file, "200 ok\n" SERVER_HDR CRLF );
- } else {
- LOG(L_ERR, "ERROR: no file for %s\n", "print_version_cmd" );
- }
- return 1;
-}
-
-static int pwd_cmd( FILE *stream, char *response_file )
-{
- char *cwd_buf;
- int max_len;
-
- if (!response_file) {
- LOG(L_ERR, "ERROR: no file for %s\n", "pwd_cmd" );
- return 1;
- }
-
- max_len=pathmax();
- cwd_buf=pkg_malloc(max_len);
- if (!cwd_buf) {
- LOG(L_ERR, "ERROR: pwd_cmd: no cwd pkg mem\n");
- fifo_reply(response_file, "500 no memory\n");
- return 1;
- }
-
- if (getcwd(cwd_buf, max_len)) {
- fifo_reply(response_file, "200 ok\n%s\n", cwd_buf );
- } else {
- fifo_reply(response_file, "500 getcwd failed\n" );
- }
-
- pkg_free(cwd_buf);
- return 1;
-}
-
-static int arg_cmd( FILE *stream, char *response_file )
-{
- FILE *reply_pipe;
- int p;
-
- if (response_file==0 || *response_file==0 ) {
- LOG(L_ERR, "ERROR: ps_fifo_cmd: null file\n");
- return -1;
- }
- reply_pipe=open_reply_pipe(response_file);
- if (reply_pipe==NULL) {
- LOG(L_ERR, "ERROR: ps_fifo_cmd: opening reply pipe (%s) failed\n",
- response_file );
- return -1;
- }
-
- fputs( "200 ok\n", reply_pipe);
- for (p=0; p<my_argc;p++)
- fprintf( reply_pipe, "%s\n", my_argv[p] );
-
- fclose(reply_pipe);
- return 1;
-}
-
-
-
-/* diagnostic and hello-world FIFO command */
-static int print_fifo_cmd( FILE *stream, char *response_file )
-{
- char text[MAX_PRINT_TEXT];
- int text_len;
-
- /* expect one line which will be printed out */
- if (response_file==0 || *response_file==0 ) {
- LOG(L_ERR, "ERROR: print_fifo_cmd: null file\n");
- return -1;
- }
- if (!read_line(text, MAX_PRINT_TEXT, stream, &text_len)) {
- fifo_reply(response_file,
- "500 print_fifo_cmd: too big text");
- return -1;
- }
- /* now the work begins */
- if (response_file) {
- fifo_reply(response_file, "200 ok\n%s\n", text );
- } else {
- LOG(L_INFO, "INFO: print_fifo_cmd: %.*s\n",
- text_len, text );
- }
- return 1;
-}
-
-static int uptime_fifo_cmd( FILE *stream, char *response_file )
-{
- time_t now;
-
- if (response_file==0 || *response_file==0 ) {
- LOG(L_ERR, "ERROR: uptime_fifo_cmd: null file\n");
- return -1;
- }
-
- time(&now);
- fifo_reply( response_file, "200 ok\n"
- "Now: %sUp Since: %sUp time: %.0f [sec]\n",
- ctime(&now), up_since_ctime, difftime(now, up_since) );
-
- return 1;
-}
-
-static int kill_fifo_cmd( FILE *stream, char *response_file )
-{
- if (response_file==0 || *response_file==0 ) {
- LOG(L_ERR, "ERROR: uptime_fifo_cmd: null file\n");
- return -1;
- }
- fifo_reply(response_file, "200 killing now..." );
- kill(0, SIGTERM);
- return 1;
-}
-
-static int which_fifo_cmd(FILE *stream, char *response_file )
-{
- FILE *reply_pipe;
- struct fifo_command *c;
-
- if (response_file==0 || *response_file==0 ) {
- LOG(L_ERR, "ERROR: which_fifo_cmd: null file\n");
- return -1;
- }
-
- reply_pipe=open_reply_pipe(response_file);
- if (reply_pipe==NULL) {
- LOG(L_ERR, "ERROR: which_fifo_cmd: opening reply pipe (%s) failed\n",
- response_file );
- return -1;
- }
- fputs( "200 ok\n", reply_pipe);
- for(c=cmd_list; c; c=c->next) {
- fprintf( reply_pipe, "%s\n", c->name );
- }
-
- fclose(reply_pipe);
- return 1;
-}
-
-static int ps_fifo_cmd(FILE *stream, char *response_file )
-{
- FILE *reply_pipe;
- int p;
-
- if (response_file==0 || *response_file==0 ) {
- LOG(L_ERR, "ERROR: ps_fifo_cmd: null file\n");
- return -1;
- }
- reply_pipe=open_reply_pipe(response_file);
- if (reply_pipe==NULL) {
- LOG(L_ERR, "ERROR: ps_fifo_cmd: opening reply pipe (%s) failed\n",
- response_file );
- return -1;
- }
-
- fputs( "200 ok\n", reply_pipe);
- for (p=0; p<process_count();p++)
- fprintf( reply_pipe, "%d\t%d\t%s\n",
- p, pt[p].pid, pt[p].desc );
-
- fclose(reply_pipe);
- return 1;
-}
-
-
-int register_core_fifo()
-{
- if (register_fifo_cmd(print_fifo_cmd, FIFO_PRINT, 0)<0) {
- LOG(L_ERR, "ERROR: unable to register '%s' FIFO cmd\n", FIFO_PRINT);
- return -1;
- }
- if (register_fifo_cmd(uptime_fifo_cmd, FIFO_UPTIME, 0)<0) {
- LOG(L_ERR, "ERROR: unable to register '%s' FIFO cmd\n", FIFO_UPTIME);
- return -1;
- }
- if (register_fifo_cmd(print_version_cmd, FIFO_VERSION, 0)<0) {
- LOG(L_ERR, "ERROR: unable to register '%s' FIFO cmd\n",FIFO_VERSION);
- return -1;
- }
- if (register_fifo_cmd(pwd_cmd, FIFO_PWD, 0)<0) {
- LOG(L_ERR, "ERROR: unable to register '%s' FIFO cmd\n", FIFO_PWD);
- return -1;
- }
- if (register_fifo_cmd(arg_cmd, FIFO_ARG, 0)<0) {
- LOG(L_ERR, "ERROR: unable to register '%s' FIFO cmd\n", FIFO_ARG);
- return -1;
- }
- if (register_fifo_cmd(which_fifo_cmd, FIFO_WHICH, 0)<0) {
- LOG(L_ERR, "ERROR: unable to register '%s' FIFO cmd\n", FIFO_WHICH);
- return -1;
- }
- if (register_fifo_cmd(ps_fifo_cmd, FIFO_PS, 0)<0) {
- LOG(L_ERR, "ERROR: unable to register '%s' FIFO cmd\n", FIFO_PS);
- return -1;
- }
- if (register_fifo_cmd(kill_fifo_cmd, FIFO_KILL, 0)<0) {
- LOG(L_CRIT, "ERROR: unable to register '%s' FIFO cmd\n", FIFO_KILL);
- return -1;
- }
- if (fifo_db_url==0) {
- LOG(L_WARN,"WARNING: no fifo_db_url given - "
- "fifo DB commands disabled!\n");
- } else if (init_db_fifo(fifo_db_url)<0){
- return -1;
- }
- return 1;
-}
Deleted: ser/trunk/fifo_server.h
===================================================================
--- ser/trunk/fifo_server.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/fifo_server.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,91 +0,0 @@
-/*
- * $Id: fifo_server.h,v 1.15 2004/08/24 08:45:10 janakj Exp $
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-#ifndef _FIFO_SERVER_H
-#define _FIFO_SERVER_H
-
-#include <stdio.h>
-
-#define CMD_SEPARATOR ':'
-
-/* core FIFO command set */
-/* echo input */
-#define FIFO_PRINT "print"
-/* print server's uptime */
-#define FIFO_UPTIME "uptime"
-/* print server's version */
-#define FIFO_VERSION "version"
-/* print available FIFO commands */
-#define FIFO_WHICH "which"
-/* print server's process table */
-#define FIFO_PS "ps"
-/* print server's command line arguments */
-#define FIFO_ARG "arg"
-/* print server's working directory */
-#define FIFO_PWD "pwd"
-/* kill the server */
-#define FIFO_KILL "kill"
-
-#define MAX_CTIME_LEN 128
-
-typedef int (fifo_cmd)( FILE *fifo_stream, char *response_file );
-
-struct fifo_command{
- fifo_cmd *f;
- struct fifo_command *next;
- void *param;
- char *name;
-};
-
-int register_fifo_cmd(fifo_cmd f, char *cmd_name, void *param);
-
-/* read a single EoL-terminated line from fifo */
-int read_line( char *b, int max, FILE *stream, int *read );
-/* consume EoL from fifo */
-int read_eol( FILE *stream );
-/* consume a set of EoL-terminated lines terminated by an additional EoL */
-int read_line_set(char *buf, int max_len, FILE *fifo, int *len);
-/* consume a set of EoL-terminated lines terminated by a single dot line */
-int read_body(char *buf, int max_len, FILE *fifo, int *len);
-
-int init_fifo_server();
-int start_fifo_server();
-
-/* register core FIFO command set */
-int register_core_fifo();
-
-FILE *open_reply_pipe( char *pipe_name );
-
-/* tell FIFO client an error occurred via reply pipe */
-void fifo_reply( char *reply_fifo, char *reply_fmt, ... );
-
-/* memory deallocation */
-void destroy_fifo();
-
-#endif
Deleted: ser/trunk/flags.c
===================================================================
--- ser/trunk/flags.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/flags.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,142 +0,0 @@
-/*
- * $Id: flags.c,v 1.6 2004/08/24 08:45:10 janakj Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*
- * History:
- * --------
- * 2003-03-19 replaced all mallocs/frees w/ pkg_malloc/pkg_free (andrei)
- */
-
-
-#include <limits.h>
-#include "sr_module.h"
-#include "dprint.h"
-#include "parser/msg_parser.h"
-#include "flags.h"
-#include "error.h"
-#include "stdlib.h"
-
-int setflag( struct sip_msg* msg, flag_t flag ) {
- msg->flags |= 1 << flag;
- return 1;
-}
-
-int resetflag( struct sip_msg* msg, flag_t flag ) {
- msg->flags &= ~ (1 << flag);
- return 1;
-}
-
-int isflagset( struct sip_msg* msg, flag_t flag ) {
- return (msg->flags & (1<<flag)) ? 1 : -1;
-}
-
-int flag_in_range( flag_t flag ) {
- if (flag > MAX_FLAG ) {
- LOG(L_ERR, "ERROR: message flag %d too high; MAX=%d\n",
- flag, MAX_FLAG );
- return 0;
- }
- if (flag<=0) {
- LOG(L_ERR, "ERROR: message flag (%d) must be in range %d..%d\n",
- flag, 1, MAX_FLAG );
- return 0;
- }
- return 1;
-}
-
-
-#ifdef _GET_AWAY
-
-/* wrapping functions for flag processing */
-static int fixup_t_flag(void** param, int param_no)
-{
- unsigned int *code;
- char *c;
- int token;
-
- DBG("DEBUG: fixing flag: %s\n", (char *) (*param));
-
- if (param_no!=1) {
- LOG(L_ERR, "ERROR: TM module: only parameter #1 for flags can be"
- " fixed\n");
- return E_BUG;
- };
-
- if ( !(code =pkg_malloc( sizeof( unsigned int) )) ) return E_OUT_OF_MEM;
-
- *code = 0;
- c = *param;
- while ( *c && (*c==' ' || *c=='\t')) c++; /* initial whitespaces */
-
- token=1;
- if (strcasecmp(c, "white")==0) *code=FL_WHITE;
- else if (strcasecmp(c, "yellow")==0) *code=FL_YELLOW;
- else if (strcasecmp(c, "green")==0) *code=FL_GREEN;
- else if (strcasecmp(c, "red")==0) *code=FL_RED;
- else if (strcasecmp(c, "blue")==0) *code=FL_BLUE;
- else if (strcasecmp(c, "magenta")==0) *code=FL_MAGENTA;
- else if (strcasecmp(c, "brown")==0) *code=FL_BROWN;
- else if (strcasecmp(c, "black")==0) *code=FL_BLACK;
- else if (strcasecmp(c, "acc")==0) *code=FL_ACC;
- else {
- token=0;
- while ( *c && *c>='0' && *c<='9' ) {
- *code = *code*10+ *c-'0';
- if (*code > (sizeof( flag_t ) * CHAR_BIT - 1 )) {
- LOG(L_ERR, "ERROR: TM module: too big flag number: %s; MAX=%d\n",
- (char *) (*param), sizeof( flag_t ) * CHAR_BIT - 1 );
- goto error;
- }
- c++;
- }
- }
- while ( *c && (*c==' ' || *c=='\t')) c++; /* terminating whitespaces */
-
- if ( *code == 0 ) {
- LOG(L_ERR, "ERROR: TM module: bad flag number: %s\n", (char *) (*param));
- goto error;
- }
-
- if (*code < FL_MAX && token==0) {
- LOG(L_ERR, "ERROR: TM module: too high flag number: %s (%d)\n; lower number"
- " bellow %d reserved\n", (char *) (*param), *code, FL_MAX );
- goto error;
- }
-
- /* free string */
- pkg_free( *param );
- /* fix now */
- *param = code;
-
- return 0;
-
-error:
- pkg_free( code );
- return E_CFG;
-}
-
-
-#endif
Deleted: ser/trunk/flags.h
===================================================================
--- ser/trunk/flags.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/flags.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,48 +0,0 @@
-/*
- * $Id: flags.h,v 1.5 2004/08/24 08:45:10 janakj Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-
-#ifndef _FLAGS_H
-#define _FLAGS_H
-
-enum { FL_WHITE=1, FL_YELLOW, FL_GREEN, FL_RED, FL_BLUE, FL_MAGENTA,
- FL_BROWN, FL_BLACK, FL_ACC, FL_MAX };
-
-typedef unsigned int flag_t;
-
-#define MAX_FLAG ((unsigned int)( sizeof(flag_t) * CHAR_BIT - 1 ))
-
-struct sip_msg;
-
-int setflag( struct sip_msg* msg, flag_t flag );
-int resetflag( struct sip_msg* msg, flag_t flag );
-int isflagset( struct sip_msg* msg, flag_t flag );
-
-int flag_in_range( flag_t flag );
-
-#endif
Deleted: ser/trunk/forward.c
===================================================================
--- ser/trunk/forward.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/forward.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,528 +0,0 @@
-/*
- * $Id: forward.c,v 1.98.2.1 2005/11/29 19:39:45 andrei Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * History:
- * -------
- * 2001-??-?? created by andrei
- * ????-??-?? lots of changes by a lot of people
- * 2003-01-23 support for determination of outbound interface added :
- * get_out_socket (jiri)
- * 2003-01-24 reply to rport support added, contributed by
- * Maxim Sobolev <sobomax at FreeBSD.org> and modified by andrei
- * 2003-02-11 removed calls to upd_send & tcp_send & replaced them with
- * calls to msg_send (andrei)
- * 2003-03-19 replaced all mallocs/frees w/ pkg_malloc/pkg_free (andrei)
- * 2003-04-02 fixed get_send_socket for tcp fwd to udp (andrei)
- * 2003-04-03 added su_setport (andrei)
- * 2003-04-04 update_sock_struct_from_via now differentiates between
- * local replies & "normal" replies (andrei)
- * 2003-04-12 update_sock_struct_from via uses also FL_FORCE_RPORT for
- * local replies (andrei)
- * 2003-08-21 check_self properly handles ipv6 addresses & refs (andrei)
- * 2003-10-21 check_self updated to handle proto (andrei)
- * 2003-10-24 converted to the new socket_info lists (andrei)
- * 2004-10-10 modified check_self to use grep_sock_info (andrei)
- * 2004-11-08 added force_send_socket support in get_send_socket (andrei)
- */
-
-
-
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netdb.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-#include "forward.h"
-#include "hash_func.h"
-#include "config.h"
-#include "parser/msg_parser.h"
-#include "route.h"
-#include "dprint.h"
-#include "globals.h"
-#include "data_lump.h"
-#include "ut.h"
-#include "mem/mem.h"
-#include "msg_translator.h"
-#include "sr_module.h"
-#include "ip_addr.h"
-#include "resolve.h"
-#include "name_alias.h"
-#include "socket_info.h"
-
-#ifdef DEBUG_DMALLOC
-#include <dmalloc.h>
-#endif
-
-
-
-/* return a socket_info_pointer to the sending socket; as opposed to
- * get_send_socket, which returns process's default socket, get_out_socket
- * attempts to determine the outbound interface which will be used;
- * it creates a temporary connected socket to determine it; it will
- * be very likely noticeably slower, but it can deal better with
- * multihomed hosts
- */
-struct socket_info* get_out_socket(union sockaddr_union* to, int proto)
-{
- int temp_sock;
- socklen_t len;
- union sockaddr_union from;
- struct socket_info* si;
- struct ip_addr ip;
-
- if (proto!=PROTO_UDP) {
- LOG(L_CRIT, "BUG: get_out_socket can only be called for UDP\n");
- return 0;
- }
-
- temp_sock=socket(to->s.sa_family, SOCK_DGRAM, 0 );
- if (temp_sock==-1) {
- LOG(L_ERR, "ERROR: get_out_socket: socket() failed: %s\n",
- strerror(errno));
- return 0;
- }
- if (connect(temp_sock, &to->s, sockaddru_len(*to))==-1) {
- LOG(L_ERR, "ERROR: get_out_socket: connect failed: %s\n",
- strerror(errno));
- goto error;
- }
- len=sizeof(from);
- if (getsockname(temp_sock, &from.s, &len)==-1) {
- LOG(L_ERR, "ERROR: get_out_socket: getsockname failed: %s\n",
- strerror(errno));
- goto error;
- }
- su2ip_addr(&ip, &from);
- si=find_si(&ip, 0, proto);
- if (si==0) goto error;
- close(temp_sock);
- DBG("DEBUG: get_out_socket: socket determined: %p\n", si );
- return si;
-error:
- LOG(L_ERR, "ERROR: get_out_socket: no socket found\n");
- close(temp_sock);
- return 0;
-}
-
-
-
-/* returns a socket_info pointer to the sending socket or 0 on error
- * params: sip msg (can be null), destination socket_union pointer, protocol
- * if msg!=null and msg->force_send_socket, the force_send_socket will be
- * used
- */
-struct socket_info* get_send_socket(struct sip_msg *msg,
- union sockaddr_union* to, int proto)
-{
- struct socket_info* send_sock;
-
- /* check if send interface is not forced */
- if (msg && msg->force_send_socket){
- if (msg->force_send_socket->proto!=proto){
- DBG("get_send_socket: force_send_socket of different proto"
- " (%d)!\n", proto);
- msg->force_send_socket=find_si(&(msg->force_send_socket->address),
- msg->force_send_socket->port_no,
- proto);
- }
- if (msg->force_send_socket && (msg->force_send_socket->socket!=-1))
- return msg->force_send_socket;
- else{
- if (msg->force_send_socket->socket==-1)
- LOG(L_WARN, "WARNING: get_send_socket: not listening"
- " on the requested socket, no fork mode?\n");
- else
- LOG(L_WARN, "WARNING: get_send_socket: "
- "protocol/port mismatch\n");
- }
- };
-
- if (mhomed && proto==PROTO_UDP){
- send_sock=get_out_socket(to, proto);
- if ((send_sock==0) || (send_sock->socket!=-1))
- return send_sock; /* found or error*/
- else if (send_sock->socket==-1){
- LOG(L_WARN, "WARNING: get_send_socket: not listening on the"
- " requested socket, no fork mode?\n");
- /* continue: try to use some socket */
- }
- }
-
- send_sock=0;
- /* check if we need to change the socket (different address families -
- * eg: ipv4 -> ipv6 or ipv6 -> ipv4) */
- switch(proto){
-#ifdef USE_TCP
- case PROTO_TCP:
- /* on tcp just use the "main address", we don't really now the
- * sending address (we can find it out, but we'll need also to see
- * if we listen on it, and if yes on which port -> too complicated*/
- switch(to->s.sa_family){
- /* FIXME */
- case AF_INET: send_sock=sendipv4_tcp;
- break;
-#ifdef USE_IPV6
- case AF_INET6: send_sock=sendipv6_tcp;
- break;
-#endif
- default: LOG(L_ERR, "get_send_socket: BUG: don't know how"
- " to forward to af %d\n", to->s.sa_family);
- }
- break;
-#endif
-#ifdef USE_TLS
- case PROTO_TLS:
- switch(to->s.sa_family){
- /* FIXME */
- case AF_INET: send_sock=sendipv4_tls;
- break;
-#ifdef USE_IPV6
- case AF_INET6: send_sock=sendipv6_tls;
- break;
-#endif
- default: LOG(L_ERR, "get_send_socket: BUG: don't know how"
- " to forward to af %d\n", to->s.sa_family);
- }
- break;
-#endif /* USE_TLS */
- case PROTO_UDP:
- if ((bind_address==0)||(to->s.sa_family!=bind_address->address.af)||
- (bind_address->proto!=PROTO_UDP)){
- switch(to->s.sa_family){
- case AF_INET: send_sock=sendipv4;
- break;
-#ifdef USE_IPV6
- case AF_INET6: send_sock=sendipv6;
- break;
-#endif
- default: LOG(L_ERR, "get_send_socket: BUG: don't know"
- " how to forward to af %d\n",
- to->s.sa_family);
- }
- }else send_sock=bind_address;
- break;
- default:
- LOG(L_CRIT, "BUG: get_send_socket: unknown proto %d\n", proto);
- }
- return send_sock;
-}
-
-
-
-/* checks if the proto: host:port is one of the address we listen on;
- * if port==0, the port number is ignored
- * if proto==0 (PROTO_NONE) the protocol is ignored
- * returns 1 if true, 0 if false, -1 on error
- * WARNING: uses str2ip6 so it will overwrite any previous
- * unsaved result of this function (static buffer)
- */
-int check_self(str* host, unsigned short port, unsigned short proto)
-{
- if (grep_sock_info(host, port, proto)) goto found;
- /* try to look into the aliases*/
- if (grep_aliases(host->s, host->len, port, proto)==0){
- DBG("check_self: host != me\n");
- return 0;
- }
-found:
- return 1;
-}
-
-
-
-int forward_request( struct sip_msg* msg, struct proxy_l * p, int proto)
-{
- unsigned int len;
- char* buf;
- union sockaddr_union* to;
- struct socket_info* send_sock;
- char md5[MD5_LEN];
- int id; /* used as branch for tcp! */
-
- to=0;
- buf=0;
- id=0;
-
- to=(union sockaddr_union*)pkg_malloc(sizeof(union sockaddr_union));
- if (to==0){
- ser_error=E_OUT_OF_MEM;
- LOG(L_ERR, "ERROR: forward_request: out of memory\n");
- goto error;
- }
-
-
- /* if error try next ip address if possible */
- if (p->ok==0){
- if (p->host.h_addr_list[p->addr_idx+1])
- p->addr_idx++;
- else p->addr_idx=0;
- p->ok=1;
- }
-
- hostent2su(to, &p->host, p->addr_idx,
- (p->port)?p->port:SIP_PORT);
- p->tx++;
- p->tx_bytes+=len;
-
-
- send_sock=get_send_socket(msg, to, proto);
- if (send_sock==0){
- LOG(L_ERR, "forward_req: ERROR: cannot forward to af %d, proto %d "
- "no corresponding listening socket\n", to->s.sa_family, proto);
- ser_error=E_NO_SOCKET;
- goto error1;
- }
-
- /* calculate branch for outbound request; if syn_branch is turned off,
- calculate is from transaction key, i.e., as an md5 of From/To/CallID/
- CSeq exactly the same way as TM does; good for reboot -- than messages
- belonging to transaction lost due to reboot will still be forwarded
- with the same branch parameter and will be match-able downstream
-
- if it is turned on, we don't care about reboot; we simply put a simple
- value in there; better for performance
- */
- if (syn_branch ) {
- *msg->add_to_branch_s='0';
- msg->add_to_branch_len=1;
- } else {
- if (!char_msg_val( msg, md5 )) { /* parses transaction key */
- LOG(L_ERR, "ERROR: forward_request: char_msg_val failed\n");
- goto error1;
- }
- msg->hash_index=hash( msg->callid->body, get_cseq(msg)->number);
- if (!branch_builder( msg->hash_index, 0, md5, id /* 0-th branch */,
- msg->add_to_branch_s, &msg->add_to_branch_len )) {
- LOG(L_ERR, "ERROR: forward_request: branch_builder failed\n");
- goto error1;
- }
- }
-
- buf = build_req_buf_from_sip_req( msg, &len, send_sock, proto);
- if (!buf){
- LOG(L_ERR, "ERROR: forward_request: building failed\n");
- goto error1;
- }
- /* send it! */
- DBG("Sending:\n%.*s.\n", (int)len, buf);
- DBG("orig. len=%d, new_len=%d, proto=%d\n", msg->len, len, proto );
-
- if (msg_send(send_sock, proto, to, 0, buf, len)<0){
- ser_error=E_SEND;
- p->errors++;
- p->ok=0;
- STATS_TX_DROPS;
- goto error1;
- }
-
- /* sent requests stats */
- STATS_TX_REQUEST( msg->first_line.u.request.method_value );
-
- pkg_free(buf);
- pkg_free(to);
- /* received_buf & line_buf will be freed in receive_msg by free_lump_list*/
- return 0;
-
-error1:
- pkg_free(to);
-error:
- if (buf) pkg_free(buf);
- return -1;
-}
-
-
-
-int update_sock_struct_from_via( union sockaddr_union* to,
- struct sip_msg* msg,
- struct via_body* via )
-{
- struct hostent* he;
- str* name;
- int err;
- unsigned short port;
-
- port=0;
- if(via==msg->via1){
- /* _local_ reply, we ignore any rport or received value
- * (but we will send back to the original port if rport is
- * present) */
- if ((msg->msg_flags&FL_FORCE_RPORT)||(via->rport))
- port=msg->rcv.src_port;
- else port=via->port;
- name=&(via->host); /* received=ip in 1st via is ignored (it's
- not added by us so it's bad) */
- }else{
- /* "normal" reply, we use rport's & received value if present */
- if (via->rport && via->rport->value.s){
- DBG("update_sock_struct_from_via: using 'rport'\n");
- port=str2s(via->rport->value.s, via->rport->value.len, &err);
- if (err){
- LOG(L_NOTICE, "ERROR: forward_reply: bad rport value(%.*s)\n",
- via->rport->value.len, via->rport->value.s);
- port=0;
- }
- }
- if (via->received){
- DBG("update_sock_struct_from_via: using 'received'\n");
- name=&(via->received->value);
- /* making sure that we won't do SRV lookup on "received"
- * (possible if no DNS_IP_HACK is used)*/
- if (port==0) port=via->port?via->port:SIP_PORT;
- }else{
- DBG("update_sock_struct_from_via: using via host\n");
- name=&(via->host);
- if (port==0) port=via->port;
- }
- }
- /* we do now a malloc/memcpy because gethostbyname loves \0-terminated
- strings; -jiri
- but only if host is not null terminated
- (host.s[len] will always be ok for a via)
- BTW: when is via->host.s non null terminated? tm copy? - andrei
- Yes -- it happened on generating a 408 by TM; -jiri
- sip_resolvehost now accepts str -janakj
- */
- DBG("update_sock_struct_from_via: trying SRV lookup\n");
- he=sip_resolvehost(name, &port, via->proto);
-
- if (he==0){
- LOG(L_NOTICE, "ERROR:forward_reply:resolve_host(%.*s) failure\n",
- name->len, name->s);
- return -1;
- }
-
- hostent2su(to, he, 0, port);
- return 1;
-}
-
-
-
-/* removes first via & sends msg to the second */
-int forward_reply(struct sip_msg* msg)
-{
- char* new_buf;
- union sockaddr_union* to;
- unsigned int new_len;
- struct sr_module *mod;
- int proto;
- unsigned int id; /* used only by tcp*/
-#ifdef USE_TCP
- char* s;
- int len;
-#endif
-
- to=0;
- id=0;
- new_buf=0;
- /*check if first via host = us */
- if (check_via){
- if (check_self(&msg->via1->host,
- msg->via1->port?msg->via1->port:SIP_PORT,
- msg->via1->proto)!=1){
- LOG(L_NOTICE, "ERROR: forward_reply: host in first via!=me :"
- " %.*s:%d\n", msg->via1->host.len, msg->via1->host.s,
- msg->via1->port);
- /* send error msg back? */
- goto error;
- }
- }
- /* quick hack, slower for multiple modules*/
- for (mod=modules;mod;mod=mod->next){
- if ((mod->exports) && (mod->exports->response_f)){
- DBG("forward_reply: found module %s, passing reply to it\n",
- mod->exports->name);
- if (mod->exports->response_f(msg)==0) goto skip;
- }
- }
-
- /* we have to forward the reply stateless, so we need second via -bogdan*/
- if (parse_headers( msg, HDR_VIA2, 0 )==-1
- || (msg->via2==0) || (msg->via2->error!=PARSE_OK))
- {
- /* no second via => error */
- LOG(L_ERR, "ERROR: forward_reply: no 2nd via found in reply\n");
- goto error;
- }
-
- to=(union sockaddr_union*)pkg_malloc(sizeof(union sockaddr_union));
- if (to==0){
- LOG(L_ERR, "ERROR: forward_reply: out of memory\n");
- goto error;
- }
-
- new_buf = build_res_buf_from_sip_res( msg, &new_len);
- if (!new_buf){
- LOG(L_ERR, "ERROR: forward_reply: building failed\n");
- goto error;
- }
-
- proto=msg->via2->proto;
- if (update_sock_struct_from_via( to, msg, msg->via2 )==-1) goto error;
-
-
-#ifdef USE_TCP
- if (proto==PROTO_TCP
-#ifdef USE_TLS
- || proto==PROTO_TLS
-#endif
- ){
- /* find id in i param if it exists */
- if (msg->via1->i&&msg->via1->i->value.s){
- s=msg->via1->i->value.s;
- len=msg->via1->i->value.len;
- DBG("forward_reply: i=%.*s\n",len, ZSW(s));
- if (reverse_hex2int(s, len, &id)<0){
- LOG(L_ERR, "ERROR: forward_reply: bad via i param \"%.*s\"\n",
- len, ZSW(s));
- id=0;
- }
- DBG("forward_reply: id= %x\n", id);
- }
-
- }
-#endif
- if (msg_send(0, proto, to, (int)id, new_buf, new_len)<0) goto error;
-#ifdef STATS
- STATS_TX_RESPONSE( (msg->first_line.u.reply.statuscode/100) );
-#endif
-
- DBG(" reply forwarded to %.*s:%d\n",
- msg->via2->host.len, msg->via2->host.s,
- (unsigned short) msg->via2->port);
-
- pkg_free(new_buf);
- pkg_free(to);
-skip:
- return 0;
-error:
- if (new_buf) pkg_free(new_buf);
- if (to) pkg_free(to);
- return -1;
-}
Deleted: ser/trunk/forward.h
===================================================================
--- ser/trunk/forward.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/forward.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,144 +0,0 @@
-/*
- * $Id: forward.h,v 1.26 2004/11/22 22:51:17 andrei Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*
- * History:
- * -------
- * 2001-??-?? created by andrei
- * ????-??-?? lots of changes by a lot of people
- * 2003-02-11 added inline msg_send (andrei)
- * 2003-04-07 changed all ports to host byte order (andrei)
- * 2003-04-12 FORCE_RPORT_T added (andrei)
- * 2003-04-15 added tcp_disable support (andrei)
- */
-
-
-
-#ifndef forward_h
-#define forward_h
-
-#include "globals.h"
-#include "parser/msg_parser.h"
-#include "route.h"
-#include "proxy.h"
-#include "ip_addr.h"
-
-#include "stats.h"
-#include "udp_server.h"
-#ifdef USE_TCP
-#include "tcp_server.h"
-#endif
-
-
-
-struct socket_info* get_send_socket(struct sip_msg* msg,
- union sockaddr_union* su, int proto);
-struct socket_info* get_out_socket(union sockaddr_union* to, int proto);
-int check_self(str* host, unsigned short port, unsigned short proto);
-int forward_request( struct sip_msg* msg, struct proxy_l* p, int proto);
-int update_sock_struct_from_via( union sockaddr_union* to,
- struct sip_msg* msg,
- struct via_body* via );
-
-/* use src_ip, port=src_port if rport, via port if via port, 5060 otherwise */
-#define update_sock_struct_from_ip( to, msg ) \
- init_su((to), &(msg)->rcv.src_ip, \
- (((msg)->via1->rport)||((msg)->msg_flags&FL_FORCE_RPORT))? \
- (msg)->rcv.src_port: \
- ((msg)->via1->port)?(msg)->via1->port: SIP_PORT )
-
-int forward_reply( struct sip_msg* msg);
-
-
-
-/* params:
- * send_sock= 0 if already known (e.g. for udp in some cases), non-0 otherwise
- * proto=TCP|UDP
- * to = destination,
- * id - only used on tcp, it will force sending on connection "id" if id!=0
- * and the connection exists, else it will send to "to"
- * (useful for sending replies on the same connection as the request
- * that generated them; use 0 if you don't want this)
- * returns: 0 if ok, -1 on error*/
-static inline int msg_send( struct socket_info* send_sock, int proto,
- union sockaddr_union* to, int id,
- char* buf, int len)
-{
-
- if (proto==PROTO_UDP){
- if (send_sock==0) send_sock=get_send_socket(0, to, proto);
- if (send_sock==0){
- LOG(L_ERR, "msg_send: ERROR: no sending socket found\n");
- goto error;
- }
- if (udp_send(send_sock, buf, len, to)==-1){
- STATS_TX_DROPS;
- LOG(L_ERR, "msg_send: ERROR: udp_send failed\n");
- goto error;
- }
- }
-#ifdef USE_TCP
- else if (proto==PROTO_TCP){
- if (tcp_disable){
- STATS_TX_DROPS;
- LOG(L_WARN, "msg_send: WARNING: attempt to send on tcp and tcp"
- " support is disabled\n");
- goto error;
- }else{
- if (tcp_send(proto, buf, len, to, id)<0){
- STATS_TX_DROPS;
- LOG(L_ERR, "msg_send: ERROR: tcp_send failed\n");
- goto error;
- }
- }
- }
-#ifdef USE_TLS
- else if (proto==PROTO_TLS){
- if (tls_disable){
- STATS_TX_DROPS;
- LOG(L_WARN, "msg_send: WARNING: attempt to send on tls and tls"
- " support is disabled\n");
- goto error;
- }else{
- if (tcp_send(proto, buf, len, to, id)<0){
- STATS_TX_DROPS;
- LOG(L_ERR, "msg_send: ERROR: tcp_send failed\n");
- goto error;
- }
- }
- }
-#endif /* USE_TLS */
-#endif /* USE_TCP */
- else{
- LOG(L_CRIT, "BUG: msg_send: unknown proto %d\n", proto);
- goto error;
- }
- return 0;
-error:
- return -1;
-}
-
-#endif
Deleted: ser/trunk/globals.h
===================================================================
--- ser/trunk/globals.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/globals.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,163 +0,0 @@
-/*
- * $Id: globals.h,v 1.52 2004/11/10 21:51:24 andrei Exp $
- *
- * global variables
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-
-#ifndef globals_h
-#define globals_h
-
-#include "types.h"
-#include "ip_addr.h"
-#include "str.h"
-
-#define NO_DNS 0
-#define DO_DNS 1
-#define DO_REV_DNS 2
-
-
-
-extern char * cfg_file;
-extern int config_check;
-extern char *stat_file;
-extern unsigned short port_no;
-
-extern int uid;
-extern int gid;
-char* pid_file;
-char* pgid_file;
-extern int own_pgid; /* whether or not we have our own pgid (and it's ok
->--->--->--->--->--->--->--->--->--->--->--- to use kill(0, sig) */
-
-extern struct socket_info* bind_address; /* pointer to the crt. proc.
- listening address */
-extern struct socket_info* sendipv4; /* ipv4 socket to use when msg.
- comes from ipv6*/
-extern struct socket_info* sendipv6; /* same as above for ipv6 */
-#ifdef USE_TCP
-extern struct socket_info* sendipv4_tcp; /* ipv4 socket to use when msg.
- comes from ipv6*/
-extern struct socket_info* sendipv6_tcp; /* same as above for ipv6 */
-extern int unix_tcp_sock; /* socket used for communication with tcp main*/
-#endif
-#ifdef USE_TLS
-extern struct socket_info* sendipv4_tls; /* ipv4 socket to use when msg.
- comes from ipv6*/
-extern struct socket_info* sendipv6_tls; /* same as above for ipv6 */
-#endif
-
-extern unsigned int maxbuffer;
-extern int children_no;
-#ifdef USE_TCP
-extern int tcp_children_no;
-extern int tcp_disable;
-extern int tcp_accept_aliases;
-extern int tcp_connect_timeout;
-extern int tcp_send_timeout;
-#endif
-#ifdef USE_TLS
-extern int tls_disable;
-extern unsigned short tls_port_no;
-#endif
-extern int dont_fork;
-extern int check_via;
-extern int received_dns;
-extern int syn_branch;
-/* extern int process_no; */
-extern int sip_warning;
-extern int server_signature;
-extern char* user;
-extern char* group;
-extern char* sock_user;
-extern char* sock_group;
-extern int sock_uid;
-extern int sock_gid;
-extern int sock_mode;
-extern char* chroot_dir;
-extern char* working_dir;
-
-#ifdef USE_MCAST
-extern int mcast_loopback;
-extern int mcast_ttl;
-#endif /* USE_MCAST */
-
-/*
- * debug & log_stderr moved to dprint.h*/
-
-/* extern process_bm_t process_bit; */
-/* extern int *pids; -moved to pt.h */
-
-extern int cfg_errors;
-extern unsigned int msg_no;
-
-extern unsigned long shm_mem_size;
-
-/* FIFO server config */
-char extern *fifo; /* FIFO name */
-extern int fifo_mode;
-char extern *fifo_dir; /* dir. where reply fifos are allowed */
-extern char *fifo_db_url; /* db url used by db_fifo interface */
-
-/* UNIX domain socket configuration */
-extern char *unixsock_name; /* The name of the socket */
-extern int unixsock_children; /* The number of listening children */
-extern int unixsock_tx_timeout; /* Timeout (in ms) used when sending data */
-
-/* AVP configuration */
-extern char *avp_db_url; /* db url used by user preferences (AVPs) */
-
-/* moved to pt.h
-extern int *pids;
-extern int process_no;
-*/
-
-extern int reply_to_via;
-
-extern int is_main;
-
-/* debugging level for dumping memory status */
-extern int memlog;
-
-/* looking up outbound interface ? */
-extern int mhomed;
-
-/* command-line arguments */
-extern int my_argc;
-extern char **my_argv;
-
-/* pre-set addresses */
-extern str default_global_address;
-/* pre-ser ports */
-extern str default_global_port;
-
-/* core dump and file limits */
-extern int disable_core_dump;
-extern int open_files_limit;
-
-#endif
Deleted: ser/trunk/hash_func.c
===================================================================
--- ser/trunk/hash_func.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/hash_func.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,170 +0,0 @@
-/*
- * $Id: hash_func.c,v 1.7 2004/08/24 08:45:10 janakj Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-
-#ifndef _CRC_H_
-#define _CRC_H_
-
-extern unsigned long int crc_32_tab[];
-extern unsigned short int ccitt_tab[];
-extern unsigned short int crc_16_tab[];
-
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include "hash_func.h"
-#include "dprint.h"
-#include "crc.h"
-#include "ut.h"
-
-
-int new_hash( str call_id, str cseq_nr )
-{
- int hash_code = 0;
- int i,j, k, third;
- int ci_len, cs_len;
- char *ci, *cs;
-
- /* trim EoLs */
-/*
- ci_len = call_id.len;
- while (ci_len && ((c=call_id.s[ci_len-1])==0 || c=='\r' || c=='\n'))
- ci_len--;
- cs_len = cseq_nr.len;
- while (cs_len && ((c=cseq_nr.s[cs_len-1])==0 || c=='\r' || c=='\n'))
- cs_len--;
-*/
- trim_len( ci_len, ci, call_id );
- trim_len( cs_len, cs, cseq_nr );
-
- /* run the cycle from the end ... we are interested in the
- most-right digits ... and just take the %10 value of it
- */
- third=(ci_len-1)/3;
- for ( i=ci_len-1, j=2*third, k=third;
- k>0 ; i--, j--, k-- ) {
- hash_code+=crc_16_tab[(unsigned char)(*(ci+i)) /*+7*/ ]+
- ccitt_tab[*(ci+k)+63]+
- ccitt_tab[*(ci+j)+13];
- }
- for( i=0 ; i<cs_len ; i++ )
- //hash_code+=crc_32_tab[(cseq_nr.s[i]+hash_code)%243];
- hash_code+=ccitt_tab[*(cs+i)+123];
-
- /* hash_code conditioning */
-#ifdef _BUG
- /* not flat ... % 111b has shorter period than
- & 111b by one and results in different distribution;
- ( 7 % 7 == 0, 7 %7 == 1 )
- % is used as a part of the hash function too, not only
- for rounding; & is not flat; whoever comes up with
- a nicer flat hash function which does not take
- costly division is welcome; feel free to verify
- distribution using hashtest()
- */
- hash_code &= (TABLE_ENTRIES-1); /* TABLE_ENTRIES = 2^k */
-#endif
- hash_code=hash_code%(TABLE_ENTRIES-1)+1;
- return hash_code;
-}
-
-
-
-int new_hash2( str call_id, str cseq_nr )
-{
-#define h_inc h+=v^(v>>3)
- char* p;
- register unsigned v;
- register unsigned h;
-
- h=0;
-
-
- for (p=call_id.s; p<=(call_id.s+call_id.len-4); p+=4){
- v=(*p<<24)+(p[1]<<16)+(p[2]<<8)+p[3];
- h_inc;
- }
- v=0;
- for (;p<(call_id.s+call_id.len); p++){ v<<=8; v+=*p;}
- h_inc;
-
- for (p=cseq_nr.s; p<=(cseq_nr.s+cseq_nr.len-4); p+=4){
- v=(*p<<24)+(p[1]<<16)+(p[2]<<8)+p[3];
- h_inc;
- }
- v=0;
- for (;p<(cseq_nr.s+cseq_nr.len); p++){ v<<=8; v+=*p;}
- h_inc;
-
- h=((h)+(h>>11))+((h>>13)+(h>>23));
- return (h)&(TABLE_ENTRIES-1);
-}
-
-
-
-void hashtest_cycle( int hits[TABLE_ENTRIES+5], char *ip )
-{
- long int i,j,k, l;
- int hashv;
- static char buf1[1024];
- static char buf2[1024];
- str call_id;
- str cseq;
-
- call_id.s=buf1;
- cseq.s=buf2;
-
- for (i=987654328;i<987654328+10;i++)
- for (j=85296341;j<85296341+10;j++)
- for (k=987654;k<=987654+10;k++)
- for (l=101;l<201;l++) {
- call_id.len=sprintf( buf1, "%d-%d-%d@%s",(int)i,(int)j,
- (int)k, ip );
- cseq.len=sprintf( buf2, "%d", (int)l );
- /* printf("%s\t%s\n", buf1, buf2 ); */
- hashv=hash( call_id, cseq );
- hits[ hashv ]++;
- }
-}
-
-void hashtest()
-{
- int hits[TABLE_ENTRIES+5];
- int i;
-
- memset( hits, 0, sizeof hits );
- hashtest_cycle( hits, "192.168.99.100" );
- hashtest_cycle( hits, "172.168.99.100" );
- hashtest_cycle( hits, "142.168.99.100" );
- for (i=0; i<TABLE_ENTRIES+5; i++)
- printf("[%d. %d]\n", i, hits[i] );
- exit(0);
-}
-
Deleted: ser/trunk/hash_func.h
===================================================================
--- ser/trunk/hash_func.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/hash_func.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,45 +0,0 @@
-/*
- * $Id: hash_func.h,v 1.7 2004/08/24 08:45:10 janakj Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-
-#ifndef _HASH_H
-#define _HASH_H
-
-#include "str.h"
-
-/* always use a power of 2 for hash table size */
-#define T_TABLE_POWER 16
-#define TABLE_ENTRIES (1 << (T_TABLE_POWER))
-
-int new_hash( str call_id, str cseq_nr );
-int new_hash2( str call_id, str cseq_nr );
-
-
-#define hash( cid, cseq) new_hash2( cid, cseq )
-
-#endif
Deleted: ser/trunk/ip_addr.c
===================================================================
--- ser/trunk/ip_addr.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/ip_addr.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,197 +0,0 @@
-/*
- * $Id: ip_addr.c,v 1.9 2004/10/01 17:19:19 andrei Exp $
- *
- *
- * ip address & address family related functions
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*
- * History:
- * --------
- * 2003-03-19 replaced all mallocs/frees w/ pkg_malloc/pkg_free
- * 2004-10-01 mk_net fixes bad network addresses now (andrei)
- */
-
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "ip_addr.h"
-#include "dprint.h"
-#include "mem/mem.h"
-
-
-struct net* mk_net(struct ip_addr* ip, struct ip_addr* mask)
-{
- struct net* n;
- int warning;
- int r;
-
- warning=0;
- if ((ip->af != mask->af) || (ip->len != mask->len)){
- LOG(L_CRIT, "ERROR: mk_net: trying to use a different mask family"
- " (eg. ipv4/ipv6mask or ipv6/ipv4mask)\n");
- goto error;
- }
- n=(struct net*)pkg_malloc(sizeof(struct net));
- if (n==0){
- LOG(L_CRIT, "ERROR: mk_net: memory allocation failure\n");
- goto error;
- }
- n->ip=*ip;
- n->mask=*mask;
- for (r=0; r<n->ip.len/4; r++) { /*ipv4 & ipv6 addresses are multiple of 4*/
- n->ip.u.addr32[r] &= n->mask.u.addr32[r];
- if (n->ip.u.addr32[r]!=ip->u.addr32[r]) warning=1;
- };
- if (warning){
- LOG(L_WARN, "WARNING: mk_net: invalid network address/netmask "
- "combination fixed...\n");
- print_ip("original network address:", ip, "/");
- print_ip("", mask, "\n");
- print_ip("fixed network address:", &(n->ip), "/");
- print_ip("", &(n->mask), "\n");
- };
- return n;
-error:
- return 0;
-}
-
-
-
-struct net* mk_net_bitlen(struct ip_addr* ip, unsigned int bitlen)
-{
- struct ip_addr mask;
- int r;
-
- if (bitlen>ip->len*8){
- LOG(L_CRIT, "ERROR: mk_net_bitlen: bad bitlen number %d\n", bitlen);
- goto error;
- }
- memset(&mask,0, sizeof(mask));
- for (r=0;r<bitlen/8;r++) mask.u.addr[r]=0xff;
- if (bitlen%8) mask.u.addr[r]= ~((1<<(8-(bitlen%8)))-1);
- mask.af=ip->af;
- mask.len=ip->len;
-
- return mk_net(ip, &mask);
-error:
- return 0;
-}
-
-
-
-void print_ip(char* p, struct ip_addr* ip, char *s)
-{
- switch(ip->af){
- case AF_INET:
- DBG("%s%d.%d.%d.%d%s", (p)?p:"",
- ip->u.addr[0],
- ip->u.addr[1],
- ip->u.addr[2],
- ip->u.addr[3],
- (s)?s:""
- );
- break;
- case AF_INET6:
- DBG("%s%x:%x:%x:%x:%x:%x:%x:%x%s", (p)?p:"",
- htons(ip->u.addr16[0]),
- htons(ip->u.addr16[1]),
- htons(ip->u.addr16[2]),
- htons(ip->u.addr16[3]),
- htons(ip->u.addr16[4]),
- htons(ip->u.addr16[5]),
- htons(ip->u.addr16[6]),
- htons(ip->u.addr16[7]),
- (s)?s:""
- );
- break;
- default:
- DBG("print_ip: warning unknown address family %d\n", ip->af);
- }
-}
-
-
-
-void stdout_print_ip(struct ip_addr* ip)
-{
- switch(ip->af){
- case AF_INET:
- printf("%d.%d.%d.%d", ip->u.addr[0],
- ip->u.addr[1],
- ip->u.addr[2],
- ip->u.addr[3]);
- break;
- case AF_INET6:
- printf("%x:%x:%x:%x:%x:%x:%x:%x", htons(ip->u.addr16[0]),
- htons(ip->u.addr16[1]),
- htons(ip->u.addr16[2]),
- htons(ip->u.addr16[3]),
- htons(ip->u.addr16[4]),
- htons(ip->u.addr16[5]),
- htons(ip->u.addr16[6]),
- htons(ip->u.addr16[7])
- );
- break;
- default:
- DBG("print_ip: warning unknown address family %d\n", ip->af);
- }
-}
-
-
-
-void print_net(struct net* net)
-{
- if (net==0){
- LOG(L_WARN, "ERROR: print net: null pointer\n");
- return;
- }
- print_ip("", &net->ip, "/"); print_ip("", &net->mask, "");
-}
-
-
-#ifdef USE_MCAST
-
-/* Returns 1 if the given address is a multicast address */
-int is_mcast(struct ip_addr* ip)
-{
- if (!ip){
- LOG(L_ERR, "ERROR: is_mcast: Invalid parameter value\n");
- return -1;
- }
-
- if (ip->af==AF_INET){
- return IN_MULTICAST(htonl(ip->u.addr32[0]));
-#ifdef USE_IPV6
- } else if (ip->af==AF_INET6){
- return IN6_IS_ADDR_MULTICAST((struct in6_addr *)ip->u.addr);
-#endif /* USE_IPV6 */
- } else {
- LOG(L_ERR, "ERROR: is_mcast: Unsupported protocol family\n");
- return -1;
- }
-}
-
-#endif /* USE_MCAST */
Deleted: ser/trunk/ip_addr.h
===================================================================
--- ser/trunk/ip_addr.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/ip_addr.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,550 +0,0 @@
-/* $Id: ip_addr.h,v 1.35 2004/11/30 16:28:23 andrei Exp $
- *
- * ip address family related structures
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*
- * History:
- * --------
- * 2003-02-13 added struct dest_info (andrei)
- * 2003-04-06 all ports are stored/passed in host byte order now (andrei)
- */
-
-#ifndef ip_addr_h
-#define ip_addr_h
-
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netdb.h>
-#include "str.h"
-
-
-#include "dprint.h"
-
-enum sip_protos { PROTO_NONE, PROTO_UDP, PROTO_TCP, PROTO_TLS, PROTO_SCTP };
-
-
-struct ip_addr{
- unsigned int af; /* address family: AF_INET6 or AF_INET */
- unsigned int len; /* address len, 16 or 4 */
-
- /* 64 bits aligned address */
- union {
- unsigned long addrl[16/sizeof(long)]; /* long format*/
- unsigned int addr32[4];
- unsigned short addr16[8];
- unsigned char addr[16];
- }u;
-};
-
-
-
-struct net{
- struct ip_addr ip;
- struct ip_addr mask;
-};
-
-union sockaddr_union{
- struct sockaddr s;
- struct sockaddr_in sin;
- #ifdef USE_IPV6
- struct sockaddr_in6 sin6;
- #endif
-};
-
-
-
-enum si_flags { SI_NONE=0, SI_IS_IP=1, SI_IS_LO=2, SI_IS_MCAST=4 };
-
-struct socket_info{
- int socket;
- str name; /* name - eg.: foo.bar or 10.0.0.1 */
- struct ip_addr address; /* ip address */
- str address_str; /* ip address converted to string -- optimization*/
- unsigned short port_no; /* port number */
- str port_no_str; /* port number converted to string -- optimization*/
- enum si_flags flags; /* SI_IS_IP | SI_IS_LO | SI_IS_MCAST */
- union sockaddr_union su;
- int proto; /* tcp or udp*/
- struct socket_info* next;
- struct socket_info* prev;
-};
-
-
-struct receive_info{
- struct ip_addr src_ip;
- struct ip_addr dst_ip;
- unsigned short src_port; /* host byte order */
- unsigned short dst_port; /* host byte order */
- int proto;
- int proto_reserved1; /* tcp stores the connection id here */
- int proto_reserved2;
- union sockaddr_union src_su; /* useful for replies*/
- struct socket_info* bind_address; /* sock_info structure on which
- the msg was received*/
- /* no need for dst_su yet */
-};
-
-
-struct dest_info{
- int proto;
- int proto_reserved1; /* tcp stores the connection id here */
- union sockaddr_union to;
- struct socket_info* send_sock;
-};
-
-
-struct socket_id{
- char* name;
- int proto;
- int port;
- struct socket_id* next;
-};
-
-
-
-/* len of the sockaddr */
-#ifdef HAVE_SOCKADDR_SA_LEN
-#define sockaddru_len(su) ((su).s.sa_len)
-#else
-#ifdef USE_IPV6
-#define sockaddru_len(su) \
- (((su).s.sa_family==AF_INET6)?sizeof(struct sockaddr_in6):\
- sizeof(struct sockaddr_in))
-#else
-#define sockaddru_len(su) sizeof(struct sockaddr_in)
-#endif /*USE_IPV6*/
-#endif /* HAVE_SOCKADDR_SA_LEN*/
-
-/* inits an ip_addr with the addr. info from a hostent structure
- * ip = struct ip_addr*
- * he= struct hostent*
- */
-#define hostent2ip_addr(ip, he, addr_no) \
- do{ \
- (ip)->af=(he)->h_addrtype; \
- (ip)->len=(he)->h_length; \
- memcpy((ip)->u.addr, (he)->h_addr_list[(addr_no)], (ip)->len); \
- }while(0)
-
-
-
-
-/* gets the protocol family corresponding to a specific address family
- * ( PF_INET - AF_INET, PF_INET6 - AF_INET6, af for others)
- */
-#ifdef USE_IPV6
-#define AF2PF(af) (((af)==AF_INET)?PF_INET:((af)==AF_INET6)?PF_INET6:(af))
-#else
-#define AF2PF(af) (((af)==AF_INET)?PF_INET:(af))
-#endif
-
-
-
-
-struct net* mk_net(struct ip_addr* ip, struct ip_addr* mask);
-struct net* mk_net_bitlen(struct ip_addr* ip, unsigned int bitlen);
-
-void print_ip(char* prefix, struct ip_addr* ip, char* suffix);
-void stdout_print_ip(struct ip_addr* ip);
-void print_net(struct net* net);
-
-#ifdef USE_MCAST
-/* Returns 1 if the given address is a multicast address */
-int is_mcast(struct ip_addr* ip);
-#endif /* USE_MCAST */
-
-/* returns 1 if ip & net.mask == net.ip ; 0 otherwise & -1 on error
- [ diff. address families ]) */
-inline static int matchnet(struct ip_addr* ip, struct net* net)
-{
- unsigned int r;
- int ret;
-
- ret=-1;
- if (ip->af == net->ip.af){
- for(r=0; r<ip->len/4; r++){ /* ipv4 & ipv6 addresses are
- all multiple of 4*/
- if ((ip->u.addr32[r]&net->mask.u.addr32[r])!=
- net->ip.u.addr32[r]){
- return 0;
- }
- }
- return 1;
- };
- return -1;
-}
-
-
-
-
-/* inits an ip_addr pointer from a sockaddr structure*/
-static inline void sockaddr2ip_addr(struct ip_addr* ip, struct sockaddr* sa)
-{
- switch(sa->sa_family){
- case AF_INET:
- ip->af=AF_INET;
- ip->len=4;
- memcpy(ip->u.addr, &((struct sockaddr_in*)sa)->sin_addr, 4);
- break;
-#ifdef USE_IPV6
- case AF_INET6:
- ip->af=AF_INET6;
- ip->len=16;
- memcpy(ip->u.addr, &((struct sockaddr_in6*)sa)->sin6_addr, 16);
- break;
-#endif
- default:
- LOG(L_CRIT, "sockaddr2ip_addr: BUG: unknown address family %d\n",
- sa->sa_family);
- }
-}
-
-
-
-/* compare 2 ip_addrs (both args are pointers)*/
-#define ip_addr_cmp(ip1, ip2) \
- (((ip1)->af==(ip2)->af)&& \
- (memcmp((ip1)->u.addr, (ip2)->u.addr, (ip1)->len)==0))
-
-
-
-/* compare 2 sockaddr_unions */
-static inline int su_cmp(union sockaddr_union* s1, union sockaddr_union* s2)
-{
- if (s1->s.sa_family!=s2->s.sa_family) return 0;
- switch(s1->s.sa_family){
- case AF_INET:
- return (s1->sin.sin_port==s2->sin.sin_port)&&
- (memcmp(&s1->sin.sin_addr, &s2->sin.sin_addr, 4)==0);
-#ifdef USE_IPV6
- case AF_INET6:
- return (s1->sin6.sin6_port==s2->sin6.sin6_port)&&
- (memcmp(&s1->sin6.sin6_addr, &s2->sin6.sin6_addr, 16)==0);
-#endif
- default:
- LOG(L_CRIT,"su_cmp: BUG: unknown address family %d\n",
- s1->s.sa_family);
- return 0;
- }
-}
-
-
-
-/* gets the port number (host byte order) */
-static inline unsigned short su_getport(union sockaddr_union* su)
-{
- switch(su->s.sa_family){
- case AF_INET:
- return ntohs(su->sin.sin_port);
-#ifdef USE_IPV6
- case AF_INET6:
- return ntohs(su->sin6.sin6_port);
-#endif
- default:
- LOG(L_CRIT,"su_get_port: BUG: unknown address family %d\n",
- su->s.sa_family);
- return 0;
- }
-}
-
-
-
-/* sets the port number (host byte order) */
-static inline void su_setport(union sockaddr_union* su, unsigned short port)
-{
- switch(su->s.sa_family){
- case AF_INET:
- su->sin.sin_port=htons(port);
- break;
-#ifdef USE_IPV6
- case AF_INET6:
- su->sin6.sin6_port=htons(port);
- break;
-#endif
- default:
- LOG(L_CRIT,"su_set_port: BUG: unknown address family %d\n",
- su->s.sa_family);
- }
-}
-
-
-
-/* inits an ip_addr pointer from a sockaddr_union ip address */
-static inline void su2ip_addr(struct ip_addr* ip, union sockaddr_union* su)
-{
- switch(su->s.sa_family){
- case AF_INET:
- ip->af=AF_INET;
- ip->len=4;
- memcpy(ip->u.addr, &su->sin.sin_addr, 4);
- break;
-#ifdef USE_IPV6
- case AF_INET6:
- ip->af=AF_INET6;
- ip->len=16;
- memcpy(ip->u.addr, &su->sin6.sin6_addr, 16);
- break;
-#endif
- default:
- LOG(L_CRIT,"su2ip_addr: BUG: unknown address family %d\n",
- su->s.sa_family);
- }
-}
-
-
-/* ip_addr2su -> the same as init_su*/
-#define ip_addr2su init_su
-
-/* inits a struct sockaddr_union from a struct ip_addr and a port no
- * returns 0 if ok, -1 on error (unknown address family)
- * the port number is in host byte order */
-static inline int init_su( union sockaddr_union* su,
- struct ip_addr* ip,
- unsigned short port )
-{
- memset(su, 0, sizeof(union sockaddr_union));/*needed on freebsd*/
- su->s.sa_family=ip->af;
- switch(ip->af){
-#ifdef USE_IPV6
- case AF_INET6:
- memcpy(&su->sin6.sin6_addr, ip->u.addr, ip->len);
- #ifdef HAVE_SOCKADDR_SA_LEN
- su->sin6.sin6_len=sizeof(struct sockaddr_in6);
- #endif
- su->sin6.sin6_port=htons(port);
- break;
-#endif
- case AF_INET:
- memcpy(&su->sin.sin_addr, ip->u.addr, ip->len);
- #ifdef HAVE_SOCKADDR_SA_LEN
- su->sin.sin_len=sizeof(struct sockaddr_in);
- #endif
- su->sin.sin_port=htons(port);
- break;
- default:
- LOG(L_CRIT, "init_ss: BUG: unknown address family %d\n", ip->af);
- return -1;
- }
- return 0;
-}
-
-
-
-/* inits a struct sockaddr_union from a struct hostent, an address index in
- * the hostent structure and a port no. (host byte order)
- * WARNING: no index overflow checks!
- * returns 0 if ok, -1 on error (unknown address family) */
-static inline int hostent2su( union sockaddr_union* su,
- struct hostent* he,
- unsigned int idx,
- unsigned short port )
-{
- memset(su, 0, sizeof(union sockaddr_union)); /*needed on freebsd*/
- su->s.sa_family=he->h_addrtype;
- switch(he->h_addrtype){
-#ifdef USE_IPV6
- case AF_INET6:
- memcpy(&su->sin6.sin6_addr, he->h_addr_list[idx], he->h_length);
- #ifdef HAVE_SOCKADDR_SA_LEN
- su->sin6.sin6_len=sizeof(struct sockaddr_in6);
- #endif
- su->sin6.sin6_port=htons(port);
- break;
-#endif
- case AF_INET:
- memcpy(&su->sin.sin_addr, he->h_addr_list[idx], he->h_length);
- #ifdef HAVE_SOCKADDR_SA_LEN
- su->sin.sin_len=sizeof(struct sockaddr_in);
- #endif
- su->sin.sin_port=htons(port);
- break;
- default:
- LOG(L_CRIT, "hostent2su: BUG: unknown address family %d\n",
- he->h_addrtype);
- return -1;
- }
- return 0;
-}
-
-/* maximum size of a str returned by ip_addr2a (including \0) */
-#define IP_ADDR_MAX_STR_SIZE 40 /* 1234:5678:9012:3456:7890:1234:5678:9012\0 */
-/* fast ip_addr -> string converter;
- * it uses an internal buffer
- */
-static inline char* ip_addr2a(struct ip_addr* ip)
-{
-
- static char buff[IP_ADDR_MAX_STR_SIZE];
- int offset;
- register unsigned char a,b,c;
-#ifdef USE_IPV6
- register unsigned char d;
- register unsigned short hex4;
-#endif
- int r;
- #define HEXDIG(x) (((x)>=10)?(x)-10+'A':(x)+'0')
-
-
- offset=0;
- switch(ip->af){
- #ifdef USE_IPV6
- case AF_INET6:
- for(r=0;r<7;r++){
- hex4=ntohs(ip->u.addr16[r]);
- a=hex4>>12;
- b=(hex4>>8)&0xf;
- c=(hex4>>4)&0xf;
- d=hex4&0xf;
- if (a){
- buff[offset]=HEXDIG(a);
- buff[offset+1]=HEXDIG(b);
- buff[offset+2]=HEXDIG(c);
- buff[offset+3]=HEXDIG(d);
- buff[offset+4]=':';
- offset+=5;
- }else if(b){
- buff[offset]=HEXDIG(b);
- buff[offset+1]=HEXDIG(c);
- buff[offset+2]=HEXDIG(d);
- buff[offset+3]=':';
- offset+=4;
- }else if(c){
- buff[offset]=HEXDIG(c);
- buff[offset+1]=HEXDIG(d);
- buff[offset+2]=':';
- offset+=3;
- }else{
- buff[offset]=HEXDIG(d);
- buff[offset+1]=':';
- offset+=2;
- }
- }
- /* last int16*/
- hex4=ntohs(ip->u.addr16[r]);
- a=hex4>>12;
- b=(hex4>>8)&0xf;
- c=(hex4>>4)&0xf;
- d=hex4&0xf;
- if (a){
- buff[offset]=HEXDIG(a);
- buff[offset+1]=HEXDIG(b);
- buff[offset+2]=HEXDIG(c);
- buff[offset+3]=HEXDIG(d);
- buff[offset+4]=0;
- }else if(b){
- buff[offset]=HEXDIG(b);
- buff[offset+1]=HEXDIG(c);
- buff[offset+2]=HEXDIG(d);
- buff[offset+3]=0;
- }else if(c){
- buff[offset]=HEXDIG(c);
- buff[offset+1]=HEXDIG(d);
- buff[offset+2]=0;
- }else{
- buff[offset]=HEXDIG(d);
- buff[offset+1]=0;
- }
- break;
- #endif
- case AF_INET:
- for(r=0;r<3;r++){
- a=ip->u.addr[r]/100;
- c=ip->u.addr[r]%10;
- b=ip->u.addr[r]%100/10;
- if (a){
- buff[offset]=a+'0';
- buff[offset+1]=b+'0';
- buff[offset+2]=c+'0';
- buff[offset+3]='.';
- offset+=4;
- }else if (b){
- buff[offset]=b+'0';
- buff[offset+1]=c+'0';
- buff[offset+2]='.';
- offset+=3;
- }else{
- buff[offset]=c+'0';
- buff[offset+1]='.';
- offset+=2;
- }
- }
- /* last number */
- a=ip->u.addr[r]/100;
- c=ip->u.addr[r]%10;
- b=ip->u.addr[r]%100/10;
- if (a){
- buff[offset]=a+'0';
- buff[offset+1]=b+'0';
- buff[offset+2]=c+'0';
- buff[offset+3]=0;
- }else if (b){
- buff[offset]=b+'0';
- buff[offset+1]=c+'0';
- buff[offset+2]=0;
- }else{
- buff[offset]=c+'0';
- buff[offset+1]=0;
- }
- break;
-
- default:
- LOG(L_CRIT, "BUG: ip_addr2a: unknown address family %d\n",
- ip->af);
- return 0;
- }
-
- return buff;
-}
-
-
-
-/* converts an ip_addr structure to a hostent, returns pointer to internal
- * statical structure */
-static inline struct hostent* ip_addr2he(str* name, struct ip_addr* ip)
-{
- static struct hostent he;
- static char hostname[256];
- static char* p_aliases[1];
- static char* p_addr[2];
- static char address[16];
-
- p_aliases[0]=0; /* no aliases*/
- p_addr[1]=0; /* only one address*/
- p_addr[0]=address;
- strncpy(hostname, name->s, (name->len<256)?(name->len)+1:256);
- if (ip->len>16) return 0;
- memcpy(address, ip->u.addr, ip->len);
-
- he.h_addrtype=ip->af;
- he.h_length=ip->len;
- he.h_addr_list=p_addr;
- he.h_aliases=p_aliases;
- he.h_name=hostname;
- return &he;
-}
-#endif
Deleted: ser/trunk/lock_alloc.h
===================================================================
--- ser/trunk/lock_alloc.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/lock_alloc.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,111 +0,0 @@
-/* $Id: lock_alloc.h,v 1.6 2004/08/24 08:45:10 janakj Exp $ */
-/*
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * ser locking library
- * WARNING: don't include this directly include instead locking.h!
- * History:
- * --------
- * 2003-03-06 created by andrei (contains parts of the original locking.h)
- * 2003-03-17 fixed cast warning in shm_free (forced to void*) (andrei)
- * 2004-07-28 s/lock_set_t/gen_lock_set_t/ because of a type conflict
- * on darwin (andrei)
- *
-Implements: (see also locking.h)
-
- simple locks:
- -------------
- gen_lock_t* lock_alloc(); - allocates a lock in shared mem.
- void lock_dealloc(gen_lock_t* lock); - deallocates the lock's shared m.
-
- lock sets: [implemented only for FL & SYSV so far]
- ----------
- gen_lock_set_t* lock_set_alloc(no) - allocs a lock set in shm.
- void lock_set_dealloc(gen_lock_set_t* s); - deallocs the lock set shm.
-
-*/
-
-#ifndef _lock_alloc_h
-#define _lock_alloc_h
-
-/*shm_{malloc, free}*/
-#include "mem/mem.h"
-#ifdef SHM_MEM
-#include "mem/shm_mem.h"
-#else
-#error "locking requires shared memory support"
-#endif
-
-#if defined(FAST_LOCK) || defined(USE_PTHREAD_MUTEX) || defined(USE_POSIX_SEM)
-/* simple locks*/
-#define lock_alloc() shm_malloc(sizeof(gen_lock_t))
-#define lock_dealloc(lock) shm_free((void*)lock)
-/* lock sets */
-
-inline static gen_lock_set_t* lock_set_alloc(int n)
-{
- gen_lock_set_t* ls;
- ls=(gen_lock_set_t*)shm_malloc(sizeof(gen_lock_set_t)+n*sizeof(gen_lock_t));
- if (ls==0){
- LOG(L_CRIT, "ERROR: lock_set_alloc (FL): could not allocate lock_set\n");
- }else{
- ls->locks=(gen_lock_t*)((char*)ls+sizeof(gen_lock_set_t));
- ls->size=n;
- }
- return ls;
-}
-
-#define lock_set_dealloc(lock_set) shm_free((void*)lock_set)
-
-#elif defined USE_SYSV_SEM
-
-/*simple locks*/
-#define lock_alloc() shm_malloc(sizeof(gen_lock_t))
-#define lock_dealloc(lock) shm_free((void*)lock)
-/* lock sets */
-
-inline static gen_lock_set_t* lock_set_alloc(int n)
-{
- gen_lock_set_t* ls;
- ls=(gen_lock_set_t*)shm_malloc(sizeof(gen_lock_set_t));
- if (ls){
- ls->size=n;
- ls->semid=-1;
- };
- return ls;
-}
-
-
-#define lock_set_dealloc(lock_set) shm_free((void*)lock_set)
-
-
-#else
-#error "no locking method selected"
-#endif
-
-
-#endif
Deleted: ser/trunk/lock_ops.h
===================================================================
--- ser/trunk/lock_ops.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/lock_ops.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,333 +0,0 @@
-/* $Id: lock_ops.h,v 1.7 2004/09/19 20:22:51 andrei Exp $ */
-/*
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * ser locking library
- * WARNING: do not include this file directly, use instead locking.h
- * (unless you don't need to alloc/dealloc locks)
- *
- * 2002-12-16 created by andrei
- * 2003-02-20 s/gen_lock_t/gen_lock_t/ to avoid a type conflict
- * on solaris (andrei)
- * 2003-03-05 lock set support added for FAST_LOCK & SYSV (andrei)
- * 2003-03-06 removed *_alloc,*_dealloc & moved them to lock_alloc.h
- * renamed locking.h to lock_ops.h (all this to solve
- * the locking.h<->shm_mem.h interdependency) (andrei)
- * 2003-03-10 lock set support added also for PTHREAD_MUTEX & POSIX_SEM
- * (andrei)
- * 2003-03-17 possible signal interruptions treated for sysv (andrei)
- * 2004-07-28 s/lock_set_t/gen_lock_set_t/ because of a type conflict
- * on darwin (andrei)
- *
-Implements:
-
- simple locks:
- -------------
- gen_lock_t* lock_init(gen_lock_t* lock); - inits the lock
- void lock_destroy(gen_lock_t* lock); - removes the lock (e.g sysv rmid)
- void lock_get(gen_lock_t* lock); - lock (mutex down)
- void lock_release(gen_lock_t* lock); - unlock (mutex up)
-
- lock sets: [implemented only for FL & SYSV so far]
- ----------
- gen_lock_set_t* lock_set_init(gen_lock_set_t* set); - inits the lock set
- void lock_set_destroy(gen_lock_set_t* s); - removes the lock set
- void lock_set_get(gen_lock_set_t* s, int i); - locks sem i from the set
- void lock_set_release(gen_lock_set_t* s, int i) - unlocks sem i from the set
-
-WARNING: - lock_set_init may fail for large number of sems (e.g. sysv).
- - signals are not treated! (some locks are "awakened" by the signals)
-*/
-
-#ifndef _lock_ops_h
-#define _lock_ops_h
-
-
-#ifdef FAST_LOCK
-#include "fastlock.h"
-
-typedef fl_lock_t gen_lock_t;
-
-
-#define lock_destroy(lock) /* do nothing */
-
-inline static gen_lock_t* lock_init(gen_lock_t* lock)
-{
- init_lock(*lock);
- return lock;
-}
-
-#define lock_get(lock) get_lock(lock)
-#define lock_release(lock) release_lock(lock)
-
-#elif defined USE_PTHREAD_MUTEX
-#include <pthread.h>
-
-typedef pthread_mutex_t gen_lock_t;
-
-#define lock_destroy(lock) /* do nothing */
-
-inline static gen_lock_t* lock_init(gen_lock_t* lock)
-{
- if (pthread_mutex_init(lock, 0)==0) return lock;
- else return 0;
-}
-
-#define lock_get(lock) pthread_mutex_lock(lock)
-#define lock_release(lock) pthread_mutex_unlock(lock)
-
-
-
-#elif defined USE_POSIX_SEM
-#include <semaphore.h>
-
-typedef sem_t gen_lock_t;
-
-#define lock_destroy(lock) /* do nothing */
-
-inline static gen_lock_t* lock_init(gen_lock_t* lock)
-{
- if (sem_init(lock, 1, 1)<0) return 0;
- return lock;
-}
-
-#define lock_get(lock) sem_wait(lock)
-#define lock_release(lock) sem_post(lock)
-
-
-#elif defined USE_SYSV_SEM
-#include <sys/ipc.h>
-#include <sys/sem.h>
-
-#include <errno.h>
-#include <string.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include "dprint.h"
-#include "globals.h" /* uid */
-
-#if ((defined(HAVE_UNION_SEMUN) || defined(__GNU_LIBRARY__) )&& !defined(_SEM_SEMUN_UNDEFINED))
-
- /* union semun is defined by including sem.h */
-#else
- /* according to X/OPEN we have to define it ourselves */
- union semun {
- int val; /* value for SETVAL */
- struct semid_ds *buf; /* buffer for IPC_STAT, IPC_SET */
- unsigned short int *array; /* array for GETALL, SETALL */
- struct seminfo *__buf; /* buffer for IPC_INFO */
- };
-#endif
-
-typedef int gen_lock_t;
-
-
-
-
-inline static gen_lock_t* lock_init(gen_lock_t* lock)
-{
- union semun su;
- int euid;
-
- euid=geteuid();
- if (uid && uid!=euid)
- seteuid(uid); /* set euid to the cfg. requested one */
- *lock=semget(IPC_PRIVATE, 1, 0700);
- if (uid && uid!=euid)
- seteuid(euid); /* restore it */
- if (*lock==-1) return 0;
- su.val=1;
- if (semctl(*lock, 0, SETVAL, su)==-1){
- /* init error*/
- return 0;
- }
- return lock;
-}
-
-inline static void lock_destroy(gen_lock_t* lock)
-{
- semctl(*lock, 0, IPC_RMID, (union semun)(int)0);
-}
-
-
-inline static void lock_get(gen_lock_t* lock)
-{
- struct sembuf sop;
-
- sop.sem_num=0;
- sop.sem_op=-1; /* down */
- sop.sem_flg=0;
-tryagain:
- if (semop(*lock, &sop, 1)==-1){
- if (errno==EINTR){
- DBG("lock_get: signal received while waiting for on a mutex\n");
- goto tryagain;
- }else{
- LOG(L_CRIT, "ERROR: lock_get sysv: %s (%d)\n", strerror(errno),
- errno);
- }
- }
-}
-
-inline static void lock_release(gen_lock_t* lock)
-{
- struct sembuf sop;
-
- sop.sem_num=0;
- sop.sem_op=1; /* up */
- sop.sem_flg=0;
-tryagain:
- if (semop(*lock, &sop, 1)==-1){
- if (errno==EINTR){
- /* very improbable*/
- DBG("lock_release: signal received while releasing a mutex\n");
- goto tryagain;
- }else{
- LOG(L_CRIT, "ERROR: lock_release sysv: %s (%d)\n",
- strerror(errno), errno);
- }
- }
-}
-
-
-#else
-#error "no locking method selected"
-#endif
-
-
-/* lock sets */
-
-#if defined(FAST_LOCK) || defined(USE_PTHREAD_MUTEX) || defined(USE_POSIX_SEM)
-#define GEN_LOCK_T_PREFERED
-
-struct gen_lock_set_t_ {
- long size;
- gen_lock_t* locks;
-}; /* must be aligned (32 bits or 64 depending on the arch)*/
-typedef struct gen_lock_set_t_ gen_lock_set_t;
-
-
-#define lock_set_destroy(lock_set) /* do nothing */
-
-inline static gen_lock_set_t* lock_set_init(gen_lock_set_t* s)
-{
- int r;
- for (r=0; r<s->size; r++) if (lock_init(&s->locks[r])==0) return 0;
- return s;
-}
-
-/* WARNING: no boundary checks!*/
-#define lock_set_get(set, i) lock_get(&set->locks[i])
-#define lock_set_release(set, i) lock_release(&set->locks[i])
-
-#elif defined(USE_SYSV_SEM)
-#undef GEN_LOCK_T_PREFERED
-
-struct gen_lock_set_t_ {
- int size;
- int semid;
-};
-
-
-typedef struct gen_lock_set_t_ gen_lock_set_t;
-inline static gen_lock_set_t* lock_set_init(gen_lock_set_t* s)
-{
- union semun su;
- int r;
- int euid;
-
- euid=geteuid();
- if (uid && uid!=euid)
- seteuid(uid); /* set euid to the cfg. requested one */
- s->semid=semget(IPC_PRIVATE, s->size, 0700);
- if (uid && uid!=euid)
- seteuid(euid); /* restore euid */
- if (s->semid==-1){
- LOG(L_CRIT, "ERROR: lock_set_init (SYSV): semget (..., %d, 0700)"
- " failed: %s\n",
- s->size, strerror(errno));
- return 0;
- }
- su.val=1;
- for (r=0; r<s->size; r++){
- if (semctl(s->semid, r, SETVAL, su)==-1){
- LOG(L_CRIT, "ERROR: lock_set_init (SYSV): semctl failed on sem %d"
- ": %s\n", r, strerror(errno));
- semctl(s->semid, 0, IPC_RMID, (union semun)(int)0);
- return 0;
- }
- }
- return s;
-}
-
-inline static void lock_set_destroy(gen_lock_set_t* s)
-{
- semctl(s->semid, 0, IPC_RMID, (union semun)(int)0);
-}
-
-inline static void lock_set_get(gen_lock_set_t* s, int n)
-{
- struct sembuf sop;
- sop.sem_num=n;
- sop.sem_op=-1; /* down */
- sop.sem_flg=0;
-tryagain:
- if (semop(s->semid, &sop, 1)==-1){
- if (errno==EINTR){
- DBG("lock_set_get: signal received while waiting on a mutex\n");
- goto tryagain;
- }else{
- LOG(L_CRIT, "ERROR: lock_set_get sysv: %s (%d)\n",
- strerror(errno), errno);
- }
- }
-}
-
-inline static void lock_set_release(gen_lock_set_t* s, int n)
-{
- struct sembuf sop;
- sop.sem_num=n;
- sop.sem_op=1; /* up */
- sop.sem_flg=0;
-tryagain:
- if (semop(s->semid, &sop, 1)==-1){
- if (errno==EINTR){
- /* very improbable */
- DBG("lock_set_release: signal received while releasing mutex\n");
- goto tryagain;
- }else{
- LOG(L_CRIT, "ERROR: lock_set_release sysv: %s (%d)\n",
- strerror(errno), errno);
- }
- }
-}
-#else
-#error "no lock set method selected"
-#endif
-
-
-#endif
Deleted: ser/trunk/locking.h
===================================================================
--- ser/trunk/locking.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/locking.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,73 +0,0 @@
-/* $Id: locking.h,v 1.10 2004/08/24 08:45:10 janakj Exp $ */
-/*
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/*
- * ser locking library
- *
- * 2002-12-16 created by andrei
- * 2003-02-20 s/gen_lock_t/gen_lock_t/ to avoid a type conflict
- * on solaris (andrei)
- * 2003-03-05 lock set support added for FAST_LOCK & SYSV (andrei)
- * 2003-03-06 split in two: lock_ops.h & lock_alloc.h, to avoid
- * shm_mem.h<->locking.h interdependency (andrei)
- * 2004-07-28 s/lock_set_t/gen_lock_set_t/ because of a type conflict
- * on darwin (andrei)
- *
-Implements (in lock_ops.h & lock_alloc.h):
-
- simple locks:
- -------------
- type: gen_lock_t
- gen_lock_t* lock_alloc(); - allocates a lock in shared mem.
- gen_lock_t* lock_init(gen_lock_t* lock); - inits the lock
- void lock_destroy(gen_lock_t* lock); - removes the lock (e.g sysv rmid)
- void lock_dealloc(gen_lock_t* lock); - deallocates the lock's shared m.
- void lock_get(gen_lock_t* lock); - lock (mutex down)
- void lock_release(gen_lock_t* lock); - unlock (mutex up)
-
- lock sets:
- ----------
- type: gen_lock_set_t
- gen_lock_set_t* lock_set_alloc(no) - allocs a lock set in shm.
- gen_lock_set_t* lock_set_init(gen_lock_set_t* set); - inits the lock set
- void lock_set_destroy(gen_lock_set_t* s); - removes the lock set
- void lock_set_dealloc(gen_lock_set_t* s); - deallocs the lock set shm.
- void lock_set_get(gen_lock_set_t* s, int i); - locks sem i from the set
- void lock_set_release(gen_lock_set_t* s, int i) - unlocks sem i from the set
-
-WARNING: - lock_set_init may fail for large number of sems (e.g. sysv).
- - signals are not treated! (some locks are "awakened" by the signals)
-*/
-
-#ifndef _locking_h
-#define _locking_h
-
-/* the order is important */
-#include "lock_ops.h"
-#include "lock_alloc.h"
-
-#endif
Deleted: ser/trunk/lump_struct.h
===================================================================
--- ser/trunk/lump_struct.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/lump_struct.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,127 +0,0 @@
-/*
- * $Id: lump_struct.h,v 1.2 2004/08/24 08:45:10 janakj Exp $
- *
- * adding/removing headers or any other data chunk from a message
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/* History:
- * --------
- * 2003-01-29 s/int/enum ... more convenient for gdb (jiri)
- * 2003-03-31 added subst lumps -- they expand in ip addr, port a.s.o (andrei)
- * 2003-04-01 added opt (condition) lumps (andrei)
- * 2003-04-02 added more subst lumps: SUBST_{SND,RCV}_ALL
- * => ip:port;transport=proto (andrei)
- * 2003-10-20 split from data_lump.h (andrei)
- *
- */
-
-
-#ifndef lump_struct_h
-#define lump_struct_h
-
-
-
-enum lump_op { LUMP_NOP=0, LUMP_DEL, LUMP_ADD, LUMP_ADD_SUBST, LUMP_ADD_OPT };
-enum lump_subst{ SUBST_NOP=0, /* do nothing */
- SUBST_RCV_IP, SUBST_SND_IP, /* add ip address */
- SUBST_RCV_PORT, SUBST_SND_PORT, /* add port no */
- SUBST_RCV_PROTO, SUBST_SND_PROTO,/* add protocol(udp,tcp,tls)*/
- SUBST_RCV_ALL, SUBST_SND_ALL /* ip:port;transport=proto */
- };
- /* Where:
- SND = sending, e.g the src ip of the outgoing message
- RCV = received e.g the dst ip of the original incoming msg,
- or the ip of the ser socket on which the msg was received
- For SUBST_{RCV,SND}_ALL, :port is added only if port!=5060
- and transport=proto only if proto!=udp
- */
-
-enum lump_conditions { COND_FALSE, /* always false */
- COND_TRUE, /* always true */
- COND_IF_DIFF_REALMS,/* true if RCV realm != SND realm */
- COND_IF_DIFF_AF, /* true if RCV af != SND af */
- COND_IF_DIFF_PROTO, /* true if RCV proto != SND proto */
- COND_IF_DIFF_PORT, /* true if RCV port != SND port */
- COND_IF_DIFF_IP, /* true if RCV ip != SND ip */
- COND_IF_RAND /* 50-50 random prob.of being true*/
- };
- /* Where:
- REALM= ip_addr:port:proto
- af = address family (ipv4 or ipv6)
- proto = protocol (tcp, udp, tls)
- */
-
-enum lump_flag { LUMPFLAG_NONE=0, LUMPFLAG_DUPED=1, LUMPFLAG_SHMEM=2 };
-
-
-struct lump{
- int type; /* VIA, OTHER, UNSPEC(=0), ... */
- enum lump_op op; /* DEL, ADD, NOP, UNSPEC(=0) */
-
- union{
- int offset; /* used for DEL, MODIFY */
- enum lump_subst subst; /*what to subst: ip addr, port, proto*/
- enum lump_conditions cond; /* condition for LUMP_ADD_OPT */
- char * value; /* used for ADD */
- }u;
- int len; /* length of this header field */
-
-
- struct lump* before; /* list of headers to be inserted in front of the
- current one */
- struct lump* after; /* list of headers to be inserted immediately after
- the current one */
-
- struct lump* next;
-
- enum lump_flag flags; /* additional hints for use from TM's shmem */
-};
-
-
-/*
- * hdrs must be kept sorted after their offset (DEL, NOP, UNSPEC)
- * and/or their position (ADD). E.g.:
- * - to delete header Z insert it in to the list according to its offset
- * and with op=DELETE
- * - if you want to add a new header X after a header Y, insert Y in the list
- * with op NOP and after it X (op ADD).
- * - if you want X before Y, insert X in Y's before list.
- * - if you want X to be the first header just put it first in hdr_lst.
- * -if you want to replace Y with X, insert Y with op=DELETE and then X with
- * op=ADD.
- * before and after must contain only ADD ops!
- *
- * Difference between "after" & "next" when Adding:
- * "after" forces the new header immediately after the current one while
- * "next" means another header can be inserted between them.
- *
- */
-
-/* frees the content of a lump struct */
-void free_lump(struct lump* l);
-/*frees an entire lump list, recursively */
-void free_lump_list(struct lump* lump_list);
-
-#endif
Deleted: ser/trunk/main.c
===================================================================
--- ser/trunk/main.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/main.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,1607 +0,0 @@
-/*
- * $Id: main.c,v 1.197.2.1 2005/07/25 16:56:24 andrei Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * History:
- * -------
- * 2002-01-29 argc/argv globalized via my_{argc|argv} (jiri)
- * 2003-01-23 mhomed added (jiri)
- * 2003-03-19 replaced all malloc/frees w/ pkg_malloc/pkg_free (andrei)
- * 2003-03-29 pkg cleaners for fifo and script callbacks introduced (jiri)
- * 2003-03-31 removed snmp part (obsolete & no place in core) (andrei)
- * 2003-04-06 child_init called in all processes (janakj)
- * 2003-04-08 init_mallocs split into init_{pkg,shm}_mallocs and
- * init_shm_mallocs called after cmd. line parsing (andrei)
- * 2003-04-15 added tcp_disable support (andrei)
- * 2003-05-09 closelog() before openlog to force opening a new fd
- * (needed on solaris) (andrei)
- * 2003-06-11 moved all signal handlers init. in install_sigs and moved it
- * after daemonize (so that we won't catch anymore our own
- * SIGCHLD generated when becoming session leader) (andrei)
- * changed is_main default value to 1 (andrei)
- * 2003-06-28 kill_all_children is now used instead of kill(0, sig)
- * see comment above it for explanations. (andrei)
- * 2003-06-29 replaced port_no_str snprintf w/ int2str (andrei)
- * 2003-10-10 added switch for config check (-c) (andrei)
- * 2003-10-24 converted to the new socket_info lists (andrei)
- * 2004-03-30 core dump is enabled by default
- * added support for increasing the open files limit (andrei)
- * 2004-04-28 sock_{user,group,uid,gid,mode} added
- * user2uid() & user2gid() added (andrei)
- * 2004-09-11 added timeout on children shutdown and final cleanup
- * (if it takes more than 60s => something is definitely wrong
- * => kill all or abort) (andrei)
- * force a shm_unlock before cleaning-up, in case we have a
- * crashed childvwhich still holds the lock (andrei)
- * 2004-12-02 removed -p, extended -l to support [proto:]address[:port],
- * added parse_phostport, parse_proto (andrei)
- * 2005-07-25 use sigaction for setting the signal handlers (andrei)
- */
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <ctype.h>
-#include <string.h>
-#include <netdb.h>
-#include <unistd.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <sys/utsname.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/mman.h>
-#include <fcntl.h>
-#include <sys/time.h>
-#include <sys/wait.h>
-#include <pwd.h>
-#include <grp.h>
-#include <signal.h>
-
-#include <sys/ioctl.h>
-#include <net/if.h>
-#ifdef HAVE_SYS_SOCKIO_H
-#include <sys/sockio.h>
-#endif
-
-#include "config.h"
-#include "dprint.h"
-#include "daemonize.h"
-#include "route.h"
-#include "udp_server.h"
-#include "globals.h"
-#include "mem/mem.h"
-#ifdef SHM_MEM
-#include "mem/shm_mem.h"
-#endif
-#include "sr_module.h"
-#include "timer.h"
-#include "parser/msg_parser.h"
-#include "ip_addr.h"
-#include "resolve.h"
-#include "parser/parse_hname2.h"
-#include "parser/digest/digest_parser.h"
-#include "fifo_server.h"
-#include "unixsock_server.h"
-#include "name_alias.h"
-#include "hash_func.h"
-#include "pt.h"
-#include "script_cb.h"
-#include "ut.h"
-#ifdef USE_TCP
-#include "tcp_init.h"
-#ifdef USE_TLS
-#include "tls/tls_init.h"
-#endif
-#endif
-
-
-
-#include "stats.h"
-
-#ifdef DEBUG_DMALLOC
-#include <dmalloc.h>
-#endif
-#include "version.h"
-
-static char id[]="@(#) $Id: main.c,v 1.197.2.1 2005/07/25 16:56:24 andrei Exp $";
-static char* version=SER_FULL_VERSION;
-static char* flags=SER_COMPILE_FLAGS;
-char compiled[]= __TIME__ " " __DATE__ ;
-
-
-static char help_msg[]= "\
-Usage: " NAME " -l address [-p port] [-l address [-p port]...] [options]\n\
-Options:\n\
- -f file Configuration file (default " CFG_FILE ")\n\
- -c Check configuration file for errors\n\
- -l address Listen on the specified address/interface (multiple -l\n\
- mean listening on more addresses). The address format is\n\
- [proto:]addr[:port], where proto=udp|tcp and \n\
- addr= host|ip_address|interface_name. E.g: -l locahost, \n\
- -l udp:127.0.0.1:5080, -l eth0:5062 The default behavior\n\
- is to listen on all the interfaces.\n\
- -n processes Number of child processes to fork per interface\n\
- (default: 8)\n\
- -r Use dns to check if is necessary to add a \"received=\"\n\
- field to a via\n\
- -R Same as `-r` but use reverse dns;\n\
- (to use both use `-rR`)\n\
- -v Turn on \"via:\" host checking when forwarding replies\n\
- -d Debugging mode (multiple -d increase the level)\n\
- -D Do not fork into daemon mode\n\
- -E Log to stderr\n"
-#ifdef USE_TCP
-" -T Disable tcp\n\
- -N Number of tcp child processes (default: equal to `-n`)\n"
-#endif
-" -V Version number\n\
- -h This help message\n\
- -b nr Maximum receive buffer size which will not be exceeded by\n\
- auto-probing procedure even if OS allows\n\
- -m nr Size of shared memory allocated in Megabytes\n\
- -w dir Change the working directory to \"dir\" (default \"/\")\n\
- -t dir Chroot to \"dir\"\n\
- -u uid Change uid \n\
- -g gid Change gid \n\
- -P file Create a pid file\n\
- -G file Create a pgid file\n\
- -i fifo_path Create a fifo (useful for monitoring " NAME ") \n\
- -x socket Create a unix domain socket \n"
-#ifdef STATS
-" -s file File to which statistics is dumped (disabled otherwise)\n"
-#endif
-;
-
-/* print compile-time constants */
-void print_ct_constants()
-{
-#ifdef ADAPTIVE_WAIT
- printf("ADAPTIVE_WAIT_LOOPS=%d, ", ADAPTIVE_WAIT_LOOPS);
-#endif
-/*
-#ifdef SHM_MEM
- printf("SHM_MEM_SIZE=%d, ", SHM_MEM_SIZE);
-#endif
-*/
- printf("MAX_RECV_BUFFER_SIZE %d, MAX_LISTEN %d,"
- " MAX_URI_SIZE %d, BUF_SIZE %d\n",
- MAX_RECV_BUFFER_SIZE, MAX_LISTEN, MAX_URI_SIZE,
- BUF_SIZE );
-}
-
-/* debugging function */
-/*
-void receive_stdin_loop()
-{
- #define BSIZE 1024
- char buf[BSIZE+1];
- int len;
-
- while(1){
- len=fread(buf,1,BSIZE,stdin);
- buf[len+1]=0;
- receive_msg(buf, len);
- printf("-------------------------\n");
- }
-}
-*/
-
-/* global vars */
-
-int own_pgid = 0; /* whether or not we have our own pgid (and it's ok
- to use kill(0, sig) */
-char* cfg_file = 0;
-unsigned int maxbuffer = MAX_RECV_BUFFER_SIZE; /* maximum buffer size we do
- not want to exceed during the
- auto-probing procedure; may
- be re-configured */
-int children_no = 0; /* number of children processing requests */
-#ifdef USE_TCP
-int tcp_children_no = 0;
-int tcp_disable = 0; /* 1 if tcp is disabled */
-#endif
-#ifdef USE_TLS
-int tls_disable = 0; /* 1 if tls is disabled */
-#endif
-struct process_table *pt=0; /*array with children pids, 0= main proc,
- alloc'ed in shared mem if possible*/
-int sig_flag = 0; /* last signal received */
-int debug = L_NOTICE;
-int dont_fork = 0;
-int log_stderr = 0;
-/* log facility (see syslog(3)) */
-int log_facility = LOG_DAEMON;
-int config_check = 0;
-/* check if reply first via host==us */
-int check_via = 0;
-/* shall use stateful synonym branches? faster but not reboot-safe */
-int syn_branch = 1;
-/* debugging level for memory stats */
-int memlog = L_DBG;
-/* should replies include extensive warnings? by default yes,
- good for trouble-shooting
-*/
-int sip_warning = 1;
-/* should localy-generated messages include server's signature?
- be default yes, good for trouble-shooting
-*/
-int server_signature=1;
-/* should ser try to locate outbound interface on multihomed
- * host? by default not -- too expensive
- */
-int mhomed=0;
-/* use dns and/or rdns or to see if we need to add
- a ;received=x.x.x.x to via: */
-int received_dns = 0;
-char* working_dir = 0;
-char* chroot_dir = 0;
-char* user=0;
-char* group=0;
-int uid = 0;
-int gid = 0;
-char* sock_user=0;
-char* sock_group=0;
-int sock_uid= -1;
-int sock_gid= -1;
-int sock_mode= S_IRUSR| S_IWUSR| S_IRGRP| S_IWGRP; /* rw-rw---- */
-
-/* more config stuff */
-int disable_core_dump=0; /* by default enabled */
-int open_files_limit=-1; /* don't touch it by default */
-/* a hint to reply modules whether they should send reply
- to IP advertised in Via or IP from which a request came
-*/
-int reply_to_via=0;
-
-#ifdef USE_MCAST
-int mcast_loopback = 0;
-int mcast_ttl = -1; /* if -1, don't touch it, use the default (usually 1) */
-#endif /* USE_MCAST */
-
-#if 0
-char* names[MAX_LISTEN]; /* our names */
-int names_len[MAX_LISTEN]; /* lengths of the names*/
-struct ip_addr addresses[MAX_LISTEN]; /* our ips */
-int addresses_no=0; /* number of names/ips */
-#endif
-struct socket_info* udp_listen=0;
-#ifdef USE_TCP
-struct socket_info* tcp_listen=0;
-#endif
-#ifdef USE_TLS
-struct socket_info* tls_listen=0;
-#endif
-struct socket_info* bind_address=0; /* pointer to the crt. proc.
- listening address*/
-struct socket_info* sendipv4; /* ipv4 socket to use when msg. comes from ipv6*/
-struct socket_info* sendipv6; /* same as above for ipv6 */
-#ifdef USE_TCP
-struct socket_info* sendipv4_tcp;
-struct socket_info* sendipv6_tcp;
-#endif
-#ifdef USE_TLS
-struct socket_info* sendipv4_tls;
-struct socket_info* sendipv6_tls;
-#endif
-
-unsigned short port_no=0; /* default port*/
-#ifdef USE_TLS
-unsigned short tls_port_no=0; /* default port */
-#endif
-
-struct host_alias* aliases=0; /* name aliases list */
-
-/* ipc related globals */
-int process_no = 0;
-/* process_bm_t process_bit = 0; */
-#ifdef ROUTE_SRV
-#endif
-
-/* cfg parsing */
-int cfg_errors=0;
-
-/* shared memory (in MB) */
-unsigned long shm_mem_size=SHM_MEM_SIZE * 1024 * 1024;
-
-/* export command-line to anywhere else */
-int my_argc;
-char **my_argv;
-
-#define MAX_FD 32 /* maximum number of inherited open file descriptors,
- (normally it shouldn't be bigger than 3) */
-
-
-extern FILE* yyin;
-extern int yyparse();
-
-
-int is_main=1; /* flag = is this the "main" process? */
-
-char* pid_file = 0; /* filename as asked by use */
-char* pgid_file = 0;
-
-
-/* call it before exiting; if show_status==1, mem status is displayed */
-void cleanup(show_status)
-{
- /*clean-up*/
- if (mem_lock)
- shm_unlock(); /* hack: force-unlock the shared memory lock in case
- some process crashed and let it locked; this will
- allow an almost gracious shutdown */
- destroy_modules();
-#ifdef USE_TCP
- destroy_tcp();
-#endif
-#ifdef USE_TLS
- destroy_tls();
-#endif
- destroy_timer();
- close_unixsock_server();
- destroy_fifo();
- destroy_script_cb();
-#ifdef PKG_MALLOC
- if (show_status){
- LOG(memlog, "Memory status (pkg):\n");
- pkg_status();
- }
-#endif
-#ifdef SHM_MEM
- if (pt) shm_free(pt);
- pt=0;
- if (show_status){
- LOG(memlog, "Memory status (shm):\n");
- shm_status();
- }
- /* zero all shmem alloc vars that we still use */
- shm_mem_destroy();
-#endif
- if (pid_file) unlink(pid_file);
- if (pgid_file) unlink(pgid_file);
-}
-
-
-/* tries to send a signal to all our processes
- * if daemonized is ok to send the signal to all the process group,
- * however if not daemonized we might end up sending the signal also
- * to the shell which launched us => most signals will kill it if
- * it's not in interactive mode and we don't want this. The non-daemonized
- * case can occur when an error is encountered before daemonize is called
- * (e.g. when parsing the config file) or when ser is started in "dont-fork"
- * mode. Sending the signal to all the processes in pt[] will not work
- * for processes forked from modules (which have no correspondent entry in
- * pt), but this can happen only in dont_fork mode (which is only for
- * debugging). So in the worst case + "dont-fork" we might leave some
- * zombies. -- andrei */
-static void kill_all_children(int signum)
-{
- int r;
-
- if (own_pgid) kill(0, signum);
- else if (pt)
- for (r=1; r<process_count(); r++)
- if (pt[r].pid) kill(pt[r].pid, signum);
-}
-
-
-
-#ifdef USE_SIGACTION
-static void (*set_sig_h(int sig, void (*handler) (int) ))(int)
-{
- struct sigaction act;
- struct sigaction old;
-
- memset(&act, 0, sizeof(act));
- act.sa_handler=handler;
- /*
- sigemptyset(&act.sa_mask);
- act.sa_flags=0;
- */
- LOG(L_CRIT, "setting signal %d to %p\n", sig, handler);
- /* sa_sigaction not set, we use sa_hanlder instead */
- return (sigaction (sig, &act, &old)==-1)?SIG_ERR:old.sa_handler;
-}
-#else
-#define set_sig_h signal
-#endif
-
-
-
-/* if this handler is called, a critical timeout has occured while
- * waiting for the children to finish => we should kill everything and exit */
-static void sig_alarm_kill(int signo)
-{
- kill_all_children(SIGKILL); /* this will kill the whole group
- including "this" process;
- for debugging replace with SIGABRT
- (but warning: it might generate lots
- of cores) */
-}
-
-
-/* like sig_alarm_kill, but the timeout has occured when cleaning up
- * => try to leave a core for future diagnostics */
-static void sig_alarm_abort(int signo)
-{
- /* LOG is not signal safe, but who cares, we are abort-ing anyway :-) */
- LOG(L_CRIT, "BUG: shutdown timeout triggered, dying...");
- abort();
-}
-
-
-
-void handle_sigs()
-{
- pid_t chld;
- int chld_status;
-
- switch(sig_flag){
- case 0: break; /* do nothing*/
- case SIGPIPE:
- /* SIGPIPE might be rarely received on use of
- exec module; simply ignore it
- */
- LOG(L_WARN, "WARNING: SIGPIPE received and ignored\n");
- break;
- case SIGINT:
- case SIGTERM:
- /* we end the program in all these cases */
- if (sig_flag==SIGINT)
- DBG("INT received, program terminates\n");
- else
- DBG("SIGTERM received, program terminates\n");
-
- /* first of all, kill the children also */
- kill_all_children(SIGTERM);
-
- /* Wait for all the children to die */
- while(wait(0) > 0);
-
- cleanup(1); /* cleanup & show status*/
- dprint("Thank you for flying " NAME "\n");
- exit(0);
- break;
-
- case SIGUSR1:
-#ifdef STATS
- dump_all_statistic();
-#endif
-#ifdef PKG_MALLOC
- LOG(memlog, "Memory status (pkg):\n");
- pkg_status();
-#endif
-#ifdef SHM_MEM
- LOG(memlog, "Memory status (shm):\n");
- shm_status();
-#endif
- break;
-
- case SIGCHLD:
- while ((chld=waitpid( -1, &chld_status, WNOHANG ))>0) {
- if (WIFEXITED(chld_status))
- LOG(L_INFO, "child process %d exited normally,"
- " status=%d\n", chld,
- WEXITSTATUS(chld_status));
- else if (WIFSIGNALED(chld_status)) {
- LOG(L_INFO, "child process %d exited by a signal"
- " %d\n", chld, WTERMSIG(chld_status));
-#ifdef WCOREDUMP
- LOG(L_INFO, "core was %sgenerated\n",
- WCOREDUMP(chld_status) ? "" : "not " );
-#endif
- }else if (WIFSTOPPED(chld_status))
- LOG(L_INFO, "child process %d stopped by a"
- " signal %d\n", chld,
- WSTOPSIG(chld_status));
- }
-#ifndef STOP_JIRIS_CHANGES
- if (dont_fork) {
- LOG(L_INFO, "INFO: dont_fork turned on, living on\n");
- break;
- }
- LOG(L_INFO, "INFO: terminating due to SIGCHLD\n");
-#endif
- /* exit */
- kill_all_children(SIGTERM);
- if (set_sig_h(SIGALRM, sig_alarm_kill) == SIG_ERR ) {
- LOG(L_ERR, "ERROR: could not install SIGALARM handler\n");
- /* continue, the process will die anyway if no
- * alarm is installed which is exactly what we want */
- }
- alarm(60); /* 1 minute close timeout */
- while(wait(0) > 0); /* wait for all the children to terminate*/
- set_sig_h(SIGALRM, sig_alarm_abort);
- cleanup(1); /* cleanup & show status*/
- alarm(0);
- set_sig_h(SIGALRM, SIG_IGN);
- DBG("terminating due to SIGCHLD\n");
- exit(0);
- break;
-
- case SIGHUP: /* ignoring it*/
- DBG("SIGHUP received, ignoring it\n");
- break;
- default:
- LOG(L_CRIT, "WARNING: unhandled signal %d\n", sig_flag);
- }
- sig_flag=0;
-}
-
-
-
-/* added by jku; allows for regular exit on a specific signal;
- good for profiling which only works if exited regularly and
- not by default signal handlers
- - modified by andrei: moved most of the stuff to handle_sigs,
- made it safer for the "fork" case
-*/
-static void sig_usr(int signo)
-{
-
-
- if (is_main){
- if (sig_flag==0) sig_flag=signo;
- else /* previous sig. not processed yet, ignoring? */
- return; ;
- if (dont_fork)
- /* only one proc, doing everything from the sig handler,
- unsafe, but this is only for debugging mode*/
- handle_sigs();
- }else{
- /* process the important signals */
- switch(signo){
- case SIGPIPE:
- LOG(L_INFO, "INFO: signal %d received\n", signo);
- break;
- case SIGINT:
- case SIGTERM:
- LOG(L_INFO, "INFO: signal %d received\n", signo);
- /* print memory stats for non-main too */
- #ifdef PKG_MALLOC
- LOG(memlog, "Memory status (pkg):\n");
- pkg_status();
- #endif
- exit(0);
- break;
- case SIGUSR1:
- /* statistics, do nothing, printed only from the main proc */
- break;
- /* ignored*/
- case SIGUSR2:
- case SIGHUP:
- break;
- case SIGCHLD:
-#ifndef STOP_JIRIS_CHANGES
- DBG("SIGCHLD received: "
- "we do not worry about grand-children\n");
-#else
- exit(0); /* terminate if one child died */
-#endif
- }
- }
-}
-
-
-
-/* install the signal handlers, returns 0 on success, -1 on error */
-int install_sigs()
-{
- /* added by jku: add exit handler */
- if (set_sig_h(SIGINT, sig_usr) == SIG_ERR ) {
- DPrint("ERROR: no SIGINT signal handler can be installed\n");
- goto error;
- }
- /* if we debug and write to a pipe, we want to exit nicely too */
- if (set_sig_h(SIGPIPE, sig_usr) == SIG_ERR ) {
- DPrint("ERROR: no SIGINT signal handler can be installed\n");
- goto error;
- }
- if (set_sig_h(SIGUSR1, sig_usr) == SIG_ERR ) {
- DPrint("ERROR: no SIGUSR1 signal handler can be installed\n");
- goto error;
- }
- if (set_sig_h(SIGCHLD , sig_usr) == SIG_ERR ) {
- DPrint("ERROR: no SIGCHLD signal handler can be installed\n");
- goto error;
- }
- if (set_sig_h(SIGTERM , sig_usr) == SIG_ERR ) {
- DPrint("ERROR: no SIGTERM signal handler can be installed\n");
- goto error;
- }
- if (set_sig_h(SIGHUP , sig_usr) == SIG_ERR ) {
- DPrint("ERROR: no SIGHUP signal handler can be installed\n");
- goto error;
- }
- if (set_sig_h(SIGUSR2 , sig_usr) == SIG_ERR ) {
- DPrint("ERROR: no SIGUSR2 signal handler can be installed\n");
- goto error;
- }
- return 0;
-error:
- return -1;
-}
-
-
-
-/* converts a username into uid:gid,
- * returns -1 on error & 0 on success */
-static int user2uid(int* uid, int* gid, char* user)
-{
- char* tmp;
- struct passwd *pw_entry;
-
- if (user){
- *uid=strtol(user, &tmp, 10);
- if ((tmp==0) ||(*tmp)){
- /* maybe it's a string */
- pw_entry=getpwnam(user);
- if (pw_entry==0){
- goto error;
- }
- *uid=pw_entry->pw_uid;
- if (gid) *gid=pw_entry->pw_gid;
- }
- return 0;
- }
-error:
- return -1;
-}
-
-
-
-/* converts a group name into a gid
- * returns -1 on error, 0 on success */
-static int group2gid(int* gid, char* group)
-{
- char* tmp;
- struct group *gr_entry;
-
- if (group){
- *gid=strtol(group, &tmp, 10);
- if ((tmp==0) ||(*tmp)){
- /* maybe it's a string */
- gr_entry=getgrnam(group);
- if (gr_entry==0){
- goto error;
- }
- *gid=gr_entry->gr_gid;
- }
- return 0;
- }
-error:
- return -1;
-}
-
-
-
-/* returns -1 on error, 0 on success
- * sets proto */
-static int parse_proto(unsigned char* s, long len, int* proto)
-{
-#define PROTO2UINT(a, b, c) (( (((unsigned int)(a))<<16)+ \
- (((unsigned int)(b))<<8)+ \
- ((unsigned int)(c)) ) | 0x20202020)
- unsigned int i;
- if (len!=3) return -1;
- i=PROTO2UINT(s[0], s[1], s[2]);
- switch(i){
- case PROTO2UINT('u', 'd', 'p'):
- *proto=PROTO_UDP;
- break;
-#ifdef USE_TCP
- case PROTO2UINT('t', 'c', 'p'):
- *proto=PROTO_TCP;
- break;
-#ifdef USE_TLS
- case PROTO2UINT('t', 'l', 's'):
- *proto=PROTO_TLS;
- break;
-#endif
-#endif
- default:
- return -1;
- }
- return 0;
-}
-
-
-
-/*
- * parses [proto:]host[:port]
- * where proto= udp|tcp|tls
- * returns 0 on success and -1 on failure
- */
-static int parse_phostport(char* s, char** host, int* hlen, int* port,
- int* proto)
-{
- char* first; /* first ':' occurrence */
- char* second; /* second ':' occurrence */
- char* p;
- int bracket;
- char* tmp;
-
- first=second=0;
- bracket=0;
-
- /* find the first 2 ':', ignoring possible ipv6 addresses
- * (substrings between [])
- */
- for(p=s; *p; p++){
- switch(*p){
- case '[':
- bracket++;
- if (bracket>1) goto error_brackets;
- break;
- case ']':
- bracket--;
- if (bracket<0) goto error_brackets;
- break;
- case ':':
- if (bracket==0){
- if (first==0) first=p;
- else if( second==0) second=p;
- else goto error_colons;
- }
- break;
- }
- }
- if (p==s) return -1;
- if (*(p-1)==':') goto error_colons;
-
- if (first==0){ /* no ':' => only host */
- *host=s;
- *hlen=(int)(p-s);
- *port=0;
- *proto=0;
- return 0;
- }
- if (second){ /* 2 ':' found => check if valid */
- if (parse_proto((unsigned char*)s, first-s, proto)<0) goto error_proto;
- *port=strtol(second+1, &tmp, 10);
- if ((tmp==0)||(*tmp)||(tmp==second+1)) goto error_port;
- *host=first+1;
- *hlen=(int)(second-*host);
- return 0;
- }
- /* only 1 ':' found => it's either proto:host or host:port */
- *port=strtol(first+1, &tmp, 10);
- if ((tmp==0)||(*tmp)||(tmp==first+1)){
- /* invalid port => it's proto:host */
- if (parse_proto((unsigned char*)s, first-s, proto)<0) goto error_proto;
- *port=0;
- *host=first+1;
- *hlen=(int)(p-*host);
- }else{
- /* valid port => its host:port */
- *proto=0;
- *host=s;
- *hlen=(int)(first-*host);
- }
- return 0;
-error_brackets:
- LOG(L_ERR, "ERROR: parse_phostport: too many brackets in %s\n", s);
- return -1;
-error_colons:
- LOG(L_ERR, "ERROR: parse_phostport: too many colons in %s\n", s);
- return -1;
-error_proto:
- LOG(L_ERR, "ERROR: parse_phostport: bad protocol in %s\n", s);
- return -1;
-error_port:
- LOG(L_ERR, "ERROR: parse_phostport: bad port number in %s\n", s);
- return -1;
-}
-
-
-
-/* main loop */
-int main_loop()
-{
- int i;
- pid_t pid;
- struct socket_info* si;
-#ifdef USE_TCP
- int sockfd[2];
-#endif
-
- /* one "main" process and n children handling i/o */
-
- is_main=0;
- if (dont_fork){
-#ifdef STATS
- setstats( 0 );
-#endif
- if (udp_listen==0){
- LOG(L_ERR, "ERROR: no fork mode requires at least one"
- " udp listen address, exiting...\n");
- goto error;
- }
- /* only one address, we ignore all the others */
- if (udp_init(udp_listen)==-1) goto error;
- bind_address=udp_listen;
- sendipv4=bind_address;
- sendipv6=bind_address; /*FIXME*/
- if (udp_listen->next){
- LOG(L_WARN, "WARNING: using only the first listen address"
- " (no fork)\n");
- }
- /* initialize fifo server -- we need to open the fifo before
- * do_suid() and start the fifo server after all the socket
- * are initialized, to inherit them*/
- if (init_fifo_server()<0) {
- LOG(L_ERR, "initializing fifo server failed\n");
- goto error;
- }
- /* Initialize Unix domain socket server */
- if (init_unixsock_socket()<0) {
- LOG(L_ERR, "Error while creating unix domain sockets\n");
- goto error;
- }
- if (do_suid()==-1) goto error; /* try to drop privileges */
- /* process_no now initialized to zero -- increase from now on
- as new processes are forked (while skipping 0 reserved for main
- */
-
- /* we need another process to act as the timer*/
-#ifdef USE_TCP
- /* if we are using tcp we always need a timer process,
- * we cannot count on select timeout to measure time
- * (it works only on linux)
- */
- if ((!tcp_disable)||(timer_list))
-#else
- if (timer_list)
-#endif
- {
- process_no++;
- if ((pid=fork())<0){
- LOG(L_CRIT, "ERROR: main_loop: Cannot fork\n");
- goto error;
- }
-
- if (pid==0){
- /* child */
- /* timer!*/
- /* process_bit = 0; */
- if (init_child(PROC_TIMER) < 0) {
- LOG(L_ERR, "timer: init_child failed\n");
- goto error;
- }
- for(;;){
- sleep(TIMER_TICK);
- timer_ticker();
- }
- }else{
- pt[process_no].pid=pid; /*should be shared mem anyway*/
- strncpy(pt[process_no].desc, "timer", MAX_PT_DESC );
- }
- }
-
- /* if configured, start a server for accepting FIFO commands,
- * we need to do it after all the sockets are initialized, to
- * inherit them*/
- if (start_fifo_server()<0) {
- LOG(L_ERR, "starting fifo server failed\n");
- goto error;
- }
-
- if (init_unixsock_children()<0) {
- LOG(L_ERR, "Error while initializing Unix domain socket server\n");
- goto error;
- }
-
- /* main process, receive loop */
- process_no=0; /*main process number*/
- pt[process_no].pid=getpid();
- snprintf(pt[process_no].desc, MAX_PT_DESC,
- "stand-alone receiver @ %s:%s",
- bind_address->name.s, bind_address->port_no_str.s );
-
-
- /* We will call child_init even if we
- * do not fork - and it will be called with rank 1 because
- * in fact we behave like a child, not like main process
- */
-
- if (init_child(1) < 0) {
- LOG(L_ERR, "main_dontfork: init_child failed\n");
- goto error;
- }
-
- is_main=1; /* hack 42: call init_child with is_main=0 in case
- some modules wants to fork a child */
-
- return udp_rcv_loop();
- }else{
- /* process_no now initialized to zero -- increase from now on
- as new processes are forked (while skipping 0 reserved for main )
- */
-
- for(si=udp_listen;si;si=si->next){
- /* create the listening socket (for each address)*/
- /* udp */
- if (udp_init(si)==-1) goto error;
- /* get first ipv4/ipv6 socket*/
- if ((si->address.af==AF_INET)&&
- ((sendipv4==0)||(sendipv4->flags&SI_IS_LO)))
- sendipv4=si;
- #ifdef USE_IPV6
- if((sendipv6==0)&&(si->address.af==AF_INET6))
- sendipv6=si;
- #endif
- }
-#ifdef USE_TCP
- if (!tcp_disable){
- for(si=tcp_listen; si; si=si->next){
- /* same thing for tcp */
- if (tcp_init(si)==-1) goto error;
- /* get first ipv4/ipv6 socket*/
- if ((si->address.af==AF_INET)&&
- ((sendipv4_tcp==0)||(sendipv4_tcp->flags&SI_IS_LO)))
- sendipv4_tcp=si;
- #ifdef USE_IPV6
- if((sendipv6_tcp==0)&&(si->address.af==AF_INET6))
- sendipv6_tcp=si;
- #endif
- }
- }
-#ifdef USE_TLS
- if (!tls_disable){
- for(si=tls_listen; si; si=si->next){
- /* same as for tcp*/
- if (tls_init(si)==-1) goto error;
- /* get first ipv4/ipv6 socket*/
- if ((si->address.af==AF_INET)&&
- ((sendipv4_tls==0)||(sendipv4_tls->flags&SI_IS_LO)))
- sendipv4_tls=si;
- #ifdef USE_IPV6
- if((sendipv6_tls==0)&&(si->address.af==AF_INET6))
- sendipv6_tls=si;
- #endif
- }
- }
-#endif /* USE_TLS */
-#endif /* USE_TCP */
-
- /* initialize fifo server -- we need to open the fifo before
- * do_suid() and start the fifo server after all the socket
- * are initialized, to inherit them*/
- if (init_fifo_server()<0) {
- LOG(L_ERR, "initializing fifo server failed\n");
- goto error;
- }
- /* Initialize Unix domain socket server */
- /* Create the unix domain sockets */
- if (init_unixsock_socket()<0) {
- LOG(L_ERR, "ERROR: Could not create unix domain sockets\n");
- goto error;
- }
-
- /* all processes should have access to all the sockets (for sending)
- * so we open all first*/
- if (do_suid()==-1) goto error; /* try to drop privileges */
-
- /* if configured, start a server for accepting FIFO commands,
- * we need to do it after all the sockets are initialized, to
- * inherit them*/
- if (start_fifo_server()<0) {
- LOG(L_ERR, "starting fifo server failed\n");
- goto error;
- }
- /* Spawn children listening on unix domain socket if and only if
- * the unix domain socket server has not been disabled (i == 0)
- */
- if (init_unixsock_children()<0) {
- LOG(L_ERR, "ERROR: Could not initialize unix domain socket server\n");
- goto error;
- }
-
- /* udp processes */
- for(si=udp_listen; si; si=si->next){
- for(i=0;i<children_no;i++){
- process_no++;
-#ifdef USE_TCP
- if(!tcp_disable){
- if (socketpair(AF_UNIX, SOCK_STREAM, 0, sockfd)<0){
- LOG(L_ERR, "ERROR: main_loop: socketpair failed: %s\n",
- strerror(errno));
- goto error;
- }
- }
-#endif
- if ((pid=fork())<0){
- LOG(L_CRIT, "main_loop: Cannot fork\n");
- goto error;
- }else if (pid==0){
- /* child */
-#ifdef USE_TCP
- if (!tcp_disable){
- close(sockfd[0]);
- unix_tcp_sock=sockfd[1];
- }
-#endif
- bind_address=si; /* shortcut */
- if (init_child(i + 1) < 0) {
- LOG(L_ERR, "init_child failed\n");
- goto error;
- }
-#ifdef STATS
- setstats( i+r*children_no );
-#endif
- return udp_rcv_loop();
- }else{
- pt[process_no].pid=pid; /*should be in shared mem.*/
- snprintf(pt[process_no].desc, MAX_PT_DESC,
- "receiver child=%d sock= %s:%s", i,
- si->name.s, si->port_no_str.s );
-#ifdef USE_TCP
- if (!tcp_disable){
- close(sockfd[1]);
- pt[process_no].unix_sock=sockfd[0];
- pt[process_no].idx=-1; /* this is not a "tcp"
- process*/
- }
-#endif
- }
- }
- /*parent*/
- /*close(udp_sock)*/; /*if it's closed=>sendto invalid fd errors?*/
- }
- }
-
- /*this is the main process*/
- bind_address=0; /* main proc -> it shouldn't send anything, */
-
-
-#ifdef USE_TCP
- /* if we are using tcp we always need the timer */
- if ((!tcp_disable)||(timer_list))
-#else
- if (timer_list)
-#endif
- {
-#ifdef USE_TCP
- if (!tcp_disable){
- if (socketpair(AF_UNIX, SOCK_STREAM, 0, sockfd)<0){
- LOG(L_ERR, "ERROR: main_loop: socketpair failed: %s\n",
- strerror(errno));
- goto error;
- }
- }
-#endif
- /* fork again for the attendant process*/
- process_no++;
- if ((pid=fork())<0){
- LOG(L_CRIT, "main_loop: cannot fork timer process\n");
- goto error;
- }else if (pid==0){
- /* child */
- /* is_main=0; */
-#ifdef USE_TCP
- if (!tcp_disable){
- close(sockfd[0]);
- unix_tcp_sock=sockfd[1];
- }
-#endif
- if (init_child(PROC_TIMER) < 0) {
- LOG(L_ERR, "timer: init_child failed\n");
- goto error;
- }
-
- for(;;){
- /* debug: instead of doing something useful */
- /* (placeholder for timers, etc.) */
- sleep(TIMER_TICK);
- /* if we received a signal => TIMER_TICK may have not elapsed*/
- timer_ticker();
- }
- }else{
- pt[process_no].pid=pid;
- strncpy(pt[process_no].desc, "timer", MAX_PT_DESC );
-#ifdef USE_TCP
- if(!tcp_disable){
- close(sockfd[1]);
- pt[process_no].unix_sock=sockfd[0];
- pt[process_no].idx=-1; /* this is not a "tcp" process*/
- }
-#endif
- }
- }
-#ifdef USE_TCP
- if (!tcp_disable){
- /* start tcp & tls receivers */
- if (tcp_init_children()<0) goto error;
- /* start tcp+tls master proc */
- process_no++;
- if ((pid=fork())<0){
- LOG(L_CRIT, "main_loop: cannot fork tcp main process\n");
- goto error;
- }else if (pid==0){
- /* child */
- /* is_main=0; */
- if (init_child(PROC_TCP_MAIN) < 0) {
- LOG(L_ERR, "tcp_main: error in init_child\n");
- goto error;
- }
- tcp_main_loop();
- }else{
- pt[process_no].pid=pid;
- strncpy(pt[process_no].desc, "tcp main process", MAX_PT_DESC );
- pt[process_no].unix_sock=-1;
- pt[process_no].idx=-1; /* this is not a "tcp" process*/
- unix_tcp_sock=-1;
- }
- }
-#endif
- /* main */
- pt[0].pid=getpid();
- strncpy(pt[0].desc, "attendant", MAX_PT_DESC );
-#ifdef USE_TCP
- if(!tcp_disable){
- pt[process_no].unix_sock=-1;
- pt[process_no].idx=-1; /* this is not a "tcp" process*/
- unix_tcp_sock=-1;
- }
-#endif
- /*DEBUG- remove it*/
-#ifdef DEBUG
- fprintf(stderr, "\n% 3d processes (%3d), % 3d children * "
- "listening addresses + tcp listeners + tls listeners"
- "+ main + fifo %s\n", process_no+1, process_count(), children_no,
- (timer_list)?"+ timer":"");
- for (r=0; r<=process_no; r++){
- fprintf(stderr, "% 3d % 5d - %s\n", r, pt[r].pid, pt[r].desc);
- }
-#endif
- process_no=0;
- /* process_bit = 0; */
- is_main=1;
-
- if (init_child(PROC_MAIN) < 0) {
- LOG(L_ERR, "main: error in init_child\n");
- goto error;
- }
- for(;;){
- pause();
- handle_sigs();
- }
-
-
- /*return 0; */
- error:
- is_main=1; /* if we are here, we are the "main process",
- any forked children should exit with exit(-1) and not
- ever use return */
- return -1;
-
-}
-
-
-
-
-int main(int argc, char** argv)
-{
-
- FILE* cfg_stream;
- int c,r;
- char *tmp;
- int tmp_len;
- int port;
- int proto;
- char *options;
- int ret;
- unsigned int seed;
- int rfd;
-
- /*init*/
- ret=-1;
- my_argc=argc; my_argv=argv;
-
- /*init pkg mallocs (before parsing cfg or cmd line !)*/
- if (init_pkg_mallocs()==-1)
- goto error;
-
-#ifdef DBG_MSG_QA
- fprintf(stderr, "WARNING: ser startup: "
- "DBG_MSG_QA enabled, ser may exit abruptly\n");
-#endif
-
-
-
- /* process command line (get port no, cfg. file path etc) */
- opterr=0;
- options=
-#ifdef STATS
- "s:"
-#endif
- "f:cm:b:l:n:N:rRvdDETVhw:t:u:g:P:G:i:x:";
-
- while((c=getopt(argc,argv,options))!=-1){
- switch(c){
- case 'f':
- cfg_file=optarg;
- break;
- case 'c':
- config_check=1;
- log_stderr=1; /* force stderr logging */
- break;
- case 's':
- #ifdef STATS
- stat_file=optarg;
- #endif
- break;
- case 'm':
- shm_mem_size=strtol(optarg, &tmp, 10) * 1024 * 1024;
- if (tmp &&(*tmp)){
- fprintf(stderr, "bad shmem size number: -m %s\n",
- optarg);
- goto error;
- };
- LOG(L_INFO, "ser: shared memory: %ld bytes\n",
- shm_mem_size );
- break;
-
- case 'b':
- maxbuffer=strtol(optarg, &tmp, 10);
- if (tmp &&(*tmp)){
- fprintf(stderr, "bad max buffer size number: -p %s\n",
- optarg);
- goto error;
- }
- break;
- case 'l':
- if (parse_phostport(optarg, &tmp, &tmp_len,
- &port, &proto)<0){
- fprintf(stderr, "bad -l address specifier: %s\n",
- optarg);
- goto error;
- }
- tmp[tmp_len]=0; /* null terminate the host */
- /* add a new addr. to our address list */
- if (add_listen_iface(tmp, port, proto, 0)!=0){
- fprintf(stderr, "failed to add new listen address\n");
- goto error;
- }
- break;
- case 'n':
- children_no=strtol(optarg, &tmp, 10);
- if ((tmp==0) ||(*tmp)){
- fprintf(stderr, "bad process number: -n %s\n",
- optarg);
- goto error;
- }
- break;
- case 'v':
- check_via=1;
- break;
- case 'r':
- received_dns|=DO_DNS;
- break;
- case 'R':
- received_dns|=DO_REV_DNS;
- case 'd':
- debug++;
- break;
- case 'D':
- dont_fork=1;
- break;
- case 'E':
- log_stderr=1;
- break;
- case 'T':
-#ifdef USE_TCP
- tcp_disable=1;
-#else
- fprintf(stderr,"WARNING: tcp support not compiled in\n");
-#endif
- break;
- case 'N':
-#ifdef USE_TCP
- tcp_children_no=strtol(optarg, &tmp, 10);
- if ((tmp==0) ||(*tmp)){
- fprintf(stderr, "bad process number: -N %s\n",
- optarg);
- goto error;
- }
-#else
- fprintf(stderr,"WARNING: tcp support not compiled in\n");
-#endif
- break;
- case 'V':
- printf("version: %s\n", version);
- printf("flags: %s\n", flags );
- print_ct_constants();
- printf("%s\n",id);
- printf("%s compiled on %s with %s\n", __FILE__,
- compiled, COMPILER );
-
- exit(0);
- break;
- case 'h':
- printf("version: %s\n", version);
- printf("%s",help_msg);
- exit(0);
- break;
- case 'w':
- working_dir=optarg;
- break;
- case 't':
- chroot_dir=optarg;
- break;
- case 'u':
- user=optarg;
- break;
- case 'g':
- group=optarg;
- break;
- case 'P':
- pid_file=optarg;
- break;
- case 'G':
- pgid_file=optarg;
- break;
- case 'i':
- fifo=optarg;
- break;
- case 'x':
- unixsock_name=optarg;
- break;
- case '?':
- if (isprint(optopt))
- fprintf(stderr, "Unknown option `-%c´.\n", optopt);
- else
- fprintf(stderr,
- "Unknown option character `\\x%x´.\n",
- optopt);
- goto error;
- case ':':
- fprintf(stderr,
- "Option `-%c´ requires an argument.\n",
- optopt);
- goto error;
- default:
- abort();
- }
- }
-
- /* fill missing arguments with the default values*/
- if (cfg_file==0) cfg_file=CFG_FILE;
-
- /* load config file or die */
- cfg_stream=fopen (cfg_file, "r");
- if (cfg_stream==0){
- fprintf(stderr, "ERROR: loading config file(%s): %s\n", cfg_file,
- strerror(errno));
- goto error;
- }
-
- /* seed the prng */
- /* try to use /dev/urandom if possible */
- seed=0;
- if ((rfd=open("/dev/urandom", O_RDONLY))!=-1){
-try_again:
- if (read(rfd, (void*)&seed, sizeof(seed))==-1){
- if (errno==EINTR) goto try_again; /* interrupted by signal */
- LOG(L_WARN, "WARNING: could not read from /dev/urandom (%d)\n",
- errno);
- }
- DBG("read %u from /dev/urandom\n", seed);
- close(rfd);
- }else{
- LOG(L_WARN, "WARNING: could not open /dev/urandom (%d)\n", errno);
- }
- seed+=getpid()+time(0);
- DBG("seeding PRNG with %u\n", seed);
- srand(seed);
- DBG("test random number %u\n", rand());
-
-
-
- /* register a diagnostic FIFO command - moved to fifo server - bogdan
- if (register_core_fifo()<0) {
- LOG(L_CRIT, "unable to register core FIFO commands\n");
- goto error;
- }*/
-
- /*register builtin modules*/
- register_builtin_modules();
-
- yyin=cfg_stream;
- if ((yyparse()!=0)||(cfg_errors)){
- fprintf(stderr, "ERROR: bad config file (%d errors)\n", cfg_errors);
- goto error;
- }
-
-
-
- print_rl();
-
- /* fix parameters */
- if (port_no<=0) port_no=SIP_PORT;
-#ifdef USE_TLS
- if (tls_port_no<=0) tls_port_no=SIPS_PORT;
-#endif
-
-
- if (children_no<=0) children_no=CHILD_NO;
-#ifdef USE_TCP
- if (!tcp_disable){
- if (tcp_children_no<=0) tcp_children_no=children_no;
- }
-#endif
-
- if (working_dir==0) working_dir="/";
-
- /* get uid/gid */
- if (user){
- if (user2uid(&uid, &gid, user)<0){
- fprintf(stderr, "bad user name/uid number: -u %s\n", user);
- goto error;
- }
- }
- if (group){
- if (group2gid(&gid, group)<0){
- fprintf(stderr, "bad group name/gid number: -u %s\n", group);
- goto error;
- }
- }
- /* fix sock/fifo uid/gid */
- if (sock_user){
- if (user2uid(&sock_uid, 0, sock_user)<0){
- fprintf(stderr, "bad socket user name/uid number %s\n", user);
- goto error;
- }
- }
- if (sock_group){
- if (group2gid(&sock_gid, sock_group)<0){
- fprintf(stderr, "bad group name/gid number: -u %s\n", group);
- goto error;
- }
- }
- if (fix_all_socket_lists()!=0){
- fprintf(stderr, "failed to initialize list addresses\n");
- goto error;
- }
- /* print all the listen addresses */
- printf("Listening on \n");
- print_all_socket_lists();
- printf("Aliases: \n");
- /*print_aliases();*/
- print_aliases();
- printf("\n");
-
- if (dont_fork){
- fprintf(stderr, "WARNING: no fork mode %s\n",
- (udp_listen)?(
- (udp_listen->next)?" and more than one listen address found"
- "(will use only the the first one)":""
- ):"and no udp listen address found" );
- }
- if (config_check){
- fprintf(stderr, "config file ok, exiting...\n");
- goto error;
- }
-
-
- /*init shm mallocs
- * this must be here
- * -to allow setting shm mem size from the command line
- * => if shm_mem should be settable from the cfg file move
- * everything after
- * -it must be also before init_timer and init_tcp
- * -it must be after we know uid (so that in the SYSV sems case,
- * the sems will have the correct euid)
- * --andrei */
- if (init_shm_mallocs()==-1)
- goto error;
- /*init timer, before parsing the cfg!*/
- if (init_timer()<0){
- LOG(L_CRIT, "could not initialize timer, exiting...\n");
- goto error;
- }
-
-#ifdef USE_TCP
- if (!tcp_disable){
- /*init tcp*/
- if (init_tcp()<0){
- LOG(L_CRIT, "could not initialize tcp, exiting...\n");
- goto error;
- }
- }
-#ifdef USE_TLS
- if (!tls_disable){
- /* init tls*/
- if (init_tls()<0){
- LOG(L_CRIT, "could not initialize tls, exiting...\n");
- goto error;
- }
- }
-#endif /* USE_TLS */
-#endif /* USE_TCP */
- /* init_daemon? */
- if (!dont_fork){
- if ( daemonize(argv[0]) <0 ) goto error;
- }
- if (install_sigs() != 0){
- fprintf(stderr, "ERROR: could not install the signal handlers\n");
- goto error;
- }
-
-
- /*alloc pids*/
-#ifdef SHM_MEM
- pt=shm_malloc(sizeof(struct process_table)*process_count());
-#else
- pt=pkg_malloc(sizeof(struct process_table)*process_count());
-#endif
- if (pt==0){
- fprintf(stderr, "ERROR: out of memory\n");
- goto error;
- }
- memset(pt, 0, sizeof(struct process_table)*process_count());
-
- if (disable_core_dump) set_core_dump(0, 0);
- else set_core_dump(1, shm_mem_size+PKG_MEM_POOL_SIZE+4*1024*1024);
- if (open_files_limit>0){
- if(increase_open_fds(open_files_limit)<0){
- fprintf(stderr, "ERROR: error could not increase file limits\n");
- goto error;
- }
- }
-
- if (init_modules() != 0) {
- fprintf(stderr, "ERROR: error while initializing modules\n");
- goto error;
- }
- /* fix routing lists */
- if ( (r=fix_rls())!=0){
- fprintf(stderr, "ERROR: error %d while trying to fix configuration\n",
- r);
- goto error;
- };
-
-#ifdef STATS
- if (init_stats( dont_fork ? 1 : children_no )==-1) goto error;
-#endif
-
- ret=main_loop();
- /*kill everything*/
- kill_all_children(SIGTERM);
- /*clean-up*/
- cleanup(0);
- return ret;
-
-error:
- /*kill everything*/
- kill_all_children(SIGTERM);
- /*clean-up*/
- cleanup(0);
- return -1;
-
-}
-
Deleted: ser/trunk/md5.c
===================================================================
--- ser/trunk/md5.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/md5.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,357 +0,0 @@
-/*
-
-$Id: md5.c,v 1.4 2002/09/19 12:23:52 jku Rel $
-
-MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm
-
-Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
-rights reserved.
-
-License to copy and use this software is granted provided that it
-is identified as the "RSA Data Security, Inc. MD5 Message-Digest
-Algorithm" in all material mentioning or referencing this software
-or this function.
-
-License is also granted to make and use derivative works provided
-that such works are identified as "derived from the RSA Data
-Security, Inc. MD5 Message-Digest Algorithm" in all material
-mentioning or referencing the derived work.
-
-RSA Data Security, Inc. makes no representations concerning either
-the merchantability of this software or the suitability of this
-software for any particular purpose. It is provided "as is"
-without express or implied warranty of any kind.
-
-These notices must be retained in any copies of any part of this
-documentation and/or software.
- */
-
-
-#include <string.h>
-#include "md5global.h"
-#include "md5.h"
-
-
-#define USE_MEM
-
-/* Constants for MD5Transform routine.
- */
-
-
-
-
-#define S11 7
-#define S12 12
-#define S13 17
-#define S14 22
-#define S21 5
-#define S22 9
-#define S23 14
-#define S24 20
-#define S31 4
-#define S32 11
-#define S33 16
-#define S34 23
-#define S41 6
-#define S42 10
-#define S43 15
-#define S44 21
-
-static void MD5Transform PROTO_LIST ((UINT4 [4], unsigned char [64]));
-static void Encode PROTO_LIST
- ((unsigned char *, UINT4 *, unsigned int));
-static void Decode PROTO_LIST
- ((UINT4 *, unsigned char *, unsigned int));
-static void MD5_memcpy PROTO_LIST ((POINTER, POINTER, unsigned int));
-static void MD5_memset PROTO_LIST ((POINTER, int, unsigned int));
-
-static unsigned char PADDING[64] = {
- 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-/* F, G, H and I are basic MD5 functions.
- */
-#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
-#define G(x, y, z) (((x) & (z)) | ((y) & (~z)))
-#define H(x, y, z) ((x) ^ (y) ^ (z))
-#define I(x, y, z) ((y) ^ ((x) | (~z)))
-
-/* ROTATE_LEFT rotates x left n bits.
- */
-#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
-
-/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4.
-Rotation is separate from addition to prevent recomputation.
- */
-#define FF(a, b, c, d, x, s, ac) { \
- (a) += F ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
- }
-#define GG(a, b, c, d, x, s, ac) { \
- (a) += G ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
- }
-#define HH(a, b, c, d, x, s, ac) { \
- (a) += H ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
- }
-#define II(a, b, c, d, x, s, ac) { \
- (a) += I ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
- }
-
-/* MD5 initialization. Begins an MD5 operation, writing a new context.
- */
-void MD5Init (context)
-MD5_CTX *context; /* context */
-{
- context->count[0] = context->count[1] = 0;
- /* Load magic initialization constants.
-*/
- context->state[0] = 0x67452301;
- context->state[1] = 0xefcdab89;
- context->state[2] = 0x98badcfe;
- context->state[3] = 0x10325476;
-}
-
-/* MD5 block update operation. Continues an MD5 message-digest
- operation, processing another message block, and updating the
- context.
- */
-void MD5Update (context, input, inputLen)
-MD5_CTX *context; /* context */
-unsigned char *input; /* input block */
-unsigned int inputLen; /* length of input block */
-{
- unsigned int i, index, partLen;
-
- /* Compute number of bytes mod 64 */
- index = (unsigned int)((context->count[0] >> 3) & 0x3F);
-
- /* Update number of bits */
- if ((context->count[0] += ((UINT4)inputLen << 3))
-
- < ((UINT4)inputLen << 3))
- context->count[1]++;
- context->count[1] += ((UINT4)inputLen >> 29);
-
- partLen = 64 - index;
-
- /* Transform as many times as possible.
-*/
- if (inputLen >= partLen) {
- MD5_memcpy
- ((POINTER)&context->buffer[index], (POINTER)input, partLen);
- MD5Transform (context->state, context->buffer);
-
- for (i = partLen; i + 63 < inputLen; i += 64)
- MD5Transform (context->state, &input[i]);
-
- index = 0;
- }
- else
- i = 0;
-
- /* Buffer remaining input */
- MD5_memcpy
- ((POINTER)&context->buffer[index], (POINTER)&input[i],
- inputLen-i);
-}
-
-/* MD5 finalization. Ends an MD5 message-digest operation, writing the
- the message digest and zeroizing the context.
- */
-void MD5Final (digest, context)
-unsigned char digest[16]; /* message digest */
-MD5_CTX *context; /* context */
-{
- unsigned char bits[8];
- unsigned int index, padLen;
-
- /* Save number of bits */
- Encode (bits, context->count, 8);
-
- /* Pad out to 56 mod 64.
-*/
- index = (unsigned int)((context->count[0] >> 3) & 0x3f);
- padLen = (index < 56) ? (56 - index) : (120 - index);
- MD5Update (context, PADDING, padLen);
-
- /* Append length (before padding) */
- MD5Update (context, bits, 8);
-
- /* Store state in digest */
- Encode (digest, context->state, 16);
-
- /* Zeroize sensitive information.
-*/
- MD5_memset ((POINTER)context, 0, sizeof (*context));
-}
-
-/* MD5 basic transformation. Transforms state based on block.
- */
-static void MD5Transform (state, block)
-UINT4 state[4];
-unsigned char block[64];
-{
- UINT4 a = state[0], b = state[1], c = state[2], d = state[3], x[16];
-
- Decode (x, block, 64);
-
- /* Round 1 */
- FF (a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */
- FF (d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */
- FF (c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */
- FF (b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */
- FF (a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */
- FF (d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */
- FF (c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */
- FF (b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */
- FF (a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */
- FF (d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */
- FF (c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */
- FF (b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */
- FF (a, b, c, d, x[12], S11, 0x6b901122); /* 13 */
- FF (d, a, b, c, x[13], S12, 0xfd987193); /* 14 */
- FF (c, d, a, b, x[14], S13, 0xa679438e); /* 15 */
- FF (b, c, d, a, x[15], S14, 0x49b40821); /* 16 */
-
- /* Round 2 */
- GG (a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */
- GG (d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */
- GG (c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */
- GG (b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */
- GG (a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */
- GG (d, a, b, c, x[10], S22, 0x2441453); /* 22 */
- GG (c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */
- GG (b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */
- GG (a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */
- GG (d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */
- GG (c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */
- GG (b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */
- GG (a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */
- GG (d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */
- GG (c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */
- GG (b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */
-
- /* Round 3 */
- HH (a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */
- HH (d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */
- HH (c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */
- HH (b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */
- HH (a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */
- HH (d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */
- HH (c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */
- HH (b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */
- HH (a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */
- HH (d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */
- HH (c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */
- HH (b, c, d, a, x[ 6], S34, 0x4881d05); /* 44 */
- HH (a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */
- HH (d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */
- HH (c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */
- HH (b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */
-
- /* Round 4 */
- II (a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */
- II (d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */
- II (c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */
- II (b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */
- II (a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */
- II (d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */
- II (c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */
- II (b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */
- II (a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */
- II (d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */
- II (c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */
- II (b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */
- II (a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */
- II (d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */
- II (c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */
- II (b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */
-
- state[0] += a;
- state[1] += b;
- state[2] += c;
- state[3] += d;
-
- /* Zeroize sensitive information.
-*/
- MD5_memset ((POINTER)x, 0, sizeof (x));
-}
-
-/* Encodes input (UINT4) into output (unsigned char). Assumes len is
- a multiple of 4.
- */
-static void Encode (output, input, len)
-unsigned char *output;
-UINT4 *input;
-unsigned int len;
-{
- unsigned int i, j;
-
- for (i = 0, j = 0; j < len; i++, j += 4) {
- output[j] = (unsigned char)(input[i] & 0xff);
- output[j+1] = (unsigned char)((input[i] >> 8) & 0xff);
- output[j+2] = (unsigned char)((input[i] >> 16) & 0xff);
- output[j+3] = (unsigned char)((input[i] >> 24) & 0xff);
- }
-}
-
-/* Decodes input (unsigned char) into output (UINT4). Assumes len is
- a multiple of 4.
- */
-static void Decode (output, input, len)
-UINT4 *output;
-unsigned char *input;
-unsigned int len;
-{
- unsigned int i, j;
-
- for (i = 0, j = 0; j < len; i++, j += 4)
- output[i] = ((UINT4)input[j]) | (((UINT4)input[j+1]) << 8) |
- (((UINT4)input[j+2]) << 16) | (((UINT4)input[j+3]) << 24);
-}
-
-/* Note: Replace "for loop" with standard memcpy if possible.
- */
-
-static void MD5_memcpy (output, input, len)
-POINTER output;
-POINTER input;
-unsigned int len;
-{
-
-#ifndef USE_MEM
- unsigned int i;
-
- for (i = 0; i < len; i++)
- output[i] = input[i];
-#else
- memcpy( output, input, len );
-#endif
-}
-
-/* Note: Replace "for loop" with standard memset if possible.
- */
-static void MD5_memset (output, value, len)
-POINTER output;
-int value;
-unsigned int len;
-{
-
-#ifndef USE_MEM
- unsigned int i;
- for (i = 0; i < len; i++)
- ((char *)output)[i] = (char)value;
-#else
- memset( output, value, len );
-#endif
-}
-
Deleted: ser/trunk/md5.h
===================================================================
--- ser/trunk/md5.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/md5.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,45 +0,0 @@
-/* MD5.H - header file for MD5C.C
- * $Id: md5.h,v 1.4 2003/04/10 12:37:50 janakj Exp $
- */
-
-
-/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
-rights reserved.
-
-License to copy and use this software is granted provided that it
-is identified as the "RSA Data Security, Inc. MD5 Message-Digest
-Algorithm" in all material mentioning or referencing this software
-or this function.
-
-License is also granted to make and use derivative works provided
-that such works are identified as "derived from the RSA Data
-Security, Inc. MD5 Message-Digest Algorithm" in all material
-mentioning or referencing the derived work.
-
-RSA Data Security, Inc. makes no representations concerning either
-the merchantability of this software or the suitability of this
-software for any particular purpose. It is provided "as is"
-without express or implied warranty of any kind.
-
-These notices must be retained in any copies of any part of this
-documentation and/or software.
- */
-
-#ifndef MD5_H
-#define MD5_H
-
-#include "md5global.h"
-
-/* MD5 context. */
-typedef struct {
- UINT4 state[4]; /* state (ABCD) */
- UINT4 count[2]; /* number of bits, modulo 2^64 (lsb first) */
- unsigned char buffer[64]; /* input buffer */
-} MD5_CTX;
-
-void MD5Init PROTO_LIST ((MD5_CTX *));
-void MD5Update PROTO_LIST
- ((MD5_CTX *, unsigned char *, unsigned int));
-void MD5Final PROTO_LIST ((unsigned char [16], MD5_CTX *));
-
-#endif /* MD5_H */
Deleted: ser/trunk/md5global.h
===================================================================
--- ser/trunk/md5global.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/md5global.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,38 +0,0 @@
-/* GLOBAL.H - RSAREF types and constants
- *
- */
-
-
-/* PROTOTYPES should be set to one if and only if the compiler supports
- function argument prototyping.
-The following makes PROTOTYPES default to 0 if it has not already
- been defined with C compiler flags.
- */
-#ifndef MD5GLOBAL_H
-#define MD5GLOBAL_H
-
-
-#ifndef PROTOTYPES
-#define PROTOTYPES 0
-#endif
-
-/* POINTER defines a generic pointer type */
-typedef unsigned char *POINTER;
-
-/* UINT2 defines a two byte word */
-typedef unsigned short int UINT2;
-
-/* UINT4 defines a four byte word */
-typedef unsigned int UINT4;
-
-/* PROTO_LIST is defined depending on how PROTOTYPES is defined above.
-If using PROTOTYPES, then PROTO_LIST returns the list, otherwise it
- returns an empty list.
- */
-#if PROTOTYPES
-#define PROTO_LIST(list) list
-#else
-#define PROTO_LIST(list) ()
-#endif
-
-#endif /* MD5GLOBAL_H */
Deleted: ser/trunk/md5utils.c
===================================================================
--- ser/trunk/md5utils.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/md5utils.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,88 +0,0 @@
-/* MDDRIVER.C - test driver for MD2, MD4 and MD5
- *
- */
-
-
-
-/* Copyright (C) 1990-2, RSA Data Security, Inc. Created 1990. All
-rights reserved.
-
-RSA Data Security, Inc. makes no representations concerning either
-the merchantability of this software or the suitability of this
-software for any particular purpose. It is provided "as is"
-without express or implied warranty of any kind.
-
-These notices must be retained in any copies of any part of this
-documentation and/or software.
- */
-
-/*
-
-jku: added support to deal with vectors
-
-*/
-
-#define MD 5
-
-#include <stdio.h>
-#include <time.h>
-#include <string.h>
-#include "md5global.h"
-#include "md5.h"
-#include "md5utils.h"
-#include "dprint.h"
-#include "ut.h"
-
-
-/*static void MDString PROTO_LIST ((char *));*/
-
-#define MD_CTX MD5_CTX
-#define MDInit MD5Init
-#define MDUpdate MD5Update
-#define MDFinal MD5Final
-
-
-/* Digests a string array and store the result in dst; assumes
- 32 bytes in dst
- */
-void MDStringArray (char *dst, str src[], int size)
-{
- MD_CTX context;
- unsigned char digest[16];
- int i;
- int len;
- char *s;
-
-/*
-# ifdef EXTRA_DEBUG
- int j;
- int sum;
-#endif
-*/
-
- MDInit (&context);
- for (i=0; i<size; i++) {
- trim_len( len, s, src[i] );
-/*
-# ifdef EXTRA_DEBUG
- fprintf(stderr, "EXTRA_DEBUG: %d. (%d) {", i+1, len);
- sum=0;
- for (j=0; j<len; j++) {
- fprintf( stderr, "%c ", *(s+j));
- sum+=*(s+j);
- }
- for (j=0; j<len; j++) {
- fprintf( stderr, "%d ", *(s+j));
- sum+=*(s+j);
- }
- fprintf(stderr, " [%d]\n", sum );
-# endif
-*/
- MDUpdate (&context, s, len);
- }
- MDFinal (digest, &context);
-
- string2hex(digest, 16, dst );
- DBG("DEBUG: MD5 calculated: %.*s\n", MD5_LEN, dst );
-
-}
Deleted: ser/trunk/md5utils.h
===================================================================
--- ser/trunk/md5utils.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/md5utils.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,39 +0,0 @@
-/*
- * $Id: md5utils.h,v 1.5 2004/08/24 08:45:10 janakj Exp $
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-#ifndef _MD5UTILS_H
-#define _MD5UTILS_H
-
-#include "str.h"
-
-#define MD5_LEN 32
-
-void MDStringArray (char *dst, str src[], int size);
-
-#endif /* _MD5UTILS_H */
Deleted: ser/trunk/mod_fix.h
===================================================================
--- ser/trunk/mod_fix.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/mod_fix.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,37 +0,0 @@
-/*
- *$Id: mod_fix.h,v 1.1 2004/09/27 03:11:08 jiri Exp $
- *
- */
-
-
-#ifndef _modfix_h
-#define _modfix_h
-
-#include "mem/mem.h"
-#include "str.h"
-#include "error.h"
-
-
-/*
- * Convert char* parameter to str* parameter
- */
-static int str_fixup(void** param, int param_no)
-{
- str* s;
-
- if (param_no == 1 || param_no == 2 ) {
- s = (str*)pkg_malloc(sizeof(str));
- if (!s) {
- LOG(L_ERR, "str_fixup(): No memory left\n");
- return E_UNSPEC;
- }
-
- s->s = (char*)*param;
- s->len = strlen(s->s);
- *param = (void*)s;
- }
-
- return 0;
-}
-
-#endif
Deleted: ser/trunk/modparam.c
===================================================================
--- ser/trunk/modparam.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/modparam.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,156 +0,0 @@
-/*
- * $Id: modparam.c,v 1.8 2004/12/03 19:09:31 andrei Exp $
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * History:
- * -------
- * 2003-03-20 regex support in modparam (janakj)
- * 2004-03-12 extra flag USE_FUNC_PARAM added to modparam type -
- * instead of copying the param value, a func is called (bogdan)
- */
-
-
-#include "modparam.h"
-#include "dprint.h"
-#include "mem/mem.h"
-#include <sys/types.h>
-#include <regex.h>
-#include <string.h>
-
-
-int set_mod_param(char* _mod, char* _name, modparam_t _type, void* _val)
-{
- void* ptr;
-
- if (!_mod) {
- LOG(L_ERR, "set_mod_param(): Invalid _mod parameter value\n");
- return -1;
- }
-
- if (!_name) {
- LOG(L_ERR, "set_mod_param(): Invalid _name parameter value\n");
- return -2;
- }
-
- ptr = find_param_export(_mod, _name, _type);
- if (!ptr) {
- LOG(L_ERR, "set_mod_param(): Parameter not found\n");
- return -3;
- }
-
- switch(_type) {
- case STR_PARAM:
- *((char**)ptr) = strdup((char*)_val);
- break;
-
- case INT_PARAM:
- *((int*)ptr) = (int)(long)_val;
- break;
- }
-
- return 0;
-}
-
-
-int set_mod_param_regex(char* regex, char* name, modparam_t type, void* val)
-{
- struct sr_module* t;
- param_export_t* param;
- regex_t preg;
- int mod_found, len;
- char* reg;
- int n;
-
- len = strlen(regex);
- reg = pkg_malloc(len + 2 + 1);
- if (reg == 0) {
- LOG(L_ERR, "set_mod_param_regex(): No memory left\n");
- return -1;
- }
- reg[0] = '^';
- memcpy(reg + 1, regex, len);
- reg[len + 1] = '$';
- reg[len + 2] = '\0';
-
- if (regcomp(&preg, reg, REG_EXTENDED | REG_NOSUB | REG_ICASE)) {
- LOG(L_ERR, "set_mod_param_regex(): Error while compiling regular expression\n");
- pkg_free(reg);
- return -2;
- }
-
- mod_found = 0;
-
- for(t = modules; t; t = t->next) {
- if (regexec(&preg, t->exports->name, 0, 0, 0) == 0) {
- DBG("set_mod_param_regex: %s matches module %s\n",
- regex, t->exports->name);
- mod_found = 1;
- for(param=t->exports->params;param && param->name ; param++) {
- if ((strcmp(name, param->name) == 0) &&
- ( PARAM_TYPE_MASK(param->type) == type)) {
- DBG("set_mod_param_regex: found <%s> in module %s [%s]\n",
- name, t->exports->name, t->path);
-
- if (param->type&USE_FUNC_PARAM) {
- n = ((param_func_t)(param->param_pointer))(type, val );
- if (n<0)
- return -4;
- } else {
- switch(type) {
- case STR_PARAM:
- *((char**)(param->param_pointer)) =
- strdup((char*)val);
- break;
- case INT_PARAM:
- *((int*)(param->param_pointer)) =
- (int)(long)val;
- break;
- }
- }
-
- break;
- }
- }
- if (!param || !param->name) {
- LOG(L_ERR, "set_mod_param_regex: parameter <%s> not found in module <%s>\n",
- name, t->exports->name);
- regfree(&preg);
- pkg_free(reg);
- return -3;
- }
- }
- }
-
- regfree(&preg);
- if (!mod_found) {
- LOG(L_ERR, "set_mod_param_regex: No module matching %s found\n|", regex);
- pkg_free(reg);
- return -4;
- }
-
- pkg_free(reg);
- return 0;
-}
Deleted: ser/trunk/modparam.h
===================================================================
--- ser/trunk/modparam.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/modparam.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,39 +0,0 @@
-/*
- * $Id: modparam.h,v 1.5 2004/08/24 08:45:10 janakj Exp $
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-#ifndef modparam_h
-#define modparam_h
-
-#include "sr_module.h"
-
-int set_mod_param(char* _mod, char* _name, modparam_t _type, void* _val);
-
-int set_mod_param_regex(char* regex, char* name, modparam_t type, void* val);
-
-#endif
Deleted: ser/trunk/msg_translator.c
===================================================================
--- ser/trunk/msg_translator.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/msg_translator.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,2004 +0,0 @@
-/*
- * $Id: msg_translator.c,v 1.137.2.1 2005/07/20 17:11:50 andrei Exp $
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- *
- * History:
- * --------
- * 2003-01-20 bug_fix: use of return value of snprintf aligned to C99 (jiri)
- * 2003-01-23 added rport patches, contributed by
- * Maxim Sobolev <sobomax at FreeBSD.org> and heavily modified by me
- * (andrei)
- * 2003-01-24 added i param to via of outgoing requests (used by tcp),
- * modified via_builder params (andrei)
- * 2003-01-27 more rport fixes (make use of new via_param->start) (andrei)
- * 2003-01-27 next baby-step to removing ZT - PRESERVE_ZT (jiri)
- * 2003-01-29 scratchpad removed (jiri)
- * 2003-02-28 scratchpad compatibility abandoned (jiri)
- * 2003-03-01 VOICE_MAIL defs removed (jiri)
- * 2003-03-06 totags in outgoing replies bookmarked to enable
- * ACK/200 tag matching (andrei)
- * 2003-03-18 killed the build_warning snprintf (andrei)
- * 2003-03-31 added subst lump support (andrei)
- * 2003-04-01 added opt (conditional) lump support (andrei)
- * 2003-04-02 added more subst lumps: SUBST_{SND,RCV}_ALL
- * => ip:port;transport=proto (andrei)
- * 2003-04-12 added FL_FORCE_RPORT support (andrei)
- * 2003-04-13 updated warning builder -- fixed (andrei)
- * 2003-07-10 check_via_address knows now how to compare with ipv6 address
- * references (e.g [::1]) (andrei)
- * build_req_fomr_sip_req no longer adds 1 for ipv6 via parameter
- * position calculations ([] are part of host.s now) (andrei)
- * 2003-10-02 via+lump dst address/port can be set to preset values (andrei)
- * 2003-10-08 receive_test function-alized (jiri)
- * 2003-10-20 added body_lump list (sip_msg), adjust_clen (andrei & jan)
- * 2003-11-11 type of rpl_lumps replaced by flags (bogdan)
- *
- */
-/* Via special params:
- * requests:
- * - if the address in via is different from the src_ip or an existing
- * received=something is found, received=src_ip is added (and any preexisting
- * received is deleted). received is added as the first via parameter if no
- * receive is previously present or over the old receive.
- * - if the original via contains rport / rport=something or msg->msg_flags
- * FL_FORCE_RPORT is set (e.g. script force_rport() cmd) rport=src_port
- * is added (over previous rport / as first via param or after received
- * if no received was present and received is added too)
- * local replies:
- * (see also sl_send_reply)
- * - rport and received are added in mostly the same way as for requests, but
- * in the reverse order (first rport and then received). See also
- * limitations.
- * - if reply_to_via is set (default off) the local reply will be sent to
- * the address in via (received is ignored since it was not set by us). The
- * destination port is either the message source port if via contains rport
- * or the FL_FORCE_RPORT flag is set or the port from the via. If either
- * port or rport are present a normal dns lookup (instead of a srv lookup)
- * is performed on the address. If no port is present and a srv lookup is
- * performed the port is taken from the srv lookup. If the srv lookup failed
- * or it was not performed, the port is set to the default sip port (5060).
- * - if reply_to_via is off (default) the local reply is sent to the message
- * source ip address. The destination port is set to the source port if
- * rport is present or FL_FORCE_RPORT flag is set, to the via port or to
- * the default sip port (5060) if neither rport or via port are present.
- * "normal" replies:
- * - if received is present the message is sent to the received address else
- * if no port is present (neither a normal via port or rport) a dns srv
- * lookup is performed on the host part and the reply is sent to the
- * resulting ip. If a port is present or the host part is an ip address
- * the dns lookup will be a "normal" one (A or AAAA).
- * - if rport is present, it's value will be used as the destination port
- * (and this will also disable srv lookups)
- * - if no port is present the destination port will be taken from the srv
- * lookup. If the srv lookup fails or is not performed (e.g. ip address
- * in host) the destination port will be set to the default sip port (5060).
- *
- * Known limitations:
- * - when locally replying to a message, rport and received will be appended to
- * the via header parameters (for forwarded requests they are inserted at the
- * beginning).
- * - a locally generated reply might get two received via parameters if a
- * received is already present in the original message (this should not
- * happen though, but ...)
- *
- *--andrei
-*/
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netdb.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "comp_defs.h"
-#include "msg_translator.h"
-#include "globals.h"
-#include "error.h"
-#include "mem/mem.h"
-#include "dprint.h"
-#include "config.h"
-#include "md5utils.h"
-#include "data_lump.h"
-#include "data_lump_rpl.h"
-#include "ip_addr.h"
-#include "resolve.h"
-#include "ut.h"
-#include "pt.h"
-
-
-#define append_str(_dest,_src,_len) \
- do{\
- memcpy( (_dest) , (_src) , (_len) );\
- (_dest) += (_len) ;\
- }while(0);
-
-#define append_str_trans(_dest,_src,_len,_msg) \
- append_str( (_dest), (_src), (_len) );
-
-extern char version[];
-extern int version_len;
-
-
-
-
-
-
-
-/* checks if ip is in host(name) and ?host(ip)=name?
- * ip must be in network byte order!
- * resolver = DO_DNS | DO_REV_DNS; if 0 no dns check is made
- * return 0 if equal */
-static int check_via_address(struct ip_addr* ip, str *name,
- unsigned short port, int resolver)
-{
- struct hostent* he;
- int i;
- char* s;
- int len;
-
- /* maybe we are lucky and name it's an ip */
- s=ip_addr2a(ip);
- if (s){
- DBG("check_via_address(%s, %.*s, %d)\n",
- s, name->len, name->s, resolver);
- len=strlen(s);
-
- #ifdef USE_IPV6
- /* check if name->s is an ipv6 address or an ipv6 address ref. */
- if ((ip->af==AF_INET6) &&
- ( ((len==name->len)&&(strncasecmp(name->s, s, name->len)==0))
- ||
- ((len==(name->len-2))&&(name->s[0]=='[')&&
- (name->s[name->len-1]==']')&&
- (strncasecmp(name->s+1, s, len)==0))
- )
- )
- return 0;
- else
- #endif
-
- if (strncmp(name->s, s, name->len)==0)
- return 0;
- }else{
- LOG(L_CRIT, "check_via_address: BUG: could not convert ip address\n");
- return -1;
- }
-
- if (port==0) port=SIP_PORT;
- if (resolver&DO_DNS){
- DBG("check_via_address: doing dns lookup\n");
- /* try all names ips */
- he=sip_resolvehost(name, &port, 0); /* FIXME proto? */
- if (he && ip->af==he->h_addrtype){
- for(i=0;he && he->h_addr_list[i];i++){
- if ( memcmp(&he->h_addr_list[i], ip->u.addr, ip->len)==0)
- return 0;
- }
- }
- }
- if (resolver&DO_REV_DNS){
- DBG("check_via_address: doing rev. dns lookup\n");
- /* try reverse dns */
- he=rev_resolvehost(ip);
- if (he && (strncmp(he->h_name, name->s, name->len)==0))
- return 0;
- for (i=0; he && he->h_aliases[i];i++){
- if (strncmp(he->h_aliases[i],name->s, name->len)==0)
- return 0;
- }
- }
- return -1;
-}
-
-
-/* check if IP address in Via != source IP address of signaling */
-int received_test( struct sip_msg *msg )
-{
- int rcvd;
-
- rcvd=msg->via1->received
- || check_via_address(&msg->rcv.src_ip, &msg->via1->host,
- msg->via1->port, received_dns);
- return rcvd;
-}
-
-
-static char * warning_builder( struct sip_msg *msg, unsigned int *returned_len)
-{
- static char buf[MAX_WARNING_LEN];
- str *foo;
- int print_len, l;
- int clen;
- char* t;
-
-#define str_print(string, string_len) \
- do{ \
- l=(string_len); \
- if ((clen+l)>MAX_WARNING_LEN) \
- goto error_overflow; \
- memcpy(buf+clen, (string), l); \
- clen+=l; \
- }while(0)
-
-#define str_lenpair_print(string, string_len, string2, string2_len) \
- do{ \
- str_print(string, string_len); \
- str_print(string2, string2_len);\
- }while(0)
-
-#define str_pair_print( string, string2, string2_len) \
- str_lenpair_print((string), strlen((string)), (string2), (string2_len))
-
-#define str_int_print(string, intval)\
- do{\
- t=int2str((intval), &print_len); \
- str_pair_print(string, t, print_len);\
- } while(0)
-
-#define str_ipaddr_print(string, ipaddr_val)\
- do{\
- t=ip_addr2a((ipaddr_val)); \
- print_len=strlen(t); \
- str_pair_print(string, t, print_len);\
- } while(0)
-
- clen=0;
- str_lenpair_print(WARNING, WARNING_LEN,
- msg->rcv.bind_address->name.s,
- msg->rcv.bind_address->name.len);
- str_lenpair_print(":", 1, msg->rcv.bind_address->port_no_str.s,
- msg->rcv.bind_address->port_no_str.len);
- str_print(WARNING_PHRASE, WARNING_PHRASE_LEN);
-
- /*adding out_uri*/
- if (msg->new_uri.s)
- foo=&(msg->new_uri);
- else
- foo=&(msg->first_line.u.request.uri);
- /* pid= */
- str_int_print(" pid=", my_pid());
- /* req_src_ip= */
- str_ipaddr_print(" req_src_ip=", &msg->rcv.src_ip);
- str_int_print(" req_src_port=", msg->rcv.src_port);
- str_pair_print(" in_uri=", msg->first_line.u.request.uri.s,
- msg->first_line.u.request.uri.len);
- str_pair_print(" out_uri=", foo->s, foo->len);
- str_pair_print(" via_cnt", msg->parsed_flag & HDR_EOH ? "=" : ">", 1);
- str_int_print("=", via_cnt);
- if (clen<MAX_WARNING_LEN){ buf[clen]='"'; clen++; }
- else goto error_overflow;
-
-
- *returned_len=clen;
- return buf;
-error_overflow:
- LOG(L_ERR, "ERROR: warning_builder: buffer size exceeded\n");
- *returned_len=0;
- return 0;
-}
-
-
-
-
-char* received_builder(struct sip_msg *msg, unsigned int *received_len)
-{
- char *buf;
- int len;
- struct ip_addr *source_ip;
- char *tmp;
- int tmp_len;
-
- source_ip=&msg->rcv.src_ip;
-
- buf=pkg_malloc(sizeof(char)*MAX_RECEIVED_SIZE);
- if (buf==0){
- ser_error=E_OUT_OF_MEM;
- LOG(L_ERR, "ERROR: received_builder: out of memory\n");
- return 0;
- }
- memcpy(buf, RECEIVED, RECEIVED_LEN);
- if ( (tmp=ip_addr2a(source_ip))==0)
- return 0; /* error*/
- tmp_len=strlen(tmp);
- len=RECEIVED_LEN+tmp_len;
-
- memcpy(buf+RECEIVED_LEN, tmp, tmp_len);
- buf[len]=0; /*null terminate it */
-
- *received_len = len;
- return buf;
-}
-
-
-
-char* rport_builder(struct sip_msg *msg, unsigned int *rport_len)
-{
- char* buf;
- char* tmp;
- int tmp_len;
- int len;
-
- tmp_len=0;
- tmp=int2str(msg->rcv.src_port, &tmp_len);
- len=RPORT_LEN+tmp_len;
- buf=pkg_malloc(sizeof(char)*(len+1));/* space for null term */
- if (buf==0){
- ser_error=E_OUT_OF_MEM;
- LOG(L_ERR, "ERROR: rport_builder: out of memory\n");
- return 0;
- }
- memcpy(buf, RPORT, RPORT_LEN);
- memcpy(buf+RPORT_LEN, tmp, tmp_len);
- buf[len]=0; /*null terminate it*/
-
- *rport_len=len;
- return buf;
-}
-
-
-
-char* id_builder(struct sip_msg* msg, unsigned int *id_len)
-{
- char* buf;
- int len, value_len;
- char revhex[sizeof(int)*2];
- char* p;
- int size;
-
- size=sizeof(int)*2;
- p=&revhex[0];
- if (int2reverse_hex(&p, &size, msg->rcv.proto_reserved1)==-1){
- LOG(L_CRIT, "BUG: id_builder: not enough space for id\n");
- return 0;
- }
- value_len=p-&revhex[0];
- len=ID_PARAM_LEN+value_len;
- buf=pkg_malloc(sizeof(char)*(len+1));/* place for ending \0 */
- if (buf==0){
- ser_error=E_OUT_OF_MEM;
- LOG(L_ERR, "ERROR: rport_builder: out of memory\n");
- return 0;
- }
- memcpy(buf, ID_PARAM, ID_PARAM_LEN);
- memcpy(buf+ID_PARAM_LEN, revhex, value_len);
- buf[len]=0; /* null terminate it */
- *id_len=len;
- return buf;
-}
-
-
-
-char* clen_builder(struct sip_msg* msg, int *clen_len, int diff)
-{
- char* buf;
- int len;
- int value;
- char* value_s;
- int value_len;
- char* body;
-
-
- body=get_body(msg);
- if (body==0){
- ser_error=E_BAD_REQ;
- LOG(L_ERR, "ERROR: clen_builder: no message body found"
- " (missing crlf?)");
- return 0;
- }
- value=msg->len-(int)(body-msg->buf)+diff;
- value_s=int2str(value, &value_len);
- DBG("clen_builder: content-length: %d (%s)\n", value, value_s);
-
- len=CONTENT_LENGTH_LEN+value_len+CRLF_LEN;
- buf=pkg_malloc(sizeof(char)*(len+1));
- if (buf==0){
- ser_error=E_OUT_OF_MEM;
- LOG(L_ERR, "ERROR: clen_builder: out of memory\n");
- return 0;
- }
- memcpy(buf, CONTENT_LENGTH, CONTENT_LENGTH_LEN);
- memcpy(buf+CONTENT_LENGTH_LEN, value_s, value_len);
- memcpy(buf+CONTENT_LENGTH_LEN+value_len, CRLF, CRLF_LEN);
- buf[len]=0; /* null terminate it */
- *clen_len=len;
- return buf;
-}
-
-
-
-/* checks if a lump opt condition
- * returns 1 if cond is true, 0 if false */
-static inline int lump_check_opt( enum lump_conditions cond,
- struct sip_msg* msg,
- struct socket_info* snd_s
- )
-{
- struct ip_addr* ip;
- unsigned short port;
- int proto;
-
-#define get_ip_port_proto \
- if (snd_s==0){ \
- LOG(L_CRIT, "ERROR: lump_check_opt: null send socket\n"); \
- return 1; /* we presume they are different :-) */ \
- } \
- if (msg->rcv.bind_address){ \
- ip=&msg->rcv.bind_address->address; \
- port=msg->rcv.bind_address->port_no; \
- proto=msg->rcv.bind_address->proto; \
- }else{ \
- ip=&msg->rcv.dst_ip; \
- port=msg->rcv.dst_port; \
- proto=msg->rcv.proto; \
- } \
-
- switch(cond){
- case COND_FALSE:
- return 0;
- case COND_TRUE:
- return 1;
- case COND_IF_DIFF_REALMS:
- get_ip_port_proto;
- /* faster tests first */
- if ((port==snd_s->port_no)&&(proto==snd_s->proto)&&
- (ip_addr_cmp(ip, &snd_s->address)))
- return 0;
- else return 1;
- case COND_IF_DIFF_AF:
- get_ip_port_proto;
- if (ip->af!=snd_s->address.af) return 1;
- else return 0;
- case COND_IF_DIFF_PROTO:
- get_ip_port_proto;
- if (proto!=snd_s->proto) return 1;
- else return 0;
- case COND_IF_DIFF_PORT:
- get_ip_port_proto;
- if (port!=snd_s->port_no) return 1;
- else return 0;
- case COND_IF_DIFF_IP:
- get_ip_port_proto;
- if (ip_addr_cmp(ip, &snd_s->address)) return 0;
- else return 1;
- case COND_IF_RAND:
- return (rand()>=RAND_MAX/2);
- default:
- LOG(L_CRIT, "BUG: lump_check_opt: unknown lump condition %d\n",
- cond);
- }
- return 0; /* false */
-}
-
-
-
-/* computes the "unpacked" len of a lump list,
- code moved from build_req_from_req */
-static inline int lumps_len(struct sip_msg* msg, struct lump* lumps, struct socket_info* send_sock)
-{
- int s_offset;
- int new_len;
- struct lump* t;
- struct lump* r;
- str* send_address_str;
- str* send_port_str;
-
-#define SUBST_LUMP_LEN(subst_l) \
- switch((subst_l)->u.subst){ \
- case SUBST_RCV_IP: \
- if (msg->rcv.bind_address){ \
- new_len+=msg->rcv.bind_address->address_str.len; \
- if (msg->rcv.bind_address->address.af!=AF_INET) \
- new_len+=2; \
- }else{ \
- /* FIXME */ \
- LOG(L_CRIT, "FIXME: null bind_address\n"); \
- }; \
- break; \
- case SUBST_RCV_PORT: \
- if (msg->rcv.bind_address){ \
- new_len+=msg->rcv.bind_address->port_no_str.len; \
- }else{ \
- /* FIXME */ \
- LOG(L_CRIT, "FIXME: null bind_address\n"); \
- }; \
- break; \
- case SUBST_RCV_PROTO: \
- if (msg->rcv.bind_address){ \
- switch(msg->rcv.bind_address->proto){ \
- case PROTO_NONE: \
- case PROTO_UDP: \
- case PROTO_TCP: \
- case PROTO_TLS: \
- new_len+=3; \
- break; \
- case PROTO_SCTP: \
- new_len+=4; \
- break; \
- default: \
- LOG(L_CRIT, "BUG: lumps_len: unknown proto %d\n", \
- msg->rcv.bind_address->proto); \
- }\
- }else{ \
- /* FIXME */ \
- LOG(L_CRIT, "FIXME: null bind_address\n"); \
- }; \
- break; \
- case SUBST_RCV_ALL: \
- if (msg->rcv.bind_address){ \
- new_len+=msg->rcv.bind_address->address_str.len; \
- if (msg->rcv.bind_address->address.af!=AF_INET) \
- new_len+=2; \
- if (msg->rcv.bind_address->port_no!=SIP_PORT){ \
- /* add :port_no */ \
- new_len+=1+msg->rcv.bind_address->port_no_str.len; \
- }\
- /*add;transport=xxx*/ \
- switch(msg->rcv.bind_address->proto){ \
- case PROTO_NONE: \
- case PROTO_UDP: \
- break; /* udp is the default */ \
- case PROTO_TCP: \
- case PROTO_TLS: \
- new_len+=TRANSPORT_PARAM_LEN+3; \
- break; \
- case PROTO_SCTP: \
- new_len+=TRANSPORT_PARAM_LEN+4; \
- break; \
- default: \
- LOG(L_CRIT, "BUG: lumps_len: unknown proto %d\n", \
- msg->rcv.bind_address->proto); \
- }\
- }else{ \
- /* FIXME */ \
- LOG(L_CRIT, "FIXME: null bind_address\n"); \
- }; \
- break; \
- case SUBST_SND_IP: \
- if (send_sock){ \
- new_len+=send_address_str->len; \
- if (send_sock->address.af!=AF_INET && \
- send_address_str==&(send_sock->address_str)) \
- new_len+=2; \
- }else{ \
- LOG(L_CRIT, "FIXME: lumps_len called with" \
- " null send_sock\n"); \
- }; \
- break; \
- case SUBST_SND_PORT: \
- if (send_sock){ \
- new_len+=send_port_str->len; \
- }else{ \
- LOG(L_CRIT, "FIXME: lumps_len called with" \
- " null send_sock\n"); \
- }; \
- break; \
- case SUBST_SND_PROTO: \
- if (send_sock){ \
- switch(send_sock->proto){ \
- case PROTO_NONE: \
- case PROTO_UDP: \
- case PROTO_TCP: \
- case PROTO_TLS: \
- new_len+=3; \
- break; \
- case PROTO_SCTP: \
- new_len+=4; \
- break; \
- default: \
- LOG(L_CRIT, "BUG: lumps_len: unknown proto %d\n", \
- send_sock->proto); \
- }\
- }else{ \
- LOG(L_CRIT, "FIXME: lumps_len called with" \
- " null send_sock\n"); \
- }; \
- break; \
- case SUBST_SND_ALL: \
- if (send_sock){ \
- new_len+=send_address_str->len; \
- if ((send_sock->address.af!=AF_INET) && \
- (send_address_str==&(send_sock->address_str))) \
- new_len+=2; \
- if ((send_sock->port_no!=SIP_PORT) || \
- (send_port_str!=&(send_sock->port_no_str))){ \
- /* add :port_no */ \
- new_len+=1+send_port_str->len; \
- }\
- /*add;transport=xxx*/ \
- switch(send_sock->proto){ \
- case PROTO_NONE: \
- case PROTO_UDP: \
- break; /* udp is the default */ \
- case PROTO_TCP: \
- case PROTO_TLS: \
- new_len+=TRANSPORT_PARAM_LEN+3; \
- break; \
- case PROTO_SCTP: \
- new_len+=TRANSPORT_PARAM_LEN+4; \
- break; \
- default: \
- LOG(L_CRIT, "BUG: lumps_len: unknown proto %d\n", \
- send_sock->proto); \
- }\
- }else{ \
- /* FIXME */ \
- LOG(L_CRIT, "FIXME: lumps_len called with" \
- " null send_sock\n"); \
- }; \
- break; \
- case SUBST_NOP: /* do nothing */ \
- break; \
- default: \
- LOG(L_CRIT, "BUG: unknown subst type %d\n", \
- (subst_l)->u.subst); \
- }
-
- s_offset=0;
- new_len=0;
- /* init send_address_str & send_port_str */
- if (msg->set_global_address.len)
- send_address_str=&(msg->set_global_address);
- else
- send_address_str=&(send_sock->address_str);
- if (msg->set_global_port.len)
- send_port_str=&(msg->set_global_address);
- else
- send_port_str=&(send_sock->port_no_str);
-
-
- for(t=lumps;t;t=t->next){
- /* skip if this is an OPT lump and the condition is not satisfied */
- if ((t->op==LUMP_ADD_OPT) && !lump_check_opt(t->u.cond, msg, send_sock))
- continue;
- for(r=t->before;r;r=r->before){
- switch(r->op){
- case LUMP_ADD:
- new_len+=r->len;
- break;
- case LUMP_ADD_SUBST:
- SUBST_LUMP_LEN(r);
- break;
- case LUMP_ADD_OPT:
- /* skip if this is an OPT lump and the condition is
- * not satisfied */
- if (!lump_check_opt(r->u.cond, msg, send_sock))
- goto skip_before;
- break;
- default:
- /* only ADD allowed for before/after */
- LOG(L_CRIT, "BUG: lumps_len: invalid op "
- "for data lump (%x)\n", r->op);
- }
- }
-skip_before:
- switch(t->op){
- case LUMP_ADD:
- new_len+=t->len;
- break;
- case LUMP_ADD_SUBST:
- SUBST_LUMP_LEN(t);
- break;
- case LUMP_ADD_OPT:
- /* we don't do anything here, it's only a condition for
- * before & after */
- break;
- case LUMP_DEL:
- /* fix overlapping deleted zones */
- if (t->u.offset < s_offset){
- /* change len */
- if (t->len>s_offset-t->u.offset)
- t->len-=s_offset-t->u.offset;
- else t->len=0;
- t->u.offset=s_offset;
- }
- s_offset=t->u.offset+t->len;
- new_len-=t->len;
- break;
- case LUMP_NOP:
- /* fix offset if overlapping on a deleted zone */
- if (t->u.offset < s_offset){
- t->u.offset=s_offset;
- }else
- s_offset=t->u.offset;
- /* do nothing */
- break;
- default:
- LOG(L_CRIT,"BUG:lumps_len: invalid"
- " op for data lump (%x)\n", r->op);
- }
- for (r=t->after;r;r=r->after){
- switch(r->op){
- case LUMP_ADD:
- new_len+=r->len;
- break;
- case LUMP_ADD_SUBST:
- SUBST_LUMP_LEN(r);
- break;
- case LUMP_ADD_OPT:
- /* skip if this is an OPT lump and the condition is
- * not satisfied */
- if (!lump_check_opt(r->u.cond, msg, send_sock))
- goto skip_after;
- break;
- default:
- /* only ADD allowed for before/after */
- LOG(L_CRIT, "BUG:lumps_len: invalid"
- " op for data lump (%x)\n", r->op);
- }
- }
-skip_after:
- ; /* to make gcc 3.* happy */
- }
- return new_len;
-}
-
-
-
-/* another helper functions, adds/Removes the lump,
- code moved form build_req_from_req */
-
-static inline void process_lumps( struct sip_msg* msg,
- struct lump* lumps,
- char* new_buf,
- unsigned int* new_buf_offs,
- unsigned int* orig_offs,
- struct socket_info* send_sock)
-{
- struct lump *t;
- struct lump *r;
- char* orig;
- int size;
- int offset;
- int s_offset;
- str* send_address_str;
- str* send_port_str;
-
-#define SUBST_LUMP(subst_l) \
- switch((subst_l)->u.subst){ \
- case SUBST_RCV_IP: \
- if (msg->rcv.bind_address){ \
- if (msg->rcv.bind_address->address.af!=AF_INET){\
- new_buf[offset]='['; offset++; \
- }\
- memcpy(new_buf+offset, msg->rcv.bind_address->address_str.s, \
- msg->rcv.bind_address->address_str.len); \
- offset+=msg->rcv.bind_address->address_str.len; \
- if (msg->rcv.bind_address->address.af!=AF_INET){\
- new_buf[offset]=']'; offset++; \
- }\
- }else{ \
- /*FIXME*/ \
- LOG(L_CRIT, "FIXME: process_lumps: null bind_address\n"); \
- }; \
- break; \
- case SUBST_RCV_PORT: \
- if (msg->rcv.bind_address){ \
- memcpy(new_buf+offset, msg->rcv.bind_address->port_no_str.s, \
- msg->rcv.bind_address->port_no_str.len); \
- offset+=msg->rcv.bind_address->port_no_str.len; \
- }else{ \
- /*FIXME*/ \
- LOG(L_CRIT, "FIXME: process_lumps: null bind_address\n"); \
- }; \
- break; \
- case SUBST_RCV_ALL: \
- if (msg->rcv.bind_address){ \
- /* address */ \
- if (msg->rcv.bind_address->address.af!=AF_INET){\
- new_buf[offset]='['; offset++; \
- }\
- memcpy(new_buf+offset, msg->rcv.bind_address->address_str.s, \
- msg->rcv.bind_address->address_str.len); \
- offset+=msg->rcv.bind_address->address_str.len; \
- if (msg->rcv.bind_address->address.af!=AF_INET){\
- new_buf[offset]=']'; offset++; \
- }\
- /* :port */ \
- if (msg->rcv.bind_address->port_no!=SIP_PORT){ \
- new_buf[offset]=':'; offset++; \
- memcpy(new_buf+offset, \
- msg->rcv.bind_address->port_no_str.s, \
- msg->rcv.bind_address->port_no_str.len); \
- offset+=msg->rcv.bind_address->port_no_str.len; \
- }\
- switch(msg->rcv.bind_address->proto){ \
- case PROTO_NONE: \
- case PROTO_UDP: \
- break; /* nothing to do, udp is default*/ \
- case PROTO_TCP: \
- memcpy(new_buf+offset, TRANSPORT_PARAM, \
- TRANSPORT_PARAM_LEN); \
- offset+=TRANSPORT_PARAM_LEN; \
- memcpy(new_buf+offset, "tcp", 3); \
- offset+=3; \
- break; \
- case PROTO_TLS: \
- memcpy(new_buf+offset, TRANSPORT_PARAM, \
- TRANSPORT_PARAM_LEN); \
- offset+=TRANSPORT_PARAM_LEN; \
- memcpy(new_buf+offset, "tls", 3); \
- offset+=3; \
- break; \
- case PROTO_SCTP: \
- memcpy(new_buf+offset, TRANSPORT_PARAM, \
- TRANSPORT_PARAM_LEN); \
- offset+=TRANSPORT_PARAM_LEN; \
- memcpy(new_buf+offset, "sctp", 4); \
- offset+=4; \
- break; \
- default: \
- LOG(L_CRIT, "BUG: process_lumps: unknown proto %d\n", \
- msg->rcv.bind_address->proto); \
- } \
- }else{ \
- /*FIXME*/ \
- LOG(L_CRIT, "FIXME: process_lumps: null bind_address\n"); \
- }; \
- break; \
- case SUBST_SND_IP: \
- if (send_sock){ \
- if ((send_sock->address.af!=AF_INET) && \
- (send_address_str==&(send_sock->address_str))){\
- new_buf[offset]='['; offset++; \
- }\
- memcpy(new_buf+offset, send_address_str->s, \
- send_address_str->len); \
- offset+=send_address_str->len; \
- if ((send_sock->address.af!=AF_INET) && \
- (send_address_str==&(send_sock->address_str))){\
- new_buf[offset]=']'; offset++; \
- }\
- }else{ \
- /*FIXME*/ \
- LOG(L_CRIT, "FIXME: process_lumps: called with" \
- " null send_sock\n"); \
- }; \
- break; \
- case SUBST_SND_PORT: \
- if (send_sock){ \
- memcpy(new_buf+offset, send_port_str->s, \
- send_port_str->len); \
- offset+=send_port_str->len; \
- }else{ \
- /*FIXME*/ \
- LOG(L_CRIT, "FIXME: process_lumps: called with" \
- " null send_sock\n"); \
- }; \
- break; \
- case SUBST_SND_ALL: \
- if (send_sock){ \
- /* address */ \
- if ((send_sock->address.af!=AF_INET) && \
- (send_address_str==&(send_sock->address_str))){\
- new_buf[offset]='['; offset++; \
- }\
- memcpy(new_buf+offset, send_address_str->s, \
- send_address_str->len); \
- offset+=send_address_str->len; \
- if ((send_sock->address.af!=AF_INET) && \
- (send_address_str==&(send_sock->address_str))){\
- new_buf[offset]=']'; offset++; \
- }\
- /* :port */ \
- if ((send_sock->port_no!=SIP_PORT) || \
- (send_port_str!=&(send_sock->port_no_str))){ \
- new_buf[offset]=':'; offset++; \
- memcpy(new_buf+offset, send_port_str->s, \
- send_port_str->len); \
- offset+=send_port_str->len; \
- }\
- switch(send_sock->proto){ \
- case PROTO_NONE: \
- case PROTO_UDP: \
- break; /* nothing to do, udp is default*/ \
- case PROTO_TCP: \
- memcpy(new_buf+offset, TRANSPORT_PARAM, \
- TRANSPORT_PARAM_LEN); \
- offset+=TRANSPORT_PARAM_LEN; \
- memcpy(new_buf+offset, "tcp", 3); \
- offset+=3; \
- break; \
- case PROTO_TLS: \
- memcpy(new_buf+offset, TRANSPORT_PARAM, \
- TRANSPORT_PARAM_LEN); \
- offset+=TRANSPORT_PARAM_LEN; \
- memcpy(new_buf+offset, "tls", 3); \
- offset+=3; \
- break; \
- case PROTO_SCTP: \
- memcpy(new_buf+offset, TRANSPORT_PARAM, \
- TRANSPORT_PARAM_LEN); \
- offset+=TRANSPORT_PARAM_LEN; \
- memcpy(new_buf+offset, "sctp", 4); \
- offset+=4; \
- break; \
- default: \
- LOG(L_CRIT, "BUG: process_lumps: unknown proto %d\n", \
- send_sock->proto); \
- } \
- }else{ \
- /*FIXME*/ \
- LOG(L_CRIT, "FIXME: process_lumps: null bind_address\n"); \
- }; \
- break; \
- case SUBST_RCV_PROTO: \
- if (msg->rcv.bind_address){ \
- switch(msg->rcv.bind_address->proto){ \
- case PROTO_NONE: \
- case PROTO_UDP: \
- memcpy(new_buf+offset, "udp", 3); \
- offset+=3; \
- break; \
- case PROTO_TCP: \
- memcpy(new_buf+offset, "tcp", 3); \
- offset+=3; \
- break; \
- case PROTO_TLS: \
- memcpy(new_buf+offset, "tls", 3); \
- offset+=3; \
- break; \
- case PROTO_SCTP: \
- memcpy(new_buf+offset, "sctp", 4); \
- offset+=4; \
- break; \
- default: \
- LOG(L_CRIT, "BUG: process_lumps: unknown proto %d\n", \
- msg->rcv.bind_address->proto); \
- } \
- }else{ \
- /*FIXME*/ \
- LOG(L_CRIT, "FIXME: process_lumps: called with null" \
- " send_sock \n"); \
- }; \
- break; \
- case SUBST_SND_PROTO: \
- if (send_sock){ \
- switch(send_sock->proto){ \
- case PROTO_NONE: \
- case PROTO_UDP: \
- memcpy(new_buf+offset, "udp", 3); \
- offset+=3; \
- break; \
- case PROTO_TCP: \
- memcpy(new_buf+offset, "tcp", 3); \
- offset+=3; \
- break; \
- case PROTO_TLS: \
- memcpy(new_buf+offset, "tls", 3); \
- offset+=3; \
- break; \
- case PROTO_SCTP: \
- memcpy(new_buf+offset, "sctp", 4); \
- offset+=4; \
- break; \
- default: \
- LOG(L_CRIT, "BUG: process_lumps: unknown proto %d\n", \
- send_sock->proto); \
- } \
- }else{ \
- /*FIXME*/ \
- LOG(L_CRIT, "FIXME: process_lumps: called with null" \
- " send_sock \n"); \
- }; \
- break; \
- default: \
- LOG(L_CRIT, "BUG: process_lumps: unknown subst type %d\n", \
- (subst_l)->u.subst); \
- } \
- \
-
- /* init send_address_str & send_port_str */
- if (msg->set_global_address.len)
- send_address_str=&(msg->set_global_address);
- else
- send_address_str=&(send_sock->address_str);
- if (msg->set_global_port.len)
- send_port_str=&(msg->set_global_address);
- else
- send_port_str=&(send_sock->port_no_str);
-
-
- orig=msg->buf;
- offset=*new_buf_offs;
- s_offset=*orig_offs;
-
- for (t=lumps;t;t=t->next){
- switch(t->op){
- case LUMP_ADD:
- case LUMP_ADD_SUBST:
- case LUMP_ADD_OPT:
- /* skip if this is an OPT lump and the condition is
- * not satisfied */
- if ((t->op==LUMP_ADD_OPT) &&
- (!lump_check_opt(t->u.cond, msg, send_sock)))
- continue;
- /* just add it here! */
- /* process before */
- for(r=t->before;r;r=r->before){
- switch (r->op){
- case LUMP_ADD:
- /*just add it here*/
- memcpy(new_buf+offset, r->u.value, r->len);
- offset+=r->len;
- break;
- case LUMP_ADD_SUBST:
- SUBST_LUMP(r);
- break;
- case LUMP_ADD_OPT:
- /* skip if this is an OPT lump and the condition is
- * not satisfied */
- if (!lump_check_opt(r->u.cond, msg, send_sock))
- goto skip_before;
- break;
- default:
- /* only ADD allowed for before/after */
- LOG(L_CRIT, "BUG:process_lumps: "
- "invalid op for data lump (%x)\n", r->op);
- }
- }
-skip_before:
- /* copy "main" part */
- switch(t->op){
- case LUMP_ADD:
- memcpy(new_buf+offset, t->u.value, t->len);
- offset+=t->len;
- break;
- case LUMP_ADD_SUBST:
- SUBST_LUMP(t);
- break;
- case LUMP_ADD_OPT:
- /* do nothing, it's only a condition */
- break;
- default:
- /* should not ever get here */
- LOG(L_CRIT, "BUG: process_lumps: unhandled data lump "
- " op %d\n", t->op);
- }
- /* process after */
- for(r=t->after;r;r=r->after){
- switch (r->op){
- case LUMP_ADD:
- /*just add it here*/
- memcpy(new_buf+offset, r->u.value, r->len);
- offset+=r->len;
- break;
- case LUMP_ADD_SUBST:
- SUBST_LUMP(r);
- break;
- case LUMP_ADD_OPT:
- /* skip if this is an OPT lump and the condition is
- * not satisfied */
- if (!lump_check_opt(r->u.cond, msg, send_sock))
- goto skip_after;
- break;
- default:
- /* only ADD allowed for before/after */
- LOG(L_CRIT, "BUG:process_lumps: "
- "invalid op for data lump (%x)\n", r->op);
- }
- }
-skip_after:
- break;
- case LUMP_NOP:
- case LUMP_DEL:
- /* copy till offset */
- if (s_offset>t->u.offset){
- DBG("Warning: (%d) overlapped lumps offsets,"
- " ignoring(%x, %x)\n", t->op, s_offset,t->u.offset);
- /* this should've been fixed above (when computing len) */
- /* just ignore it*/
- break;
- }
- size=t->u.offset-s_offset;
- if (size){
- memcpy(new_buf+offset, orig+s_offset,size);
- offset+=size;
- s_offset+=size;
- }
- /* process before */
- for(r=t->before;r;r=r->before){
- switch (r->op){
- case LUMP_ADD:
- /*just add it here*/
- memcpy(new_buf+offset, r->u.value, r->len);
- offset+=r->len;
- break;
- case LUMP_ADD_SUBST:
- SUBST_LUMP(r);
- break;
- case LUMP_ADD_OPT:
- /* skip if this is an OPT lump and the condition is
- * not satisfied */
- if (!lump_check_opt(r->u.cond, msg, send_sock))
- goto skip_nop_before;
- break;
- default:
- /* only ADD allowed for before/after */
- LOG(L_CRIT, "BUG:process_lumps: "
- "invalid op for data lump (%x)\n",r->op);
- }
- }
-skip_nop_before:
- /* process main (del only) */
- if (t->op==LUMP_DEL){
- /* skip len bytes from orig msg */
- s_offset+=t->len;
- }
- /* process after */
- for(r=t->after;r;r=r->after){
- switch (r->op){
- case LUMP_ADD:
- /*just add it here*/
- memcpy(new_buf+offset, r->u.value, r->len);
- offset+=r->len;
- break;
- case LUMP_ADD_SUBST:
- SUBST_LUMP(r);
- break;
- case LUMP_ADD_OPT:
- /* skip if this is an OPT lump and the condition is
- * not satisfied */
- if (!lump_check_opt(r->u.cond, msg, send_sock))
- goto skip_nop_after;
- break;
- default:
- /* only ADD allowed for before/after */
- LOG(L_CRIT, "BUG:process_lumps: "
- "invalid op for data lump (%x)\n", r->op);
- }
- }
-skip_nop_after:
- break;
- default:
- LOG(L_CRIT, "BUG: process_lumps: "
- "unknown op (%x)\n", t->op);
- }
- }
- *new_buf_offs=offset;
- *orig_offs=s_offset;
-}
-
-
-/*
- * Adjust/insert Content-Length if necessary
- */
-static inline int adjust_clen(struct sip_msg* msg, int body_delta, int proto)
-{
- struct lump* anchor;
- char* clen_buf;
- int clen_len;
-
- /* Calculate message length difference caused by lumps modifying message
- * body, from this point on the message body must not be modified. Zero
- * value indicates that the body hasn't been modified
- */
-
- clen_buf = 0;
- anchor=0;
-
- /* check to see if we need to add clen */
-#ifdef USE_TCP
- if (proto == PROTO_TCP
-#ifdef USE_TLS
- || proto == PROTO_TLS
-#endif
- ) {
- if (parse_headers(msg, HDR_CONTENTLENGTH, 0)==-1){
- LOG(L_ERR, "adjust_clen: error parsing content-length\n");
- goto error;
- }
- if (msg->content_length==0){
- /* not present, we need to add it */
- /* msg->unparsed should point just before the final crlf
- * - whole message was parsed by the above parse_headers
- * which did not find content-length */
- anchor=anchor_lump(msg, msg->unparsed-msg->buf, 0,
- HDR_CONTENTLENGTH);
- if (anchor==0){
- LOG(L_ERR, "adjust_clen: cannot set clen anchor\n");
- goto error;
- }
- }
- }
-#endif
-
-
- if ((anchor==0) && body_delta){
- if (parse_headers(msg, HDR_CONTENTLENGTH, 0) == -1) {
- LOG(L_ERR, "adjust_clen: Error parsing Content-Length\n");
- goto error;
- }
-
- /* The body has been changed, try to find
- * existing Content-Length
- */
- /* no need for Content-Length if it's and UDP packet and
- * it hasn't Content-Length already */
- if ((msg->content_length==0)){
- /* content-length doesn't exist, append it */
- /* msg->unparsed should point just before the final crlf
- * - whole message was parsed by the above parse_headers
- * which did not find content-length */
- if (proto!=PROTO_UDP){
- anchor=anchor_lump(msg, msg->unparsed-msg->buf, 0,
- HDR_CONTENTLENGTH);
- if (anchor==0){
- LOG(L_ERR, "adjust_clen: cannot set clen anchor\n");
- goto error;
- }
- }else{
- DBG("add_clen: UDP packet with no clen => not adding one \n");
- }
- }else{
- /* Content-Length has been found, remove it */
- anchor = del_lump( msg, msg->content_length->name.s - msg->buf,
- msg->content_length->len, HDR_CONTENTLENGTH);
- if (anchor==0) {
- LOG(L_ERR, "adjust_clen: Can't remove original"
- " Content-Length\n");
- goto error;
- }
- }
- }
-
- if (anchor){
- clen_buf = clen_builder(msg, &clen_len, body_delta);
- if (!clen_buf) goto error;
- if (insert_new_lump_after(anchor, clen_buf, clen_len,
- HDR_CONTENTLENGTH) == 0)
- goto error;
- }
-
- return 0;
-error:
- if (clen_buf) pkg_free(clen_buf);
- return -1;
-}
-
-
-
-char * build_req_buf_from_sip_req( struct sip_msg* msg,
- unsigned int *returned_len,
- struct socket_info* send_sock, int proto)
-{
- unsigned int len, new_len, received_len, rport_len, uri_len, via_len, body_delta;
- char* line_buf;
- char* received_buf;
- char* rport_buf;
- char* new_buf;
- char* buf;
- unsigned int offset, s_offset, size;
- struct lump* anchor;
- struct lump* via_insert_param;
- str branch;
- str extra_params;
- struct hostport hp;
-
-#ifdef USE_TCP
- char* id_buf;
- unsigned int id_len;
-
-
- id_buf=0;
- id_len=0;
-#endif
- via_insert_param=0;
- extra_params.len=0;
- extra_params.s=0;
- uri_len=0;
- buf=msg->buf;
- len=msg->len;
- received_len=0;
- rport_len=0;
- new_buf=0;
- received_buf=0;
- rport_buf=0;
- line_buf=0;
-
-#ifdef USE_TCP
- /* add id if tcp */
- if (msg->rcv.proto==PROTO_TCP
-#ifdef USE_TLS
- || msg->rcv.proto==PROTO_TLS
-#endif
- ){
- if ((id_buf=id_builder(msg, &id_len))==0){
- LOG(L_ERR, "ERROR: build_req_buf_from_sip_req:"
- " id_builder failed\n");
- goto error00; /* we don't need to free anything,
- nothing alloc'ed yet*/
- }
- DBG("build_req_from_req: id added: <%.*s>, rcv proto=%d\n",
- (int)id_len, id_buf, msg->rcv.proto);
- extra_params.s=id_buf;
- extra_params.len=id_len;
- }
-#endif
- /* Calculate message body difference and adjust
- * Content-Length
- */
- body_delta = lumps_len(msg, msg->body_lumps, send_sock);
- if (adjust_clen(msg, body_delta, proto) < 0) {
- LOG(L_ERR, "ERROR: build_req_buf_from_sip_req: Error while adjusting"
- " Content-Length\n");
- goto error00;
- }
-
- branch.s=msg->add_to_branch_s;
- branch.len=msg->add_to_branch_len;
- set_hostport(&hp, msg);
- line_buf = via_builder( &via_len, send_sock, &branch,
- extra_params.len?&extra_params:0, proto, &hp);
- if (!line_buf){
- LOG(L_ERR,"ERROR: build_req_buf_from_sip_req: no via received!\n");
- goto error00;
- }
- /* check if received needs to be added */
- if ( received_test(msg) ) {
- if ((received_buf=received_builder(msg,&received_len))==0){
- LOG(L_ERR, "ERROR: build_req_buf_from_sip_req:"
- " received_builder failed\n");
- goto error01; /* free also line_buf */
- }
- }
-
- /* check if rport needs to be updated:
- * - if FL_FORCE_RPORT is set add it (and del. any previous version)
- * - if via already contains an rport add it and overwrite the previous
- * rport value if present (if you don't want to overwrite the previous
- * version remove the comments) */
- if ((msg->msg_flags&FL_FORCE_RPORT)||
- (msg->via1->rport /*&& msg->via1->rport->value.s==0*/)){
- if ((rport_buf=rport_builder(msg, &rport_len))==0){
- LOG(L_ERR, "ERROR: build_req_buf_from_sip_req:"
- " rport_builder failed\n");
- goto error01; /* free everything */
- }
- }
-
- /* add via header to the list */
- /* try to add it before msg. 1st via */
- /* add first via, as an anchor for second via*/
- anchor=anchor_lump(msg, msg->via1->hdr.s-buf, 0, HDR_VIA);
- if (anchor==0) goto error01;
- if (insert_new_lump_before(anchor, line_buf, via_len, HDR_VIA)==0)
- goto error01;
- /* find out where the offset of the first parameter that should be added
- * (after host:port), needed by add receive & maybe rport */
- if (msg->via1->params.s){
- size= msg->via1->params.s-msg->via1->hdr.s-1; /*compensate
- for ';' */
- }else{
- size= msg->via1->host.s-msg->via1->hdr.s+msg->via1->host.len;
- if (msg->via1->port!=0){
- /*size+=strlen(msg->via1->hdr.s+size+1)+1;*/
- size += msg->via1->port_str.len + 1; /* +1 for ':'*/
- }
-#if 0
- /* no longer necessary, now hots.s contains [] */
- #ifdef USE_IPV6
- if(send_sock->address.af==AF_INET6) size+=1; /* +1 for ']'*/
- #endif
-#endif
- }
- /* if received needs to be added, add anchor after host and add it, or
- * overwrite the previous one if already present */
- if (received_len){
- if (msg->via1->received){ /* received already present => overwrite it*/
- via_insert_param=del_lump(msg,
- msg->via1->received->start-buf-1, /*;*/
- msg->via1->received->size+1, /*;*/ HDR_VIA);
- }else if (via_insert_param==0){ /* receive not present, ok */
- via_insert_param=anchor_lump(msg,
- msg->via1->hdr.s-buf+size,0, HDR_VIA);
- }
- if (via_insert_param==0) goto error02; /* free received_buf */
- if (insert_new_lump_after(via_insert_param, received_buf, received_len,
- HDR_VIA) ==0 ) goto error02; /* free received_buf */
- }
- /* if rport needs to be updated, delete it if present and add it's value */
- if (rport_len){
- if (msg->via1->rport){ /* rport already present */
- via_insert_param=del_lump(msg,
- msg->via1->rport->start-buf-1, /*';'*/
- msg->via1->rport->size+1 /* ; */, HDR_VIA);
- }else if (via_insert_param==0){ /*force rport, no rport present */
- /* no rport, add it */
- via_insert_param=anchor_lump(msg,
- msg->via1->hdr.s-buf+size,0, HDR_VIA);
- }
- if (via_insert_param==0) goto error03; /* free rport_buf */
- if (insert_new_lump_after(via_insert_param, rport_buf, rport_len,
- HDR_VIA) ==0 )
- goto error03; /* free rport_buf */
-
- }
-
- /* compute new msg len and fix overlapping zones*/
- new_len=len+body_delta+lumps_len(msg, msg->add_rm, send_sock);
-#ifdef XL_DEBUG
- LOG(L_ERR, "DEBUG: new_len(%d)=len(%d)+lumps_len\n", new_len, len);
-#endif
-
- if (msg->new_uri.s){
- uri_len=msg->new_uri.len;
- new_len=new_len-msg->first_line.u.request.uri.len+uri_len;
- }
- new_buf=(char*)pkg_malloc(new_len+1);
- if (new_buf==0){
- ser_error=E_OUT_OF_MEM;
- LOG(L_ERR, "ERROR: build_req_buf_from_sip_req: out of memory\n");
- goto error00;
- }
-
- offset=s_offset=0;
- if (msg->new_uri.s){
- /* copy message up to uri */
- size=msg->first_line.u.request.uri.s-buf;
- memcpy(new_buf, buf, size);
- offset+=size;
- s_offset+=size;
- /* add our uri */
- memcpy(new_buf+offset, msg->new_uri.s, uri_len);
- offset+=uri_len;
- s_offset+=msg->first_line.u.request.uri.len; /* skip original uri */
- }
- new_buf[new_len]=0;
- /* copy msg adding/removing lumps */
- process_lumps(msg, msg->add_rm, new_buf, &offset, &s_offset, send_sock);
- process_lumps(msg, msg->body_lumps, new_buf, &offset, &s_offset,send_sock);
- /* copy the rest of the message */
- memcpy(new_buf+offset, buf+s_offset, len-s_offset);
- new_buf[new_len]=0;
-
-#ifdef DBG_MSG_QA
- if (new_buf[new_len-1]==0) {
- LOG(L_ERR, "ERROR: build_req_buf_from_sip_req: 0 in the end\n");
- abort();
- }
-#endif
-
- *returned_len=new_len;
- /* cleanup */
-#ifdef USE_TCP
- if (id_buf) pkg_free(id_buf); /* it's not in a lump => we don't need it
- anymore */
-#endif
- return new_buf;
-
-error01:
- if (line_buf) pkg_free(line_buf);
-error02:
- if (received_buf) pkg_free(received_buf);
-error03:
- if (rport_buf) pkg_free(rport_buf);
-error00:
-#ifdef USE_TCP
- if (id_buf) pkg_free(id_buf);
-#endif
- *returned_len=0;
- return 0;
-}
-
-
-
-char * build_res_buf_from_sip_res( struct sip_msg* msg,
- unsigned int *returned_len)
-{
- unsigned int new_len, via_len, body_delta;
- char* new_buf;
- unsigned offset, s_offset, via_offset;
- char* buf;
- unsigned int len;
-
- buf=msg->buf;
- len=msg->len;
- new_buf=0;
- /* we must remove the first via */
- if (msg->via1->next) {
- via_len=msg->via1->bsize;
- via_offset=msg->h_via1->body.s-buf;
- } else {
- via_len=msg->h_via1->len;
- via_offset=msg->h_via1->name.s-buf;
- }
-
- /* Calculate message body difference and adjust
- * Content-Length
- */
- body_delta = lumps_len(msg, msg->body_lumps, 0);
- if (adjust_clen(msg, body_delta, (msg->via2? msg->via2->proto:PROTO_UDP))
- < 0) {
- LOG(L_ERR, "ERROR: build_req_buf_from_sip_req: Error while adjusting"
- " Content-Length\n");
- goto error;
- }
-
- /* remove the first via*/
- if (del_lump( msg, via_offset, via_len, HDR_VIA)==0){
- LOG(L_ERR, "build_res_buf_from_sip_res: error trying to remove first"
- "via\n");
- goto error;
- }
-
- new_len=len+body_delta+lumps_len(msg, msg->add_rm, 0); /*FIXME: we don't
- know the send sock */
-
- DBG(" old size: %d, new size: %d\n", len, new_len);
- new_buf=(char*)pkg_malloc(new_len+1); /* +1 is for debugging
- (\0 to print it )*/
- if (new_buf==0){
- LOG(L_ERR, "ERROR: build_res_buf_from_sip_res: out of mem\n");
- goto error;
- }
- new_buf[new_len]=0; /* debug: print the message */
- offset=s_offset=0;
- /*FIXME: no send sock*/
- process_lumps(msg, msg->add_rm, new_buf, &offset, &s_offset, 0);/*FIXME:*/
- process_lumps(msg, msg->body_lumps, new_buf, &offset, &s_offset, 0);
- /* copy the rest of the message */
- memcpy(new_buf+offset,
- buf+s_offset,
- len-s_offset);
- /* send it! */
- DBG("build_res_from_sip_res: copied size: orig:%d, new: %d, rest: %d"
- " msg=\n%s\n", s_offset, offset, len-s_offset, new_buf);
-
- *returned_len=new_len;
- return new_buf;
-error:
- *returned_len=0;
- return 0;
-}
-
-
-char * build_res_buf_from_sip_req( unsigned int code, char *text ,str *new_tag,
- struct sip_msg* msg, unsigned int *returned_len, struct bookmark *bmark)
-{
- char *buf, *p;
- unsigned int len,foo;
- struct hdr_field *hdr;
- struct lump_rpl *lump;
- struct lump_rpl *body;
- int i;
- char* received_buf;
- unsigned int received_len;
- char* rport_buf;
- unsigned int rport_len;
- char* warning_buf;
- unsigned int warning_len;
- char* content_len_buf;
- unsigned int content_len_len;
- unsigned int text_len;
- char *after_body;
- str to_tag;
- char *totags;
-
- body = 0;
- buf=0;
- received_buf=rport_buf=warning_buf=content_len_buf=0;
- received_len=rport_len=warning_len=content_len_len=0;
-
- text_len=strlen(text);
-
- to_tag.s=0; /* fixes gcc 4.0 warning */
- to_tag.len=0;
-
- /* force parsing all headers -- we want to return all
- Via's in the reply and they may be scattered down to the
- end of header (non-block Vias are a really poor property
- of SIP :( ) */
- if (parse_headers( msg, HDR_EOH, 0 )==-1) {
- LOG(L_ERR, "ERROR: build_res_buf_from_sip_req: "
- "alas, parse_headers failed\n");
- goto error00;
- }
-
- /*computes the length of the new response buffer*/
- len = 0;
-
- /* check if received needs to be added */
- if (received_test(msg)) {
- if ((received_buf=received_builder(msg,&received_len))==0) {
- LOG(L_ERR, "ERROR: build_res_buf_from_sip_req: "
- "alas, received_builder failed\n");
- goto error00;
- }
- }
- /* check if rport needs to be updated */
- if ( (msg->msg_flags&FL_FORCE_RPORT)||
- (msg->via1->rport /*&& msg->via1->rport->value.s==0*/)){
- if ((rport_buf=rport_builder(msg, &rport_len))==0){
- LOG(L_ERR, "ERROR: build_res_buf_from_sip_req:"
- " rport_builder failed\n");
- goto error01; /* free everything */
- }
- if (msg->via1->rport)
- len -= msg->via1->rport->size+1; /* include ';' */
- }
-
- /* first line */
- len += SIP_VERSION_LEN + 1/*space*/ + 3/*code*/ + 1/*space*/ +
- text_len + CRLF_LEN/*new line*/;
- /*headers that will be copied (TO, FROM, CSEQ,CALLID,VIA)*/
- for ( hdr=msg->headers ; hdr ; hdr=hdr->next ) {
- switch (hdr->type) {
- case HDR_TO:
- if (new_tag && new_tag->len) {
- to_tag=get_to(msg)->tag_value;
- if (to_tag.len )
- len+=new_tag->len-to_tag.len;
- else
- len+=new_tag->len+TOTAG_TOKEN_LEN/*";tag="*/;
- }
- len += hdr->len;
- break;
- case HDR_VIA:
- /* we always add CRLF to via*/
- len+=(hdr->body.s+hdr->body.len)-hdr->name.s+CRLF_LEN;
- if (hdr==msg->h_via1) len += received_len+rport_len;
- break;
- case HDR_RECORDROUTE:
- /* RR only for 1xx and 2xx replies */
- if (code<180 || code>=300)
- break;
- case HDR_FROM:
- case HDR_CALLID:
- case HDR_CSEQ:
- /* we keep the original termination for these headers*/
- len += hdr->len;
- }
- }
- /* lumps length */
- for(lump=msg->reply_lump;lump;lump=lump->next) {
- len += lump->text.len;
- if (lump->flags&LUMP_RPL_BODY)
- body = lump;
- }
- /* server header */
- if (server_signature)
- len += SERVER_HDR_LEN + CRLF_LEN;
- /* warning hdr */
- if (sip_warning) {
- warning_buf = warning_builder(msg,&warning_len);
- if (warning_buf) len += warning_len + CRLF_LEN;
- else LOG(L_WARN, "WARNING: warning skipped -- too big\n");
- }
- /* content length hdr */
- if (body) {
- content_len_buf = int2str(body->text.len, (int*)&content_len_len);
- len += CONTENT_LENGTH_LEN + content_len_len + CRLF_LEN;
- } else {
- len += CONTENT_LENGTH_LEN + 1/*0*/ + CRLF_LEN;
- }
- /* end of message */
- len += CRLF_LEN; /*new line*/
-
- /*allocating mem*/
- buf = (char*) pkg_malloc( len+1 );
- if (!buf)
- {
- LOG(L_ERR, "ERROR: build_res_buf_from_sip_req: out of memory "
- " ; needs %d\n",len);
- goto error01;
- }
-
- /* filling the buffer*/
- p=buf;
- /* first line */
- memcpy( p , SIP_VERSION , SIP_VERSION_LEN );
- p += SIP_VERSION_LEN;
- *(p++) = ' ' ;
- /*code*/
- for ( i=2 , foo = code ; i>=0 ; i-- , foo=foo/10 )
- *(p+i) = '0' + foo - ( foo/10 )*10;
- p += 3;
- *(p++) = ' ' ;
- memcpy( p , text , text_len );
- p += text_len;
- memcpy( p, CRLF, CRLF_LEN );
- p+=CRLF_LEN;
- /* headers*/
- for ( hdr=msg->headers ; hdr ; hdr=hdr->next ) {
- switch (hdr->type)
- {
- case HDR_VIA:
- if (hdr==msg->h_via1){
- if (rport_buf){
- if (msg->via1->rport){ /* delete the old one */
- /* copy until rport */
- append_str_trans( p, hdr->name.s ,
- msg->via1->rport->start-hdr->name.s-1,msg);
- /* copy new rport */
- append_str(p, rport_buf, rport_len);
- /* copy the rest of the via */
- append_str_trans(p, msg->via1->rport->start+
- msg->via1->rport->size,
- hdr->body.s+hdr->body.len-
- msg->via1->rport->start-
- msg->via1->rport->size, msg);
- }else{ /* just append the new one */
- /* normal whole via copy */
- append_str_trans( p, hdr->name.s ,
- (hdr->body.s+hdr->body.len)-hdr->name.s, msg);
- append_str(p, rport_buf, rport_len);
- }
- }else{
- /* normal whole via copy */
- append_str_trans( p, hdr->name.s ,
- (hdr->body.s+hdr->body.len)-hdr->name.s, msg);
- }
- if (received_buf)
- append_str( p, received_buf, received_len);
- }else{
- /* normal whole via copy */
- append_str_trans( p, hdr->name.s,
- (hdr->body.s+hdr->body.len)-hdr->name.s, msg);
- }
- append_str( p, CRLF,CRLF_LEN);
- break;
- case HDR_RECORDROUTE:
- /* RR only for 1xx and 2xx replies */
- if (code<180 || code>=300) break;
- append_str(p, hdr->name.s, hdr->len);
- break;
- case HDR_TO:
- if (new_tag && new_tag->len){
- if (to_tag.s ) { /* replacement */
- /* before to-tag */
- append_str( p, hdr->name.s, to_tag.s-hdr->name.s);
- /* to tag replacement */
- bmark->to_tag_val.s=p;
- bmark->to_tag_val.len=new_tag->len;
- append_str( p, new_tag->s,new_tag->len);
- /* the rest after to-tag */
- append_str( p, to_tag.s+to_tag.len,
- hdr->name.s+hdr->len-(to_tag.s+to_tag.len));
- }else{ /* adding a new to-tag */
- after_body=hdr->body.s+hdr->body.len;
- append_str( p, hdr->name.s, after_body-hdr->name.s);
- append_str(p, TOTAG_TOKEN, TOTAG_TOKEN_LEN);
- bmark->to_tag_val.s=p;
- bmark->to_tag_val.len=new_tag->len;
- append_str( p, new_tag->s,new_tag->len);
- append_str( p, after_body,
- hdr->name.s+hdr->len-after_body);
- }
- break;
- } /* no new to-tag -- proceed to 1:1 copying */
- totags=((struct to_body*)(hdr->parsed))->tag_value.s;
- if (totags) {
- bmark->to_tag_val.s=p+(totags-hdr->name.s);
- bmark->to_tag_val.len=
- ((struct to_body*)(hdr->parsed))->tag_value.len;
- };
- case HDR_FROM:
- case HDR_CALLID:
- case HDR_CSEQ:
- append_str(p, hdr->name.s, hdr->len);
- } /* end switch */
- } /* end for */
- /* lumps */
- for(lump=msg->reply_lump;lump;lump=lump->next)
- if (lump->flags&LUMP_RPL_HDR){
- memcpy(p,lump->text.s,lump->text.len);
- p += lump->text.len;
- }
- /* server header */
- if (server_signature) {
- memcpy( p, SERVER_HDR , SERVER_HDR_LEN );
- p+=SERVER_HDR_LEN;
- memcpy( p, CRLF, CRLF_LEN );
- p+=CRLF_LEN;
- }
- /* content_length hdr */
- if (content_len_len) {
- append_str( p, CONTENT_LENGTH, CONTENT_LENGTH_LEN);
- append_str( p, content_len_buf, content_len_len );
- append_str( p, CRLF, CRLF_LEN );
- } else {
- append_str( p, CONTENT_LENGTH"0"CRLF,CONTENT_LENGTH_LEN+1+CRLF_LEN);
- }
- /* warning header */
- if (warning_buf) {
- memcpy( p, warning_buf, warning_len);
- p+=warning_len;
- memcpy( p, CRLF, CRLF_LEN);
- p+=CRLF_LEN;
- }
- /*end of message*/
- memcpy( p, CRLF, CRLF_LEN );
- p+=CRLF_LEN;
- /* body */
- if (body) {
- memcpy ( p, body->text.s, body->text.len );
- p+=body->text.len;
- }
-
- if (len!=p-buf)
- LOG(L_CRIT,"BUG:build_res_from_sip_req: diff len=%d p-buf=%d\n",
- len, (int)(p-buf));
-
- *(p) = 0;
- *returned_len = len;
- /* in req2reply, received_buf is not introduced to lumps and
- needs to be deleted here
- */
- if (received_buf) pkg_free(received_buf);
- if (rport_buf) pkg_free(rport_buf);
- return buf;
-
-error01:
- if (received_buf) pkg_free(received_buf);
- if (rport_buf) pkg_free(rport_buf);
-error00:
- *returned_len=0;
- return 0;
-}
-
-
-
-/* return number of chars printed or 0 if space exceeded;
- assumes buffer size of at least MAX_BRANCH_PARAM_LEN
- */
-int branch_builder( unsigned int hash_index,
- /* only either parameter useful */
- unsigned int label, char * char_v,
- int branch,
- char *branch_str, int *len )
-{
-
- char *begin;
- int size;
-
- /* hash id provided ... start with it */
- size=MAX_BRANCH_PARAM_LEN;
- begin=branch_str;
- *len=0;
-
- memcpy(begin, MCOOKIE, MCOOKIE_LEN );
- size-=MCOOKIE_LEN;begin+=MCOOKIE_LEN;
-
- if (int2reverse_hex( &begin, &size, hash_index)==-1)
- return 0;
-
- if (size) {
- *begin=BRANCH_SEPARATOR;
- begin++; size--;
- } else return 0;
-
- /* string with request's characteristic value ... use it ... */
- if (char_v) {
- if (memcpy(begin,char_v,MD5_LEN)) {
- begin+=MD5_LEN; size-=MD5_LEN;
- } else return 0;
- } else { /* ... use the "label" value otherwise */
- if (int2reverse_hex( &begin, &size, label )==-1)
- return 0;
- }
-
- if (size) {
- *begin=BRANCH_SEPARATOR;
- begin++; size--;
- } else return 0;
-
- if (int2reverse_hex( &begin, &size, branch)==-1)
- return 0;
-
- *len=MAX_BRANCH_PARAM_LEN-size;
- return size;
-
-}
-
-
-char* via_builder( unsigned int *len,
- struct socket_info* send_sock,
- str* branch, str* extra_params, int proto, struct hostport* hp)
-{
- unsigned int via_len, extra_len;
- char *line_buf;
- int max_len;
- str* address_str; /* address displayed in via */
- str* port_str; /* port no displayed in via */
-
- /* use pre-set address in via or the outbound socket one */
- if ( hp && hp->host->len)
- address_str=hp->host;
- else
- address_str=&(send_sock->address_str);
- if (hp && hp->port->len)
- port_str=hp->port;
- else
- port_str=&(send_sock->port_no_str);
-
- max_len=MY_VIA_LEN+address_str->len /* space in MY_VIA */
- +2 /* just in case it is a v6 address ... [ ] */
- +1 /*':'*/+port_str->len
- +(branch?(MY_BRANCH_LEN+branch->len):0)
- +(extra_params?extra_params->len:0)
- +CRLF_LEN+1;
- line_buf=pkg_malloc( max_len );
- if (line_buf==0){
- ser_error=E_OUT_OF_MEM;
- LOG(L_ERR, "ERROR: via_builder: out of memory\n");
- return 0;
- }
-
- extra_len=0;
-
- via_len=MY_VIA_LEN+address_str->len; /*space included in MY_VIA*/
-
- memcpy(line_buf, MY_VIA, MY_VIA_LEN);
- if (proto==PROTO_UDP){
- /* do nothing */
- }else if (proto==PROTO_TCP){
- memcpy(line_buf+MY_VIA_LEN-4, "TCP ", 4);
- }else if (proto==PROTO_TLS){
- memcpy(line_buf+MY_VIA_LEN-4, "TLS ", 4);
- }else{
- LOG(L_CRIT, "BUG: via_builder: unknown proto %d\n", proto);
- return 0;
- }
-# ifdef USE_IPV6
- /* add [] only if ipv6 and outbound socket address is used;
- * if using pre-set no check is made */
- if ((send_sock->address.af==AF_INET6) &&
- (address_str==&(send_sock->address_str))) {
- line_buf[MY_VIA_LEN]='[';
- line_buf[MY_VIA_LEN+1+address_str->len]=']';
- extra_len=1;
- via_len+=2; /* [ ]*/
- }
-# endif
- memcpy(line_buf+MY_VIA_LEN+extra_len, address_str->s, address_str->len);
- if ((send_sock->port_no!=SIP_PORT) || (port_str!=&send_sock->port_no_str)){
- line_buf[via_len]=':'; via_len++;
- memcpy(line_buf+via_len, port_str->s, port_str->len);
- via_len+=port_str->len;
- }
-
- /* branch parameter */
- if (branch){
- memcpy(line_buf+via_len, MY_BRANCH, MY_BRANCH_LEN );
- via_len+=MY_BRANCH_LEN;
- memcpy(line_buf+via_len, branch->s, branch->len );
- via_len+=branch->len;
- }
- /* extra params */
- if (extra_params){
- memcpy(line_buf+via_len, extra_params->s, extra_params->len);
- via_len+=extra_params->len;
- }
-
- memcpy(line_buf+via_len, CRLF, CRLF_LEN);
- via_len+=CRLF_LEN;
- line_buf[via_len]=0; /* null terminate the string*/
-
- *len = via_len;
- return line_buf;
-}
Deleted: ser/trunk/msg_translator.h
===================================================================
--- ser/trunk/msg_translator.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/msg_translator.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,120 +0,0 @@
-/*$Id: msg_translator.h,v 1.26 2004/08/24 08:45:10 janakj Exp $
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * History:
- * --------
- * 2003-03-06 totags in outgoing replies bookmarked to enable
- * ACK/200 tag matching
- *
- * 2003-03-01 VOICE_MAIL defs removed (jiri)
- * 2003-10-08 receive_test function-alized (jiri)
- */
-
-
-#ifndef _MSG_TRANSLATOR_H
-#define _MSG_TRANSLATOR_H
-
-#define MY_HF_SEP ": "
-#define MY_HF_SEP_LEN 2
-
-#define BRANCH_SEPARATOR '.'
-#define WARNING "Warning: 392 "
-#define WARNING_LEN (sizeof(WARNING)-1)
-#define WARNING_PHRASE " \"Noisy feedback tells: "
-#define WARNING_PHRASE_LEN (sizeof(WARNING_PHRASE)-1)
-
-//#define MAX_CONTENT_LEN_BUF INT2STR_MAX_LEN /* see ut.h/int2str() */
-
-#include "parser/msg_parser.h"
-#include "ip_addr.h"
-
-/* point to some remarkable positions in a SIP message */
-struct bookmark {
- str to_tag_val;
-};
-
-/* used by via_builder */
-struct hostport {
- str* host;
- str* port;
-};
-
-
-#define set_hostport(hp, msg) \
- do{ \
- if ((msg) && ((struct sip_msg*)(msg))->set_global_address.len) \
- (hp)->host=&(((struct sip_msg*)(msg))->set_global_address); \
- else \
- (hp)->host=&default_global_address; \
- if ((msg) && ((struct sip_msg*)(msg))->set_global_port.len) \
- (hp)->port=&(((struct sip_msg*)(msg))->set_global_port); \
- else \
- (hp)->port=&default_global_port; \
- }while(0)
-
-char * build_req_buf_from_sip_req ( struct sip_msg* msg,
- unsigned int *returned_len, struct socket_info* send_sock,
- int proto);
-
-char * build_res_buf_from_sip_res( struct sip_msg* msg,
- unsigned int *returned_len);
-
-
-char * build_res_buf_from_sip_req( unsigned int code ,
- char *text ,
- str *new_tag ,
- struct sip_msg* msg,
- unsigned int *returned_len,
- struct bookmark *bmark);
-/*
-char * build_res_buf_with_body_from_sip_req( unsigned int code ,
- char *text ,
- char *new_tag ,
- unsigned int new_tag_len ,
- char *body ,
- unsigned int body_len,
- char *content_type,
- unsigned int content_type_len,
- struct sip_msg* msg,
- unsigned int *returned_len,
- struct bookmark *bmark);
-*/
-char* via_builder( unsigned int *len,
- struct socket_info* send_sock,
- str *branch, str* extra_params, int proto, struct hostport *hp );
-
-
-int branch_builder( unsigned int hash_index,
- /* only either parameter useful */
- unsigned int label, char * char_v,
- int branch,
- /* output value: string and actual length */
- char *branch_str, int *len );
-
-/* check if IP address in Via != source IP address of signaling */
-int received_test( struct sip_msg *msg );
-
-#endif
Deleted: ser/trunk/name_alias.h
===================================================================
--- ser/trunk/name_alias.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/name_alias.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,118 +0,0 @@
-/*
- * $Id: name_alias.h,v 1.9 2004/10/10 16:19:00 andrei Exp $
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*
- * History:
- * --------
- * 2003-03-19 replaced all mallocs/frees w/ pkg_malloc/pkg_free (andrei)
- * 2003-10-21 support for proto added: proto:host:port (andrei)
- */
-
-
-
-#include "str.h"
-#include "dprint.h"
-#include "mem/mem.h"
-
-
-
-struct host_alias{
- str alias;
- unsigned short port;
- unsigned short proto;
- struct host_alias* next;
-};
-
-
-extern struct host_alias* aliases;
-
-
-
-/* returns 1 if name is in the alias list; if port=0, port no is ignored
- * if proto=0, proto is ignored*/
-static inline int grep_aliases(char* name, int len, unsigned short port,
- unsigned short proto)
-{
- struct host_alias* a;
-
-#ifdef USE_IPV6
- if ((len>2)&&((*name)=='[')&&(name[len-1]==']')){
- /* ipv6 reference, skip [] */
- name++;
- len-=2;
- }
-#endif
- for(a=aliases;a;a=a->next)
- if ((a->alias.len==len) && ((a->port==0) || (port==0) ||
- (a->port==port)) && ((a->proto==0) || (proto==0) ||
- (a->proto==proto)) && (strncasecmp(a->alias.s, name, len)==0))
- return 1;
- return 0;
-}
-
-
-
-/* adds an alias to the list (only if it isn't already there)
- * if port==0, the alias will match all the ports
- * if proto==0, the alias will match all the protocols
- * returns 1 if a new alias was added, 0 if a matching alias was already on
- * the list and -1 on error */
-static inline int add_alias(char* name, int len, unsigned short port,
- unsigned short proto)
-{
- struct host_alias* a;
-
- if ((port) && (proto)){
- /* don't add if there is already an alias matching it */
- if (grep_aliases(name,len, port, proto)) return 0;
- }else{
- /* don't add if already in the list with port or proto ==0*/
- for(a=aliases;a;a=a->next)
- if ((a->alias.len==len) && (a->port==port) && (a->proto==proto) &&
- (strncasecmp(a->alias.s, name, len)==0))
- return 0;
- }
- a=(struct host_alias*)pkg_malloc(sizeof(struct host_alias));
- if(a==0) goto error;
- a->alias.s=(char*)pkg_malloc(len+1);
- if (a->alias.s==0) goto error;
- a->alias.len=len;
- memcpy(a->alias.s, name, len);
- a->alias.s[len]=0; /* null terminate for easier printing*/
- a->port=port;
- a->proto=proto;
- a->next=aliases;
- aliases=a;
- return 1;
-error:
- LOG(L_ERR, "ERROR: add_alias: memory allocation error\n");
- if (a) pkg_free(a);
- return -1;
-}
-
-
-
Deleted: ser/trunk/pass_fd.c
===================================================================
--- ser/trunk/pass_fd.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/pass_fd.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,228 +0,0 @@
-/*
- * $Id: pass_fd.c,v 1.7.2.1 2005/08/31 13:18:29 andrei Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
- /*
- * History:
- * --------
- * 2002-11-29 created by andrei
- * 2003-02-20 added solaris support (! HAVE_MSGHDR_MSG_CONTROL) (andrei)
- * 2003-11-03 added send_all, recv_all and updated send/get_fd
- * to handle signals (andrei)
- */
-
-#ifdef USE_TCP
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/uio.h>
-#include <stdlib.h> /* for NULL definition on openbsd */
-#include <errno.h>
-#include <string.h>
-
-#include "dprint.h"
-
-
-
-/* receive all the data or returns error (handles EINTR etc.)
- * returns: bytes read or error (<0)
- * can return < data_len if EOF */
-int recv_all(int socket, void* data, int data_len)
-{
- int b_read;
- int n;
-
- b_read=0;
- do{
- n=recv(socket, (char*)data+b_read, data_len-b_read, MSG_WAITALL);
- if (n<0){
- /* error */
- if (errno==EINTR) continue; /* signal, try again */
- LOG(L_CRIT, "ERROR: recv_all: recv on %d failed: %s\n",
- socket, strerror(errno));
- return n;
- }
- b_read+=n;
- }while( (b_read!=data_len) && (n));
- return b_read;
-}
-
-
-/* sends all data (takes care of signals) (assumes blocking fd)
- * returns number of bytes sent or < 0 for an error */
-int send_all(int socket, void* data, int data_len)
-{
- int n;
-
-again:
- n=send(socket, data, data_len, 0);
- if (n<0){
- /* error */
- if (errno==EINTR) goto again; /* signal, try again */
- LOG(L_CRIT, "ERROR: send_all: send on %d failed: %s\n",
- socket, strerror(errno));
- }
- return n;
-}
-
-
-/* at least 1 byte must be sent! */
-int send_fd(int unix_socket, void* data, int data_len, int fd)
-{
- struct msghdr msg;
- struct iovec iov[1];
- int ret;
-#ifdef HAVE_MSGHDR_MSG_CONTROL
- struct cmsghdr* cmsg;
- /* make sure msg_control will point to properly aligned data */
- union {
- struct cmsghdr cm;
- char control[CMSG_SPACE(sizeof(fd))];
- }control_un;
-
- msg.msg_control=control_un.control;
- /* openbsd doesn't like "more space", msg_controllen must not
- * include the end padding */
- msg.msg_controllen=CMSG_LEN(sizeof(fd));
-
- cmsg=CMSG_FIRSTHDR(&msg);
- cmsg->cmsg_level = SOL_SOCKET;
- cmsg->cmsg_type = SCM_RIGHTS;
- cmsg->cmsg_len = CMSG_LEN(sizeof(fd));
- *(int*)CMSG_DATA(cmsg)=fd;
- msg.msg_flags=0;
-#else
- msg.msg_accrights=(caddr_t) &fd;
- msg.msg_accrightslen=sizeof(fd);
-#endif
-
- msg.msg_name=0;
- msg.msg_namelen=0;
-
- iov[0].iov_base=data;
- iov[0].iov_len=data_len;
- msg.msg_iov=iov;
- msg.msg_iovlen=1;
-
-again:
- ret=sendmsg(unix_socket, &msg, 0);
- if (ret<0){
- if (errno==EINTR) goto again;
- LOG(L_CRIT, "ERROR: send_fd: sendmsg failed on %d: %s\n",
- unix_socket, strerror(errno));
- }
-
- return ret;
-}
-
-
-
-int receive_fd(int unix_socket, void* data, int data_len, int* fd)
-{
- struct msghdr msg;
- struct iovec iov[1];
- int new_fd;
- int ret;
- int n;
-#ifdef HAVE_MSGHDR_MSG_CONTROL
- struct cmsghdr* cmsg;
- union{
- struct cmsghdr cm;
- char control[CMSG_SPACE(sizeof(new_fd))];
- }control_un;
-
- msg.msg_control=control_un.control;
- msg.msg_controllen=sizeof(control_un.control);
-#else
- msg.msg_accrights=(caddr_t) &new_fd;
- msg.msg_accrightslen=sizeof(int);
-#endif
-
- msg.msg_name=0;
- msg.msg_namelen=0;
-
- iov[0].iov_base=data;
- iov[0].iov_len=data_len;
- msg.msg_iov=iov;
- msg.msg_iovlen=1;
-
-again:
- ret=recvmsg(unix_socket, &msg, MSG_WAITALL);
- if (ret<0){
- if (errno==EINTR) goto again;
- LOG(L_CRIT, "ERROR: receive_fd: recvmsg on %d failed: %s\n",
- unix_socket, strerror(errno));
- goto error;
- }
- if (ret==0){
- /* EOF */
- LOG(L_CRIT, "ERROR: receive_fd: EOF on %d\n", unix_socket);
- goto error;
- }
- if (ret<data_len){
- LOG(L_WARN, "WARNING: receive_fd: too few bytes read (%d from %d)"
- "trying to fix...\n", ret, data_len);
- n=recv_all(unix_socket, (char*)data+ret, data_len-ret);
- if (n>=0) ret+=n;
- else{
- ret=n;
- goto error;
- }
- }
-
-#ifdef HAVE_MSGHDR_MSG_CONTROL
- cmsg=CMSG_FIRSTHDR(&msg);
- if ((cmsg!=0) && (cmsg->cmsg_len==CMSG_LEN(sizeof(new_fd)))){
- if (cmsg->cmsg_type!= SCM_RIGHTS){
- LOG(L_ERR, "ERROR: receive_fd: msg control type != SCM_RIGHTS\n");
- ret=-1;
- goto error;
- }
- if (cmsg->cmsg_level!= SOL_SOCKET){
- LOG(L_ERR, "ERROR: receive_fd: msg level != SOL_SOCKET\n");
- ret=-1;
- goto error;
- }
- *fd=*((int*) CMSG_DATA(cmsg));
- }else{
- LOG(L_ERR, "ERROR: receive_fd: no descriptor passed, cmsg=%p,"
- "len=%d\n", cmsg, (unsigned)cmsg->cmsg_len);
- *fd=-1;
- /* it's not really an error */
- }
-#else
- if (msg.msg_accrightslen==sizeof(int)){
- *fd=new_fd;
- }else{
- LOG(L_ERR, "ERROR: receive_fd: no descriptor passed,"
- " accrightslen=%d\n", msg.msg_accrightslen);
- *fd=-1;
- }
-#endif
-
-error:
- return ret;
-}
-#endif
Deleted: ser/trunk/pass_fd.h
===================================================================
--- ser/trunk/pass_fd.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/pass_fd.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,39 +0,0 @@
-/*
- * $Id: pass_fd.h,v 1.3 2004/08/24 08:45:10 janakj Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _pass_fd_h
-#define _pass_fd_h
-
-
-int send_fd(int unix_socket, void* data, int data_len, int fd);
-int receive_fd(int unix_socket, void* data, int data_len, int* fd);
-
-int recv_all(int socket, void* data, int data_len);
-int send_all(int socket, void* data, int data_len);
-
-
-#endif
Deleted: ser/trunk/proxy.c
===================================================================
--- ser/trunk/proxy.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/proxy.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,281 +0,0 @@
-/*
- * $Id: proxy.c,v 1.25 2004/08/24 08:45:10 janakj Exp $
- *
- * proxy list & assoc. functions
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
- /*
- * History:
- * -------
- * 2003-02-13 all *proxy functions are now proto aware (andrei)
- * 2003-03-19 replaced all mallocs/frees w/ pkg_malloc/pkg_free (andrei)
- */
-
-
-
-#include "config.h"
-#include "proxy.h"
-#include "error.h"
-#include "dprint.h"
-#include "mem/mem.h"
-
-#include <string.h>
-#include <stdlib.h>
-#include <sys/socket.h>
-
-#ifdef DNS_IP_HACK
-#include "ut.h"
-#endif
-
-#include "resolve.h"
-#include "ip_addr.h"
-#include "globals.h"
-
-
-struct proxy_l* proxies=0;
-
-
-
-/* searches for the proxy named 'name', on port 'port' with
- proto 'proto'; if proto==0 => proto wildcard (will match any proto)
- returns: pointer to proxy_l on success or 0 if not found */
-static struct proxy_l* find_proxy(str *name, unsigned short port, int proto)
-{
- struct proxy_l* t;
- for(t=proxies; t; t=t->next)
- if (((t->name.len == name->len) &&
- ((proto==PROTO_NONE)||(t->proto==proto))&&
- (strncasecmp(t->name.s, name->s, name->len)==0)) &&
- (t->port==port))
- break;
- return t;
-}
-
-
-
-/* copies a hostent structure*, returns 0 on success, <0 on error*/
-static int hostent_cpy(struct hostent *dst, struct hostent* src)
-{
- unsigned len,len2;
- int r,ret,i;
-
- /* start copying the host entry.. */
- /* copy h_name */
- len=strlen(src->h_name)+1;
- dst->h_name=(char*)pkg_malloc(sizeof(char) * len);
- if (dst->h_name) strncpy(dst->h_name,src->h_name, len);
- else{
- ser_error=ret=E_OUT_OF_MEM;
- goto error;
- }
-
- /* copy h_aliases */
- len=0;
- if (src->h_aliases)
- for (;src->h_aliases[len];len++);
- dst->h_aliases=(char**)pkg_malloc(sizeof(char*)*(len+1));
- if (dst->h_aliases==0){
- ser_error=ret=E_OUT_OF_MEM;
- pkg_free(dst->h_name);
- goto error;
- }
- memset((void*)dst->h_aliases, 0, sizeof(char*) * (len+1) );
- for (i=0;i<len;i++){
- len2=strlen(src->h_aliases[i])+1;
- dst->h_aliases[i]=(char*)pkg_malloc(sizeof(char)*len2);
- if (dst->h_aliases==0){
- ser_error=ret=E_OUT_OF_MEM;
- pkg_free(dst->h_name);
- for(r=0; r<i; r++) pkg_free(dst->h_aliases[r]);
- pkg_free(dst->h_aliases);
- goto error;
- }
- strncpy(dst->h_aliases[i], src->h_aliases[i], len2);
- }
- /* copy h_addr_list */
- len=0;
- if (src->h_addr_list)
- for (;src->h_addr_list[len];len++);
- dst->h_addr_list=(char**)pkg_malloc(sizeof(char*)*(len+1));
- if (dst->h_addr_list==0){
- ser_error=ret=E_OUT_OF_MEM;
- pkg_free(dst->h_name);
- for(r=0; dst->h_aliases[r]; r++) pkg_free(dst->h_aliases[r]);
- pkg_free(dst->h_aliases[r]);
- pkg_free(dst->h_aliases);
- goto error;
- }
- memset((void*)dst->h_addr_list, 0, sizeof(char*) * (len+1) );
- for (i=0;i<len;i++){
- dst->h_addr_list[i]=(char*)pkg_malloc(sizeof(char)*src->h_length);
- if (dst->h_addr_list[i]==0){
- ser_error=ret=E_OUT_OF_MEM;
- pkg_free(dst->h_name);
- for(r=0; dst->h_aliases[r]; r++) pkg_free(dst->h_aliases[r]);
- pkg_free(dst->h_aliases[r]);
- pkg_free(dst->h_aliases);
- for (r=0; r<i;r++) pkg_free(dst->h_addr_list[r]);
- pkg_free(dst->h_addr_list);
- goto error;
- }
- memcpy(dst->h_addr_list[i], src->h_addr_list[i], src->h_length);
- }
-
- /* copy h_addr_type & length */
- dst->h_addrtype=src->h_addrtype;
- dst->h_length=src->h_length;
- /*finished hostent copy */
-
- return 0;
-
-error:
- LOG(L_CRIT, "ERROR: hostent_cpy: memory allocation failure\n");
- return ret;
-}
-
-
-
-void free_hostent(struct hostent *dst)
-{
- int r;
- if (dst->h_name) pkg_free(dst->h_name);
- if (dst->h_aliases){
- for(r=0; dst->h_aliases[r]; r++) {
- pkg_free(dst->h_aliases[r]);
- }
- pkg_free(dst->h_aliases);
- }
- if (dst->h_addr_list){
- for (r=0; dst->h_addr_list[r];r++) {
- pkg_free(dst->h_addr_list[r]);
- }
- pkg_free(dst->h_addr_list);
- }
-}
-
-
-
-
-struct proxy_l* add_proxy(str* name, unsigned short port, int proto)
-{
- struct proxy_l* p;
-
- if ((p=find_proxy(name, port, proto))!=0) return p;
- if ((p=mk_proxy(name, port, proto))==0) goto error;
- /* add p to the proxy list */
- p->next=proxies;
- proxies=p;
- return p;
-
-error:
- return 0;
-}
-
-
-
-
-/* same as add_proxy, but it doesn't add the proxy to the list
- * uses also SRV if possible & port==0 (quick hack) */
-
-struct proxy_l* mk_proxy(str* name, unsigned short port, int proto)
-{
- struct proxy_l* p;
- struct hostent* he;
-
- p=(struct proxy_l*) pkg_malloc(sizeof(struct proxy_l));
- if (p==0){
- ser_error=E_OUT_OF_MEM;
- LOG(L_CRIT, "ERROR: mk_proxy: memory allocation failure\n");
- goto error;
- }
- memset(p,0,sizeof(struct proxy_l));
- p->name=*name;
- p->port=port;
- p->proto=proto;
-
- DBG("DEBUG: mk_proxy: doing DNS lookup...\n");
- he=sip_resolvehost(name, &(p->port), proto);
- if (he==0){
- ser_error=E_BAD_ADDRESS;
- LOG(L_CRIT, "ERROR: mk_proxy: could not resolve hostname:"
- " \"%.*s\"\n", name->len, name->s);
- pkg_free(p);
- goto error;
- }
- if (hostent_cpy(&(p->host), he)!=0){
- pkg_free(p);
- goto error;
- }
- p->ok=1;
- return p;
-error:
- return 0;
-}
-
-
-
-/* same as mk_proxy, but get the host as an ip*/
-struct proxy_l* mk_proxy_from_ip(struct ip_addr* ip, unsigned short port,
- int proto)
-{
- struct proxy_l* p;
-
- p=(struct proxy_l*) pkg_malloc(sizeof(struct proxy_l));
- if (p==0){
- LOG(L_CRIT, "ERROR: mk_proxy_from_ip: memory allocation failure\n");
- goto error;
- }
- memset(p,0,sizeof(struct proxy_l));
-
- p->port=port;
- p->proto=proto;
- p->host.h_addrtype=ip->af;
- p->host.h_length=ip->len;
- p->host.h_addr_list=pkg_malloc(2*sizeof(char*));
- if (p->host.h_addr_list==0) goto error;
- p->host.h_addr_list[1]=0;
- p->host.h_addr_list[0]=pkg_malloc(ip->len+1);
- if (p->host.h_addr_list[0]==0){
- pkg_free(p->host.h_addr_list);
- goto error;
- }
-
- memcpy(p->host.h_addr_list[0], ip->u.addr, ip->len);
- p->host.h_addr_list[0][ip->len]=0;
-
- return p;
-
-error:
- return 0;
-}
-
-
-
-
-void free_proxy(struct proxy_l* p)
-{
- if (p) free_hostent(&p->host);
-}
Deleted: ser/trunk/proxy.h
===================================================================
--- ser/trunk/proxy.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/proxy.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,70 +0,0 @@
-/*
- * $Id: proxy.h,v 1.9 2004/08/24 08:45:10 janakj Exp $
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
- /*
- * History:
- * -------
- * 2003-02-13 added proto to struct proxy_l & to *_proxy functions (andrei)
- */
-
-
-#ifndef proxy_h
-#define proxy_h
-
-#include <netdb.h>
-#include "ip_addr.h"
-#include "str.h"
-
-struct proxy_l{
- struct proxy_l* next;
- str name; /* original name */
- struct hostent host; /* addresses */
- unsigned short port;
- unsigned short reserved; /*align*/
- int proto;
-
- /* socket ? */
-
- int addr_idx; /* crt. addr. idx. */
- int ok; /* 0 on error */
- /*statistics*/
- int tx;
- int tx_bytes;
- int errors;
-};
-
-extern struct proxy_l* proxies;
-
-struct proxy_l* add_proxy(str* name, unsigned short port, int proto);
-struct proxy_l* mk_proxy(str* name, unsigned short port, int proto);
-struct proxy_l* mk_proxy_from_ip(struct ip_addr* ip, unsigned short port,
- int proto);
-void free_proxy(struct proxy_l* p);
-
-
-#endif
-
Deleted: ser/trunk/pt.h
===================================================================
--- ser/trunk/pt.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/pt.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,95 +0,0 @@
-/*
- * $Id: pt.h,v 1.11 2004/11/26 16:27:22 andrei Exp $
- *
- * Process Table
- *
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*
- * History:
- * --------
- * 2003-04-15 added tcp_disable support (andrei)
- */
-
-
-#ifndef _PT_H
-#define _PT_H
-
-#include <sys/types.h>
-#include <unistd.h>
-
-#include "globals.h"
-#include "timer.h"
-#include "socket_info.h"
-
-#define MAX_PT_DESC 128
-
-struct process_table {
- int pid;
-#ifdef USE_TCP
- int unix_sock; /* unix socket on which tcp main listens */
- int idx; /* tcp child index, -1 for other processes */
-#endif
- char desc[MAX_PT_DESC];
-};
-
-extern struct process_table *pt;
-extern int process_no;
-
-/* get number of process started by main with
- given configuration
-*/
-inline static int process_count()
-{
- int udp_listeners;
- struct socket_info* si;
-
- for (si=udp_listen, udp_listeners=0; si; si=si->next, udp_listeners++);
- return
- /* receivers and attendant */
- (dont_fork ? 1 : children_no*udp_listeners + 1)
- /* timer process */
- + 1 /* always, we need it in most cases, and we can't tell here
- & now if we don't need it */
- /* fifo server */
- +((fifo==NULL || strlen(fifo)==0) ? 0 : 1 )
- /* unixsock server*/
- +(unixsock_name?unixsock_children:0)
-#ifdef USE_TCP
- +((!tcp_disable)?( 1/* tcp main */ + tcp_children_no ):0)
-#endif
- ;
-}
-
-
-/* return processes pid */
-inline static int my_pid()
-{
- return pt ? pt[process_no].pid : getpid();
-}
-
-
-#endif
Deleted: ser/trunk/qvalue.c
===================================================================
--- ser/trunk/qvalue.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/qvalue.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,184 +0,0 @@
-/*
- * $Id: qvalue.c,v 1.1.2.1 2005/02/18 18:19:44 janakj Exp $
- *
- * Handling of the q value
- *
- * Copyright (C) 2004 FhG FOKUS
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * History
- * ------
- * 2004-04-25 created (janakj)
- */
-
-#include "error.h"
-#include "qvalue.h"
-
-
-/*
- * Convert string representation of q parameter in qvalue_t
- */
-int str2q(qvalue_t* q, char* s, int len)
-{
- int i, digits, order;
-
- /* States and equivalent regular expressions of input */
- enum {
- ST_START, /* (SPC|TAB)* */
- ST_0, /* 0+ */
- ST_1, /* 1 */
- ST_0_PT, /* 0*\. */
- ST_1_PT, /* 1\. */
- ST_1_PT_0, /* 1\.0+ */
- ST_0_PT_N /* 0*\.[0-9]+ */
- } state = ST_START;
-
- if (!q || !s) {
- return E_INVALID_PARAMS;
- }
-
- digits = 1;
- order = 100;
- for(i = 0; i < len; i++) {
- switch(state) {
- case ST_START:
- switch(s[i]) {
- case ' ':
- case '\t':
- break;
-
- case '0':
- *q = 0;
- state = ST_0;
- break;
-
- case '1':
- *q = 1000;
- state = ST_1;
- break;
-
- case '.':
- state = ST_0_PT;
- break;
-
- default:
- return E_Q_INV_CHAR;
- }
- break;
-
- case ST_0:
- switch(s[i]) {
- case '0':
- break;
-
- case '.':
- state = ST_0_PT;
- break;
-
- case '1':
- *q = 1000;
- state = ST_1;
- break;
-
- default:
- if (s[i] >= '2' && s[i] <= '9') {
- return E_Q_TOO_BIG;
- } else {
- return E_Q_INV_CHAR;
- }
- }
- break;
-
- case ST_1:
- if (s[i] == '.') {
- state = ST_1_PT;
- break;
- } else {
- if (s[i] >= '0' && s[i] <= '9') {
- return E_Q_TOO_BIG;
- } else {
- return E_Q_INV_CHAR;
- }
- }
- break;
-
- case ST_0_PT:
- if (s[i] >= '0' && s[i] <= '9') {
- *q = (s[i] - '0') * order;
- order /= 10;
- state = ST_0_PT_N;
- } else {
- return E_Q_INV_CHAR;
- }
- break;
-
- case ST_1_PT:
- if (s[i] == '0') {
- state = ST_1_PT_0;
- } else {
- if (s[i] >= '1' && s[i] <= '9') {
- return E_Q_TOO_BIG;
- } else {
- return E_Q_INV_CHAR;
- }
- }
- break;
-
- case ST_1_PT_0:
- if (s[i] == '0') {
- break;
- } else {
- if (s[i] >= '1' && s[i] <= '9') {
- return E_Q_TOO_BIG;
- } else {
- return E_Q_INV_CHAR;
- }
- }
- break;
-
- case ST_0_PT_N:
- if (s[i] >= '0' && s[i] <= '9') {
- if (digits <= 3) {
- *q += (s[i] - '0') * order;
- order /= 10;
- digits++;
- }
- } else {
- return E_Q_INV_CHAR;
- }
- break;
- }
- }
-
- switch(state) {
- case ST_START:
- return E_Q_EMPTY;
-
- case ST_0_PT:
- case ST_1_PT:
- return E_Q_DEC_MISSING;
-
- default:
- return 0;
- }
-}
Deleted: ser/trunk/qvalue.h
===================================================================
--- ser/trunk/qvalue.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/qvalue.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,177 +0,0 @@
-/*
- * $Id: qvalue.h,v 1.4 2004/04/27 14:52:57 janakj Exp $
- *
- * Handling of the q value
- *
- * Copyright (C) 2004 FhG FOKUS
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * History
- * ------
- * 2004-04-25 created (janakj)
- */
-
-#ifndef _QVALUE_H
-#define _QVALUE_H 1
-
-#include <string.h>
-
-/*
- * The q value expresses the priority of a URI within a set of URIs
- * (Contact header field in the same SIP message or dset array in
- * ser. The higher is the q value of a URI the higher is the priority
- * of the URI.
- *
- * The q value is usually expressed as a floating point number with
- * limited number of decimal digits, for example 0.346. RFC3261 allows
- * 0-3 decimal digits.
- *
- * To speed things up we represent the q value as integer number, it
- * is then easier to handle/print the value. To convert float into
- * integer we multiply the q value by 1000, i.e.
- * (float)0.567 == (int)567. In the opposite direction, values
- * higher or equal to 1000 are converted to 1.0 and values below or
- * equal to 0 are converted to 0.
- *
- * Value Q_UNSPECIFIED (which is in fact -1) has a special meaning, it
- * means that the q value is not known and the parameter should not be
- * printed when printing Contacts, implementations will then use
- * implementation specific pre-defined values.
- */
-
-typedef int qvalue_t;
-
-/*
- * Use this if the value of q is not specified
- */
-#define Q_UNSPECIFIED ((qvalue_t)-1)
-
-
-#define MAX_Q ((qvalue_t)1000)
-#define MIN_Q ((qvalue_t)0)
-
-#define MAX_Q_STR "1"
-#define MAX_Q_STR_LEN (sizeof(MAX_Q_STR) - 1)
-
-#define MIN_Q_STR "0"
-#define MIN_Q_STR_LEN (sizeof(MIN_Q_STR) - 1)
-
-#define Q_PREFIX "0."
-#define Q_PREFIX_LEN (sizeof(Q_PREFIX) - 1)
-
-
-
-/*
- * Calculate the length of printed q
- */
-static inline size_t len_q(qvalue_t q)
-{
- if (q == Q_UNSPECIFIED) {
- return 0;
- } else if (q >= MAX_Q) {
- return MAX_Q_STR_LEN;
- } else if (q <= MIN_Q) {
- return MIN_Q_STR_LEN;
- } else if (q % 100 == 0) {
- return Q_PREFIX_LEN + 1;
- } else if (q % 10 == 0) {
- return Q_PREFIX_LEN + 2;
- } else {
- return Q_PREFIX_LEN + 3;
- }
-}
-
-
-/*
- * Convert qvalue_t to double
- */
-static inline double q2double(qvalue_t q)
-{
- if (q == Q_UNSPECIFIED) {
- return -1;
- } else {
- return (double)((double)q / (double)1000);
- }
-}
-
-
-/*
- * Convert double to qvalue_t
- */
-static inline qvalue_t double2q(double q)
-{
- if (q == -1) {
- return Q_UNSPECIFIED;
- } else {
- return q * 1000;
- }
-}
-
-
-/*
- * Convert q value to string
- */
-static inline char* q2str(qvalue_t q, unsigned int* len)
-{
- static char buf[sizeof("0.123")];
- char* p;
-
- p = buf;
- if (q == Q_UNSPECIFIED) {
- /* Do nothing */
- } else if (q >= MAX_Q) {
- memcpy(p, MAX_Q_STR, MAX_Q_STR_LEN);
- p += MAX_Q_STR_LEN;
- } else if (q <= MIN_Q) {
- memcpy(p, MIN_Q_STR, MIN_Q_STR_LEN);
- p += MIN_Q_STR_LEN;
- } else {
- memcpy(p, Q_PREFIX, Q_PREFIX_LEN);
- p += Q_PREFIX_LEN;
-
- *p++ = q / 100 + '0';
- q %= 100;
- if (!q) goto end;
-
- *p++ = q / 10 + '0';
- q %= 10;
- if (!q) goto end;
-
- *p++ = q + '0';
- }
- end:
- *p = '\0';
- if (len) {
- *len = p - buf;
- }
- return buf;
-}
-
-
-/*
- * Convert string representation of q parameter in qvalue_t
- */
-int str2q(qvalue_t* q, char* s, int len);
-
-
-#endif /* _QVALUE_H */
Deleted: ser/trunk/re.c
===================================================================
--- ser/trunk/re.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/re.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,529 +0,0 @@
-/*
- * $Id: re.c,v 1.11 2004/11/12 16:58:58 andrei Exp $
- *
- * regexp and regexp substitutions implementations
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- *
- * History:
- * --------
- * 2003-08-04 created by andrei
- * 2004-11-12 minor api extension, added *count (andrei)
- */
-
-
-#include "dprint.h"
-#include "mem/mem.h"
-#include "re.h"
-
-#include <string.h>
-
-
-
-void subst_expr_free(struct subst_expr* se)
-{
- if (se->replacement.s) pkg_free(se->replacement.s);
- if (se->re) { regfree(se->re); pkg_free(se->re); };
- pkg_free(se);
-}
-
-
-
-/* frees the entire list, head (l) too */
-void replace_lst_free(struct replace_lst* l)
-{
- struct replace_lst* t;
-
- while (l){
- t=l;
- l=l->next;
- if (t->rpl.s) pkg_free(t->rpl.s);
- pkg_free(t);
- }
-}
-
-
-
-/* parse a /regular expression/replacement/flags into a subst_expr structure */
-struct subst_expr* subst_parser(str* subst)
-{
-#define MAX_REPLACE_WITH 100
- char c;
- char* end;
- char* p;
- char* re;
- char* re_end;
- char* repl;
- char* repl_end;
- struct replace_with rw[MAX_REPLACE_WITH];
- int rw_no;
- int escape;
- int cflags; /* regcomp flags */
- int replace_all;
- struct subst_expr* se;
- regex_t* regex;
- int max_pmatch;
- int r;
-
- /* init */
- se=0;
- regex=0;
- cflags=REG_EXTENDED | REG_NEWLINE; /* don't match newline */
- replace_all=0;
- if (subst->len<3){
- LOG(L_ERR, "ERROR: subst_parser: expression is too short: %.*s\n",
- subst->len, subst->s);
- goto error;
- }
-
- p=subst->s;
- c=*p;
- if (c=='\\'){
- LOG(L_ERR, "ERROR: subst_parser: invalid separator char <%c>"
- " in %.*s\n", c, subst->len, subst->s);
- goto error;
- }
- p++;
- end=subst->s+subst->len;
- /* find re */
- re=p;
- for (;p<end;p++){
- /* if unescaped sep. char */
- if ((*p==c) && (*(p-1)!='\\')) goto found_re;
- }
- LOG(L_ERR, "ERROR: subst_parser: no separator found: %.*s\n", subst->len,
- subst->s);
- goto error;
-found_re:
- re_end=p;
- p++;
- /* parse replacement */
- repl=p;
- rw_no=0;
- max_pmatch=0;
- escape=0;
- for(;p<end; p++){
- if (escape){
- escape=0;
- switch (*p){
- /* special char escapes */
- case '\\':
- rw[rw_no].size=2;
- rw[rw_no].offset=(p-1)-repl;
- rw[rw_no].type=REPLACE_CHAR;
- rw[rw_no].u.c='\\';
- break;
- case 'n':
- rw[rw_no].size=2;
- rw[rw_no].offset=(p-1)-repl;
- rw[rw_no].type=REPLACE_CHAR;
- rw[rw_no].u.c='\n';
- break;
- case 'r':
- rw[rw_no].size=2;
- rw[rw_no].offset=(p-1)-repl;
- rw[rw_no].type=REPLACE_CHAR;
- rw[rw_no].u.c='\r';
- break;
- case 't':
- rw[rw_no].size=2;
- rw[rw_no].offset=(p-1)-repl;
- rw[rw_no].type=REPLACE_CHAR;
- rw[rw_no].u.c='\t';
- break;
- /* special sip msg parts escapes */
- case 'u':
- rw[rw_no].size=2;
- rw[rw_no].offset=(p-1)-repl;
- rw[rw_no].type=REPLACE_URI;
- break;
- /* re matches */
- case '0': /* allow 0, too, reference to the whole match */
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- rw[rw_no].size=2;
- rw[rw_no].offset=(p-1)-repl;
- rw[rw_no].type=REPLACE_NMATCH;
- rw[rw_no].u.nmatch=(*p)-'0';/* 0 is the whole matched str*/
- if (max_pmatch<rw[rw_no].u.nmatch)
- max_pmatch=rw[rw_no].u.nmatch;
- break;
- default: /* just print current char */
- if (*p!=c){
- LOG(L_WARN, "subst_parser: WARNING: \\%c unknown"
- " escape in %.*s\n", *p, subst->len, subst->s);
- }
- rw[rw_no].size=2;
- rw[rw_no].offset=(p-1)-repl;
- rw[rw_no].type=REPLACE_CHAR;
- rw[rw_no].u.c=*p;
- break;
- }
- rw_no++;
- if (rw_no>=MAX_REPLACE_WITH){
- LOG(L_ERR, "ERROR: subst_parser: too many escapes in the"
- " replace part %.*s\n", subst->len, subst->s);
- goto error;
- }
- }else if (*p=='\\') escape=1;
- else if (*p==c) goto found_repl;
- }
- LOG(L_ERR, "ERROR: subst_parser: missing separator: %.*s\n", subst->len,
- subst->s);
- goto error;
-found_repl:
- repl_end=p;
- p++;
- /* parse flags */
- for(;p<end; p++){
- switch(*p){
- case 'i':
- cflags|=REG_ICASE;
- break;
- case 's':
- cflags&=(~REG_NEWLINE);
- break;
- case 'g':
- replace_all=1;
- break;
- default:
- LOG(L_ERR, "ERROR: subst_parser: unknown flag %c in %.*s\n",
- *p, subst->len, subst->s);
- goto error;
- }
- }
-
- /* compile the re */
- if ((regex=pkg_malloc(sizeof(regex_t)))==0){
- LOG(L_ERR, "ERROR: subst_parser: out of memory (re)\n");
- goto error;
- }
- c=*re_end; /* regcomp expects null terminated strings -- save */
- *re_end=0;
- if (regcomp(regex, re, cflags)!=0){
- pkg_free(regex);
- *re_end=c; /* restore */
- LOG(L_ERR, "ERROR: subst_parser: bad regular expression %.*s in "
- "%.*s\n", (int)(re_end-re), re, subst->len, subst->s);
- goto error;
- }
- *re_end=c; /* restore */
- /* construct the subst_expr structure */
- se=pkg_malloc(sizeof(struct subst_expr)+
- ((rw_no)?(rw_no-1)*sizeof(struct replace_with):0));
- /* 1 replace_with structure is already included in subst_expr */
- if (se==0){
- LOG(L_ERR, "ERROR: subst_parser: out of memory (subst_expr)\n");
- goto error;
- }
- memset((void*)se, 0, sizeof(struct subst_expr));
- se->replacement.len=repl_end-repl;
- if ((se->replacement.s=pkg_malloc(se->replacement.len))==0){
- LOG(L_ERR, "ERROR: subst_parser: out of memory (replacement)\n");
- goto error;
- }
- /* start copying */
- memcpy(se->replacement.s, repl, se->replacement.len);
- se->re=regex;
- se->replace_all=replace_all;
- se->n_escapes=rw_no;
- se->max_pmatch=max_pmatch;
- for (r=0; r<rw_no; r++) se->replace[r]=rw[r];
- DBG("subst_parser: ok, se is %p\n", se);
- return se;
-
-error:
- if (se) { subst_expr_free(se); regex=0; }
- if (regex) { regfree (regex); pkg_free(regex); }
- return 0;
-}
-
-
-
-static int replace_len(const char* match, int nmatch, regmatch_t* pmatch,
- struct subst_expr* se, struct sip_msg* msg)
-{
- int r;
- int len;
- str* uri;
-
- len=se->replacement.len;
- for (r=0; r<se->n_escapes; r++){
- switch(se->replace[r].type){
- case REPLACE_NMATCH:
- len-=se->replace[r].size;
- if ((se->replace[r].u.nmatch<nmatch)&&(
- pmatch[se->replace[r].u.nmatch].rm_so!=-1)){
- /* do the replace */
- len+=pmatch[se->replace[r].u.nmatch].rm_eo-
- pmatch[se->replace[r].u.nmatch].rm_so;
- };
- break;
- case REPLACE_CHAR:
- len-=(se->replace[r].size-1);
- break;
- case REPLACE_URI:
- len-=se->replace[r].size;
- if (msg->first_line.type!=SIP_REQUEST){
- LOG(L_CRIT, "BUG: replace_len: uri substitution on"
- " a reply\n");
- break; /* ignore, we can continue */
- }
- uri= (msg->new_uri.s)?(&msg->new_uri):
- (&msg->first_line.u.request.uri);
- len+=uri->len;
- break;
- default:
- LOG(L_CRIT, "BUG: replace_len: unknown type %d\n",
- se->replace[r].type);
- /* ignore it */
- }
- }
- return len;
-}
-
-
-
-/* rpl.s will be alloc'ed with the proper size & rpl.len set
- * returns 0 on success, <0 on error*/
-static int replace_build(const char* match, int nmatch, regmatch_t* pmatch,
- struct subst_expr* se, struct sip_msg* msg, str* rpl)
-{
- int r;
- str* uri;
- char* p;
- char* dest;
- char* end;
- int size;
-
- rpl->len=replace_len(match, nmatch, pmatch, se, msg);
- if (rpl->len==0){
- rpl->s=0; /* empty string */
- return 0;
- }
- rpl->s=pkg_malloc(rpl->len);
- if (rpl->s==0){
- LOG(L_ERR, "ERROR: replace_build: out of mem (rpl)\n");
- goto error;
- }
- p=se->replacement.s;
- end=p+se->replacement.len;
- dest=rpl->s;
- for (r=0; r<se->n_escapes; r++){
- /* copy the unescaped parts */
- size=se->replacement.s+se->replace[r].offset-p;
- memcpy(dest, p, size);
- p+=size+se->replace[r].size;
- dest+=size;
- switch(se->replace[r].type){
- case REPLACE_NMATCH:
- if ((se->replace[r].u.nmatch<nmatch)&&(
- pmatch[se->replace[r].u.nmatch].rm_so!=-1)){
- /* do the replace */
- size=pmatch[se->replace[r].u.nmatch].rm_eo-
- pmatch[se->replace[r].u.nmatch].rm_so;
- memcpy(dest,
- match+pmatch[se->replace[r].u.nmatch].rm_so,
- size);
- dest+=size;
- };
- break;
- case REPLACE_CHAR:
- *dest=se->replace[r].u.c;
- dest++;
- break;
- case REPLACE_URI:
- if (msg->first_line.type!=SIP_REQUEST){
- LOG(L_CRIT, "BUG: replace_build: uri substitution on"
- " a reply\n");
- break; /* ignore, we can continue */
- }
- uri= (msg->new_uri.s)?(&msg->new_uri):
- (&msg->first_line.u.request.uri);
- memcpy(dest, uri->s, uri->len);
- dest+=uri->len;
- break;
- default:
- LOG(L_CRIT, "BUG: replace_build: unknown type %d\n",
- se->replace[r].type);
- /* ignore it */
- }
- }
- memcpy(dest, p, end-p);
- return 0;
-error:
- return -1;
-}
-
-
-
-/* WARNING: input must be 0 terminated! */
-/* returns: 0 if no match or error, or subst result; if count!=0
- * it will be set to 0 (no match), the number of matches
- * or -1 (error).
- */
-struct replace_lst* subst_run(struct subst_expr* se, const char* input,
- struct sip_msg* msg, int* count)
-{
- struct replace_lst *head;
- struct replace_lst **crt;
- const char *p;
- int r;
- regmatch_t* pmatch;
- int nmatch;
- int eflags;
- int cnt;
-
-
- /* init */
- head=0;
- cnt=0;
- crt=&head;
- p=input;
- nmatch=se->max_pmatch+1;
- /* no of () referenced + 1 for the whole string: pmatch[0] */
- pmatch=pkg_malloc(nmatch*sizeof(regmatch_t));
- if (pmatch==0){
- LOG(L_ERR, "ERROR: subst_run_ out of mem. (pmatch)\n");
- goto error;
- }
- eflags=0;
- do{
- r=regexec(se->re, p, nmatch, pmatch, eflags);
- DBG("subst_run: running. r=%d\n", r);
- /* subst */
- if (r==0){ /* != REG_NOMATCH */
- /* change eflags, not to match any more at string start */
- eflags|=REG_NOTBOL;
- *crt=pkg_malloc(sizeof(struct replace_lst));
- if (*crt==0){
- LOG(L_ERR, "ERROR: subst_run: out of mem (crt)\n");
- goto error;
- }
- memset(*crt, 0, sizeof(struct replace_lst));
- if (pmatch[0].rm_so==-1){
- LOG(L_ERR, "ERROR: subst_run: unknown offset?\n");
- goto error;
- }
- (*crt)->offset=pmatch[0].rm_so+(int)(p-input);
- (*crt)->size=pmatch[0].rm_eo-pmatch[0].rm_so;
- DBG("subst_run: matched (%d, %d): [%.*s]\n",
- (*crt)->offset, (*crt)->size,
- (*crt)->size, input+(*crt)->offset);
- /* create subst. string */
- /* construct the string from replace[] */
- if (replace_build(p, nmatch, pmatch, se, msg, &((*crt)->rpl))<0){
- goto error;
- }
- crt=&((*crt)->next);
- p+=pmatch[0].rm_eo;
- cnt++;
- }
- }while((r==0) && se->replace_all);
- pkg_free(pmatch);
- if (count)*count=cnt;
- return head;
-error:
- if (head) replace_lst_free(head);
- if (pmatch) pkg_free(pmatch);
- if (count) *count=-1;
- return 0;
-}
-
-
-
-/* returns the substitution result in a str, input must be 0 term
- * 0 on no match or malloc error
- * if count is non zero it will be set to the number of matches, or -1
- * if error
- */
-str* subst_str(const char *input, struct sip_msg* msg, struct subst_expr* se,
- int* count)
-{
- str* res;
- struct replace_lst *lst;
- struct replace_lst* l;
- int len;
- int size;
- const char* p;
- char* dest;
- const char* end;
-
-
- /* compute the len */
- len=strlen(input);
- end=input+len;
- lst=subst_run(se, input, msg, count);
- if (lst==0){
- DBG("subst_str: no match\n");
- return 0;
- }
- for (l=lst; l; l=l->next)
- len+=(int)(l->rpl.len)-l->size;
- res=pkg_malloc(sizeof(str));
- if (res==0){
- LOG(L_ERR, "ERROR: subst_str: mem. allocation error\n");
- goto error;
- }
- res->s=pkg_malloc(len+1); /* space for null termination */
- if (res->s==0){
- LOG(L_ERR, "ERROR: subst_str: mem. allocation error (res->s)\n");
- goto error;
- }
- res->s[len]=0;
- res->len=len;
-
- /* replace */
- dest=res->s;
- p=input;
- for(l=lst; l; l=l->next){
- size=l->offset+input-p;
- memcpy(dest, p, size); /* copy till offset */
- p+=size + l->size; /* skip l->size bytes */
- dest+=size;
- if (l->rpl.len){
- memcpy(dest, l->rpl.s, l->rpl.len);
- dest+=l->rpl.len;
- }
- }
- memcpy(dest, p, end-p);
- if(lst) replace_lst_free(lst);
- return res;
-error:
- if (lst) replace_lst_free(lst);
- if (res){
- if (res->s) pkg_free(res->s);
- pkg_free(res);
- }
- if (count) *count=-1;
- return 0;
-}
Deleted: ser/trunk/re.h
===================================================================
--- ser/trunk/re.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/re.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,85 +0,0 @@
-/*
- * $Id: re.h,v 1.6 2004/11/12 16:58:58 andrei Exp $
- *
- * regexp and regexp substitutions implementations
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- *
- * History:
- * --------
- * 2003-08-04 created by andrei
- * 2004-11-12 minor api extension, added *count (andrei)
- */
-
-#ifndef _re_h
-#define _re_h
-
-#include "str.h"
-#include "parser/msg_parser.h"
-#include <sys/types.h> /* for regex */
-#include <regex.h>
-
-enum replace_special { REPLACE_NMATCH, REPLACE_CHAR, REPLACE_URI };
-
-struct replace_with{
- int offset; /* offset in string */
- int size; /* size of replace "anchor" in string */
- enum replace_special type;
- union{
- int nmatch;
- char c;
- }u;
-};
-
-struct subst_expr{
- regex_t* re;
- str replacement;
- int replace_all;
- int n_escapes; /* escapes number (replace[] size) */
- int max_pmatch ; /* highest () referenced */
- struct replace_with replace[1]; /* 0 does not work on all compilers */
-};
-
-struct replace_lst{
- int offset;
- int size; /* at offset, delete size bytes and replace them with rpl */
- str rpl;
- struct replace_lst *next;
-};
-
-
-
-void subst_expr_free(struct subst_expr* se);
-void replace_lst_free(struct replace_lst* l);
-struct subst_expr* subst_parser(str* subst);
-struct replace_lst* subst_run( struct subst_expr* se, const char* input,
- struct sip_msg* msg, int *count);
-str* subst_str(const char* input, struct sip_msg* msg,
- struct subst_expr* se, int* count);
-
-
-
-#endif
-
Deleted: ser/trunk/receive.c
===================================================================
--- ser/trunk/receive.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/receive.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,252 +0,0 @@
-/*
- *$Id: receive.c,v 1.50 2004/08/24 08:45:10 janakj Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * History:
- * ---------
- * 2003-02-28 scratchpad compatibility abandoned (jiri)
- * 2003-01-29 transport-independent message zero-termination in
- * receive_msg (jiri)
- * 2003-02-07 undoed jiri's zero term. changes (they break tcp) (andrei)
- * 2003-02-10 moved zero-term in the calling functions (udp_receive &
- * tcp_read_req)
- * 2003-08-13 fixed exec_pre_cb returning 0 (backported from stable) (andrei)
- * 2004-02-06 added user preferences support - destroy_avps() (bogdan)
- * 2004-04-30 exec_pre_cb is called after basic sanity checks (at least one
- * via present & parsed ok) (andrei)
- * 2004-08-23 avp core changed - destroy_avp-> reset_avps (bogdan)
- */
-
-
-#include <string.h>
-#include <stdlib.h>
-#include <sys/time.h>
-
-#include "receive.h"
-#include "globals.h"
-#include "dprint.h"
-#include "route.h"
-#include "parser/msg_parser.h"
-#include "forward.h"
-#include "action.h"
-#include "mem/mem.h"
-#include "stats.h"
-#include "ip_addr.h"
-#include "script_cb.h"
-#include "dset.h"
-#include "usr_avp.h"
-
-
-#include "tcp_server.h" /* for tcpconn_add_alias */
-
-
-#ifdef DEBUG_DMALLOC
-#include <mem/dmalloc.h>
-#endif
-
-unsigned int msg_no=0;
-/* address preset vars */
-str default_global_address={0,0};
-str default_global_port={0,0};
-str default_via_address={0,0};
-str default_via_port={0,0};
-
-
-
-/* WARNING: buf must be 0 terminated (buf[len]=0) or some things might
- * break (e.g.: modules/textops)
- */
-int receive_msg(char* buf, unsigned int len, struct receive_info* rcv_info)
-{
- struct sip_msg* msg;
- int ret;
-#ifdef STATS
- int skipped = 1;
- struct timeval tvb, tve;
- struct timezone tz;
- unsigned int diff;
-#endif
-
- msg=pkg_malloc(sizeof(struct sip_msg));
- if (msg==0) {
- LOG(L_ERR, "ERROR: receive_msg: no mem for sip_msg\n");
- goto error00;
- }
- msg_no++;
- /* number of vias parsed -- good for diagnostic info in replies */
- via_cnt=0;
-
- memset(msg,0, sizeof(struct sip_msg)); /* init everything to 0 */
- /* fill in msg */
- msg->buf=buf;
- msg->len=len;
- /* zero termination (termination of orig message bellow not that
- useful as most of the work is done with scratch-pad; -jiri */
- /* buf[len]=0; */ /* WARNING: zero term removed! */
- msg->rcv=*rcv_info;
- msg->id=msg_no;
- msg->set_global_address=default_global_address;
- msg->set_global_port=default_global_port;
-
- if (parse_msg(buf,len, msg)!=0){
- LOG(L_ERR, "ERROR: receive_msg: parse_msg failed\n");
- goto error02;
- }
- DBG("After parse_msg...\n");
-
-
- /* ... clear branches from previous message */
- clear_branches();
-
- if (msg->first_line.type==SIP_REQUEST){
- /* sanity checks */
- if ((msg->via1==0) || (msg->via1->error!=PARSE_OK)){
- /* no via, send back error ? */
- LOG(L_ERR, "ERROR: receive_msg: no via found in request\n");
- goto error;
- }
- /* check if necessary to add receive?->moved to forward_req */
- /* check for the alias stuff */
-#ifdef USE_TCP
- if (msg->via1->alias && tcp_accept_aliases &&
- (((rcv_info->proto==PROTO_TCP) && !tcp_disable)
-#ifdef USE_TLS
- || ((rcv_info->proto==PROTO_TLS) && !tls_disable)
-#endif
- )
- ){
- if (tcpconn_add_alias(rcv_info->proto_reserved1, msg->via1->port,
- rcv_info->proto)!=0){
- LOG(L_ERR, " ERROR: receive_msg: tcp alias failed\n");
- /* continue */
- }
- }
-#endif
-
- DBG("preparing to run routing scripts...\n");
-#ifdef STATS
- gettimeofday( & tvb, &tz );
-#endif
- /* execute pre-script callbacks, if any; -jiri */
- /* if some of the callbacks said not to continue with
- script processing, don't do so
- if we are here basic sanity checks are already done
- (like presence of at least one via), so you can count
- on via1 being parsed in a pre-script callback --andrei
- */
- ret=exec_pre_cb(msg);
- if (ret<=0){
- if (ret<0) goto error;
- else goto end; /* drop the message -- no error -- andrei */
- }
- /* exec the routing script */
- if (run_actions(rlist[0], msg)<0) {
- LOG(L_WARN, "WARNING: receive_msg: "
- "error while trying script\n");
- goto error;
- }
-
-#ifdef STATS
- gettimeofday( & tve, &tz );
- diff = (tve.tv_sec-tvb.tv_sec)*1000000+(tve.tv_usec-tvb.tv_usec);
- stats->processed_requests++;
- stats->acc_req_time += diff;
- DBG("successfully ran routing scripts...(%d usec)\n", diff);
- STATS_RX_REQUEST( msg->first_line.u.request.method_value );
-#endif
- }else if (msg->first_line.type==SIP_REPLY){
- /* sanity checks */
- if ((msg->via1==0) || (msg->via1->error!=PARSE_OK)){
- /* no via, send back error ? */
- LOG(L_ERR, "ERROR: receive_msg: no via found in reply\n");
- goto error;
- }
-#if 0
- if ((msg->via2==0) || (msg->via2->error!=PARSE_OK)){
- /* no second via => error? */
- LOG(L_ERR, "ERROR: receive_msg: no 2nd via found in reply\n");
- goto error;
- }
- /* check if via1 == us */
-#endif
-
-#ifdef STATS
- gettimeofday( & tvb, &tz );
- STATS_RX_RESPONSE ( msg->first_line.u.reply.statuscode / 100 );
-#endif
-
- /* execute pre-script callbacks, if any; -jiri */
- /* if some of the callbacks said not to continue with
- script processing, don't do so
- if we are here basic sanity checks are already done
- (like presence of at least one via), so you can count
- on via1 being parsed in a pre-script callback --andrei
- */
- ret=exec_pre_cb(msg);
- if (ret<=0){
- if (ret<0) goto error;
- else goto end; /* drop the message -- no error -- andrei */
- }
-
- /* send the msg */
- forward_reply(msg);
-
-#ifdef STATS
- gettimeofday( & tve, &tz );
- diff = (tve.tv_sec-tvb.tv_sec)*1000000+(tve.tv_usec-tvb.tv_usec);
- stats->processed_responses++;
- stats->acc_res_time+=diff;
- DBG("successfully ran reply processing...(%d usec)\n", diff);
-#endif
- }
-end:
-#ifdef STATS
- skipped = 0;
-#endif
- /* execute post-script callbacks, if any; -jiri */
- exec_post_cb(msg);
- /* free possible loaded avps -bogdan */
- reset_avps();
- DBG("receive_msg: cleaning up\n");
- free_sip_msg(msg);
- pkg_free(msg);
-#ifdef STATS
- if (skipped) STATS_RX_DROPS;
-#endif
- return 0;
-error:
- DBG("error:...\n");
- /* execute post-script callbacks, if any; -jiri */
- exec_post_cb(msg);
- /* free possible loaded avps -bogdan */
- reset_avps();
-error02:
- free_sip_msg(msg);
- pkg_free(msg);
-error00:
- STATS_RX_DROPS;
- return -1;
-}
-
Deleted: ser/trunk/receive.h
===================================================================
--- ser/trunk/receive.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/receive.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,38 +0,0 @@
-/*
- * $Id: receive.h,v 1.6 2004/08/24 08:45:10 janakj Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-
-#ifndef receive_h
-#define receive_h
-
-#include "ip_addr.h"
-
-int receive_msg(char* buf, unsigned int len, struct receive_info *ri);
-
-
-#endif
Deleted: ser/trunk/resolve.c
===================================================================
--- ser/trunk/resolve.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/resolve.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,546 +0,0 @@
-/* $Id: resolve.c,v 1.19 2004/08/24 08:45:10 janakj Exp $*/
-/*
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*
- * History:
- * -------
- * 2003-02-13 added proto to sip_resolvehost, for SRV lookups (andrei)
- * 2003-07-03 default port value set according to proto (andrei)
- */
-
-
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <arpa/nameser.h>
-#include <resolv.h>
-#include <string.h>
-
-#include "resolve.h"
-#include "dprint.h"
-#include "mem/mem.h"
-#include "ip_addr.h"
-
-
-
-/* mallocs for local stuff */
-#define local_malloc pkg_malloc
-#define local_free pkg_free
-
-
-
- /* skips over a domain name in a dns message
- * (it can be a sequence of labels ending in \0, a pointer or
- * a sequence of labels ending in a pointer -- see rfc1035
- * returns pointer after the domain name or null on error*/
-unsigned char* dns_skipname(unsigned char* p, unsigned char* end)
-{
- while(p<end){
- /* check if \0 (root label length) */
- if (*p==0){
- p+=1;
- break;
- }
- /* check if we found a pointer */
- if (((*p)&0xc0)==0xc0){
- /* if pointer skip over it (2 bytes) & we found the end */
- p+=2;
- break;
- }
- /* normal label */
- p+=*p+1;
- }
- return (p>=end)?0:p;
-}
-
-
-
-/* parses the srv record into a srv_rdata structure
- * msg - pointer to the dns message
- * end - pointer to the end of the message
- * rdata - pointer to the rdata part of the srv answer
- * returns 0 on error, or a dyn. alloc'ed srv_rdata structure */
-/* SRV rdata format:
- * 111111
- * 0123456789012345
- * +----------------+
- * | priority |
- * |----------------|
- * | weight |
- * |----------------|
- * | port number |
- * |----------------|
- * | |
- * ~ name ~
- * | |
- * +----------------+
- */
-struct srv_rdata* dns_srv_parser( unsigned char* msg, unsigned char* end,
- unsigned char* rdata)
-{
- struct srv_rdata* srv;
- int len;
-
- srv=0;
- if ((rdata+6)>=end) goto error;
- srv=(struct srv_rdata*)local_malloc(sizeof(struct srv_rdata));
- if (srv==0){
- LOG(L_ERR, "ERROR: dns_srv_parser: out of memory\n");
- goto error;
- }
-
- memcpy((void*)&srv->priority, rdata, 2);
- memcpy((void*)&srv->weight, rdata+2, 2);
- memcpy((void*)&srv->port, rdata+4, 2);
- rdata+=6;
- srv->priority=ntohs(srv->priority);
- srv->weight=ntohs(srv->weight);
- srv->port=ntohs(srv->port);
- if ((len=dn_expand(msg, end, rdata, srv->name, MAX_DNS_NAME-1))==-1)
- goto error;
- /* add terminating 0 ? (warning: len=compressed name len) */
- return srv;
-error:
- if (srv) local_free(srv);
- return 0;
-}
-
-
-/* parses the naptr record into a naptr_rdata structure
- * msg - pointer to the dns message
- * end - pointer to the end of the message
- * rdata - pointer to the rdata part of the naptr answer
- * returns 0 on error, or a dyn. alloc'ed naptr_rdata structure */
-/* NAPTR rdata format:
- * 111111
- * 0123456789012345
- * +----------------+
- * | order |
- * |----------------|
- * | preference |
- * |----------------|
- * ~ flags ~
- * | (string) |
- * |----------------|
- * ~ services ~
- * | (string) |
- * |----------------|
- * ~ regexp ~
- * | (string) |
- * |----------------|
- * ~ replacement ~
- | (name) |
- * +----------------+
- */
-struct naptr_rdata* dns_naptr_parser( unsigned char* msg, unsigned char* end,
- unsigned char* rdata)
-{
- struct naptr_rdata* naptr;
- int len;
-
- naptr = 0;
- if ((rdata + 7) >= end) goto error;
- naptr=(struct naptr_rdata*)local_malloc(sizeof(struct naptr_rdata));
- if (naptr == 0){
- LOG(L_ERR, "ERROR: dns_naptr_parser: out of memory\n");
- goto error;
- }
-
- memcpy((void*)&naptr->order, rdata, 2);
- naptr->order=ntohs(naptr->order);
- memcpy((void*)&naptr->pref, rdata + 2, 2);
- naptr->pref=ntohs(naptr->pref);
- naptr->flags_len = (int)rdata[4];
- if ((rdata + 7 + naptr->flags_len) >= end) goto error;
- memcpy((void*)&naptr->flags, rdata + 5, naptr->flags_len);
- naptr->services_len = (int)rdata[5 + naptr->flags_len];
- if ((rdata + 7 + naptr->flags_len + naptr->services_len) >= end) goto error;
- memcpy((void*)&naptr->services, rdata + 6 + naptr->flags_len, naptr->services_len);
- naptr->regexp_len = (int)rdata[6 + naptr->flags_len + naptr->services_len];
- if ((rdata + 7 + naptr->flags_len + naptr->services_len +
- naptr->regexp_len) >= end) goto error;
- memcpy((void*)&naptr->regexp, rdata + 7 + naptr->flags_len +
- naptr->services_len, naptr->regexp_len);
- rdata = rdata + 7 + naptr->flags_len + naptr->services_len +
- naptr->regexp_len;
- if ((len=dn_expand(msg, end, rdata, naptr->repl, MAX_DNS_NAME-1)) == -1)
- goto error;
- /* add terminating 0 ? (warning: len=compressed name len) */
- return naptr;
-error:
- if (naptr) local_free(naptr);
- return 0;
-}
-
-
-
-/* parses a CNAME record into a cname_rdata structure */
-struct cname_rdata* dns_cname_parser( unsigned char* msg, unsigned char* end,
- unsigned char* rdata)
-{
- struct cname_rdata* cname;
- int len;
-
- cname=0;
- cname=(struct cname_rdata*)local_malloc(sizeof(struct cname_rdata));
- if(cname==0){
- LOG(L_ERR, "ERROR: dns_cname_parser: out of memory\n");
- goto error;
- }
- if ((len=dn_expand(msg, end, rdata, cname->name, MAX_DNS_NAME-1))==-1)
- goto error;
- return cname;
-error:
- if (cname) local_free(cname);
- return 0;
-}
-
-
-
-/* parses an A record rdata into an a_rdata structure
- * returns 0 on error or a dyn. alloc'ed a_rdata struct
- */
-struct a_rdata* dns_a_parser(unsigned char* rdata, unsigned char* end)
-{
- struct a_rdata* a;
-
- if (rdata+4>=end) goto error;
- a=(struct a_rdata*)local_malloc(sizeof(struct a_rdata));
- if (a==0){
- LOG(L_ERR, "ERROR: dns_a_parser: out of memory\n");
- goto error;
- }
- memcpy(a->ip, rdata, 4);
- return a;
-error:
- return 0;
-}
-
-
-
-/* parses an AAAA (ipv6) record rdata into an aaaa_rdata structure
- * returns 0 on error or a dyn. alloc'ed aaaa_rdata struct */
-struct aaaa_rdata* dns_aaaa_parser(unsigned char* rdata, unsigned char* end)
-{
- struct aaaa_rdata* aaaa;
-
- if (rdata+16>=end) goto error;
- aaaa=(struct aaaa_rdata*)local_malloc(sizeof(struct aaaa_rdata));
- if (aaaa==0){
- LOG(L_ERR, "ERROR: dns_aaaa_parser: out of memory\n");
- goto error;
- }
- memcpy(aaaa->ip6, rdata, 16);
- return aaaa;
-error:
- return 0;
-}
-
-
-
-/* frees completely a struct rdata list */
-void free_rdata_list(struct rdata* head)
-{
- struct rdata* l;
- for(l=head; l; l=l->next){
- /* free the parsed rdata*/
- if (l->rdata) local_free(l->rdata);
- local_free(l);
- }
-}
-
-
-
-/* gets the DNS records for name:type
- * returns a dyn. alloc'ed struct rdata linked list with the parsed responses
- * or 0 on error
- * see rfc1035 for the query/response format */
-struct rdata* get_record(char* name, int type)
-{
- int size;
- int qno, answers_no;
- int r;
- int ans_len;
- static union dns_query buff;
- unsigned char* p;
- unsigned char* t;
- unsigned char* end;
- static unsigned char answer[ANS_SIZE];
- unsigned short rtype, class, rdlength;
- unsigned int ttl;
- struct rdata* head;
- struct rdata** crt;
- struct rdata** last;
- struct rdata* rd;
- struct srv_rdata* srv_rd;
- struct srv_rdata* crt_srv;
-
- size=res_search(name, C_IN, type, buff.buff, sizeof(buff));
- if (size<0) {
- DBG("get_record: lookup(%s, %d) failed\n", name, type);
- goto not_found;
- }
- else if (size > sizeof(buff)) size=sizeof(buff);
- head=rd=0;
- last=crt=&head;
-
- p=buff.buff+DNS_HDR_SIZE;
- end=buff.buff+size;
- if (p>=end) goto error_boundary;
- qno=ntohs((unsigned short)buff.hdr.qdcount);
-
- for (r=0; r<qno; r++){
- /* skip the name of the question */
- if ((p=dns_skipname(p, end))==0) {
- LOG(L_ERR, "ERROR: get_record: skipname==0\n");
- goto error;
- }
- p+=2+2; /* skip QCODE & QCLASS */
- #if 0
- for (;(p<end && (*p)); p++);
- p+=1+2+2; /* skip the ending '\0, QCODE and QCLASS */
- #endif
- if (p>=end) {
- LOG(L_ERR, "ERROR: get_record: p>=end\n");
- goto error;
- }
- };
- answers_no=ntohs((unsigned short)buff.hdr.ancount);
- ans_len=ANS_SIZE;
- t=answer;
- for (r=0; (r<answers_no) && (p<end); r++){
- /* ignore it the default domain name */
- if ((p=dns_skipname(p, end))==0) {
- LOG(L_ERR, "ERROR: get_record: skip_name=0 (#2)\n");
- goto error;
- }
- /*
- skip=dn_expand(buff.buff, end, p, t, ans_len);
- p+=skip;
- */
- /* check if enough space is left for type, class, ttl & size */
- if ((p+2+2+4+2)>=end) goto error_boundary;
- /* get type */
- memcpy((void*) &rtype, (void*)p, 2);
- rtype=ntohs(rtype);
- p+=2;
- /* get class */
- memcpy((void*) &class, (void*)p, 2);
- class=ntohs(class);
- p+=2;
- /* get ttl*/
- memcpy((void*) &ttl, (void*)p, 4);
- ttl=ntohl(ttl);
- p+=4;
- /* get size */
- memcpy((void*)&rdlength, (void*)p, 2);
- rdlength=ntohs(rdlength);
- p+=2;
- /* check for type */
- /*
- if (rtype!=type){
- LOG(L_ERR, "WARNING: get_record: wrong type in answer (%d!=%d)\n",
- rtype, type);
- p+=rdlength;
- continue;
- }
- */
- /* expand the "type" record (rdata)*/
-
- rd=(struct rdata*) local_malloc(sizeof(struct rdata));
- if (rd==0){
- LOG(L_ERR, "ERROR: get_record: out of memory\n");
- goto error;
- }
- rd->type=rtype;
- rd->class=class;
- rd->ttl=ttl;
- rd->next=0;
- switch(rtype){
- case T_SRV:
- srv_rd= dns_srv_parser(buff.buff, end, p);
- rd->rdata=(void*)srv_rd;
- if (srv_rd==0) goto error_parse;
-
- /* insert sorted into the list */
- for (crt=&head; *crt; crt= &((*crt)->next)){
- crt_srv=(struct srv_rdata*)(*crt)->rdata;
- if ((srv_rd->priority < crt_srv->priority) ||
- ( (srv_rd->priority == crt_srv->priority) &&
- (srv_rd->weight > crt_srv->weight) ) ){
- /* insert here */
- goto skip;
- }
- }
- last=&(rd->next); /*end of for => this will be the last elem*/
- skip:
- /* insert here */
- rd->next=*crt;
- *crt=rd;
-
- break;
- case T_A:
- rd->rdata=(void*) dns_a_parser(p,end);
- if (rd->rdata==0) goto error_parse;
- *last=rd; /* last points to the last "next" or the list head*/
- last=&(rd->next);
- break;
- case T_AAAA:
- rd->rdata=(void*) dns_aaaa_parser(p,end);
- if (rd->rdata==0) goto error_parse;
- *last=rd;
- last=&(rd->next);
- break;
- case T_CNAME:
- rd->rdata=(void*) dns_cname_parser(buff.buff, end, p);
- if(rd->rdata==0) goto error_parse;
- *last=rd;
- last=&(rd->next);
- break;
- case T_NAPTR:
- rd->rdata=(void*) dns_naptr_parser(buff.buff, end, p);
- if(rd->rdata==0) goto error_parse;
- *last=rd;
- last=&(rd->next);
- break;
- default:
- LOG(L_ERR, "WARNING: get_record: unknown type %d\n", rtype);
- rd->rdata=0;
- *last=rd;
- last=&(rd->next);
- }
-
- p+=rdlength;
-
- }
- return head;
-error_boundary:
- LOG(L_ERR, "ERROR: get_record: end of query buff reached\n");
- return 0;
-error_parse:
- LOG(L_ERR, "ERROR: get_record: rdata parse error \n");
- if (rd) local_free(rd); /* rd->rdata=0 & rd is not linked yet into
- the list */
-error:
- LOG(L_ERR, "ERROR: get_record \n");
- if (head) free_rdata_list(head);
-not_found:
- return 0;
-}
-
-
-
-/* resolves a host name trying SRV lookup if *port==0 or normal A/AAAA lookup
- * if *port!=0.
- * when performing SRV lookup (*port==0) it will use proto to look for
- * tcp or udp hosts, otherwise proto is unused; if proto==0 => no SRV lookup
- * returns: hostent struct & *port filled with the port from the SRV record;
- * 0 on error
- */
-struct hostent* sip_resolvehost(str* name, unsigned short* port, int proto)
-{
- struct hostent* he;
- struct rdata* head;
- struct rdata* l;
- struct srv_rdata* srv;
- struct ip_addr* ip;
- static char tmp[MAX_DNS_NAME]; /* tmp. buff. for SRV lookups */
-
- /* try SRV if no port specified (draft-ietf-sip-srv-06) */
- if ((port)&&(*port==0)){
- *port=(proto==PROTO_TLS)?SIPS_PORT:SIP_PORT; /* just in case we don't
- find another */
- if ((name->len+SRV_MAX_PREFIX_LEN+1)>MAX_DNS_NAME){
- LOG(L_WARN, "WARNING: sip_resolvehost: domain name too long (%d),"
- " unable to perform SRV lookup\n", name->len);
- }else{
- /* check if it's an ip address */
- if ( ((ip=str2ip(name))!=0)
-#ifdef USE_IPV6
- || ((ip=str2ip6(name))!=0)
-#endif
- ){
- /* we are lucky, this is an ip address */
- return ip_addr2he(name,ip);
- }
-
- switch(proto){
- case PROTO_NONE: /* no proto specified, use udp */
- goto skip_srv;
- case PROTO_UDP:
- memcpy(tmp, SRV_UDP_PREFIX, SRV_UDP_PREFIX_LEN);
- memcpy(tmp+SRV_UDP_PREFIX_LEN, name->s, name->len);
- tmp[SRV_UDP_PREFIX_LEN + name->len] = '\0';
- break;
- case PROTO_TCP:
- memcpy(tmp, SRV_TCP_PREFIX, SRV_TCP_PREFIX_LEN);
- memcpy(tmp+SRV_TCP_PREFIX_LEN, name->s, name->len);
- tmp[SRV_TCP_PREFIX_LEN + name->len] = '\0';
- break;
- case PROTO_TLS:
- memcpy(tmp, SRV_TLS_PREFIX, SRV_TLS_PREFIX_LEN);
- memcpy(tmp+SRV_TLS_PREFIX_LEN, name->s, name->len);
- tmp[SRV_TLS_PREFIX_LEN + name->len] = '\0';
- break;
- default:
- LOG(L_CRIT, "BUG: sip_resolvehost: unknown proto %d\n",
- proto);
- return 0;
- }
-
- head=get_record(tmp, T_SRV);
- for(l=head; l; l=l->next){
- if (l->type!=T_SRV) continue; /*should never happen*/
- srv=(struct srv_rdata*) l->rdata;
- if (srv==0){
- LOG(L_CRIT, "sip_resolvehost: BUG: null rdata\n");
- free_rdata_list(head);
- break;
- }
- he=resolvehost(srv->name);
- if (he!=0){
- /* we found it*/
- DBG("sip_resolvehost: SRV(%s) = %s:%d\n",
- tmp, srv->name, srv->port);
- *port=srv->port;
- free_rdata_list(head); /*clean up*/
- return he;
- }
- }
- if (head) free_rdata_list(head); /*clean up*/
- DBG("sip_resolvehost: no SRV record found for %.*s,"
- " trying 'normal' lookup...\n", name->len, name->s);
- }
- }
-skip_srv:
- if (name->len >= MAX_DNS_NAME) {
- LOG(L_ERR, "sip_resolvehost: domain name too long\n");
- return 0;
- }
- memcpy(tmp, name->s, name->len);
- tmp[name->len] = '\0';
- he=resolvehost(tmp);
- return he;
-}
Deleted: ser/trunk/resolve.h
===================================================================
--- ser/trunk/resolve.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/resolve.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,359 +0,0 @@
-/*
- * $Id: resolve.h,v 1.23 2004/08/24 08:45:10 janakj Exp $
- *
- * resolver related functions
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/* History:
- * --------
- * 2003-04-12 support for resolving ipv6 address references added (andrei)
- * 2004-07-28 darwin needs nameser_compat.h (andrei)
- */
-
-
-
-#ifndef __resolve_h
-#define __resolve_h
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netdb.h>
-#include <arpa/nameser.h>
-
-#ifdef __OS_darwin
-#include <arpa/nameser_compat.h>
-#endif
-
-#include "ip_addr.h"
-
-
-#define MAX_QUERY_SIZE 8192
-#define ANS_SIZE 8192
-#define DNS_HDR_SIZE 12
-#define MAX_DNS_NAME 256
-#define MAX_DNS_STRING 255
-
-
-
-/* query union*/
-union dns_query{
- HEADER hdr;
- unsigned char buff[MAX_QUERY_SIZE];
-};
-
-
-/* rdata struct*/
-struct rdata {
- unsigned short type;
- unsigned short class;
- unsigned int ttl;
- void* rdata;
- struct rdata* next;
-};
-
-
-/* srv rec. struct*/
-struct srv_rdata {
- unsigned short priority;
- unsigned short weight;
- unsigned short port;
- unsigned int name_len;
- char name[MAX_DNS_NAME];
-};
-
-/* naptr rec. struct*/
-struct naptr_rdata {
- unsigned short order;
- unsigned short pref;
- unsigned int flags_len;
- char flags[MAX_DNS_STRING];
- unsigned int services_len;
- char services[MAX_DNS_STRING];
- unsigned int regexp_len;
- char regexp[MAX_DNS_STRING];
- unsigned int repl_len; /* not currently used */
- char repl[MAX_DNS_NAME];
-};
-
-
-/* A rec. struct */
-struct a_rdata {
- unsigned char ip[4];
-};
-
-struct aaaa_rdata {
- unsigned char ip6[16];
-};
-
-/* cname rec. struct*/
-struct cname_rdata {
- char name[MAX_DNS_NAME];
-};
-
-
-
-struct rdata* get_record(char* name, int type);
-void free_rdata_list(struct rdata* head);
-
-
-
-
-#define rev_resolvehost(ip)\
- gethostbyaddr((char*)(ip)->u.addr, (ip)->len, (ip)->af);
-
-
-
-#define HEX2I(c) \
- ( (((c)>='0') && ((c)<='9'))? (c)-'0' : \
- (((c)>='A') && ((c)<='F'))? ((c)-'A')+10 : \
- (((c)>='a') && ((c)<='f'))? ((c)-'a')+10 : -1 )
-
-
-
-
-
-/* converts a str to an ipv4 address, returns the address or 0 on error
- Warning: the result is a pointer to a statically allocated structure */
-static inline struct ip_addr* str2ip(str* st)
-{
- int i;
- unsigned char *limit;
- static struct ip_addr ip;
- unsigned char* s;
-
- s=(unsigned char*)st->s;
-
- /*init*/
- ip.u.addr32[0]=0;
- i=0;
- limit=(unsigned char*)(st->s + st->len);
-
- for(;s<limit ;s++){
- if (*s=='.'){
- i++;
- if (i>3) goto error_dots;
- }else if ( (*s <= '9' ) && (*s >= '0') ){
- ip.u.addr[i]=ip.u.addr[i]*10+*s-'0';
- }else{
- //error unknown char
- goto error_char;
- }
- }
- if (i<3) goto error_dots;
- ip.af=AF_INET;
- ip.len=4;
-
- return &ip;
-error_dots:
- DBG("str2ip: ERROR: too %s dots in [%.*s]\n", (i>3)?"many":"few",
- st->len, st->s);
- return 0;
- error_char:
- /*
- DBG("str2ip: WARNING: unexpected char %c in [%.*s]\n", *s, st->len, st->s);
- */
- return 0;
-}
-
-
-
-/* returns an ip_addr struct.; on error returns 0
- * the ip_addr struct is static, so subsequent calls will destroy its content*/
-static inline struct ip_addr* str2ip6(str* st)
-{
- int i, idx1, rest;
- int no_colons;
- int double_colon;
- int hex;
- static struct ip_addr ip;
- unsigned short* addr_start;
- unsigned short addr_end[8];
- unsigned short* addr;
- unsigned char* limit;
- unsigned char* s;
-
- /* init */
- if ((st->len) && (st->s[0]=='[')){
- /* skip over [ ] */
- if (st->s[st->len-1]!=']') goto error_char;
- s=(unsigned char*)(st->s+1);
- limit=(unsigned char*)(st->s+st->len-1);
- }else{
- s=(unsigned char*)st->s;
- limit=(unsigned char*)(st->s+st->len);
- }
- i=idx1=rest=0;
- double_colon=0;
- no_colons=0;
- ip.af=AF_INET6;
- ip.len=16;
- addr_start=ip.u.addr16;
- addr=addr_start;
- memset(addr_start, 0 , 8*sizeof(unsigned short));
- memset(addr_end, 0 , 8*sizeof(unsigned short));
- for (; s<limit; s++){
- if (*s==':'){
- no_colons++;
- if (no_colons>7) goto error_too_many_colons;
- if (double_colon){
- idx1=i;
- i=0;
- if (addr==addr_end) goto error_colons;
- addr=addr_end;
- }else{
- double_colon=1;
- addr[i]=htons(addr[i]);
- i++;
- }
- }else if ((hex=HEX2I(*s))>=0){
- addr[i]=addr[i]*16+hex;
- double_colon=0;
- }else{
- /* error, unknown char */
- goto error_char;
- }
- }
- if (!double_colon){ /* not ending in ':' */
- addr[i]=htons(addr[i]);
- i++;
- }
- /* if address contained '::' fix it */
- if (addr==addr_end){
- rest=8-i-idx1;
- memcpy(addr_start+idx1+rest, addr_end, i*sizeof(unsigned short));
- }else{
- /* no double colons inside */
- if (no_colons<7) goto error_too_few_colons;
- }
-/*
- DBG("str2ip6: idx1=%d, rest=%d, no_colons=%d, hex=%x\n",
- idx1, rest, no_colons, hex);
- DBG("str2ip6: address %x:%x:%x:%x:%x:%x:%x:%x\n",
- addr_start[0], addr_start[1], addr_start[2],
- addr_start[3], addr_start[4], addr_start[5],
- addr_start[6], addr_start[7] );
-*/
- return &ip;
-
-error_too_many_colons:
- DBG("str2ip6: ERROR: too many colons in [%.*s]\n", st->len, st->s);
- return 0;
-
-error_too_few_colons:
- DBG("str2ip6: ERROR: too few colons in [%.*s]\n", st->len, st->s);
- return 0;
-
-error_colons:
- DBG("str2ip6: ERROR: too many double colons in [%.*s]\n", st->len, st->s);
- return 0;
-
-error_char:
- /*
- DBG("str2ip6: WARNING: unexpected char %c in [%.*s]\n", *s, st->len,
- st->s);*/
- return 0;
-}
-
-
-
-struct hostent* sip_resolvehost(str* name, unsigned short* port, int proto);
-
-
-
-/* gethostbyname wrappers
- * use this, someday they will use a local cache */
-
-static inline struct hostent* resolvehost(char* name)
-{
- static struct hostent* he=0;
-#ifdef HAVE_GETIPNODEBYNAME
- int err;
- static struct hostent* he2=0;
-#endif
-#ifndef DNS_IP_HACK
-#ifdef USE_IPV6
- int len;
-#endif
-#endif
-#ifdef DNS_IP_HACK
- struct ip_addr* ip;
- str s;
-
- s.s = (char*)name;
- s.len = strlen(name);
-
- /* check if it's an ip address */
- if ( ((ip=str2ip(&s))!=0)
-#ifdef USE_IPV6
- || ((ip=str2ip6(&s))!=0)
-#endif
- ){
- /* we are lucky, this is an ip address */
- return ip_addr2he(&s, ip);
- }
-
-#else /* DNS_IP_HACK */
-#ifdef USE_IPV6
- len=0;
- if (*name=='['){
- len=strlen(name);
- if (len && (name[len-1]==']')){
- name[len-1]=0; /* remove '[' */
- name++; /* skip '[' */
- goto skip_ipv4;
- }
- }
-#endif
-#endif
- /* ipv4 */
- he=gethostbyname(name);
-#ifdef USE_IPV6
- if(he==0){
-#ifndef DNS_IP_HACK
-skip_ipv4:
-#endif
- /*try ipv6*/
- #ifdef HAVE_GETHOSTBYNAME2
- he=gethostbyname2(name, AF_INET6);
- #elif defined HAVE_GETIPNODEBYNAME
- /* on solaris 8 getipnodebyname has a memory leak,
- * after some time calls to it will fail with err=3
- * solution: patch your solaris 8 installation */
- if (he2) freehostent(he2);
- he=he2=getipnodebyname(name, AF_INET6, 0, &err);
- #else
- #error neither gethostbyname2 or getipnodebyname present
- #endif
-#ifndef DNS_IP_HACK
- if (len) name[len-2]=']'; /* restore */
-#endif
- }
-#endif
- return he;
-}
-
-
-
-#endif
Deleted: ser/trunk/route.c
===================================================================
--- ser/trunk/route.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/route.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,788 +0,0 @@
-/*
- * $Id: route.c,v 1.43.2.1 2005/02/18 14:30:44 andrei Exp $
- *
- * SIP routing engine
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * History:
- * --------
- * 2003-01-28 scratchpad removed, src_port introduced (jiri)
- * 2003-02-28 scratchpad compatibility abandoned (jiri)
- * 2003-03-10 updated to the new module exports format (andrei)
- * 2003-03-19 replaced all mallocs/frees w/ pkg_malloc/pkg_free (andrei)
- * 2003-04-01 added dst_port, proto, af; renamed comp_port to comp_no,
- * inlined all the comp_* functions (andrei)
- * 2003-04-05 s/reply_route/failure_route, onreply_route introduced (jiri)
- * 2003-05-23 comp_ip fixed, now it will resolve its operand and compare
- * the ip with all the addresses (andrei)
- * 2003-10-10 added more operators support to comp_* (<,>,<=,>=,!=) (andrei)
- * 2004-10-19 added from_uri & to_uri (andrei)
- */
-
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <regex.h>
-#include <netdb.h>
-#include <string.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-
-#include "route.h"
-#include "forward.h"
-#include "dprint.h"
-#include "proxy.h"
-#include "action.h"
-#include "sr_module.h"
-#include "ip_addr.h"
-#include "resolve.h"
-#include "socket_info.h"
-#include "parser/parse_uri.h"
-#include "parser/parse_from.h"
-#include "parser/parse_to.h"
-#include "mem/mem.h"
-
-
-/* main routing script table */
-struct action* rlist[RT_NO];
-/* reply routing table */
-struct action* onreply_rlist[ONREPLY_RT_NO];
-struct action* failure_rlist[FAILURE_RT_NO];
-
-
-static int fix_actions(struct action* a); /*fwd declaration*/
-
-
-/* traverses an expr tree and compiles the REs where necessary)
- * returns: 0 for ok, <0 if errors */
-static int fix_expr(struct expr* exp)
-{
- regex_t* re;
- int ret;
-
- ret=E_BUG;
- if (exp==0){
- LOG(L_CRIT, "BUG: fix_expr: null pointer\n");
- return E_BUG;
- }
- if (exp->type==EXP_T){
- switch(exp->op){
- case AND_OP:
- case OR_OP:
- if ((ret=fix_expr(exp->l.expr))!=0)
- return ret;
- ret=fix_expr(exp->r.expr);
- break;
- case NOT_OP:
- ret=fix_expr(exp->l.expr);
- break;
- default:
- LOG(L_CRIT, "BUG: fix_expr: unknown op %d\n",
- exp->op);
- }
- }else if (exp->type==ELEM_T){
- if (exp->op==MATCH_OP){
- if (exp->subtype==STRING_ST){
- re=(regex_t*)pkg_malloc(sizeof(regex_t));
- if (re==0){
- LOG(L_CRIT, "ERROR: fix_expr: memory allocation"
- " failure\n");
- return E_OUT_OF_MEM;
- }
- if (regcomp(re, (char*) exp->r.param,
- REG_EXTENDED|REG_NOSUB|REG_ICASE) ){
- LOG(L_CRIT, "ERROR: fix_expr : bad re \"%s\"\n",
- (char*) exp->r.param);
- pkg_free(re);
- return E_BAD_RE;
- }
- /* replace the string with the re */
- pkg_free(exp->r.param);
- exp->r.param=re;
- exp->subtype=RE_ST;
- }else if (exp->subtype!=RE_ST){
- LOG(L_CRIT, "BUG: fix_expr : invalid type for match\n");
- return E_BUG;
- }
- }
- if (exp->l.operand==ACTION_O){
- ret=fix_actions((struct action*)exp->r.param);
- if (ret!=0){
- LOG(L_CRIT, "ERROR: fix_expr : fix_actions error\n");
- return ret;
- }
- }
- ret=0;
- }
- return ret;
-}
-
-
-
-/* adds the proxies in the proxy list & resolves the hostnames */
-/* returns 0 if ok, <0 on error */
-static int fix_actions(struct action* a)
-{
- struct action *t;
- struct proxy_l* p;
- char *tmp;
- int ret;
- cmd_export_t* cmd;
- struct sr_module* mod;
- str s;
- struct hostent* he;
- struct ip_addr ip;
- struct socket_info* si;
-
- if (a==0){
- LOG(L_CRIT,"BUG: fix_actions: null pointer\n");
- return E_BUG;
- }
- for(t=a; t!=0; t=t->next){
- switch(t->type){
- case FORWARD_T:
- case FORWARD_TLS_T:
- case FORWARD_TCP_T:
- case FORWARD_UDP_T:
- case SEND_T:
- case SEND_TCP_T:
- switch(t->p1_type){
- case IP_ST:
- tmp=strdup(ip_addr2a(
- (struct ip_addr*)t->p1.data));
- if (tmp==0){
- LOG(L_CRIT, "ERROR: fix_actions:"
- "memory allocation failure\n");
- return E_OUT_OF_MEM;
- }
- t->p1_type=STRING_ST;
- t->p1.string=tmp;
- /* no break */
- case STRING_ST:
- s.s = t->p1.string;
- s.len = strlen(s.s);
- p=add_proxy(&s, t->p2.number, 0); /* FIXME proto*/
- if (p==0) return E_BAD_ADDRESS;
- t->p1.data=p;
- t->p1_type=PROXY_ST;
- break;
- case URIHOST_ST:
- break;
- default:
- LOG(L_CRIT, "BUG: fix_actions: invalid type"
- "%d (should be string or number)\n",
- t->type);
- return E_BUG;
- }
- break;
- case IF_T:
- if (t->p1_type!=EXPR_ST){
- LOG(L_CRIT, "BUG: fix_actions: invalid subtype"
- "%d for if (should be expr)\n",
- t->p1_type);
- return E_BUG;
- }else if( (t->p2_type!=ACTIONS_ST)&&(t->p2_type!=NOSUBTYPE) ){
- LOG(L_CRIT, "BUG: fix_actions: invalid subtype"
- "%d for if() {...} (should be action)\n",
- t->p2_type);
- return E_BUG;
- }else if( (t->p3_type!=ACTIONS_ST)&&(t->p3_type!=NOSUBTYPE) ){
- LOG(L_CRIT, "BUG: fix_actions: invalid subtype"
- "%d for if() {} else{...}(should be action)\n",
- t->p3_type);
- return E_BUG;
- }
- if (t->p1.data){
- if ((ret=fix_expr((struct expr*)t->p1.data))<0)
- return ret;
- }
- if ( (t->p2_type==ACTIONS_ST)&&(t->p2.data) ){
- if ((ret=fix_actions((struct action*)t->p2.data))<0)
- return ret;
- }
- if ( (t->p3_type==ACTIONS_ST)&&(t->p3.data) ){
- if ((ret=fix_actions((struct action*)t->p3.data))<0)
- return ret;
- }
- break;
- case MODULE_T:
- if ((mod=find_module(t->p1.data, &cmd))!=0){
- DBG("fixing %s %s\n", mod->path, cmd->name);
- if (cmd->fixup){
- if (cmd->param_no>0){
- ret=cmd->fixup(&t->p2.data, 1);
- t->p2_type=MODFIXUP_ST;
- if (ret<0) return ret;
- }
- if (cmd->param_no>1){
- ret=cmd->fixup(&t->p3.data, 2);
- t->p3_type=MODFIXUP_ST;
- if (ret<0) return ret;
- }
- }
- }
- break;
- case FORCE_SEND_SOCKET_T:
- if (t->p1_type!=SOCKID_ST){
- LOG(L_CRIT, "BUG: fix_actions: invalid subtype"
- "%d for force_send_socket\n",
- t->p1_type);
- return E_BUG;
- }
- he=resolvehost(((struct socket_id*)t->p1.data)->name);
- if (he==0){
- LOG(L_ERR, "ERROR: fix_actions: force_send_socket:"
- " could not resolve %s\n",
- ((struct socket_id*)t->p1.data)->name);
- return E_BAD_ADDRESS;
- }
- hostent2ip_addr(&ip, he, 0);
- si=find_si(&ip, ((struct socket_id*)t->p1.data)->port,
- ((struct socket_id*)t->p1.data)->proto);
- if (si==0){
- LOG(L_ERR, "ERROR: fix_actions: bad force_send_socket"
- " argument: %s:%d (ser doesn't listen on it)\n",
- ((struct socket_id*)t->p1.data)->name,
- ((struct socket_id*)t->p1.data)->port);
- return E_BAD_ADDRESS;
- }
- t->p1.data=si;
- t->p1_type=SOCKETINFO_ST;
- break;
- }
- }
- return 0;
-}
-
-
-inline static int comp_no( int port, void *param, int op, int subtype )
-{
-
- if (subtype!=NUMBER_ST) {
- LOG(L_CRIT, "BUG: comp_no: number expected: %d\n", subtype );
- return E_BUG;
- }
- switch (op){
- case EQUAL_OP:
- return port==(long)param;
- case DIFF_OP:
- return port!=(long)param;
- case GT_OP:
- return port>(long)param;
- case LT_OP:
- return port<(long)param;
- case GTE_OP:
- return port>=(long)param;
- case LTE_OP:
- return port<=(long)param;
- default:
- LOG(L_CRIT, "BUG: comp_no: unknown operator: %d\n", op );
- return E_BUG;
- }
-}
-
-/* eval_elem helping function, returns str op param */
-inline static int comp_strstr(str* str, void* param, int op, int subtype)
-{
- int ret;
- char backup;
-
- ret=-1;
- switch(op){
- case EQUAL_OP:
- if (subtype!=STRING_ST){
- LOG(L_CRIT, "BUG: comp_str: bad type %d, "
- "string expected\n", subtype);
- goto error;
- }
- ret=(strncasecmp(str->s, (char*)param, str->len)==0);
- break;
- case DIFF_OP:
- if (subtype!=STRING_ST){
- LOG(L_CRIT, "BUG: comp_str: bad type %d, "
- "string expected\n", subtype);
- goto error;
- }
- ret=(strncasecmp(str->s, (char*)param, str->len)!=0);
- break;
- case MATCH_OP:
- if (subtype!=RE_ST){
- LOG(L_CRIT, "BUG: comp_str: bad type %d, "
- " RE expected\n", subtype);
- goto error;
- }
- /* this is really ugly -- we put a temporary zero-terminating
- * character in the original string; that's because regexps
- * take 0-terminated strings and our messages are not
- * zero-terminated; it should not hurt as long as this function
- * is applied to content of pkg mem, which is always the case
- * with calls from route{}; the same goes for fline in reply_route{};
- *
- * also, the received function should always give us an extra
- * character, into which we can put the 0-terminator now;
- * an alternative would be allocating a new piece of memory,
- * which might be too slow
- * -jiri
- */
- backup=str->s[str->len];str->s[str->len]=0;
- ret=(regexec((regex_t*)param, str->s, 0, 0, 0)==0);
- str->s[str->len]=backup;
- break;
- default:
- LOG(L_CRIT, "BUG: comp_str: unknown op %d\n", op);
- goto error;
- }
- return ret;
-
-error:
- return -1;
-}
-
-/* eval_elem helping function, returns str op param */
-inline static int comp_str(char* str, void* param, int op, int subtype)
-{
- int ret;
-
- ret=-1;
- switch(op){
- case EQUAL_OP:
- if (subtype!=STRING_ST){
- LOG(L_CRIT, "BUG: comp_str: bad type %d, "
- "string expected\n", subtype);
- goto error;
- }
- ret=(strcasecmp(str, (char*)param)==0);
- break;
- case DIFF_OP:
- if (subtype!=STRING_ST){
- LOG(L_CRIT, "BUG: comp_str: bad type %d, "
- "string expected\n", subtype);
- goto error;
- }
- ret=(strcasecmp(str, (char*)param)!=0);
- break;
- case MATCH_OP:
- if (subtype!=RE_ST){
- LOG(L_CRIT, "BUG: comp_str: bad type %d, "
- " RE expected\n", subtype);
- goto error;
- }
- ret=(regexec((regex_t*)param, str, 0, 0, 0)==0);
- break;
- default:
- LOG(L_CRIT, "BUG: comp_str: unknown op %d\n", op);
- goto error;
- }
- return ret;
-
-error:
- return -1;
-}
-
-
-/* check_self wrapper -- it checks also for the op */
-inline static int check_self_op(int op, str* s, unsigned short p)
-{
- int ret;
-
- ret=check_self(s, p, 0);
- switch(op){
- case EQUAL_OP:
- break;
- case DIFF_OP:
- if (ret>=0) ret=!ret;
- break;
- default:
- LOG(L_CRIT, "BUG: check_self_op: invalid operator %d\n", op);
- ret=-1;
- }
- return ret;
-}
-
-
-/* eval_elem helping function, returns an op param */
-inline static int comp_ip(struct ip_addr* ip, void* param, int op, int subtype)
-{
- struct hostent* he;
- char ** h;
- int ret;
- str tmp;
-
- ret=-1;
- switch(subtype){
- case NET_ST:
- switch(op){
- case EQUAL_OP:
- ret=(matchnet(ip, (struct net*) param)==1);
- break;
- case DIFF_OP:
- ret=(matchnet(ip, (struct net*) param)!=1);
- break;
- default:
- goto error_op;
- }
- break;
- case STRING_ST:
- case RE_ST:
- switch(op){
- case EQUAL_OP:
- case MATCH_OP:
- /* 1: compare with ip2str*/
- ret=comp_str(ip_addr2a(ip), param, op, subtype);
- if (ret==1) break;
- /* 2: resolve (name) & compare w/ all the ips */
- if (subtype==STRING_ST){
- he=resolvehost((char*)param);
- if (he==0){
- DBG("comp_ip: could not resolve %s\n",
- (char*)param);
- }else if (he->h_addrtype==ip->af){
- for(h=he->h_addr_list;(ret!=1)&& (*h); h++){
- ret=(memcmp(ip->u.addr, *h, ip->len)==0);
- }
- if (ret==1) break;
- }
- }
- /* 3: (slow) rev dns the address
- * and compare with all the aliases
- * !!??!! review: remove this? */
- he=rev_resolvehost(ip);
- if (he==0){
- print_ip( "comp_ip: could not rev_resolve ip address:"
- " ", ip, "\n");
- ret=0;
- }else{
- /* compare with primary host name */
- ret=comp_str(he->h_name, param, op, subtype);
- /* compare with all the aliases */
- for(h=he->h_aliases; (ret!=1) && (*h); h++){
- ret=comp_str(*h, param, op, subtype);
- }
- }
- break;
- case DIFF_OP:
- ret=comp_ip(ip, param, EQUAL_OP, subtype);
- if (ret>=0) ret=!ret;
- break;
- default:
- goto error_op;
- }
- break;
- case MYSELF_ST: /* check if it's one of our addresses*/
- tmp.s=ip_addr2a(ip);
- tmp.len=strlen(tmp.s);
- ret=check_self_op(op, &tmp, 0);
- break;
- default:
- LOG(L_CRIT, "BUG: comp_ip: invalid type for "
- " src_ip or dst_ip (%d)\n", subtype);
- ret=-1;
- }
- return ret;
-error_op:
- LOG(L_CRIT, "BUG: comp_ip: invalid operator %d\n", op);
- return -1;
-
-}
-
-
-
-/* returns: 0/1 (false/true) or -1 on error, -127 EXPR_DROP */
-static int eval_elem(struct expr* e, struct sip_msg* msg)
-{
-
- struct sip_uri uri;
- int ret;
- ret=E_BUG;
-
- if (e->type!=ELEM_T){
- LOG(L_CRIT," BUG: eval_elem: invalid type\n");
- goto error;
- }
- switch(e->l.operand){
- case METHOD_O:
- ret=comp_strstr(&msg->first_line.u.request.method, e->r.param,
- e->op, e->subtype);
- break;
- case URI_O:
- if(msg->new_uri.s){
- if (e->subtype==MYSELF_ST){
- if (parse_sip_msg_uri(msg)<0) ret=-1;
- else ret=check_self_op(e->op, &msg->parsed_uri.host,
- msg->parsed_uri.port_no?
- msg->parsed_uri.port_no:SIP_PORT);
- }else{
- ret=comp_strstr(&msg->new_uri, e->r.param,
- e->op, e->subtype);
- }
- }else{
- if (e->subtype==MYSELF_ST){
- if (parse_sip_msg_uri(msg)<0) ret=-1;
- else ret=check_self_op(e->op, &msg->parsed_uri.host,
- msg->parsed_uri.port_no?
- msg->parsed_uri.port_no:SIP_PORT);
- }else{
- ret=comp_strstr(&msg->first_line.u.request.uri,
- e->r.param, e->op, e->subtype);
- }
- }
- break;
- case FROM_URI_O:
- if (parse_from_header(msg)!=0){
- LOG(L_ERR, "ERROR: eval_elem: bad or missing"
- " From: header\n");
- goto error;
- }
- if (e->subtype==MYSELF_ST){
- if (parse_uri(get_from(msg)->uri.s, get_from(msg)->uri.len,
- &uri) < 0){
- LOG(L_ERR, "ERROR: eval_elem: bad uri in From:\n");
- goto error;
- }
- ret=check_self_op(e->op, &uri.host,
- uri.port_no?uri.port_no:SIP_PORT);
- }else{
- ret=comp_strstr(&get_from(msg)->uri,
- e->r.param, e->op, e->subtype);
- }
- break;
- case TO_URI_O:
- if ((msg->to==0) && ((parse_headers(msg, HDR_TO, 0)==-1) ||
- (msg->to==0))){
- LOG(L_ERR, "ERROR: eval_elem: bad or missing"
- " To: header\n");
- goto error;
- }
- /* to content is parsed automatically */
- if (e->subtype==MYSELF_ST){
- if (parse_uri(get_to(msg)->uri.s, get_to(msg)->uri.len,
- &uri) < 0){
- LOG(L_ERR, "ERROR: eval_elem: bad uri in To:\n");
- goto error;
- }
- ret=check_self_op(e->op, &uri.host,
- uri.port_no?uri.port_no:SIP_PORT);
- }else{
- ret=comp_strstr(&get_to(msg)->uri,
- e->r.param, e->op, e->subtype);
- }
- break;
- case SRCIP_O:
- ret=comp_ip(&msg->rcv.src_ip, e->r.param, e->op, e->subtype);
- break;
- case DSTIP_O:
- ret=comp_ip(&msg->rcv.dst_ip, e->r.param, e->op, e->subtype);
- break;
- case NUMBER_O:
- ret=!(!e->r.intval); /* !! to transform it in {0,1} */
- break;
- case ACTION_O:
- ret=run_actions( (struct action*)e->r.param, msg);
- if (ret<=0) ret=(ret==0)?EXPR_DROP:0;
- else ret=1;
- break;
- case SRCPORT_O:
- ret=comp_no(msg->rcv.src_port,
- e->r.param, /* e.g., 5060 */
- e->op, /* e.g. == */
- e->subtype /* 5060 is number */);
- break;
- case DSTPORT_O:
- ret=comp_no(msg->rcv.dst_port, e->r.param, e->op,
- e->subtype);
- break;
- case PROTO_O:
- ret=comp_no(msg->rcv.proto, e->r.param, e->op, e->subtype);
- break;
- case AF_O:
- ret=comp_no(msg->rcv.src_ip.af, e->r.param, e->op, e->subtype);
- break;
- case MSGLEN_O:
- ret=comp_no(msg->len, e->r.param, e->op, e->subtype);
- break;
- default:
- LOG(L_CRIT, "BUG: eval_elem: invalid operand %d\n",
- e->l.operand);
- }
- return ret;
-error:
- return -1;
-}
-
-
-
-/* ret= 0/1 (true/false) , -1 on error or EXPR_DROP (-127) */
-int eval_expr(struct expr* e, struct sip_msg* msg)
-{
- static int rec_lev=0;
- int ret;
-
- rec_lev++;
- if (rec_lev>MAX_REC_LEV){
- LOG(L_CRIT, "ERROR: eval_expr: too many expressions (%d)\n",
- rec_lev);
- ret=-1;
- goto skip;
- }
-
- if (e->type==ELEM_T){
- ret=eval_elem(e, msg);
- }else if (e->type==EXP_T){
- switch(e->op){
- case AND_OP:
- ret=eval_expr(e->l.expr, msg);
- /* if error or false stop evaluating the rest */
- if (ret!=1) break;
- ret=eval_expr(e->r.expr, msg); /*ret1 is 1*/
- break;
- case OR_OP:
- ret=eval_expr(e->l.expr, msg);
- /* if true or error stop evaluating the rest */
- if (ret!=0) break;
- ret=eval_expr(e->r.expr, msg); /* ret1 is 0 */
- break;
- case NOT_OP:
- ret=eval_expr(e->l.expr, msg);
- if (ret<0) break;
- ret= ! ret;
- break;
- default:
- LOG(L_CRIT, "BUG: eval_expr: unknown op %d\n", e->op);
- ret=-1;
- }
- }else{
- LOG(L_CRIT, "BUG: eval_expr: unknown type %d\n", e->type);
- ret=-1;
- }
-
-skip:
- rec_lev--;
- return ret;
-}
-
-
-/* adds an action list to head; a must be null terminated (last a->next=0))*/
-void push(struct action* a, struct action** head)
-{
- struct action *t;
- if (*head==0){
- *head=a;
- return;
- }
- for (t=*head; t->next;t=t->next);
- t->next=a;
-}
-
-
-
-
-int add_actions(struct action* a, struct action** head)
-{
- int ret;
-
- LOG(L_DBG, "add_actions: fixing actions...\n");
- if ((ret=fix_actions(a))!=0) goto error;
- push(a,head);
- return 0;
-
-error:
- return ret;
-}
-
-
-
-/* fixes all action tables */
-/* returns 0 if ok , <0 on error */
-int fix_rls()
-{
- int i,ret;
- for(i=0;i<RT_NO;i++){
- if(rlist[i]){
- if ((ret=fix_actions(rlist[i]))!=0){
- return ret;
- }
- }
- }
- for(i=0;i<ONREPLY_RT_NO;i++){
- if(onreply_rlist[i]){
- if ((ret=fix_actions(onreply_rlist[i]))!=0){
- return ret;
- }
- }
- }
- for(i=0;i<FAILURE_RT_NO;i++){
- if(failure_rlist[i]){
- if ((ret=fix_actions(failure_rlist[i]))!=0){
- return ret;
- }
- }
- }
- return 0;
-}
-
-
-/* debug function, prints main routing table */
-void print_rl()
-{
- struct action* t;
- int i,j;
-
- for(j=0; j<RT_NO; j++){
- if (rlist[j]==0){
- if (j==0) DBG("WARNING: the main routing table is empty\n");
- continue;
- }
- DBG("routing table %d:\n",j);
- for (t=rlist[j],i=0; t; i++, t=t->next){
- print_action(t);
- }
- DBG("\n");
- }
- for(j=0; j<ONREPLY_RT_NO; j++){
- if (onreply_rlist[j]==0){
- continue;
- }
- DBG("onreply routing table %d:\n",j);
- for (t=onreply_rlist[j],i=0; t; i++, t=t->next){
- print_action(t);
- }
- DBG("\n");
- }
- for(j=0; j<FAILURE_RT_NO; j++){
- if (failure_rlist[j]==0){
- continue;
- }
- DBG("failure routing table %d:\n",j);
- for (t=failure_rlist[j],i=0; t; i++, t=t->next){
- print_action(t);
- }
- DBG("\n");
- }
-}
-
-
Deleted: ser/trunk/route.h
===================================================================
--- ser/trunk/route.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/route.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,63 +0,0 @@
-/*
- * $Id: route.h,v 1.9 2004/08/24 08:45:10 janakj Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-#ifndef route_h
-#define route_h
-
-#include <sys/types.h>
-#include <regex.h>
-#include <netdb.h>
-
-#include "config.h"
-#include "error.h"
-#include "route_struct.h"
-#include "parser/msg_parser.h"
-
-/*#include "cfg_parser.h" */
-
-
-/* main "script table" */
-extern struct action* rlist[RT_NO];
-/* main reply route table */
-extern struct action* onreply_rlist[RT_NO];
-extern struct action* failure_rlist[RT_NO];
-
-
-void push(struct action* a, struct action** head);
-int add_actions(struct action* a, struct action** head);
-void print_rl();
-int fix_rls();
-
-int eval_expr(struct expr* e, struct sip_msg* msg);
-
-
-
-
-
-
-#endif
Deleted: ser/trunk/route_struct.c
===================================================================
--- ser/trunk/route_struct.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/route_struct.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,457 +0,0 @@
-/*
- * $Id: route_struct.c,v 1.32.2.2 2005/12/06 12:17:17 andrei Exp $
- *
- * route structures helping functions
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/* History:
- * --------
- * 2003-01-29 src_port introduced (jiri)
- * 2003-03-19 replaced all mallocs/frees w/ pkg_malloc/pkg_free (andrei)
- * 2003-04-12 FORCE_RPORT_T added (andrei)
- * 2003-10-02 added SET_ADV_ADDRESS & SET_ADV_PORT (andrei)
- * 2004-02-24 added LOAD_AVP_T and AVP_TO_URI_T (bogdan)
- */
-
-
-
-#include "route_struct.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "dprint.h"
-#include "ip_addr.h"
-#include "mem/mem.h"
-#include "ut.h" /* ZSW() */
-
-
-struct expr* mk_exp(int op, struct expr* left, struct expr* right)
-{
- struct expr * e;
- e=(struct expr*)pkg_malloc(sizeof (struct expr));
- if (e==0) goto error;
- e->type=EXP_T;
- e->op=op;
- e->l.expr=left;
- e->r.expr=right;
- return e;
-error:
- LOG(L_CRIT, "ERROR: mk_exp: memory allocation failure\n");
- return 0;
-}
-
-
-struct expr* mk_elem(int op, int subtype, int operand, void* param)
-{
- struct expr * e;
- e=(struct expr*)pkg_malloc(sizeof (struct expr));
- if (e==0) goto error;
- e->type=ELEM_T;
- e->op=op;
- e->subtype=subtype;
- e->l.operand=operand;
- e->r.param=param;
- return e;
-error:
- LOG(L_CRIT, "ERROR: mk_elem: memory allocation failure\n");
- return 0;
-}
-
-
-
-struct action* mk_action(int type, int p1_type, int p2_type,
- void* p1, void* p2)
-{
- struct action* a;
- a=(struct action*)pkg_malloc(sizeof(struct action));
- if (a==0) goto error;
- memset(a,0,sizeof(struct action));
- a->type=type;
- a->p1_type=p1_type;
- a->p2_type=p2_type;
- a->p1.string=(char*) p1;
- a->p2.string=(char*) p2;
- a->next=0;
- return a;
-
-error:
- LOG(L_CRIT, "ERROR: mk_action: memory allocation failure\n");
- return 0;
-
-}
-
-
-struct action* mk_action3(int type, int p1_type, int p2_type, int p3_type,
- void* p1, void* p2, void* p3)
-{
- struct action* a;
-
- a=mk_action(type, p1_type, p2_type, p1, p2);
- if (a){
- a->p3_type=p3_type;
- a->p3.data=p3;
- }
- return a;
-}
-
-
-
-struct action* append_action(struct action* a, struct action* b)
-{
- struct action *t;
- if (b==0) return a;
- if (a==0) return b;
-
- for(t=a;t->next;t=t->next);
- t->next=b;
- return a;
-}
-
-
-
-void print_expr(struct expr* exp)
-{
- if (exp==0){
- LOG(L_CRIT, "ERROR: print_expr: null expression!\n");
- return;
- }
- if (exp->type==ELEM_T){
- switch(exp->l.operand){
- case METHOD_O:
- DBG("method");
- break;
- case URI_O:
- DBG("uri");
- break;
- case FROM_URI_O:
- DBG("from_uri");
- break;
- case TO_URI_O:
- DBG("to_uri");
- break;
- case SRCIP_O:
- DBG("srcip");
- break;
- case SRCPORT_O:
- DBG("srcport");
- break;
- case DSTIP_O:
- DBG("dstip");
- break;
- case DSTPORT_O:
- DBG("dstport");
- break;
- case NUMBER_O:
- break;
- case ACTION_O:
- break;
- default:
- DBG("UNKNOWN");
- }
- switch(exp->op){
- case EQUAL_OP:
- DBG("==");
- break;
- case MATCH_OP:
- DBG("=~");
- break;
- case NO_OP:
- break;
- case GT_OP:
- DBG(">");
- break;
- case GTE_OP:
- DBG(">=");
- break;
- case LT_OP:
- DBG("<");
- break;
- case LTE_OP:
- DBG("<=");
- break;
- case DIFF_OP:
- DBG("!=");
- break;
- default:
- DBG("<UNKNOWN>");
- }
- switch(exp->subtype){
- case NOSUBTYPE:
- DBG("N/A");
- break;
- case STRING_ST:
- DBG("\"%s\"", ZSW((char*)exp->r.param));
- break;
- case NET_ST:
- print_net((struct net*)exp->r.param);
- break;
- case IP_ST:
- print_ip("", (struct ip_addr*)exp->r.param, "");
- break;
- case ACTIONS_ST:
- print_action((struct action*)exp->r.param);
- break;
- case NUMBER_ST:
- DBG("%d",exp->r.intval);
- break;
- case MYSELF_ST:
- DBG("_myself_");
- break;
- default:
- DBG("type<%d>", exp->subtype);
- }
- }else if (exp->type==EXP_T){
- switch(exp->op){
- case AND_OP:
- DBG("AND( ");
- print_expr(exp->l.expr);
- DBG(", ");
- print_expr(exp->r.expr);
- DBG(" )");
- break;
- case OR_OP:
- DBG("OR( ");
- print_expr(exp->l.expr);
- DBG(", ");
- print_expr(exp->r.expr);
- DBG(" )");
- break;
- case NOT_OP:
- DBG("NOT( ");
- print_expr(exp->l.expr);
- DBG(" )");
- break;
- default:
- DBG("UNKNOWN_EXP ");
- }
-
- }else{
- DBG("ERROR:print_expr: unknown type\n");
- }
-}
-
-
-
-
-void print_action(struct action* a)
-{
- struct action* t;
- for(t=a; t!=0;t=t->next){
- switch(t->type){
- case FORWARD_T:
- DBG("forward(");
- break;
- case FORWARD_TCP_T:
- DBG("forward_tcp(");
- break;
- case FORWARD_UDP_T:
- DBG("forward_udp(");
- break;
- case SEND_T:
- DBG("send(");
- break;
- case SEND_TCP_T:
- DBG("send_tcp(");
- break;
- case DROP_T:
- DBG("drop(");
- break;
- case LOG_T:
- DBG("log(");
- break;
- case ERROR_T:
- DBG("error(");
- break;
- case ROUTE_T:
- DBG("route(");
- break;
- case EXEC_T:
- DBG("exec(");
- break;
- case REVERT_URI_T:
- DBG("revert_uri(");
- break;
- case STRIP_T:
- DBG("strip(");
- break;
- case APPEND_BRANCH_T:
- DBG("append_branch(");
- break;
- case PREFIX_T:
- DBG("prefix(");
- break;
- case LEN_GT_T:
- DBG("len_gt(");
- break;
- case SETFLAG_T:
- DBG("setflag(");
- break;
- case RESETFLAG_T:
- DBG("resetflag(");
- break;
- case ISFLAGSET_T:
- DBG("isflagset(");
- break;
- case SET_HOST_T:
- DBG("sethost(");
- break;
- case SET_HOSTPORT_T:
- DBG("sethostport(");
- break;
- case SET_USER_T:
- DBG("setuser(");
- break;
- case SET_USERPASS_T:
- DBG("setuserpass(");
- break;
- case SET_PORT_T:
- DBG("setport(");
- break;
- case SET_URI_T:
- DBG("seturi(");
- break;
- case IF_T:
- DBG("if (");
- break;
- case MODULE_T:
- DBG(" external_module_call(");
- break;
- case FORCE_RPORT_T:
- DBG("force_rport(");
- break;
- case SET_ADV_ADDR_T:
- DBG("set_advertised_address(");
- break;
- case SET_ADV_PORT_T:
- DBG("set_advertised_port(");
- break;
- case FORCE_TCP_ALIAS_T:
- DBG("force_tcp_alias(");
- break;
- case LOAD_AVP_T:
- DBG("load_avp(");
- break;
- case AVP_TO_URI_T:
- DBG("avp_to_attr");
- break;
- case FORCE_SEND_SOCKET_T:
- DBG("force_send_socket");
- break;
- default:
- DBG("UNKNOWN(");
- }
- switch(t->p1_type){
- case STRING_ST:
- DBG("\"%s\"", ZSW(t->p1.string));
- break;
- case NUMBER_ST:
- DBG("%lu",t->p1.number);
- break;
- case IP_ST:
- print_ip("", (struct ip_addr*)t->p1.data, "");
- break;
- case EXPR_ST:
- print_expr((struct expr*)t->p1.data);
- break;
- case ACTIONS_ST:
- print_action((struct action*)t->p1.data);
- break;
- case CMDF_ST:
- DBG("f_ptr<%p>",t->p1.data);
- break;
- case SOCKID_ST:
- DBG("%d:%s:%d",
- ((struct socket_id*)t->p1.data)->proto,
- ZSW(((struct socket_id*)t->p1.data)->name),
- ((struct socket_id*)t->p1.data)->port
- );
- break;
- default:
- DBG("type<%d>", t->p1_type);
- }
- if (t->type==IF_T) DBG(") {");
- switch(t->p2_type){
- case NOSUBTYPE:
- break;
- case STRING_ST:
- DBG(", \"%s\"", ZSW(t->p2.string));
- break;
- case NUMBER_ST:
- DBG(", %lu",t->p2.number);
- break;
- case EXPR_ST:
- print_expr((struct expr*)t->p2.data);
- break;
- case ACTIONS_ST:
- print_action((struct action*)t->p2.data);
- break;
- case SOCKID_ST:
- DBG("%d:%s:%d",
- ((struct socket_id*)t->p1.data)->proto,
- ZSW(((struct socket_id*)t->p1.data)->name),
- ((struct socket_id*)t->p1.data)->port
- );
- break;
- default:
- DBG(", type<%d>", t->p2_type);
- }
- if (t->type==IF_T) DBG("} else {");
- switch(t->p3_type){
- case NOSUBTYPE:
- break;
- case STRING_ST:
- DBG(", \"%s\"", ZSW(t->p3.string));
- break;
- case NUMBER_ST:
- DBG(", %lu",t->p3.number);
- break;
- case EXPR_ST:
- print_expr((struct expr*)t->p3.data);
- break;
- case ACTIONS_ST:
- print_action((struct action*)t->p3.data);
- break;
- case SOCKID_ST:
- DBG("%d:%s:%d",
- ((struct socket_id*)t->p1.data)->proto,
- ZSW(((struct socket_id*)t->p1.data)->name),
- ((struct socket_id*)t->p1.data)->port
- );
- break;
- default:
- DBG(", type<%d>", t->p3_type);
- }
- if (t->type==IF_T) DBG("}; ");
- else DBG("); ");
- }
-}
-
-
-
-
-
-
Deleted: ser/trunk/route_struct.h
===================================================================
--- ser/trunk/route_struct.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/route_struct.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,134 +0,0 @@
-/*
- * $Id: route_struct.h,v 1.30 2004/11/30 16:28:23 andrei Exp $
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/* History:
- * --------
- *
- * 2003-04-12 FORCE_RPORT_T added (andrei)
- * 2003-04-22 strip_tail added (jiri)
- * 2003-10-10 >,<,>=,<=, != and MSGLEN_O added (andrei)
- * 2003-10-28 FORCE_TCP_ALIAS added (andrei)
- * 2004-02-24 added LOAD_AVP_T and AVP_TO_URI_T (bogdan)
- */
-
-
-#ifndef route_struct_h
-#define route_struct_h
-
-#define EXPR_DROP -127 /* used only by the expression and if evaluator */
-/*
- * Other important values (no macros for them yet):
- * expr true = 1
- * expr false = 0 (used only inside the expression and if evaluator)
- *
- * action continue or if used in condition true = 1
- * action drop/quit/stop script processing = 0
- * action error or if used in condition false = -1 (<0 and !=EXPR_DROP)
- *
- */
-
-
-enum { EXP_T=1, ELEM_T };
-enum { AND_OP=1, OR_OP, NOT_OP };
-enum { EQUAL_OP=10, MATCH_OP, GT_OP, LT_OP, GTE_OP, LTE_OP, DIFF_OP, NO_OP };
-enum { METHOD_O=1, URI_O, FROM_URI_O, TO_URI_O, SRCIP_O, SRCPORT_O,
- DSTIP_O, DSTPORT_O, PROTO_O, AF_O, MSGLEN_O, DEFAULT_O, ACTION_O,
- NUMBER_O};
-
-enum { FORWARD_T=1, SEND_T, DROP_T, LOG_T, ERROR_T, ROUTE_T, EXEC_T,
- SET_HOST_T, SET_HOSTPORT_T, SET_USER_T, SET_USERPASS_T,
- SET_PORT_T, SET_URI_T, IF_T, MODULE_T,
- SETFLAG_T, RESETFLAG_T, ISFLAGSET_T ,
- LEN_GT_T, PREFIX_T, STRIP_T,STRIP_TAIL_T,
- APPEND_BRANCH_T,
- REVERT_URI_T,
- FORWARD_TCP_T,
- FORWARD_UDP_T,
- FORWARD_TLS_T,
- SEND_TCP_T,
- FORCE_RPORT_T,
- SET_ADV_ADDR_T,
- SET_ADV_PORT_T,
- FORCE_TCP_ALIAS_T,
- LOAD_AVP_T,
- AVP_TO_URI_T,
- FORCE_SEND_SOCKET_T
-};
-enum { NOSUBTYPE=0, STRING_ST, NET_ST, NUMBER_ST, IP_ST, RE_ST, PROXY_ST,
- EXPR_ST, ACTIONS_ST, CMDF_ST, MODFIXUP_ST, URIHOST_ST, URIPORT_ST,
- MYSELF_ST, STR_ST, SOCKID_ST, SOCKETINFO_ST };
-
-
-struct expr{
- int type; /* exp, exp_elem */
- int op; /* and, or, not | ==, =~ */
- int subtype;
- union {
- struct expr* expr;
- int operand;
- }l;
- union {
- struct expr* expr;
- void* param;
- int intval;
- }r;
-};
-
-
-struct action{
- int type; /* forward, drop, log, send ...*/
- int p1_type;
- int p2_type;
- int p3_type;
- union {
- long number;
- char* string;
- void* data;
- }p1, p2, p3;
- struct action* next;
-};
-
-
-
-struct expr* mk_exp(int op, struct expr* left, struct expr* right);
-struct expr* mk_elem(int op, int subtype, int operand, void* param);
-struct action* mk_action(int type, int p1_type, int p2_type,
- void* p1, void* p2);
-struct action* mk_action3(int type, int p1_type, int p2_type, int p3_type,
- void* p1, void* p2, void* p3);
-struct action* append_action(struct action* a, struct action* b);
-
-
-void print_action(struct action* a);
-void print_expr(struct expr* exp);
-
-
-
-
-
-#endif
-
Deleted: ser/trunk/script_cb.c
===================================================================
--- ser/trunk/script_cb.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/script_cb.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,102 +0,0 @@
-/*
- * $Id: script_cb.c,v 1.6 2004/08/24 08:45:10 janakj Exp $
- *
- * Script callbacks -- they add the ability to register callback
- * functions which are always called when script for request
- * processing is entered or left
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/* History:
- * --------
- * 2003-03-29 cleaning pkg allocation introduced (jiri)
- * 2003-03-19 replaced all mallocs/frees w/ pkg_malloc/pkg_free (andrei)
- */
-
-
-#include <stdlib.h>
-#include "script_cb.h"
-#include "dprint.h"
-#include "error.h"
-#include "mem/mem.h"
-
-static struct script_cb *pre_cb=0;
-static struct script_cb *post_cb=0;
-static unsigned int cb_id=0;
-
-int register_script_cb( cb_function f, callback_t t, void *param )
-{
- struct script_cb *new_cb;
-
- new_cb=pkg_malloc(sizeof(struct script_cb));
- if (new_cb==0) {
- LOG(L_ERR, "ERROR: register_script_cb: out of memory\n");
- return E_OUT_OF_MEM;
- }
- new_cb->cbf=f;
- new_cb->id=cb_id++;
- new_cb->param=param;
- /* insert into appropriate list */
- if (t==PRE_SCRIPT_CB) {
- new_cb->next=pre_cb;
- pre_cb=new_cb;
- } else if (t==POST_SCRIPT_CB) {
- new_cb->next=post_cb;
- post_cb=new_cb;
- } else {
- LOG(L_CRIT, "ERROR: register_script_cb: unknown CB type\n");
- return E_BUG;
- }
- /* ok, callback installed */
- return 1;
-}
-
-void destroy_script_cb()
-{
- struct script_cb *cb, *foo;
-
- cb=pre_cb;
- while(cb) { foo=cb->next;pkg_free(cb);cb=foo; }
- cb=post_cb;
- while(cb) { foo=cb->next;pkg_free(cb);cb=foo; }
-}
-
-int exec_pre_cb( struct sip_msg *msg)
-{
- struct script_cb *i;
- for (i=pre_cb; i; i=i->next) {
- /* stop on error */
- if (i->cbf(msg, i->param)==0)
- return 0;
- }
- return 1;
-}
-
-void exec_post_cb( struct sip_msg *msg)
-{
- struct script_cb *i;
- for (i=post_cb; i; i=i->next) i->cbf(msg, i->param);
-}
-
Deleted: ser/trunk/script_cb.h
===================================================================
--- ser/trunk/script_cb.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/script_cb.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,54 +0,0 @@
-/*
- * $Id: script_cb.h,v 1.6 2004/08/24 08:45:10 janakj Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _SCRIPT_CB_H_
-#define _SCRIPT_CB_H_
-
-#include "parser/msg_parser.h"
-
-typedef int (cb_function)( struct sip_msg *msg, void *param );
-
-typedef enum {
- PRE_SCRIPT_CB,
- POST_SCRIPT_CB
-} callback_t; /* Allowed types of callbacks */
-
-
-struct script_cb{
- cb_function *cbf;
- struct script_cb *next;
- unsigned int id;
- void *param;
-};
-
-int register_script_cb( cb_function f, callback_t t, void *param );
-int exec_pre_cb( struct sip_msg *msg);
-void exec_post_cb( struct sip_msg *msg);
-void destroy_script_cb();
-
-#endif
-
Deleted: ser/trunk/ser.8
===================================================================
--- ser/trunk/ser.8 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/ser.8 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,180 +0,0 @@
-.\" $Id: ser.8,v 1.11 2004/12/16 17:39:46 andrei Exp $
-.TH ser 8 15.07.2002 ser "Sip Express Router"
-.\" Process with
-.\" groff -man -Tascii ser.8
-.\"
-.SH NAME
-ser \- very fast and configurable sip proxy
-.SH SYNOPSIS
-.B ser
-[
-.B \-hcrRvdDEVT
-] [
-.BI \-f " config\-file"
-] [
-.BI \-l " address"
-] [
-.BI \-n " processes\-no"
-] [
-.BI \-N " tcp processes\-no"
-] [
-.BI \-b " max_rcv_buf_size"
-] [
-.BI \-m " shared_mem_size"
-] [
-.BI \-w " working\-dir"
-] [
-.BI \-t " chroot\-dir"
-] [
-.BI \-u " uid"
-] [
-.BI \-g " gid"
-] [
-.BI \-P " pid\-file"
-] [
-.BI \-i " fifo\-path"
-] [
-.BI \-x " socket\-path"
-]
-
-.SH DESCRIPTION
-.B ser
-or
-.BR Sip
-.BR Express
-.BR Router
-is a very fast and configurable SIP proxy.
-
-.SH OPTIONS
-.TP 12
-.B \-h
-Displays a short usage description, including all available options.
-.TP
-.BI \-c
-Checks the config file and displays the aliases and listen interface list.
-.TP
-.BI \-r
-Uses dns to check if it is necessary to add a "received=" field to a via.
-.TP
-.BI \-R
-Same as
-.B \-r
-but uses reverse dns.
-.TP
-.BI \-v
-Turns on via host checking when forwarding replies.
-.TP
-.BI \-d
-Turns on debugging, multiple
-.B -d
-increase the debug level.
-.TP
-.BI \-D
-Runs ser in the foreground (it doesn't fork into daemon mode).
-.TP
-.BI \-E
-Sends all the log messages to stderr.
-.TP
-.BI \-T
-Disables TCP support.
-.TP
-.BI \-V
-Displays the version number.
-.TP
-.BI \-f " config\-file"
-Reads the configuration from
-.B " config\-file"
-(default
-.I /etc/ser/ser.cfg
-).
-.TP
-.BI \-l " address"
-Listens on the specified address/interface. Multiple
-.B \-l
-mean listening on multiple addresses. The address format is
-[proto:]address[:port], where proto = udp|tcp and
-address = host|ip_address|interface_name. Example: -l localhost,
--l udp:127.0.0.1:5080, -l eth0:5062.
-The default behaviour is to listen on all the ipv4 interfaces.
-.TP
-.BI \-n " processes\-no"
-Specifies the number of children processes forked per interface (default 8).
-.TP
-.BI \-N " tcp processes\-no"
-Specifies the number of children processes forked to handle tcp incoming connections (by default is equal to
-.BI \-n
-).
-.TP
-.BI \-b " max_rcv_buf_size"
-Maximum receive buffer size which will not be exceeded by the auto-probing procedure even if the OS allows.
-.TP
-.BI \-m " shared_mem_size"
-Size of the shared memory which will be allocated (in Megabytes).
-.TP
-.BI \-w " working\-dir"
-Specifies the working directory. In the very improbable event that
-.B ser
-will crash, the core file will be generated here.
-.TP
-.BI \-t " chroot\-dir"
-Forces
-.B ser
-to chroot after reading the config file.
-.TP
-.BI \-u " uid"
-Changes the user id under which
-.B ser
-runs.
-.TP
-.BI \-g " gid"
-Changes the group id under which
-.B ser
-runs.
-.TP
-.BI \-P " pid\-file"
-Creates a file containing the pid of the main
-.B ser
-process.
-.TP
-.BI \-i " fifo\-path"
-Creates a fifo, usefull for monitoring
-.B ser
-status.
-.TP
-.BI \-x " socket\-path"
-Creates a unix socket, usefull for monitoring
-.B ser
-status ( same as
-.BI \-i " fifo\-path"
-but using instead unix sockets).
-
-
-.SH FILES
-.PD 0
-.B /usr/sbin/ser
-.br
-.B /etc/ser/ser.cfg
-.br
-.B /usr/lib/ser/modules/*
-.PD
-.SH AUTHORS
-
-see
-.B /usr/share/doc/ser/AUTHORS
-
-.SH SEE ALSO
-.BR ser.cfg(5)
-.PP
-Full documentation on ser, including configuration guidelines, FAQs and
-licensing conditions, is available at
-.I http://www.iptel.org/ser/.
-.PP
-For reporting bugs see
-.I
-http://www.iptel.org/ser/bugs/.
-.PP
-Mailing lists:
-.nf
-serusers at iptel.org - ser user community
-.nf
-serdev at iptel.org - ser development, new features and unstable version
Deleted: ser/trunk/ser.cfg.5
===================================================================
--- ser/trunk/ser.cfg.5 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/ser.cfg.5 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,52 +0,0 @@
-.\" $Id: ser.cfg.5,v 1.9 2004/12/16 17:39:46 andrei Exp $
-.TH ser.cfg 5 15.07.2002 ser "Sip Express Router"
-.\" Process with
-.\" groff -man -Tascii ser.cfg.5
-.\"
-.SH NAME
-ser.cfg \- ser configuration file
-.SH SYNOPSIS
-.I /etc/ser/ser.cfg
-.SH DESCRIPTION
-.B ser
-reads the configuration data from
-.I /etc/ser/ser.cfg
-(or the file specified with
-.B \-f
-on the command line).
-The file contains global configuration parameters, module loading commands and the script that will be executed for each received request. Lines starting with
-.B #
-or enclosed in
-.B /* ... */
-are interpreted as comments.
-.PP
-This manual page is incomplete. For further information please read the
-.I Ser User Guide (http://www.iptel.org/ser/admin.html).
-
-.SH FILES
-.bL
-.I /etc/ser/ser.cfg
-.br
-
-.SH AUTHORS
-
-see
-.B /usr/share/doc/ser/AUTHORS
-
-.SH SEE ALSO
-.BR ser(8)
-.PP
-Full documentation on ser, including configuration guidelines, FAQs and
-licensing conditions, is available at
-.I http://www.iptel.org/ser/.
-.PP
-For reporting bugs see
-.I
-http://www.iptel.org/ser/bugs/.
-.PP
-Mailing lists:
-.nf
-serusers at iptel.org - ser user community
-.nf
-serdev at iptel.org - ser development, new features and unstable version
-
Deleted: ser/trunk/socket_info.c
===================================================================
--- ser/trunk/socket_info.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/socket_info.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,816 +0,0 @@
-/* $Id: socket_info.c,v 1.12 2004/12/01 16:51:17 andrei Exp $
- *
- * find & manage listen addresses
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*
- * This file contains code that initializes and handles ser listen addresses
- * lists (struct socket_info). It is used mainly on startup.
- *
- * History:
- * --------
- * 2003-10-22 created by andrei
- * 2004-10-10 added grep_sock_info (andrei)
- * 2004-11-08 added find_si (andrei)
- */
-
-
-#include <string.h>
-#include <errno.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/utsname.h>
-#include <stdio.h>
-
-#include <sys/ioctl.h>
-#include <net/if.h>
-#ifdef HAVE_SYS_SOCKIO_H
-#include <sys/sockio.h>
-#endif
-
-#include "globals.h"
-#include "socket_info.h"
-#include "dprint.h"
-#include "mem/mem.h"
-#include "ut.h"
-#include "resolve.h"
-#include "name_alias.h"
-
-
-
-/* list manip. functions (internal use only) */
-
-
-/* append */
-#define sock_listadd(head, el) \
- do{\
- if (*(head)==0) *(head)=(el); \
- else{ \
- for((el)->next=*(head); (el)->next->next;\
- (el)->next=(el)->next->next); \
- (el)->next->next=(el); \
- (el)->prev=(el)->next; \
- (el)->next=0; \
- }\
- }while(0)
-
-
-/* insert after "after" */
-#define sock_listins(el, after) \
- do{ \
- if ((after)){\
- (el)->next=(after)->next; \
- if ((after)->next) (after)->next->prev=(el); \
- (after)->next=(el); \
- (el)->prev=(after); \
- }else{ /* after==0 = list head */ \
- (after)=(el); \
- (el)->next=(el)->prev=0; \
- }\
- }while(0)
-
-
-#define sock_listrm(head, el) \
- do {\
- if (*(head)==(el)) *(head)=(el)->next; \
- if ((el)->next) (el)->next->prev=(el)->prev; \
- if ((el)->prev) (el)->prev->next=(el)->next; \
- }while(0)
-
-
-
-/* another helper function, it just creates a socket_info struct */
-static inline struct socket_info* new_sock_info( char* name,
- unsigned short port, unsigned short proto,
- enum si_flags flags)
-{
- struct socket_info* si;
-
- si=(struct socket_info*) pkg_malloc(sizeof(struct socket_info));
- if (si==0) goto error;
- memset(si, 0, sizeof(struct socket_info));
- si->socket=-1;
- si->name.len=strlen(name);
- si->name.s=(char*)pkg_malloc(si->name.len+1); /* include \0 */
- if (si->name.s==0) goto error;
- memcpy(si->name.s, name, si->name.len+1);
- /* set port & proto */
- si->port_no=port;
- si->proto=proto;
- si->flags=flags;
- return si;
-error:
- LOG(L_ERR, "ERROR: new_sock_info: memory allocation error\n");
- if (si) pkg_free(si);
- return 0;
-}
-
-
-
-/* delete a socket_info struct */
-static void free_sock_info(struct socket_info* si)
-{
- if(si){
- if(si->name.s) pkg_free(si->name.s);
- if(si->address_str.s) pkg_free(si->address_str.s);
- if(si->port_no_str.s) pkg_free(si->port_no_str.s);
- }
-}
-
-
-
-static char* get_proto_name(unsigned short proto)
-{
- switch(proto){
- case PROTO_NONE:
- return "*";
- case PROTO_UDP:
- return "udp";
-#ifdef USE_TCP
- case PROTO_TCP:
- return "tcp";
-#endif
-#ifdef USE_TLS
- case PROTO_TLS:
- return "tls";
-#endif
- default:
- return "unknown";
- }
-}
-
-
-static struct socket_info** get_sock_info_list(unsigned short proto)
-{
-
- switch(proto){
- case PROTO_UDP:
- return &udp_listen;
- break;
-#ifdef USE_TCP
- case PROTO_TCP:
- return &tcp_listen;
- break;
-#endif
-#ifdef USE_TLS
- case PROTO_TLS:
- return &tls_listen;
- break;
-#endif
- default:
- LOG(L_CRIT, "BUG: get_sock_info_list: invalid proto %d\n", proto);
- }
- return 0;
-}
-
-
-
-/* checks if the proto: host:port is one of the address we listen on
- * and returns the corresponding socket_info structure.
- * if port==0, the port number is ignored
- * if proto==0 (PROTO_NONE) the protocol is ignored
- * returns 0 if not found
- * WARNING: uses str2ip6 so it will overwrite any previous
- * unsaved result of this function (static buffer)
- */
-struct socket_info* grep_sock_info(str* host, unsigned short port,
- unsigned short proto)
-{
- char* hname;
- int h_len;
- struct socket_info* si;
- struct socket_info** list;
- unsigned short c_proto;
-#ifdef USE_IPV6
- struct ip_addr* ip6;
-#endif
- h_len=host->len;
- hname=host->s;
-#ifdef USE_IPV6
- if ((h_len>2)&&((*hname)=='[')&&(hname[h_len-1]==']')){
- /* ipv6 reference, skip [] */
- hname++;
- h_len-=2;
- }
-#endif
- c_proto=proto?proto:PROTO_UDP;
- do{
- /* get the proper sock_list */
- if (c_proto==PROTO_NONE)
- list=&udp_listen;
- else
- list=get_sock_info_list(c_proto);
-
- if (list==0){
- LOG(L_WARN, "WARNING: grep_sock_info: "
- "unknown proto %d\n", c_proto);
- goto not_found; /* false */
- }
- for (si=*list; si; si=si->next){
- DBG("grep_sock_info - checking if host==us: %d==%d && "
- " [%.*s] == [%.*s]\n",
- h_len,
- si->name.len,
- h_len, hname,
- si->name.len, si->name.s
- );
- if (port) {
- DBG("grep_sock_info - checking if port %d matches port %d\n",
- si->port_no, port);
- if (si->port_no!=port) {
- continue;
- }
- }
- if ( (h_len==si->name.len) &&
- (strncasecmp(hname, si->name.s,
- si->name.len)==0) /*slower*/)
- /* comp. must be case insensitive, host names
- * can be written in mixed case, it will also match
- * ipv6 addresses if we are lucky*/
- goto found;
- /* check if host == ip address */
-#ifdef USE_IPV6
- /* ipv6 case is uglier, host can be [3ffe::1] */
- ip6=str2ip6(host);
- if (ip6){
- if (ip_addr_cmp(ip6, &si->address))
- goto found; /* match */
- else
- continue; /* no match, but this is an ipv6 address
- so no point in trying ipv4 */
- }
-#endif
- /* ipv4 */
- if ( (!(si->flags&SI_IS_IP)) &&
- (h_len==si->address_str.len) &&
- (memcmp(hname, si->address_str.s,
- si->address_str.len)==0)
- )
- goto found;
- }
- }while( (proto==0) && (c_proto=next_proto(c_proto)) );
-not_found:
- return 0;
-found:
- return si;
-}
-
-
-
-/* checks if the proto: ip:port is one of the address we listen on
- * and returns the corresponding socket_info structure.
- * (same as grep_socket_info, but use ip addr instead)
- * if port==0, the port number is ignored
- * if proto==0 (PROTO_NONE) the protocol is ignored
- * returns 0 if not found
- * WARNING: uses str2ip6 so it will overwrite any previous
- * unsaved result of this function (static buffer)
- */
-struct socket_info* find_si(struct ip_addr* ip, unsigned short port,
- unsigned short proto)
-{
- struct socket_info* si;
- struct socket_info** list;
- unsigned short c_proto;
-
- c_proto=proto?proto:PROTO_UDP;
- do{
- /* get the proper sock_list */
- if (c_proto==PROTO_NONE)
- list=&udp_listen;
- else
- list=get_sock_info_list(c_proto);
-
- if (list==0){
- LOG(L_WARN, "WARNING: grep_sock_info: "
- "unknown proto %d\n", c_proto);
- goto not_found; /* false */
- }
- for (si=*list; si; si=si->next){
- if (port) {
- if (si->port_no!=port) {
- continue;
- }
- }
- if (ip_addr_cmp(ip, &si->address))
- goto found;
- }
- }while( (proto==0) && (c_proto=next_proto(c_proto)) );
-not_found:
- return 0;
-found:
- return si;
-}
-
-
-
-/* adds a new sock_info structure to the corresponding list
- * return 0 on success, -1 on error */
-int new_sock2list(char* name, unsigned short port, unsigned short proto,
- enum si_flags flags, struct socket_info** list)
-{
- struct socket_info* si;
-
- si=new_sock_info(name, port, proto, flags);
- if (si==0){
- LOG(L_ERR, "ERROR: add_listen_iface: new_sock_info failed\n");
- goto error;
- }
- sock_listadd(list, si);
- return 0;
-error:
- return -1;
-}
-
-
-
-/* adds a sock_info structure to the corresponding proto list
- * return 0 on success, -1 on error */
-int add_listen_iface(char* name, unsigned short port, unsigned short proto,
- enum si_flags flags)
-{
- struct socket_info** list;
- unsigned short c_proto;
-
- c_proto=(proto)?proto:PROTO_UDP;
- do{
- list=get_sock_info_list(c_proto);
- if (list==0){
- LOG(L_ERR, "ERROR: add_listen_iface: get_sock_info_list failed\n");
- goto error;
- }
- if (port==0){ /* use default port */
- port=
-#ifdef USE_TLS
- ((c_proto)==PROTO_TLS)?tls_port_no:
-#endif
- port_no;
- }
- if (new_sock2list(name, port, c_proto, flags, list)<0){
- LOG(L_ERR, "ERROR: add_listen_iface: new_sock2list failed\n");
- goto error;
- }
- }while( (proto==0) && (c_proto=next_proto(c_proto)));
- return 0;
-error:
- return -1;
-}
-
-
-
-/* add all family type addresses of interface if_name to the socket_info array
- * if if_name==0, adds all addresses on all interfaces
- * WARNING: it only works with ipv6 addresses on FreeBSD
- * return: -1 on error, 0 on success
- */
-int add_interfaces(char* if_name, int family, unsigned short port,
- unsigned short proto,
- struct socket_info** list)
-{
- struct ifconf ifc;
- struct ifreq ifr;
- struct ifreq ifrcopy;
- char* last;
- char* p;
- int size;
- int lastlen;
- int s;
- char* tmp;
- struct ip_addr addr;
- int ret;
- enum si_flags flags;
-
-#ifdef HAVE_SOCKADDR_SA_LEN
- #ifndef MAX
- #define MAX(a,b) ( ((a)>(b))?(a):(b))
- #endif
-#endif
- /* ipv4 or ipv6 only*/
- flags=SI_NONE;
- s=socket(family, SOCK_DGRAM, 0);
- ret=-1;
- lastlen=0;
- ifc.ifc_req=0;
- for (size=100; ; size*=2){
- ifc.ifc_len=size*sizeof(struct ifreq);
- ifc.ifc_req=(struct ifreq*) pkg_malloc(size*sizeof(struct ifreq));
- if (ifc.ifc_req==0){
- LOG(L_ERR, "ERROR: add_interfaces: memory allocation failure\n");
- goto error;
- }
- if (ioctl(s, SIOCGIFCONF, &ifc)==-1){
- if(errno==EBADF) return 0; /* invalid descriptor => no such ifs*/
- LOG(L_ERR, "ERROR: add_interfaces: ioctl failed: %s\n",
- strerror(errno));
- goto error;
- }
- if ((lastlen) && (ifc.ifc_len==lastlen)) break; /*success,
- len not changed*/
- lastlen=ifc.ifc_len;
- /* try a bigger array*/
- pkg_free(ifc.ifc_req);
- }
-
- last=(char*)ifc.ifc_req+ifc.ifc_len;
- for(p=(char*)ifc.ifc_req; p<last;
- p+=
- #ifdef __OS_linux
- sizeof(ifr) /* works on x86_64 too */
- #else
- (sizeof(ifr.ifr_name)+
- #ifdef HAVE_SOCKADDR_SA_LEN
- MAX(ifr.ifr_addr.sa_len, sizeof(struct sockaddr))
- #else
- ( (ifr.ifr_addr.sa_family==AF_INET)?
- sizeof(struct sockaddr_in):
- ((ifr.ifr_addr.sa_family==AF_INET6)?
- sizeof(struct sockaddr_in6):sizeof(struct sockaddr)) )
- #endif
- )
- #endif
- )
- {
- /* copy contents into ifr structure
- * warning: it might be longer (e.g. ipv6 address) */
- memcpy(&ifr, p, sizeof(ifr));
- if (ifr.ifr_addr.sa_family!=family){
- /*printf("strange family %d skipping...\n",
- ifr->ifr_addr.sa_family);*/
- continue;
- }
-
- /*get flags*/
- ifrcopy=ifr;
- if (ioctl(s, SIOCGIFFLAGS, &ifrcopy)!=-1){ /* ignore errors */
- /* ignore down ifs only if listening on all of them*/
- if (if_name==0){
- /* if if not up, skip it*/
- if (!(ifrcopy.ifr_flags & IFF_UP)) continue;
- }
- }
-
-
-
- if ((if_name==0)||
- (strncmp(if_name, ifr.ifr_name, sizeof(ifr.ifr_name))==0)){
-
- /*add address*/
- sockaddr2ip_addr(&addr,
- (struct sockaddr*)(p+(long)&((struct ifreq*)0)->ifr_addr));
- if ((tmp=ip_addr2a(&addr))==0) goto error;
- /* check if loopback */
- if (ifrcopy.ifr_flags & IFF_LOOPBACK)
- flags|=SI_IS_LO;
- /* add it to one of the lists */
- if (new_sock2list(tmp, port, proto, flags, list)!=0){
- LOG(L_ERR, "ERROR: add_interfaces: new_sock2list failed\n");
- goto error;
- }
- ret=0;
- }
- /*
- printf("%s:\n", ifr->ifr_name);
- printf(" ");
- print_sockaddr(&(ifr->ifr_addr));
- printf(" ");
- ls_ifflags(ifr->ifr_name, family, options);
- printf("\n");*/
- }
- pkg_free(ifc.ifc_req); /*clean up*/
- close(s);
- return ret;
-error:
- if (ifc.ifc_req) pkg_free(ifc.ifc_req);
- close(s);
- return -1;
-}
-
-
-
-/* fixes a socket list => resolve addresses,
- * interface names, fills missing members, remove duplicates */
-static int fix_socket_list(struct socket_info **list)
-{
- struct socket_info* si;
- struct socket_info* l;
- struct socket_info* next;
- char* tmp;
- int len;
- struct hostent* he;
- char** h;
-
- /* try to change all the interface names into addresses
- * --ugly hack */
-
- for (si=*list;si;){
- next=si->next;
- if (add_interfaces(si->name.s, AF_INET, si->port_no,
- si->proto, list)!=-1){
- /* success => remove current entry (shift the entire array)*/
- sock_listrm(list, si);
- free_sock_info(si);
- }
- si=next;
- }
- /* get ips & fill the port numbers*/
-#ifdef EXTRA_DEBUG
- DBG("Listening on \n");
-#endif
- for (si=*list;si;si=si->next){
- /* fix port number, port_no should be !=0 here */
- if (si->port_no==0){
-#ifdef USE_TLS
- si->port_no= (si->proto==PROTO_TLS)?tls_port_no:port_no;
-#else
- si->port_no= port_no;
-#endif
- }
- tmp=int2str(si->port_no, &len);
- if (len>=MAX_PORT_LEN){
- LOG(L_ERR, "ERROR: fix_socket_list: bad port number: %d\n",
- si->port_no);
- goto error;
- }
- si->port_no_str.s=(char*)pkg_malloc(len+1);
- if (si->port_no_str.s==0){
- LOG(L_ERR, "ERROR: fix_socket_list: out of memory.\n");
- goto error;
- }
- strncpy(si->port_no_str.s, tmp, len+1);
- si->port_no_str.len=len;
-
- /* get "official hostnames", all the aliases etc. */
- he=resolvehost(si->name.s);
- if (he==0){
- LOG(L_ERR, "ERROR: fix_socket_list: could not resolve %s\n",
- si->name.s);
- goto error;
- }
- /* check if we got the official name */
- if (strcasecmp(he->h_name, si->name.s)!=0){
- if (add_alias(si->name.s, si->name.len,
- si->port_no, si->proto)<0){
- LOG(L_ERR, "ERROR: fix_socket_list: add_alias failed\n");
- }
- /* change the official name */
- pkg_free(si->name.s);
- si->name.s=(char*)pkg_malloc(strlen(he->h_name)+1);
- if (si->name.s==0){
- LOG(L_ERR, "ERROR: fix_socket_list: out of memory.\n");
- goto error;
- }
- si->name.len=strlen(he->h_name);
- strncpy(si->name.s, he->h_name, si->name.len+1);
- }
- /* add the aliases*/
- for(h=he->h_aliases; h && *h; h++)
- if (add_alias(*h, strlen(*h), si->port_no, si->proto)<0){
- LOG(L_ERR, "ERROR: fix_socket_list: add_alias failed\n");
- }
- hostent2ip_addr(&si->address, he, 0); /*convert to ip_addr
- format*/
- if ((tmp=ip_addr2a(&si->address))==0) goto error;
- si->address_str.s=(char*)pkg_malloc(strlen(tmp)+1);
- if (si->address_str.s==0){
- LOG(L_ERR, "ERROR: fix_socket_list: out of memory.\n");
- goto error;
- }
- strncpy(si->address_str.s, tmp, strlen(tmp)+1);
- /* set is_ip (1 if name is an ip address, 0 otherwise) */
- si->address_str.len=strlen(tmp);
- if ( (si->address_str.len==si->name.len)&&
- (strncasecmp(si->address_str.s, si->name.s,
- si->address_str.len)==0)
- ){
- si->flags|=SI_IS_IP;
- /* do rev. DNS on it (for aliases)*/
- he=rev_resolvehost(&si->address);
- if (he==0){
- LOG(L_WARN, "WARNING: fix_socket_list:"
- " could not rev. resolve %s\n",
- si->name.s);
- }else{
- /* add the aliases*/
- if (add_alias(he->h_name, strlen(he->h_name),
- si->port_no, si->proto)<0){
- LOG(L_ERR, "ERROR: fix_socket_list:"
- "add_alias failed\n");
- }
- for(h=he->h_aliases; h && *h; h++)
- if (add_alias(*h,strlen(*h),si->port_no,si->proto)<0){
- LOG(L_ERR, "ERROR: fix_socket_list:"
- " add_alias failed\n");
- }
- }
- }
-
-#ifdef USE_MCAST
- /* Check if it is an multicast address and
- * set the flag if so
- */
- if (is_mcast(&si->address)) {
- si->flags |= SI_IS_MCAST;
- }
-#endif /* USE_MCAST */
-
-#ifdef EXTRA_DEBUG
- printf(" %.*s [%s]:%s%s\n", si->name.len,
- si->name.s, si->address_str.s, si->port_no_str.s,
- si->flags & SI_IS_MCAST ? " mcast" : "");
-#endif
- }
- /* removing duplicate addresses*/
- for (si=*list;si; si=si->next){
- for (l=si->next;l;){
- next=l->next;
- if ((si->port_no==l->port_no) &&
- (si->address.af==l->address.af) &&
- (memcmp(si->address.u.addr, l->address.u.addr, si->address.len)
- == 0)
- ){
-#ifdef EXTRA_DEBUG
- printf("removing duplicate %s [%s] == %s [%s]\n",
- si->name.s, si->address_str.s,
- l->name.s, l->address_str.s);
-#endif
- /* add the name to the alias list*/
- if ((!(l->flags& SI_IS_IP)) && (
- (l->name.len!=si->name.len)||
- (strncmp(l->name.s, si->name.s, si->name.len)!=0))
- )
- add_alias(l->name.s, l->name.len, l->port_no, l->proto);
-
- /* remove l*/
- sock_listrm(list, l);
- free_sock_info(l);
- }
- l=next;
- }
- }
-
-#ifdef USE_MCAST
- /* Remove invalid multicast entries */
- si=*list;
- while(si){
- if ((si->flags & SI_IS_MCAST) &&
- ((si->proto == PROTO_TCP)
-#ifdef USE_TLS
- || (si->proto == PROTO_TLS)
-#endif /* USE_TLS */
- )){
- LOG(L_WARN, "WARNING: removing entry %s:%s [%s]:%s\n",
- get_proto_name(si->proto), si->name.s,
- si->address_str.s, si->port_no_str.s);
- l = si;
- si=si->next;
- sock_listrm(list, l);
- free_sock_info(l);
- } else {
- si=si->next;
- }
- }
-#endif /* USE_MCAST */
-
- return 0;
-error:
- return -1;
-}
-
-
-
-/* fix all 3 socket lists
- * return 0 on success, -1 on error */
-int fix_all_socket_lists()
-{
- struct utsname myname;
-
- if ((udp_listen==0)
-#ifdef USE_TCP
- && (tcp_listen==0)
-#ifdef USE_TLS
- && (tls_listen==0)
-#endif
-#endif
- ){
- /* get all listening ipv4 interfaces */
- if (add_interfaces(0, AF_INET, 0, PROTO_UDP, &udp_listen)==0){
- /* if ok, try to add the others too */
-#ifdef USE_TCP
- if (!tcp_disable){
- if (add_interfaces(0, AF_INET, 0, PROTO_TCP, &tcp_listen)!=0)
- goto error;
-#ifdef USE_TLS
- if (!tls_disable){
- if (add_interfaces(0, AF_INET, 0, PROTO_TLS,
- &tls_listen)!=0)
- goto error;
- }
-#endif
- }
-#endif
- }else{
- /* if error fall back to get hostname */
- /* get our address, only the first one */
- if (uname (&myname) <0){
- LOG(L_ERR, "ERROR: fix_all_socket_lists: cannot determine"
- " hostname, try -l address\n");
- goto error;
- }
- if (add_listen_iface(myname.nodename, 0, 0, 0)!=0){
- LOG(L_ERR, "ERROR: fix_all_socket_lists: add_listen_iface "
- "failed \n");
- goto error;
- }
- }
- }
- if (fix_socket_list(&udp_listen)!=0){
- LOG(L_ERR, "ERROR: fix_all_socket_lists: fix_socket_list"
- " udp failed\n");
- goto error;
- }
-#ifdef USE_TCP
- if (!tcp_disable && (fix_socket_list(&tcp_listen)!=0)){
- LOG(L_ERR, "ERROR: fix_all_socket_lists: fix_socket_list"
- " tcp failed\n");
- goto error;
- }
-#ifdef USE_TLS
- if (!tls_disable && (fix_socket_list(&tls_listen)!=0)){
- LOG(L_ERR, "ERROR: fix_all_socket_lists: fix_socket_list"
- " tls failed\n");
- goto error;
- }
-#endif
-#endif
- if ((udp_listen==0)
-#ifdef USE_TCP
- && (tcp_listen==0)
-#ifdef USE_TLS
- && (tls_listen==0)
-#endif
-#endif
- ){
- LOG(L_ERR, "ERROR: fix_all_socket_lists: no listening sockets\n");
- goto error;
- }
- return 0;
-error:
- return -1;
-}
-
-
-
-void print_all_socket_lists()
-{
- struct socket_info *si;
- struct socket_info** list;
- unsigned short proto;
-
-
- proto=PROTO_UDP;
- do{
- list=get_sock_info_list(proto);
- for(si=list?*list:0; si; si=si->next){
- printf(" %s: %s [%s]:%s%s\n", get_proto_name(proto),
- si->name.s, si->address_str.s, si->port_no_str.s,
- si->flags & SI_IS_MCAST ? " mcast" : "");
- }
- }while((proto=next_proto(proto)));
-}
-
-
-void print_aliases()
-{
- struct host_alias* a;
-
- for(a=aliases; a; a=a->next)
- if (a->port)
- printf(" %s: %.*s:%d\n", get_proto_name(a->proto),
- a->alias.len, a->alias.s, a->port);
- else
- printf(" %s: %.*s:*\n", get_proto_name(a->proto),
- a->alias.len, a->alias.s);
-}
Deleted: ser/trunk/socket_info.h
===================================================================
--- ser/trunk/socket_info.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/socket_info.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,116 +0,0 @@
-/* $Id: socket_info.h,v 1.5.2.1 2005/02/25 18:30:28 bogdan Exp $
- *
- * find & manage listen addresses
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to" the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*
- * This file contains code that initializes and handles ser listen addresses
- * lists (struct socket_info). It is used mainly on startup.
- *
- * History:
- * --------
- * 2003-10-22 created by andrei
- */
-
-
-#ifndef socket_info_h
-#define socket_info_h
-
-#include "ip_addr.h"
-#include "dprint.h"
-#include "globals.h"
-/* struct socket_info is defined in ip_addr.h */
-
-struct socket_info* udp_listen;
-#ifdef USE_TCP
-struct socket_info* tcp_listen;
-#endif
-#ifdef USE_TLS
-struct socket_info* tls_listen;
-#endif
-
-
-int add_listen_iface(char* name, unsigned short port, unsigned short proto,
- enum si_flags flags);
-int fix_all_socket_lists();
-void print_all_socket_lists();
-void print_aliases();
-
-struct socket_info* grep_sock_info(str* host, unsigned short port,
- unsigned short proto);
-struct socket_info* find_si(struct ip_addr* ip, unsigned short port,
- unsigned short proto);
-
-/* helper function:
- * returns next protocol, if the last one is reached return 0
- * useful for cycling on the supported protocols */
-static inline int next_proto(unsigned short proto)
-{
- switch(proto){
- case PROTO_NONE:
- return PROTO_UDP;
- case PROTO_UDP:
-#ifdef USE_TCP
- return (tcp_disable)?0:PROTO_TCP;
-#else
- return 0;
-#endif
-#ifdef USE_TCP
- case PROTO_TCP:
-#ifdef USE_TLS
- return (tls_disable)?0:PROTO_TLS;
-#else
- return 0;
-#endif
-#endif
-#ifdef USE_TLS
- case PROTO_TLS:
- return 0;
-#endif
- default:
- LOG(L_ERR, "ERROR: next_proto: unknown proto %d\n", proto);
- }
- return 0;
-}
-
-
-
-/* gets first non-null socket_info structure
- * (useful if for. e.g we are not listening on any udp sockets )
- */
-inline static struct socket_info* get_first_socket()
-{
- if (udp_listen) return udp_listen;
-#ifdef USE_TCP
- else if (tcp_listen) return tcp_listen;
-#ifdef USE_TLS
- else if (tls_listen) return tls_listen;
-#endif
-#endif
- return 0;
-}
-
-
-#endif
Deleted: ser/trunk/sr_module.c
===================================================================
--- ser/trunk/sr_module.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/sr_module.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,500 +0,0 @@
-/* $Id: sr_module.c,v 1.37 2004/09/19 20:22:51 andrei Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*
- * History:
- * --------
- * 2003-03-10 switched to new module_exports format: updated find_export,
- * find_export_param, find_module (andrei)
- * 2003-03-19 replaced all mallocs/frees w/ pkg_malloc/pkg_free (andrei)
- * 2003-03-19 Support for flags in find_export (janakj)
- * 2003-03-29 cleaning pkg_mallocs introduced (jiri)
- * 2003-04-24 module version checking introduced (jiri)
- * 2004-09-19 compile flags are checked too (andrei)
- */
-
-
-#include "sr_module.h"
-#include "dprint.h"
-#include "error.h"
-#include "mem/mem.h"
-
-#include <dlfcn.h>
-#include <strings.h>
-#include <stdlib.h>
-#include <string.h>
-
-
-struct sr_module* modules=0;
-
-#ifdef STATIC_EXEC
- extern struct module_exports* exec_exports();
-#endif
-#ifdef STATIC_TM
- extern struct module_exports* tm_exports();
-#endif
-
-#ifdef STATIC_MAXFWD
- extern struct module_exports* maxfwd_exports();
-#endif
-
-#ifdef STATIC_AUTH
- extern struct module_exports* auth_exports();
-#endif
-
-#ifdef STATIC_RR
- extern struct module_exports* rr_exports();
-#endif
-
-#ifdef STATIC_USRLOC
- extern struct module_exports* usrloc_exports();
-#endif
-
-#ifdef STATIC_SL
- extern struct module_exports* sl_exports();
-#endif
-
-
-/* initializes statically built (compiled in) modules*/
-int register_builtin_modules()
-{
- int ret;
-
- ret=0;
-#ifdef STATIC_TM
- ret=register_module(tm_exports,"built-in", 0);
- if (ret<0) return ret;
-#endif
-
-#ifdef STATIC_EXEC
- ret=register_module(exec_exports,"built-in", 0);
- if (ret<0) return ret;
-#endif
-
-#ifdef STATIC_MAXFWD
- ret=register_module(maxfwd_exports, "built-in", 0);
- if (ret<0) return ret;
-#endif
-
-#ifdef STATIC_AUTH
- ret=register_module(auth_exports, "built-in", 0);
- if (ret<0) return ret;
-#endif
-
-#ifdef STATIC_RR
- ret=register_module(rr_exports, "built-in", 0);
- if (ret<0) return ret;
-#endif
-
-#ifdef STATIC_USRLOC
- ret=register_module(usrloc_exports, "built-in", 0);
- if (ret<0) return ret;
-#endif
-
-#ifdef STATIC_SL
- ret=register_module(sl_exports, "built-in", 0);
- if (ret<0) return ret;
-#endif
-
- return ret;
-}
-
-
-
-/* registers a module, register_f= module register functions
- * returns <0 on error, 0 on success */
-int register_module(struct module_exports* e, char* path, void* handle)
-{
- int ret;
- struct sr_module* mod;
-
- ret=-1;
-
- /* add module to the list */
- if ((mod=pkg_malloc(sizeof(struct sr_module)))==0){
- LOG(L_ERR, "load_module: memory allocation failure\n");
- ret=E_OUT_OF_MEM;
- goto error;
- }
- memset(mod,0, sizeof(struct sr_module));
- mod->path=path;
- mod->handle=handle;
- mod->exports=e;
- mod->next=modules;
- modules=mod;
- return 0;
-error:
- return ret;
-}
-
-#ifndef DLSYM_PREFIX
-/* define it to null */
-#define DLSYM_PREFIX
-#endif
-
-static inline int version_control(void *handle, char *path)
-{
- char **m_ver;
- char **m_flags;
- char* error;
-
- m_ver=(char **)dlsym(handle, DLSYM_PREFIX "module_version");
- if ((error=(char *)dlerror())!=0) {
- LOG(L_ERR, "ERROR: no version info in module <%s>: %s\n",
- path, error );
- return 0;
- }
- m_flags=(char **)dlsym(handle, DLSYM_PREFIX "module_flags");
- if ((error=(char *)dlerror())!=0) {
- LOG(L_ERR, "ERROR: no compile flags info in module <%s>: %s\n",
- path, error );
- return 0;
- }
- if (!m_ver || !(*m_ver)) {
- LOG(L_ERR, "ERROR: no version in module <%s>\n", path );
- return 0;
- }
- if (!m_flags || !(*m_flags)) {
- LOG(L_ERR, "ERROR: no compile flags in module <%s>\n", path );
- return 0;
- }
-
- if (strcmp(SER_FULL_VERSION, *m_ver)==0){
- if (strcmp(SER_COMPILE_FLAGS, *m_flags)==0)
- return 1;
- else {
- LOG(L_ERR, "ERROR: module compile flags mismatch for %s "
- " \ncore: %s \nmodule: %s\n",
- path, SER_COMPILE_FLAGS, *m_flags);
- return 0;
- }
- }
- LOG(L_ERR, "ERROR: module version mismatch for %s; "
- "core: %s; module: %s\n", path, SER_FULL_VERSION, *m_ver );
- return 0;
-}
-
-/* returns 0 on success , <0 on error */
-int load_module(char* path)
-{
- void* handle;
- char* error;
- struct module_exports* exp;
- struct sr_module* t;
-
-#ifndef RTLD_NOW
-/* for openbsd */
-#define RTLD_NOW DL_LAZY
-#endif
- handle=dlopen(path, RTLD_NOW); /* resolve all symbols now */
- if (handle==0){
- LOG(L_ERR, "ERROR: load_module: could not open module <%s>: %s\n",
- path, dlerror() );
- goto error;
- }
-
- for(t=modules;t; t=t->next){
- if (t->handle==handle){
- LOG(L_WARN, "WARNING: load_module: attempting to load the same"
- " module twice (%s)\n", path);
- goto skip;
- }
- }
- /* version control */
- if (!version_control(handle, path)) {
- exit(0);
- }
- /* launch register */
- exp = (struct module_exports*)dlsym(handle, DLSYM_PREFIX "exports");
- if ( (error =(char*)dlerror())!=0 ){
- LOG(L_ERR, "ERROR: load_module: %s\n", error);
- goto error1;
- }
- if (register_module(exp, path, handle)<0) goto error1;
- return 0;
-
-error1:
- dlclose(handle);
-error:
-skip:
- return -1;
-}
-
-
-
-/* searches the module list and returns pointer to the "name" function or
- * 0 if not found
- * flags parameter is OR value of all flags that must match
- */
-cmd_function find_export(char* name, int param_no, int flags)
-{
- struct sr_module* t;
- cmd_export_t* cmd;
-
- for(t=modules;t;t=t->next){
- for(cmd=t->exports->cmds; cmd && cmd->name; cmd++){
- if((strcmp(name, cmd->name)==0)&&
- (cmd->param_no==param_no) &&
- ((cmd->flags & flags) == flags)
- ){
- DBG("find_export: found <%s> in module %s [%s]\n",
- name, t->exports->name, t->path);
- return cmd->function;
- }
- }
- }
- DBG("find_export: <%s> not found \n", name);
- return 0;
-}
-
-
-
-/*
- * searches the module list and returns pointer to "name" function in module "mod"
- * 0 if not found
- * flags parameter is OR value of all flags that must match
- */
-cmd_function find_mod_export(char* mod, char* name, int param_no, int flags)
-{
- struct sr_module* t;
- cmd_export_t* cmd;
-
- for (t = modules; t; t = t->next) {
- if (strcmp(t->exports->name, mod) == 0) {
- for (cmd = t->exports->cmds; cmd && cmd->name; cmd++) {
- if ((strcmp(name, cmd->name) == 0) &&
- (cmd->param_no == param_no) &&
- ((cmd->flags & flags) == flags)
- ){
- DBG("find_mod_export: found <%s> in module %s [%s]\n",
- name, t->exports->name, t->path);
- return cmd->function;
- }
- }
- }
- }
-
- DBG("find_mod_export: <%s> in module %s not found\n", name, mod);
- return 0;
-}
-
-
-
-
-void* find_param_export(char* mod, char* name, modparam_t type)
-{
- struct sr_module* t;
- param_export_t* param;
-
- for(t = modules; t; t = t->next) {
- if (strcmp(mod, t->exports->name) == 0) {
- for(param=t->exports->params;param && param->name ; param++) {
- if ((strcmp(name, param->name) == 0) &&
- (param->type == type)) {
- DBG("find_param_export: found <%s> in module %s [%s]\n",
- name, t->exports->name, t->path);
- return param->param_pointer;
- }
- }
- }
- }
- DBG("find_param_export: parameter <%s> or module <%s> not found\n",
- name, mod);
- return 0;
-}
-
-
-/* finds a module, given a pointer to a module function *
- * returns pointer to module, & if c!=0, *c=pointer to the
- * function cmd_export structure*/
-struct sr_module* find_module(void* f, cmd_export_t **c)
-{
- struct sr_module* t;
- cmd_export_t* cmd;
-
- for (t=modules;t;t=t->next){
- for(cmd=t->exports->cmds; cmd && cmd->name; cmd++)
- if (f==(void*)cmd->function) {
- if (c) *c=cmd;
- return t;
- }
- }
- return 0;
-}
-
-
-
-void destroy_modules()
-{
- struct sr_module* t, *foo;
-
- t=modules;
- while(t) {
- foo=t->next;
- if ((t->exports)&&(t->exports->destroy_f)) t->exports->destroy_f();
- pkg_free(t);
- t=foo;
- }
- modules=0;
-}
-
-#ifdef NO_REVERSE_INIT
-
-/*
- * Initialize all loaded modules, the initialization
- * is done *AFTER* the configuration file is parsed
- */
-int init_modules(void)
-{
- struct sr_module* t;
-
- for(t = modules; t; t = t->next) {
- if ((t->exports) && (t->exports->init_f))
- if (t->exports->init_f() != 0) {
- LOG(L_ERR, "init_modules(): Error while initializing"
- " module %s\n", t->exports->name);
- return -1;
- }
- }
- return 0;
-}
-
-/*
- * per-child initialization
- */
-int init_child(int rank)
-{
- struct sr_module* t;
- char* type;
-
- switch(rank) {
- case PROC_MAIN: type = "PROC_MAIN"; break;
- case PROC_TIMER: type = "PROC_TIMER"; break;
- case PROC_FIFO: type = "PROC_FIFO"; break;
- case PROC_TCP_MAIN: type = "PROC_TCP_MAIN"; break;
- default: type = "CHILD"; break;
- }
- DBG("init_child: initializing %s with rank %d\n", type, rank);
-
-
- for(t = modules; t; t = t->next) {
- if (t->exports->init_child_f) {
- if ((t->exports->init_child_f(rank)) < 0) {
- LOG(L_ERR, "init_child(): Initialization of child %d failed\n",
- rank);
- return -1;
- }
- }
- }
- return 0;
-}
-
-#else
-
-
-/* recursive module child initialization; (recursion is used to
- process the module linear list in the same order in
- which modules are loaded in config file
-*/
-
-static int init_mod_child( struct sr_module* m, int rank )
-{
- if (m) {
- /* iterate through the list; if error occurs,
- propagate it up the stack
- */
- if (init_mod_child(m->next, rank)!=0) return -1;
- if (m->exports && m->exports->init_child_f) {
- DBG("DEBUG: init_mod_child (%d): %s\n",
- rank, m->exports->name);
- if (m->exports->init_child_f(rank)<0) {
- LOG(L_ERR, "init_mod_child(): Error while initializing"
- " module %s\n", m->exports->name);
- return -1;
- } else {
- /* module correctly initialized */
- return 0;
- }
- }
- /* no init function -- proceed with success */
- return 0;
- } else {
- /* end of list */
- return 0;
- }
-}
-
-
-/*
- * per-child initialization
- */
-int init_child(int rank)
-{
- return init_mod_child(modules, rank);
-}
-
-
-
-/* recursive module initialization; (recursion is used to
- process the module linear list in the same order in
- which modules are loaded in config file
-*/
-
-static int init_mod( struct sr_module* m )
-{
- if (m) {
- /* iterate through the list; if error occurs,
- propagate it up the stack
- */
- if (init_mod(m->next)!=0) return -1;
- if (m->exports && m->exports->init_f) {
- DBG("DEBUG: init_mod: %s\n", m->exports->name);
- if (m->exports->init_f()!=0) {
- LOG(L_ERR, "init_mod(): Error while initializing"
- " module %s\n", m->exports->name);
- return -1;
- } else {
- /* module correctly initialized */
- return 0;
- }
- }
- /* no init function -- proceed with success */
- return 0;
- } else {
- /* end of list */
- return 0;
- }
-}
-
-/*
- * Initialize all loaded modules, the initialization
- * is done *AFTER* the configuration file is parsed
- */
-int init_modules(void)
-{
- return init_mod(modules);
-}
-
-#endif
Deleted: ser/trunk/sr_module.h
===================================================================
--- ser/trunk/sr_module.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/sr_module.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,163 +0,0 @@
-/* $Id: sr_module.h,v 1.24 2004/12/03 19:09:31 andrei Exp $
- *
- * modules/plug-in structures declarations
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*
- * History:
- * --------
- * 2003-03-10 changed module exports interface: added struct cmd_export
- * and param_export (andrei)
- * 2003-03-16 Added flags field to cmd_export_ (janakj)
- * 2003-04-05 s/reply_route/failure_route, onreply_route introduced (jiri)
- * 2004-03-12 extra flag USE_FUNC_PARAM added to modparam type -
- * instead of copying the param value, a func is called (bogdan)
- * 2004-09-19 switched to version.h for the module versions checks (andrei)
- * 2004-12-03 changed param_func_t to (modparam_t, void*), killed
- * param_func_param_t (andrei)
- */
-
-
-#ifndef sr_module_h
-#define sr_module_h
-
-#include "parser/msg_parser.h" /* for sip_msg */
-#include "version.h"
-
-typedef struct module_exports* (*module_register)();
-typedef int (*cmd_function)(struct sip_msg*, char*, char*);
-typedef int (*fixup_function)(void** param, int param_no);
-typedef int (*response_function)(struct sip_msg*);
-typedef void (*onbreak_function)(struct sip_msg*);
-typedef void (*destroy_function)();
-typedef int (*init_function)(void);
-typedef int (*child_init_function)(int rank);
-
-
-#define STR_PARAM (1U<<0) /* String parameter type */
-#define INT_PARAM (1U<<1) /* Integer parameter type */
-#define USE_FUNC_PARAM (1U<<(8*sizeof(int)-1))
-#define PARAM_TYPE_MASK(_x) ((_x)&(~USE_FUNC_PARAM))
-
-typedef unsigned int modparam_t;
-
-typedef int (*param_func_t)( modparam_t type, void* val);
-
-#define REQUEST_ROUTE 1 /* Function can be used in request route blocks */
-#define FAILURE_ROUTE 2 /* Function can be used in reply route blocks */
-#define ONREPLY_ROUTE 4 /* Function can be used in on_reply */
-
-/* Macros - used as rank in child_init function */
-#define PROC_MAIN 0 /* Main ser process */
-#define PROC_TIMER -1 /* Timer attendant process */
-#define PROC_FIFO -2 /* FIFO attendant process */
-#define PROC_TCP_MAIN -4 /* TCP main process */
-#define PROC_UNIXSOCK -5 /* Unix domain socket server processes */
-
-#define MODULE_VERSION \
- char *module_version=SER_FULL_VERSION; \
- char *module_flags=SER_COMPILE_FLAGS;
-
-struct cmd_export_ {
- char* name; /* null terminated command name */
- cmd_function function; /* pointer to the corresponding function */
- int param_no; /* number of parameters used by the function */
- fixup_function fixup; /* pointer to the function called to "fix" the
- parameters */
- int flags; /* Function flags */
-};
-
-
-struct param_export_ {
- char* name; /* null terminated param. name */
- modparam_t type; /* param. type */
- void* param_pointer; /* pointer to the param. memory location */
-};
-
-
-typedef struct cmd_export_ cmd_export_t;
-typedef struct param_export_ param_export_t;
-
-struct module_exports{
- char* name; /* null terminated module name */
-
- cmd_export_t* cmds; /* null terminated array of the exported
- commands */
- param_export_t* params; /* null terminated array of the exported
- module parameters */
-
- init_function init_f; /* Initialization function */
- response_function response_f; /* function used for responses,
- returns yes or no; can be null */
- destroy_function destroy_f; /* function called when the module should
- be "destroyed", e.g: on ser exit;
- can be null */
- onbreak_function onbreak_f;
- child_init_function init_child_f; /* function called by all processes
- after the fork */
-};
-
-
-
-
-
-struct sr_module{
- char* path;
- void* handle;
- struct module_exports* exports;
- struct sr_module* next;
-};
-
-
-struct sr_module* modules; /* global module list*/
-
-int register_builtin_modules();
-int register_module(struct module_exports*, char*, void*);
-int load_module(char* path);
-cmd_function find_export(char* name, int param_no, int flags);
-cmd_function find_mod_export(char* mod, char* name, int param_no, int flags);
-struct sr_module* find_module(void *f, cmd_export_t** cmd);
-void destroy_modules();
-int init_child(int rank);
-int init_modules(void);
-
-/*
- * Find a parameter with given type and return it's
- * address in memory
- * If there is no such parameter, NULL is returned
- */
-void* find_param_export(char* mod, char* name, modparam_t type);
-
-/* modules function prototypes:
- * struct module_exports* mod_register(); (type module_register)
- * int foo_cmd(struct sip_msg* msg, char* param);
- * - returns >0 if ok , <0 on error, 0 to stop processing (==DROP)
- * int response_f(struct sip_msg* msg)
- * - returns >0 if ok, 0 to drop message
- */
-
-
-#endif
Deleted: ser/trunk/stats.c
===================================================================
--- ser/trunk/stats.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/stats.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,867 +0,0 @@
-/*
- * $Id: stats.c,v 1.9 2004/08/24 08:45:10 janakj Exp $
- *
- * Stats reporting code. It reports through SIG_USR1 and if loaded
- * through the SNMP module
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * History:
- * -------
- * 2003-03-19: added support for route type in find_export (janakj)
- */
-
-
-#ifdef STATS
-#include "stats.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include "dprint.h"
-#include "mem/shm_mem.h"
-#include "sr_module.h"
-
-/* SNMP includes */
-#include "modules/snmp/snmp_handler.h"
-#include "modules/snmp/sipCommonStatsMethod.h"
-#include "modules/snmp/sipCommonStatusCode.h"
-
-struct stats_s *stats; /* per process stats structure */
-char *stat_file = NULL; /* set by the parser */
-
-/* private variables */
-static struct stats_s *global_stats=NULL;
-static int stats_segments=-1; /*used also to determine if we've been init'ed*/
-
-/* adds up global statistics and puts them into passed struct.
- * -1 returned on failure */
-static int collect_stats(struct stats_s *s);
-
-/***********************8 SNMP Stuff **************************/
-/* a small structure we use to pass around the functions needed by
- * all the registration functions */
-struct stats_funcs {
- int (*reg_func)(const char *, struct sip_snmp_handler*);
- struct sip_snmp_handler* (*new_func)(size_t);
- void (*free_func)(struct sip_snmp_handler*);
-};
-
-/* SNMP Handler registration functions */
-static int sipSummaryStatsTable_register(const struct stats_funcs *f);
-static int sipMethodStatsTable_register(const struct stats_funcs *f);
-static int sipStatusCodesTable_register(const struct stats_funcs *f);
-
-/* the handlers */
-static int collect_InReqs(struct sip_snmp_obj *, enum handler_op);
-static int collect_OutReqs(struct sip_snmp_obj *, enum handler_op);
-static int collect_InResp(struct sip_snmp_obj *, enum handler_op);
-static int collect_OutResp(struct sip_snmp_obj *, enum handler_op);
-static int sipStatsMethod_handler(struct sip_snmp_obj *o, enum handler_op op);
-static int sipStatusCodes_handler(struct sip_snmp_obj *o, enum handler_op op);
-
-int init_stats(int nr_of_processes)
-{
- LOG(L_DBG,"init_stats(): initializing stats for %d processes\n",
- nr_of_processes);
-
-
- global_stats = shm_malloc(nr_of_processes*sizeof(struct stats_s));
- if(!global_stats) {
- LOG(L_ERR, "Out of memory\n");
- return -1;
- }
- stats_segments = nr_of_processes;
-
- if(stats_register() == -1)
- LOG(L_WARN, "init_stats(): Couldn't register stats"
- " with snmp module\n");
-
-
- return 0;
-}
-
-/* sets the stats pointer for the passed process */
-void setstats(int child_index)
-{
- if(stats_segments == -1 || !global_stats) {
- LOG(L_ERR, "Stats not initialized. Cannot set them\n");
- stats = NULL;
- return;
- }
- if(child_index < 0 || child_index >= stats_segments) {
- stats = NULL;
- LOG(L_ERR, "Invalid index %d while setting statistics. Only have "
- "space for %d processes\n", child_index, stats_segments);
- return;
- }
- stats = global_stats+child_index;
- stats->process_index = child_index;
- /* can't use pids[] because we may be called before the corresponding
- * slot in pids[] is initialized (chk main_loop()) */
- stats->pid = getpid();
- stats->start_time = time(NULL);
-}
-
-/* printheader is used to print pid, date and index */
-int dump_statistic(FILE *fp, struct stats_s *istats, int printheader)
-{
- struct tm res;
- char t[256];
- if(stats_segments == -1 || !global_stats) {
- LOG(L_ERR, "Stats \"engine\" not initialized\n");
- return -1;
- }
-
- if(printheader) {
- localtime_r(&istats->start_time, &res);
- strftime(t, 255, "%c", &res);
-
- fprintf(fp, "stats for process %d (pid %d) started at %s\n",
- istats->process_index, istats->pid, t);
- }
-
- fprintf(fp, "received requests:\ninv: %ld\tack: %ld\tcnc: %ld\t"
- "bye: %ld\tother: %ld\n",
- istats->received_requests_inv,
- istats->received_requests_ack,
- istats->received_requests_cnc,
- istats->received_requests_bye,
- istats->received_requests_other);
- fprintf(fp, "sent requests:\n"
- "inv: %ld\tack: %ld\tcnc: %ld\tbye: %ld\tother: %ld\n",
- istats->sent_requests_inv,
- istats->sent_requests_ack,
- istats->sent_requests_cnc,
- istats->sent_requests_bye,
- istats->sent_requests_other);
- fprintf(fp, "received responses:\n"
- "1: %ld\t2: %ld\t3: %ld\t4: %ld\t5: %ld\t6: %ld\tother: %ld\t"
- "drops: %ld\n",
- istats->received_responses_1,
- istats->received_responses_2,
- istats->received_responses_3,
- istats->received_responses_4,
- istats->received_responses_5,
- istats->received_responses_6,
- istats->received_responses_other,
- istats->received_drops);
- fprintf(fp, "sent responses:\n"
- "1: %ld\t2: %ld\t3: %ld\t4: %ld\t5: %ld\t6: %ld\n",
- istats->sent_responses_1,
- istats->sent_responses_2,
- istats->sent_responses_3,
- istats->sent_responses_4,
- istats->sent_responses_5,
- istats->sent_responses_6);
- fprintf(fp, "processed requests: %ld\t\tprocessed responses: %ld\n"
- "acc req time: %ld\t\t\tacc res time: %ld\nfailed on send: %ld\n\n",
- istats->processed_requests,
- istats->processed_responses,
- istats->acc_req_time,
- istats->acc_res_time,
- istats->failed_on_send);
- return 0;
-}
-
-int dump_all_statistic()
-{
- register int i;
- register struct stats_s *c;
- static struct stats_s *g = NULL;
- struct tm res;
- char t[256];
- time_t ts;
- FILE *stat_fp = NULL;
-
- if(stats_segments == -1 || !global_stats) {
- LOG(L_ERR, "%s: Can't dump statistics, not initialized!\n", __func__);
- return -1;
- }
-
- if(!stat_file) {
- LOG(L_ERR, "%s: Can't dump statistics, invalid stats file\n", __func__);
- return -1;
- }
-
- stat_fp = fopen(stat_file, "a");
- if(!stat_fp) {
- LOG(L_ERR, "%s: Couldn't open stats file %s: %s\n", __func__, stat_file,
- strerror(errno));
- return -1;
- }
-
- /* time stamp them since we're appending to the file */
- ts = time(NULL);
- localtime_r(&ts, &res);
- strftime(t, 255, "%c", &res);
- fprintf(stat_fp, "#### stats @ %s #####\n", t);
-
- c = global_stats;
- for(i=0; i<stats_segments; i++) {
- if(dump_statistic(stat_fp, c, 1) == -1) {
- LOG(L_ERR, "Error dumping statistics for process %d\n", i);
- goto end;
- }
- c++;
- }
-
- fprintf(stat_fp, "## Global Stats ##\n");
- if(!g)
- g = calloc(1, sizeof(struct stats_s));
- if(!g) {
- LOG(L_ERR, "Couldn't dump global stats: %s\n", strerror(errno));
- goto end;
- }
-
- if(collect_stats(g) == -1) {
- LOG(L_ERR, "%s: Couldn't dump global stats\n", __func__);
- goto end;
- }
- if(dump_statistic(stat_fp, g, 0) == -1) {
- LOG(L_ERR, "Couldn't dump global stats\n");
- goto end;
- }
-end:
- fprintf(stat_fp, "\n");
- fclose(stat_fp);
-
- return 0;
-}
-
-static int collect_stats(struct stats_s *s)
-{
- register int i;
- register struct stats_s *c;
- if(!s) {
- LOG(L_ERR, "collect_stats(): Invalid stats pointer passed\n");
- return -1;
- }
- if(!global_stats || stats_segments == -1) {
- LOG(L_ERR, "Can't collect statistics, not initialized!!\n");
- return -1;
- }
-
- c = global_stats;
- memset(s, '\0', sizeof(struct stats_s));
- for(i=0; i<stats_segments; i++) {
- s->received_requests_inv += c->received_requests_inv;
- s->received_requests_ack += c->received_requests_ack;
- s->received_requests_cnc += c->received_requests_cnc;
- s->received_requests_bye += c->received_requests_bye;
- s->received_requests_other += c->received_requests_other;
- s->received_responses_1 += c->received_responses_1;
- s->received_responses_2 += c->received_responses_2;
- s->received_responses_3 += c->received_responses_3;
- s->received_responses_4 += c->received_responses_4;
- s->received_responses_5 += c->received_responses_5;
- s->received_responses_6 += c->received_responses_6;
- s->received_responses_other += c->received_responses_other;
- s->received_drops += c->received_drops;
- s->sent_requests_inv += c->sent_requests_inv;
- s->sent_requests_ack += c->sent_requests_ack;
- s->sent_requests_cnc += c->sent_requests_cnc;
- s->sent_requests_bye += c->sent_requests_bye;
- s->sent_requests_other += c->sent_requests_other;
- s->sent_responses_1 += c->sent_responses_1;
- s->sent_responses_2 += c->sent_responses_2;
- s->sent_responses_3 += c->sent_responses_3;
- s->sent_responses_4 += c->sent_responses_4;
- s->sent_responses_5 += c->sent_responses_5;
- s->sent_responses_6 += c->sent_responses_6;
- s->processed_requests += c->processed_requests;
- s->processed_responses += c->processed_responses;
- s->acc_req_time += c->acc_req_time;
- s->acc_res_time += c->acc_res_time;
- s->failed_on_send += c->failed_on_send;
-
- c++; /* next, please... */
- }
-
- return 0;
-}
-
-/*************************** SNMP Stuff ***********************/
-
-/* ##### Registration Functions ####### */
-
-/* Registers the handlers for:
- * - sipSummaryStatsTable
- * - sipMethodStatsTable
- * - sipStatusCodesTable
- * - sipCommonStatusCodeTable
- *
- * Returns 0 if snmp module not present, -1 on error, 1 on successful
- * registration
- */
-
-#define reg(t) \
- if(t##_register(&f) == -1) { \
- LOG(L_ERR, "%s: Failed registering SNMP handlers\n", func); \
- return -1; \
- }
-
-int stats_register()
-{
- const char *func = __FUNCTION__;
- struct stats_funcs f;
-
- f.reg_func = (void*) find_export("snmp_register_handler", 2, 0);
- f.new_func = (void*) find_export("snmp_new_handler", 1, 0);
- f.free_func = (void*) find_export("snmp_free_handler", 1, 0);
- if(!f.reg_func || !f.new_func || !f.free_func) {
- LOG(L_INFO, "%s: Couldn't find SNMP module\n", func);
- LOG(L_INFO, "%s: Not reporting stats through SNMP\n", func);
- return 0;
- }
-
- reg(sipSummaryStatsTable);
- reg(sipMethodStatsTable);
- reg(sipStatusCodesTable);
-
- return 0;
-}
-
-/* Receives the function used to register SNMP handlers. Returns 0
- * on success, -1 on error */
-/* Registers:
- * - sipSummaryInRequests
- * - sipSummaryOutRequests
- * - sipSummaryInResponses
- * - sipSummaryOutResponses
- * => sipSummaryTotalTransactions is handled by the tm module */
-static int sipSummaryStatsTable_register(const struct stats_funcs *f)
-{
- register struct sip_snmp_handler *h;
- register struct sip_snmp_obj *o;
- const char *func = __FUNCTION__;
-
- h = f->new_func(sizeof(unsigned long));
- if(!h) {
- LOG(L_ERR, "%s: Error creating handler\n", func);
- return -1;
- }
- o = h->sip_obj;
-
- /* this is the same for all of our objects */
- o->type = SER_COUNTER;
- *o->value.integer = 0; /* default value. The real one is computed on
- request */
- o->val_len = sizeof(unsigned long);
-
- /* sipSummaryInRequests */
- h->on_get = collect_InReqs;
- h->on_set = h->on_end = NULL;
- if(f->reg_func("sipSummaryInRequests", h) == -1) {
- LOG(L_ERR, "%s: Error registering sipSummaryInRequests\n", func);
- f->free_func(h);
- return -1;
- }
-
- /* sipSummaryOutRequests */
- h->on_get = collect_OutReqs;
- if(f->reg_func("sipSummaryOutRequests", h) == -1) {
- LOG(L_ERR, "%s: Error registering sipSummaryOutRequests\n", func);
- f->free_func(h);
- return -1;
- }
-
- /* sipSummaryInResponses */
- h->on_get = collect_InResp;
- if(f->reg_func("sipSummaryInResponses", h) == -1) {
- LOG(L_ERR, "%s: Error registering sipSummaryInResponses\n", func);
- f->free_func(h);
- return -1;
- }
-
- /* sipSummaryOutResponses */
- h->on_get = collect_OutResp;
- if(f->reg_func("sipSummaryOutResponses", h) == -1) {
- LOG(L_ERR, "%s: Error registering sipSummaryOutResponses\n", func);
- f->free_func(h);
- return -1;
- }
-
- f->free_func(h);
-
- return 0;
-}
-
-static int sipMethodStatsTable_register(const struct stats_funcs *f)
-{
- const char* objs[] = {
- "sipStatsInviteIns",
- "sipStatsInviteOuts",
- "sipStatsAckIns",
- "sipStatsAckOuts",
- "sipStatsByeIns",
- "sipStatsByeOuts",
- "sipStatsCancelIns",
- "sipStatsCancelOuts"
-#if 0 /* we don't know about these */
- "sipStatsOptionsIns",
- "sipStatsOptionsOuts",
- "sipStatsRegisterIns",
- "sipStatsRegisterOuts",
- "sipStatsInfoIns",
- "sipStatsInfoOuts"
-#endif
- };
- int i, num = 8;
- const char *func = __FUNCTION__;
- register struct sip_snmp_handler *h;
- register struct sip_snmp_obj *o;
-
- h = f->new_func(sizeof(unsigned long));
- if(!h) {
- LOG(L_ERR, "%s: Error creating handler\n", func);
- return -1;
- }
- o = h->sip_obj;
- o->type = SER_COUNTER;
- *o->value.integer = 0;
- o->val_len = sizeof(unsigned long);
-
- h->on_get = sipStatsMethod_handler;
- h->on_set = h->on_end = NULL;
-
- for(i=0; i<num; i++) {
- if(f->reg_func(objs[i], h) == -1) {
- LOG(L_ERR, "%s: Error registering %s\n", func, objs[i]);
- f->free_func(h);
- return -1;
- }
- }
-
- f->free_func(h);
-
- return 0;
-}
-
-static int sipStatusCodesTable_register(const struct stats_funcs *f)
-{
- const char *objs[] = {
- "sipStatsInfoClassIns",
- "sipStatsInfoClassOuts",
- "sipStatsSuccessClassIns",
- "sipStatsSuccessClassOuts",
- "sipStatsRedirClassIns",
- "sipStatsRedirClassOuts",
- "sipStatsReqFailClassIns",
- "sipStatsReqFailClassOuts",
- "sipStatsServerFailClassIns",
- "sipStatsServerFailClassOuts",
- "sipStatsGlobalFailClassIns",
- "sipStatsGlobalFailClassOuts",
- "sipStatsOtherClassesIns",
- "sipStatsOtherClassesOuts"
- };
- int i, num = 14;
- const char *func = __FUNCTION__;
- register struct sip_snmp_handler *h;
- register struct sip_snmp_obj *o;
-
- h = f->new_func(sizeof(unsigned long));
- if(!h) {
- LOG(L_ERR, "%s: Error creating handler\n", func);
- return -1;
- }
- o = h->sip_obj;
- o->type = SER_COUNTER;
- *o->value.integer = 0;
- o->val_len = sizeof(unsigned long);
-
- h->on_get = sipStatusCodes_handler;
- h->on_set = h->on_end = NULL;
-
- for(i=0; i<num; i++) {
- if(f->reg_func(objs[i], h) == -1) {
- LOG(L_ERR, "%s: Error registering %s\n", func, objs[i]);
- f->free_func(h);
- return -1;
- }
- }
-
- f->free_func(h);
-
- return 0;}
-
-/* ########################## SNMP Handlers ######################### */
-
-/*** Handlers for sipSummaryStatsTable */
-static int collect_InReqs(struct sip_snmp_obj *o, enum handler_op op)
-{
- register int i;
- register struct stats_s *c;
- register unsigned long t1, t2, t3, t4, t5;
- const char *func = __FUNCTION__;
-
- if(!global_stats || stats_segments == -1) {
- LOG(L_ERR, "%s: Can't collect stats, they have not been initialized."
- "Did you call init_stats()?\n", func);
- return -1;
- }
-
- if(op != SER_GET) {
- LOG(L_ERR, "%s: Invalid handler operation passed\n", func);
- return -1;
- }
-
- if(!o->value.integer) {
- o->value.integer = calloc(1, sizeof(unsigned long));
- if(!o->value.integer) {
- LOG(L_ERR, "%s: %s\n", func, strerror(errno));
- return -1;
- }
- }
-
- c = global_stats;
- t1 = t2 = t3 = t4 = t5 = 0;
- for(i=0; i<stats_segments; i++, c++) {
- t1 += c->received_requests_inv;
- t2 += c->received_requests_ack;
- t3 += c->received_requests_cnc;
- t4 += c->received_requests_bye;
- t5 += c->received_requests_other;
- }
-
- *o->value.integer = t1 + t2 + t3 + t4 + t5;
- o->val_len = sizeof(unsigned long);
- o->type = SER_COUNTER;
-
- return 0;
-}
-
-static int collect_OutReqs(struct sip_snmp_obj *o, enum handler_op op)
-{
- register int i;
- register struct stats_s *c;
- register unsigned long t1, t2, t3, t4, t5;
- const char *func = __FUNCTION__;
-
- if(!global_stats || stats_segments == -1) {
- LOG(L_ERR, "%s: Can't collect stats, they have not been initialized."
- "Did you call init_stats()?\n", func);
- return -1;
- }
-
- if(op != SER_GET) {
- LOG(L_ERR, "%s: Invalid handler operation passed\n", func);
- return -1;
- }
-
- if(!o->value.integer) {
- o->value.integer = calloc(1, sizeof(unsigned long));
- if(!o->value.integer) {
- LOG(L_ERR, "%s: %s\n", func, strerror(errno));
- return -1;
- }
- }
-
- c = global_stats;
- t1 = t2 = t3 = t4 = t5 = 0;
- for(i=0; i<stats_segments; i++, c++) {
- t1 += c->sent_requests_inv;
- t2 += c->sent_requests_ack;
- t3 += c->sent_requests_cnc;
- t4 += c->sent_requests_bye;
- t5 += c->sent_requests_other;
- }
-
- *o->value.integer = t1 + t2 + t3 + t4 + t5;
- o->val_len = sizeof(unsigned long);
- o->type = SER_COUNTER;
-
- return 0;
-}
-
-static int collect_InResp(struct sip_snmp_obj *o, enum handler_op op)
-{
- register int i;
- register struct stats_s *c;
- register unsigned long t1, t2, t3, t4, t5, t6, t7;
- const char *func = __FUNCTION__;
-
- if(!global_stats || stats_segments == -1) {
- LOG(L_ERR, "%s: Can't collect stats, they have not been initialized."
- "Did you call init_stats()?\n", func);
- return -1;
- }
-
- if(op != SER_GET) {
- LOG(L_ERR, "%s: Invalid handler operation passed\n", func);
- return -1;
- }
-
- if(!o->value.integer) {
- o->value.integer = calloc(1, sizeof(unsigned long));
- if(!o->value.integer) {
- LOG(L_ERR, "%s: %s\n", func, strerror(errno));
- return -1;
- }
- }
-
- c = global_stats;
- t1 = t2 = t3 = t4 = t5 = t6 = t7 = 0;
- for(i=0; i<stats_segments; i++, c++) {
- t1 += c->received_responses_1;
- t2 += c->received_responses_2;
- t3 += c->received_responses_3;
- t4 += c->received_responses_4;
- t5 += c->received_responses_5;
- t6 += c->received_responses_6;
- t7 += c->received_responses_other;
- }
-
- *o->value.integer = t1 + t2 + t3 + t4 + t5 + t6 + t7;
- o->val_len = sizeof(unsigned long);
- o->type = SER_COUNTER;
-
- return 0;
-}
-
-static int collect_OutResp(struct sip_snmp_obj *o, enum handler_op op)
-{
- register int i;
- register struct stats_s *c;
- register unsigned long t1, t2, t3, t4, t5, t6, t7;
- const char *func = __FUNCTION__;
-
- if(!global_stats || stats_segments == -1) {
- LOG(L_ERR, "%s: Can't collect stats, they have not been initialized\n",
- func);
- return -1;
- }
-
- if(op != SER_GET) {
- LOG(L_ERR, "%s: Invalid handler operation passed\n", func);
- return -1;
- }
-
- if(!o->value.integer) {
- o->value.integer = calloc(1, sizeof(unsigned long));
- if(!o->value.integer) {
- LOG(L_ERR, "%s: %s\n", func, strerror(errno));
- return -1;
- }
- }
-
- c = global_stats;
- t1 = t2 = t3 = t4 = t5 = t6 = t7 = 0;
- for(i=0; i<stats_segments; i++, c++) {
- t1 += c->sent_responses_1;
- t2 += c->sent_responses_2;
- t3 += c->sent_responses_3;
- t4 += c->sent_responses_4;
- t5 += c->sent_responses_5;
- t6 += c->sent_responses_6;
- /* XXX: Not in stats struct
- t7 += c->sent_responses_other;
- */
- }
-
- *o->value.integer = t1 + t2 + t3 + t4 + t5 + t6 + t7;
- o->val_len = sizeof(unsigned long);
- o->type = SER_COUNTER;
-
- return 0;
-}
-
-/***** Handlers for sipMethodStatsTable ******/
-/* Collects the specified stat and puts the result in total. s defines
- * the starting point in the stats array, normally global_stats */
-#define collect_this_stat(stat, total, s) \
- for(i=0; i<stats_segments; i++) \
- total += s++->stat;
-
-static int sipStatsMethod_handler(struct sip_snmp_obj *o, enum handler_op op)
-{
- register struct stats_s *c;
- register unsigned long total;
- register int i;
- const char *func = __FUNCTION__;
-
- if(!o) {
- LOG(L_ERR, "%s: Invalid sip SNMP object passed\n", func);
- return -1;
- }
-
- if(!global_stats || stats_segments == -1) {
- LOG(L_ERR, "%s: Can't collect stats, they have not been initialized\n",
- func);
- return -1;
- }
-
- if(op != SER_GET) {
- LOG(L_ERR, "%s: Invalid handler operation passed\n", func);
- return -1;
- }
-
- if(!o->value.integer) {
- o->value.integer = calloc(1, sizeof(unsigned long));
- if(!o->value.integer) {
- LOG(L_ERR, "%s: %s\n", func, strerror(errno));
- return -1;
- }
- }
-
- c = global_stats;
- total = 0;
- switch(o->col) {
- /* these definitions are taken from sipMethodStatsHandler */
- case COLUMN_SIPSTATSINVITEINS:
- collect_this_stat(received_requests_inv, total, c);
- break;
- case COLUMN_SIPSTATSINVITEOUTS:
- collect_this_stat(sent_requests_inv, total, c);
- break;
- case COLUMN_SIPSTATSACKINS:
- collect_this_stat(received_requests_ack, total, c);
- break;
- case COLUMN_SIPSTATSACKOUTS:
- collect_this_stat(sent_requests_ack, total, c);
- break;
- case COLUMN_SIPSTATSBYEINS:
- collect_this_stat(received_requests_bye, total, c);
- break;
- case COLUMN_SIPSTATSBYEOUTS:
- collect_this_stat(sent_requests_bye, total, c);
- break;
- case COLUMN_SIPSTATSCANCELINS:
- collect_this_stat(received_requests_cnc, total, c);
- break;
- case COLUMN_SIPSTATSCANCELOUTS:
- collect_this_stat(sent_requests_cnc, total, c);
- break;
- /* ser doesn't have notion for these. We don't
- * register them with snmp. Here just as remainder */
-#if 0
- case COLUMN_SIPSTATSOPTIONSINS:
- case COLUMN_SIPSTATSOPTIONSOUTS:
- case COLUMN_SIPSTATSREGISTERINS:
- case COLUMN_SIPSTATSREGISTEROUTS:
- case COLUMN_SIPSTATSINFOINS:
- case COLUMN_SIPSTATSINFOOUTS:
- break;
-#endif
- }
-
- *o->value.integer = total;
- o->val_len = sizeof(unsigned long);
- o->type = SER_COUNTER;
-
- return 0;
-}
-
-static int sipStatusCodes_handler(struct sip_snmp_obj *o, enum handler_op op)
-{
- register struct stats_s *c;
- register unsigned long total;
- register int i;
- const char *func = __FUNCTION__;
-
- if(!o) {
- LOG(L_ERR, "%s: Invalid sip SNMP object passed\n", func);
- return -1;
- }
-
- if(!global_stats || stats_segments == -1) {
- LOG(L_ERR, "%s: Can't collect stats, they have not been initialized\n",
- func);
- return -1;
- }
-
- if(op != SER_GET) {
- LOG(L_ERR, "%s: Invalid handler operation passed\n", func);
- return -1;
- }
-
- if(!o->value.integer) {
- o->value.integer = calloc(1, sizeof(unsigned long));
- if(!o->value.integer) {
- LOG(L_ERR, "%s: %s\n", func, strerror(errno));
- return -1;
- }
- }
-
- c = global_stats;
- total = 0;
- switch(o->col) {
- case COLUMN_SIPSTATSINFOCLASSINS:
- collect_this_stat(received_responses_1, total, c);
- break;
- case COLUMN_SIPSTATSINFOCLASSOUTS:
- collect_this_stat(sent_responses_1, total, c);
- break;
- case COLUMN_SIPSTATSSUCCESSCLASSINS:
- collect_this_stat(received_responses_2, total, c);
- break;
- case COLUMN_SIPSTATSSUCCESSCLASSOUTS:
- collect_this_stat(sent_responses_2, total, c);
- break;
- case COLUMN_SIPSTATSREDIRCLASSINS:
- collect_this_stat(received_responses_3, total, c);
- break;
- case COLUMN_SIPSTATSREDIRCLASSOUTS:
- collect_this_stat(sent_responses_3, total, c);
- break;
- case COLUMN_SIPSTATSREQFAILCLASSINS:
- collect_this_stat(received_responses_4, total, c);
- break;
- case COLUMN_SIPSTATSREQFAILCLASSOUTS:
- collect_this_stat(sent_responses_4, total, c);
- break;
- case COLUMN_SIPSTATSSERVERFAILCLASSINS:
- collect_this_stat(received_responses_5, total, c);
- break;
- case COLUMN_SIPSTATSSERVERFAILCLASSOUTS:
- collect_this_stat(sent_responses_5, total, c);
- break;
- case COLUMN_SIPSTATSGLOBALFAILCLASSINS:
- collect_this_stat(received_responses_6, total, c);
- break;
- case COLUMN_SIPSTATSGLOBALFAILCLASSOUTS:
- collect_this_stat(sent_responses_6, total, c);
- break;
- case COLUMN_SIPSTATSOTHERCLASSESINS:
- collect_this_stat(received_responses_other, total, c);
- break;
- case COLUMN_SIPSTATSOTHERCLASSESOUTS:
- /* FIXME: For some reason this is not defined in
- * struct stats_s... */
- /* collect_this_stat(sent_responses_other, total, c); */
- total = 0;
- break;
- }
-
- *o->value.integer = total;
- o->val_len = sizeof(unsigned long);
- o->type = SER_COUNTER;
-
- return 0;
-}
-
-#endif
Deleted: ser/trunk/stats.h
===================================================================
--- ser/trunk/stats.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/stats.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,174 +0,0 @@
-/*
- * $Id: stats.h,v 1.10 2004/08/24 08:45:10 janakj Exp $
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-#ifndef stats_h
-#define stats_h
-
-#include <ctype.h>
-#include <sys/mman.h>
-#include <sys/fcntl.h>
-#include <sys/time.h>
-#include <time.h>
-#include <sys/utsname.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-
-
-#define _update_request( method, dir ) \
- do{ if (stat_file!=NULL) switch( method ) { \
- case METHOD_INVITE: stats->dir##_requests_inv++; break; \
- case METHOD_ACK: stats->dir##_requests_ack++; break; \
- case METHOD_CANCEL: stats->dir##_requests_cnc++; break; \
- case METHOD_BYE: stats->dir##_requests_bye++; break; \
- case METHOD_OTHER: stats->dir##_requests_other++; break; \
- default: LOG(L_ERR, "ERROR: unknown method in rq stats (%s)\n", \
- #dir); \
- } \
- }while(0)
-
-
-/*
-#define update_received_request( method ) _update_request( method, received )
-#define update_sent_request( method ) _update_request( method, sent )
-
-#define update_received_response( statusclass ) \
- _update_response( statusclass, received )
-#define update_sent_response( statusclass ) \
- _update_response( statusclass, sent )
-#define update_received_drops { stats->received_drops++; }
-#define update_fail_on_send { stats->failed_on_send++; }
-*/
-
-#define _statusline(class, dir )\
- case class: stats->dir##_responses_##class++; break;
-
-/* FIXME: Don't have case for _other (see received_responses_other) */
-#define _update_response( statusclass, dir ) \
- do{ if (stat_file!=NULL) \
- switch( statusclass ) { \
- _statusline(1, dir) \
- _statusline(2, dir) \
- _statusline(3, dir) \
- _statusline(4, dir) \
- _statusline(5, dir) \
- _statusline(6, dir) \
- default: LOG(L_INFO, "ERROR: unusual status code"\
- " received in stats (%s)\n", #dir); \
- } \
- }while(0)
-
-#ifdef STATS
-# define STATS_RX_REQUEST(method) _update_request(method, received)
-# define STATS_TX_REQUEST(method) _update_request(method, sent )
-# define STATS_RX_RESPONSE(class) _update_response( class, received )
-# define STATS_TX_RESPONSE(class) _update_response( class, sent )
-# define STATS_RX_DROPS { stats->received_drops++; }
-# define STATS_TX_DROPS { stats->failed_on_send++; }
-#else
-# define STATS_RX_REQUEST(method)
-# define STATS_TX_REQUEST(method)
-# define STATS_RX_RESPONSE(class)
-# define STATS_TX_RESPONSE(class)
-# define STATS_RX_DROPS
-# define STATS_TX_DROPS
-#endif
-
-#ifdef STATS
-
-
-struct stats_s {
-
- unsigned int process_index;
- pid_t pid;
- time_t start_time;
-
- unsigned long
-
- /* received packets */
-
- received_requests_inv, /* received_requests */
- received_requests_ack,
- received_requests_cnc,
- received_requests_bye,
- received_requests_other,
-
- received_responses_1, /* received_responses */
- received_responses_2,
- received_responses_3,
- received_responses_4,
- received_responses_5,
- received_responses_6,
- received_responses_other,
-
- received_drops, /* all messages we received and did not process
- successfully; reasons include SIP sanity checks
- (missing Vias, neither request nor response,
- failed parsing), ser errors (malloc, action
- failure)
- */
-
- /* sent */
-
- /* sent_requests */
- sent_requests_inv,
- sent_requests_ack,
- sent_requests_cnc,
- sent_requests_bye,
- sent_requests_other,
-
- /* sent responses */
- sent_responses_1,
- sent_responses_2,
- sent_responses_3,
- sent_responses_4,
- sent_responses_5,
- sent_responses_6,
- /* FIXME: Don't want sent_responses_other?? */
-
- processed_requests,
- processed_responses,
- acc_req_time,
- acc_res_time,
-
- failed_on_send;
-};
-
-extern struct stats_s *stats;
-extern char *stat_file;
-
-int init_stats( int nr_of_processes );
-void setstats( int child_index );
-int dump_all_statistic();
-int dump_statistic(FILE *fp, struct stats_s *istats, int printheader);
-/* Registers handlers with SNMP module */
-int stats_register();
-
-#endif
-#endif
Deleted: ser/trunk/str.h
===================================================================
--- ser/trunk/str.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/str.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,43 +0,0 @@
-/*
- * $Id: str.h,v 1.4.2.1 2005/11/17 03:56:02 sobomax Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-#ifndef str_h
-#define str_h
-
-
-struct _str{
- char* s; /*string*/
- int len; /*string len*/
-};
-
-typedef struct _str str;
-
-#define STR_STATIC_INIT(v) {(v), sizeof(v) - 1}
-#define STR_NULL {NULL, 0}
-
-#endif
Deleted: ser/trunk/tags
===================================================================
--- ser/trunk/tags 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/tags 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,11497 +0,0 @@
-!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
-!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
-!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert at users.sourceforge.net/
-!_TAG_PROGRAM_NAME Exuberant Ctags //
-!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
-!_TAG_PROGRAM_VERSION 5.5.4 //
-AAAAcctMessageType modules/acc/diam_message.h /^} AAAAcctMessageType;$/;" t
-AAAAcctMessageType modules/auth_diameter/diameter_msg.h /^} AAAAcctMessageType;$/;" t
-AAAAddAVPToMessage modules/acc/diam_avp.c /^AAAReturnCode AAAAddAVPToMessage($/;" f
-AAAAddAVPToMessage modules/auth_diameter/avp.c /^AAAReturnCode AAAAddAVPToMessage($/;" f
-AAAApplicationId modules/acc/diam_message.h /^typedef unsigned int AAAApplicationId;$/;" t
-AAAApplicationId modules/auth_diameter/diameter_msg.h /^typedef unsigned int AAAApplicationId;$/;" t
-AAAApplicationRef modules/acc/diam_message.h /^typedef void* AAAApplicationRef;$/;" t
-AAAApplicationRef modules/auth_diameter/diameter_msg.h /^typedef void* AAAApplicationRef;$/;" t
-AAABuildMsgBuffer modules/acc/diam_message.c /^AAAReturnCode AAABuildMsgBuffer( AAAMessage *msg )$/;" f
-AAABuildMsgBuffer modules/auth_diameter/message.c /^AAAReturnCode AAABuildMsgBuffer( AAAMessage *msg )$/;" f
-AAACloneAVP modules/acc/diam_avp.c /^AAA_AVP* AAACloneAVP( AAA_AVP *avp , unsigned char clone_data)$/;" f
-AAACloneAVP modules/auth_diameter/avp.c /^AAA_AVP* AAACloneAVP( AAA_AVP *avp , unsigned char clone_data)$/;" f
-AAACommandCode modules/acc/diam_message.h /^typedef unsigned int AAACommandCode;$/;" t
-AAACommandCode modules/auth_diameter/diameter_msg.h /^typedef unsigned int AAACommandCode;$/;" t
-AAAConvertAVPToString modules/acc/diam_avp.c /^char* AAAConvertAVPToString(AAA_AVP *avp, char *dest, unsigned int destLen)$/;" f
-AAAConvertAVPToString modules/auth_diameter/avp.c /^char* AAAConvertAVPToString(AAA_AVP *avp, char *dest, unsigned int destLen)$/;" f
-AAACreateAVP modules/acc/diam_avp.c /^AAA_AVP* AAACreateAVP($/;" f
-AAACreateAVP modules/auth_diameter/avp.c /^AAA_AVP* AAACreateAVP($/;" f
-AAACreateAndAddAVPToMessage modules/acc/diam_message.h 336;" d
-AAACreateAndAddAVPToMessage modules/auth_diameter/diameter_msg.h 341;" d
-AAAExtensionId modules/acc/diam_message.h /^typedef unsigned int AAAExtensionId;$/;" t
-AAAExtensionId modules/auth_diameter/diameter_msg.h /^typedef unsigned int AAAExtensionId;$/;" t
-AAAFindMatchingAVP modules/acc/diam_avp.c /^AAA_AVP *AAAFindMatchingAVP($/;" f
-AAAFindMatchingAVP modules/auth_diameter/avp.c /^AAA_AVP *AAAFindMatchingAVP($/;" f
-AAAFreeAVP modules/acc/diam_avp.c /^AAAReturnCode AAAFreeAVP(AAA_AVP **avp)$/;" f
-AAAFreeAVP modules/auth_diameter/avp.c /^AAAReturnCode AAAFreeAVP(AAA_AVP **avp)$/;" f
-AAAFreeMessage modules/acc/diam_message.c /^AAAReturnCode AAAFreeMessage(AAAMessage **msg)$/;" f
-AAAFreeMessage modules/auth_diameter/message.c /^AAAReturnCode AAAFreeMessage(AAAMessage **msg)$/;" f
-AAAGetFirstAVP modules/acc/diam_avp.c /^AAA_AVP* AAAGetFirstAVP(AAA_AVP_LIST *avpList){$/;" f
-AAAGetFirstAVP modules/auth_diameter/avp.c /^AAA_AVP* AAAGetFirstAVP(AAA_AVP_LIST *avpList){$/;" f
-AAAGetLastAVP modules/acc/diam_avp.c /^AAA_AVP* AAAGetLastAVP(AAA_AVP_LIST *avpList)$/;" f
-AAAGetLastAVP modules/auth_diameter/avp.c /^AAA_AVP* AAAGetLastAVP(AAA_AVP_LIST *avpList)$/;" f
-AAAGetNextAVP modules/acc/diam_avp.c /^AAA_AVP* AAAGetNextAVP(AAA_AVP *avp)$/;" f
-AAAGetNextAVP modules/auth_diameter/avp.c /^AAA_AVP* AAAGetNextAVP(AAA_AVP *avp)$/;" f
-AAAGetPrevAVP modules/acc/diam_avp.c /^AAA_AVP* AAAGetPrevAVP(AAA_AVP *avp)$/;" f
-AAAGetPrevAVP modules/auth_diameter/avp.c /^AAA_AVP* AAAGetPrevAVP(AAA_AVP *avp)$/;" f
-AAAInMessage modules/acc/diam_message.c /^AAAMessage* AAAInMessage(AAACommandCode cmdCode, $/;" f
-AAAInMessage modules/auth_diameter/message.c /^AAAMessage* AAAInMessage(AAACommandCode commandCode, AAAApplicationId appId)$/;" f
-AAAMessage modules/acc/diam_message.h /^} AAAMessage;$/;" t
-AAAMessage modules/auth_diameter/diameter_msg.h /^} AAAMessage;$/;" t
-AAAMsgFlag modules/acc/diam_message.h /^typedef unsigned char AAAMsgFlag;$/;" t
-AAAMsgFlag modules/auth_diameter/diameter_msg.h /^typedef unsigned char AAAMsgFlag;$/;" t
-AAAMsgIdentifier modules/acc/diam_message.h /^typedef unsigned int AAAMsgIdentifier;$/;" t
-AAAMsgIdentifier modules/auth_diameter/diameter_msg.h /^typedef unsigned int AAAMsgIdentifier;$/;" t
-AAAPrintMessage modules/acc/diam_message.c /^void AAAPrintMessage( AAAMessage *msg)$/;" f
-AAAPrintMessage modules/auth_diameter/message.c /^void AAAPrintMessage( AAAMessage *msg)$/;" f
-AAARemoveAVPFromMessage modules/acc/diam_avp.c /^AAAReturnCode AAARemoveAVPFromMessage($/;" f
-AAARemoveAVPFromMessage modules/auth_diameter/avp.c /^AAAReturnCode AAARemoveAVPFromMessage($/;" f
-AAAResultCode modules/acc/diam_message.h /^} AAAResultCode;$/;" t
-AAAResultCode modules/auth_diameter/diameter_msg.h /^} AAAResultCode;$/;" t
-AAAReturnCode modules/acc/diam_message.h /^} AAAReturnCode;$/;" t
-AAAReturnCode modules/auth_diameter/diameter_msg.h /^} AAAReturnCode;$/;" t
-AAASearchType modules/acc/diam_message.h /^} AAASearchType;$/;" t
-AAASearchType modules/auth_diameter/diameter_msg.h /^} AAASearchType;$/;" t
-AAASessionId modules/acc/diam_message.h /^typedef str AAASessionId;$/;" t
-AAASessionId modules/auth_diameter/diameter_msg.h /^typedef str AAASessionId;$/;" t
-AAASetMessageResultCode modules/acc/diam_message.c /^AAAResultCode AAASetMessageResultCode($/;" f
-AAASetMessageResultCode modules/auth_diameter/message.c /^AAAReturnCode AAASetMessageResultCode($/;" f
-AAATranslateMessage modules/acc/diam_message.c /^AAAMessage* AAATranslateMessage( unsigned char* source, unsigned int sourceLen,$/;" f
-AAATranslateMessage modules/auth_diameter/message.c /^AAAMessage* AAATranslateMessage( unsigned char* source, unsigned int sourceLen,$/;" f
-AAAValue modules/acc/diam_message.h /^typedef unsigned int AAAValue;$/;" t
-AAAValue modules/auth_diameter/diameter_msg.h /^typedef unsigned int AAAValue;$/;" t
-AAAVendorId modules/acc/diam_message.h /^typedef unsigned int AAAVendorId;$/;" t
-AAAVendorId modules/auth_diameter/diameter_msg.h /^typedef unsigned int AAAVendorId;$/;" t
-AAA_ACCT_EVENT modules/acc/diam_message.h /^ AAA_ACCT_EVENT = 1,$/;" e
-AAA_ACCT_EVENT modules/auth_diameter/diameter_msg.h /^ AAA_ACCT_EVENT = 1,$/;" e
-AAA_ACCT_INTERIM modules/acc/diam_message.h /^ AAA_ACCT_INTERIM = 3,$/;" e
-AAA_ACCT_INTERIM modules/auth_diameter/diameter_msg.h /^ AAA_ACCT_INTERIM = 3,$/;" e
-AAA_ACCT_START modules/acc/diam_message.h /^ AAA_ACCT_START = 2,$/;" e
-AAA_ACCT_START modules/auth_diameter/diameter_msg.h /^ AAA_ACCT_START = 2,$/;" e
-AAA_ACCT_STOP modules/acc/diam_message.h /^ AAA_ACCT_STOP = 4$/;" e
-AAA_ACCT_STOP modules/auth_diameter/diameter_msg.h /^ AAA_ACCT_STOP = 4$/;" e
-AAA_APPLICATION_UNSUPPORTED modules/acc/diam_message.h /^ AAA_APPLICATION_UNSUPPORTED = 3007,$/;" e
-AAA_APPLICATION_UNSUPPORTED modules/auth_diameter/diameter_msg.h /^ AAA_APPLICATION_UNSUPPORTED = 3007,$/;" e
-AAA_APP_DIAMETER_BASE_ACC modules/acc/diam_message.h /^ AAA_APP_DIAMETER_BASE_ACC = 3,$/;" e
-AAA_APP_DIAMETER_BASE_ACC modules/auth_diameter/diameter_msg.h /^ AAA_APP_DIAMETER_BASE_ACC = 3,$/;" e
-AAA_APP_DIAMETER_COMMON_MSG modules/acc/diam_message.h /^ AAA_APP_DIAMETER_COMMON_MSG = 0,$/;" e
-AAA_APP_DIAMETER_COMMON_MSG modules/auth_diameter/diameter_msg.h /^ AAA_APP_DIAMETER_COMMON_MSG = 0,$/;" e
-AAA_APP_IDS modules/acc/diam_message.h /^}AAA_APP_IDS;$/;" t
-AAA_APP_IDS modules/auth_diameter/diameter_msg.h /^}AAA_APP_IDS;$/;" t
-AAA_APP_MOBILE_IP modules/acc/diam_message.h /^ AAA_APP_MOBILE_IP = 2,$/;" e
-AAA_APP_MOBILE_IP modules/auth_diameter/diameter_msg.h /^ AAA_APP_MOBILE_IP = 2,$/;" e
-AAA_APP_NASREQ modules/acc/diam_message.h /^ AAA_APP_NASREQ = 1,$/;" e
-AAA_APP_NASREQ modules/auth_diameter/diameter_msg.h /^ AAA_APP_NASREQ = 1,$/;" e
-AAA_APP_RELAY modules/acc/diam_message.h /^ AAA_APP_RELAY = 0xffffffff,$/;" e
-AAA_APP_RELAY modules/auth_diameter/diameter_msg.h /^ AAA_APP_RELAY = 0xffffffff,$/;" e
-AAA_AUTHENTICATION_REJECTED modules/acc/diam_message.h /^ AAA_AUTHENTICATION_REJECTED = 4001,$/;" e
-AAA_AUTHENTICATION_REJECTED modules/auth_diameter/diameter_msg.h /^ AAA_AUTHENTICATION_REJECTED = 4001,$/;" e
-AAA_AUTHORIZATION_REJECTED modules/acc/diam_message.h /^ AAA_AUTHORIZATION_REJECTED = 5003,$/;" e
-AAA_AUTHORIZATION_REJECTED modules/auth_diameter/diameter_msg.h /^ AAA_AUTHORIZATION_REJECTED = 5003,$/;" e
-AAA_AUTHORIZED modules/auth_diameter/defs.h 18;" d
-AAA_AVP modules/acc/diam_message.h /^} AAA_AVP;$/;" t
-AAA_AVP modules/auth_diameter/diameter_msg.h /^} AAA_AVP;$/;" t
-AAA_AVPCode modules/acc/diam_message.h /^typedef unsigned int AAA_AVPCode;$/;" t
-AAA_AVPCode modules/auth_diameter/diameter_msg.h /^typedef unsigned int AAA_AVPCode;$/;" t
-AAA_AVPCodeNr modules/acc/diam_message.h /^}AAA_AVPCodeNr;$/;" t
-AAA_AVPCodeNr modules/auth_diameter/diameter_msg.h /^}AAA_AVPCodeNr;$/;" t
-AAA_AVPDataType modules/acc/diam_message.h /^} AAA_AVPDataType;$/;" t
-AAA_AVPDataType modules/auth_diameter/diameter_msg.h /^} AAA_AVPDataType;$/;" t
-AAA_AVPFlag modules/acc/diam_message.h /^} AAA_AVPFlag;$/;" t
-AAA_AVPFlag modules/auth_diameter/diameter_msg.h /^} AAA_AVPFlag;$/;" t
-AAA_AVP_ADDRESS_TYPE modules/acc/diam_message.h /^ AAA_AVP_ADDRESS_TYPE,$/;" e
-AAA_AVP_ADDRESS_TYPE modules/auth_diameter/diameter_msg.h /^ AAA_AVP_ADDRESS_TYPE,$/;" e
-AAA_AVP_DATA_TYPE modules/acc/diam_message.h /^ AAA_AVP_DATA_TYPE,$/;" e
-AAA_AVP_DATA_TYPE modules/auth_diameter/diameter_msg.h /^ AAA_AVP_DATA_TYPE,$/;" e
-AAA_AVP_FLAG_END_TO_END_ENCRYPT modules/acc/diam_message.h /^ AAA_AVP_FLAG_END_TO_END_ENCRYPT = 0x20,$/;" e
-AAA_AVP_FLAG_END_TO_END_ENCRYPT modules/auth_diameter/diameter_msg.h /^ AAA_AVP_FLAG_END_TO_END_ENCRYPT = 0x20,$/;" e
-AAA_AVP_FLAG_MANDATORY modules/acc/diam_message.h /^ AAA_AVP_FLAG_MANDATORY = 0x40,$/;" e
-AAA_AVP_FLAG_MANDATORY modules/auth_diameter/diameter_msg.h /^ AAA_AVP_FLAG_MANDATORY = 0x40,$/;" e
-AAA_AVP_FLAG_NONE modules/acc/diam_message.h /^ AAA_AVP_FLAG_NONE = 0x00,$/;" e
-AAA_AVP_FLAG_NONE modules/auth_diameter/diameter_msg.h /^ AAA_AVP_FLAG_NONE = 0x00,$/;" e
-AAA_AVP_FLAG_RESERVED modules/acc/diam_message.h /^ AAA_AVP_FLAG_RESERVED = 0x1F,$/;" e
-AAA_AVP_FLAG_RESERVED modules/auth_diameter/diameter_msg.h /^ AAA_AVP_FLAG_RESERVED = 0x1F,$/;" e
-AAA_AVP_FLAG_VENDOR_SPECIFIC modules/acc/diam_message.h /^ AAA_AVP_FLAG_VENDOR_SPECIFIC = 0x80,$/;" e
-AAA_AVP_FLAG_VENDOR_SPECIFIC modules/auth_diameter/diameter_msg.h /^ AAA_AVP_FLAG_VENDOR_SPECIFIC = 0x80,$/;" e
-AAA_AVP_INTEGER32_TYPE modules/acc/diam_message.h /^ AAA_AVP_INTEGER32_TYPE,$/;" e
-AAA_AVP_INTEGER32_TYPE modules/auth_diameter/diameter_msg.h /^ AAA_AVP_INTEGER32_TYPE,$/;" e
-AAA_AVP_INTEGER64_TYPE modules/acc/diam_message.h /^ AAA_AVP_INTEGER64_TYPE,$/;" e
-AAA_AVP_INTEGER64_TYPE modules/auth_diameter/diameter_msg.h /^ AAA_AVP_INTEGER64_TYPE,$/;" e
-AAA_AVP_LIST modules/acc/diam_message.h /^} AAA_AVP_LIST;$/;" t
-AAA_AVP_LIST modules/auth_diameter/diameter_msg.h /^} AAA_AVP_LIST;$/;" t
-AAA_AVP_NOT_ALLOWED modules/acc/diam_message.h /^ AAA_AVP_NOT_ALLOWED = 5008,$/;" e
-AAA_AVP_NOT_ALLOWED modules/auth_diameter/diameter_msg.h /^ AAA_AVP_NOT_ALLOWED = 5008,$/;" e
-AAA_AVP_OCCURS_TOO_MANY_TIMES modules/acc/diam_message.h /^ AAA_AVP_OCCURS_TOO_MANY_TIMES = 5009,$/;" e
-AAA_AVP_OCCURS_TOO_MANY_TIMES modules/auth_diameter/diameter_msg.h /^ AAA_AVP_OCCURS_TOO_MANY_TIMES = 5009,$/;" e
-AAA_AVP_STRING_TYPE modules/acc/diam_message.h /^ AAA_AVP_STRING_TYPE,$/;" e
-AAA_AVP_STRING_TYPE modules/auth_diameter/diameter_msg.h /^ AAA_AVP_STRING_TYPE,$/;" e
-AAA_AVP_TIME_TYPE modules/acc/diam_message.h /^ AAA_AVP_TIME_TYPE,$/;" e
-AAA_AVP_TIME_TYPE modules/auth_diameter/diameter_msg.h /^ AAA_AVP_TIME_TYPE,$/;" e
-AAA_AVP_UNSUPPORTED modules/acc/diam_message.h /^ AAA_AVP_UNSUPPORTED = 5001,$/;" e
-AAA_AVP_UNSUPPORTED modules/auth_diameter/diameter_msg.h /^ AAA_AVP_UNSUPPORTED = 5001,$/;" e
-AAA_BACKWARD_SEARCH modules/acc/diam_message.h /^ AAA_BACKWARD_SEARCH$/;" e
-AAA_BACKWARD_SEARCH modules/auth_diameter/diameter_msg.h /^ AAA_BACKWARD_SEARCH$/;" e
-AAA_CHALENGE modules/auth_diameter/defs.h 17;" d
-AAA_COMMAND_UNSUPPORTED modules/acc/diam_message.h /^ AAA_COMMAND_UNSUPPORTED = 3001,$/;" e
-AAA_COMMAND_UNSUPPORTED modules/auth_diameter/diameter_msg.h /^ AAA_COMMAND_UNSUPPORTED = 3001,$/;" e
-AAA_CONN_CLOSED modules/acc/diam_tcp.h 37;" d
-AAA_CONN_CLOSED modules/auth_diameter/defs.h 23;" d
-AAA_CONTRADICTING_AVPS modules/acc/diam_message.h /^ AAA_CONTRADICTING_AVPS = 5007,$/;" e
-AAA_CONTRADICTING_AVPS modules/auth_diameter/diameter_msg.h /^ AAA_CONTRADICTING_AVPS = 5007,$/;" e
-AAA_DIAMETER modules/acc/diam_message.h /^ AAA_DIAMETER$/;" e enum:avp::<anonymous>
-AAA_DIAMETER modules/auth_diameter/diameter_msg.h /^ AAA_DIAMETER$/;" e enum:avp::<anonymous>
-AAA_ELECTION_LOST modules/acc/diam_message.h /^ AAA_ELECTION_LOST = 4003,$/;" e
-AAA_ELECTION_LOST modules/auth_diameter/diameter_msg.h /^ AAA_ELECTION_LOST = 4003,$/;" e
-AAA_ERROR modules/acc/diam_tcp.h 36;" d
-AAA_ERROR modules/auth_diameter/defs.h 22;" d
-AAA_ERR_ALREADY_INIT modules/acc/diam_message.h /^ AAA_ERR_ALREADY_INIT,$/;" e
-AAA_ERR_ALREADY_INIT modules/auth_diameter/diameter_msg.h /^ AAA_ERR_ALREADY_INIT,$/;" e
-AAA_ERR_ALREADY_REGISTERED modules/acc/diam_message.h /^ AAA_ERR_ALREADY_REGISTERED,$/;" e
-AAA_ERR_ALREADY_REGISTERED modules/auth_diameter/diameter_msg.h /^ AAA_ERR_ALREADY_REGISTERED,$/;" e
-AAA_ERR_CANNOT_REGISTER modules/acc/diam_message.h /^ AAA_ERR_CANNOT_REGISTER,$/;" e
-AAA_ERR_CANNOT_REGISTER modules/auth_diameter/diameter_msg.h /^ AAA_ERR_CANNOT_REGISTER,$/;" e
-AAA_ERR_CANNOT_SEND_MSG modules/acc/diam_message.h /^ AAA_ERR_CANNOT_SEND_MSG,$/;" e
-AAA_ERR_CANNOT_SEND_MSG modules/auth_diameter/diameter_msg.h /^ AAA_ERR_CANNOT_SEND_MSG,$/;" e
-AAA_ERR_CONFIG modules/acc/diam_message.h /^ AAA_ERR_CONFIG,$/;" e
-AAA_ERR_CONFIG modules/auth_diameter/diameter_msg.h /^ AAA_ERR_CONFIG,$/;" e
-AAA_ERR_FAILURE modules/acc/diam_message.h /^ AAA_ERR_FAILURE = -1, \/* unspecified failure during an AAA op. *\/$/;" e
-AAA_ERR_FAILURE modules/auth_diameter/diameter_msg.h /^ AAA_ERR_FAILURE = -1, \/* unspecified failure during an AAA op. *\/$/;" e
-AAA_ERR_MISSING_AVP modules/acc/diam_message.h /^ AAA_ERR_MISSING_AVP,$/;" e
-AAA_ERR_MISSING_AVP modules/auth_diameter/diameter_msg.h /^ AAA_ERR_MISSING_AVP,$/;" e
-AAA_ERR_NETWORK_ERROR modules/acc/diam_message.h /^ AAA_ERR_NETWORK_ERROR,$/;" e
-AAA_ERR_NETWORK_ERROR modules/auth_diameter/diameter_msg.h /^ AAA_ERR_NETWORK_ERROR,$/;" e
-AAA_ERR_NOMEM modules/acc/diam_message.h /^ AAA_ERR_NOMEM, \/* op. caused memory to be exhausted *\/$/;" e
-AAA_ERR_NOMEM modules/auth_diameter/diameter_msg.h /^ AAA_ERR_NOMEM, \/* op. caused memory to be exhausted *\/$/;" e
-AAA_ERR_NOT_FOUND modules/acc/diam_message.h /^ AAA_ERR_NOT_FOUND = -2, \/* handle or id not found *\/$/;" e
-AAA_ERR_NOT_FOUND modules/auth_diameter/diameter_msg.h /^ AAA_ERR_NOT_FOUND = -2, \/* handle or id not found *\/$/;" e
-AAA_ERR_NOT_INITIALIZED modules/acc/diam_message.h /^ AAA_ERR_NOT_INITIALIZED,$/;" e
-AAA_ERR_NOT_INITIALIZED modules/auth_diameter/diameter_msg.h /^ AAA_ERR_NOT_INITIALIZED,$/;" e
-AAA_ERR_PARAMETER modules/acc/diam_message.h /^ AAA_ERR_PARAMETER,$/;" e
-AAA_ERR_PARAMETER modules/auth_diameter/diameter_msg.h /^ AAA_ERR_PARAMETER,$/;" e
-AAA_ERR_PROTO modules/acc/diam_message.h /^ AAA_ERR_PROTO, \/* AAA protocol error *\/$/;" e
-AAA_ERR_PROTO modules/auth_diameter/diameter_msg.h /^ AAA_ERR_PROTO, \/* AAA protocol error *\/$/;" e
-AAA_ERR_SECURITY modules/acc/diam_message.h /^ AAA_ERR_SECURITY,$/;" e
-AAA_ERR_SECURITY modules/auth_diameter/diameter_msg.h /^ AAA_ERR_SECURITY,$/;" e
-AAA_ERR_SUCCESS modules/acc/diam_message.h /^ AAA_ERR_SUCCESS = 0, \/* AAA operation succeeded *\/$/;" e
-AAA_ERR_SUCCESS modules/auth_diameter/diameter_msg.h /^ AAA_ERR_SUCCESS = 0, \/* AAA operation succeeded *\/$/;" e
-AAA_ERR_TIMED_OUT modules/acc/diam_message.h /^ AAA_ERR_TIMED_OUT,$/;" e
-AAA_ERR_TIMED_OUT modules/auth_diameter/diameter_msg.h /^ AAA_ERR_TIMED_OUT,$/;" e
-AAA_ERR_UNKNOWN_CMD modules/acc/diam_message.h /^ AAA_ERR_UNKNOWN_CMD,$/;" e
-AAA_ERR_UNKNOWN_CMD modules/auth_diameter/diameter_msg.h /^ AAA_ERR_UNKNOWN_CMD,$/;" e
-AAA_FORWARD_SEARCH modules/acc/diam_message.h /^ AAA_FORWARD_SEARCH = 0,$/;" e
-AAA_FORWARD_SEARCH modules/auth_diameter/diameter_msg.h /^ AAA_FORWARD_SEARCH = 0,$/;" e
-AAA_INVALID_AVP_BITS modules/acc/diam_message.h /^ AAA_INVALID_AVP_BITS = 3009,$/;" e
-AAA_INVALID_AVP_BITS modules/auth_diameter/diameter_msg.h /^ AAA_INVALID_AVP_BITS = 3009,$/;" e
-AAA_INVALID_AVP_BIT_COMBO modules/acc/diam_message.h /^ AAA_INVALID_AVP_BIT_COMBO = 5016,$/;" e
-AAA_INVALID_AVP_BIT_COMBO modules/auth_diameter/diameter_msg.h /^ AAA_INVALID_AVP_BIT_COMBO = 5016,$/;" e
-AAA_INVALID_AVP_VALUE modules/acc/diam_message.h /^ AAA_INVALID_AVP_VALUE = 5004,$/;" e
-AAA_INVALID_AVP_VALUE modules/auth_diameter/diameter_msg.h /^ AAA_INVALID_AVP_VALUE = 5004,$/;" e
-AAA_INVALID_BIT_IN_HEADER modules/acc/diam_message.h /^ AAA_INVALID_BIT_IN_HEADER = 5013,$/;" e
-AAA_INVALID_BIT_IN_HEADER modules/auth_diameter/diameter_msg.h /^ AAA_INVALID_BIT_IN_HEADER = 5013,$/;" e
-AAA_INVALID_HDR_BITS modules/acc/diam_message.h /^ AAA_INVALID_HDR_BITS = 3008,$/;" e
-AAA_INVALID_HDR_BITS modules/auth_diameter/diameter_msg.h /^ AAA_INVALID_HDR_BITS = 3008,$/;" e
-AAA_INVALID_MESSGE_LENGTH modules/acc/diam_message.h /^ AAA_INVALID_MESSGE_LENGTH = 5015,$/;" e
-AAA_INVALID_MESSGE_LENGTH modules/auth_diameter/diameter_msg.h /^ AAA_INVALID_MESSGE_LENGTH = 5015,$/;" e
-AAA_INVALIS_AVP_LENGTH modules/acc/diam_message.h /^ AAA_INVALIS_AVP_LENGTH = 5014,$/;" e
-AAA_INVALIS_AVP_LENGTH modules/auth_diameter/diameter_msg.h /^ AAA_INVALIS_AVP_LENGTH = 5014,$/;" e
-AAA_LOOP_DETECTED modules/acc/diam_message.h /^ AAA_LOOP_DETECTED = 3005,$/;" e
-AAA_LOOP_DETECTED modules/auth_diameter/diameter_msg.h /^ AAA_LOOP_DETECTED = 3005,$/;" e
-AAA_MISSING_AVP modules/acc/diam_message.h /^ AAA_MISSING_AVP = 5005,$/;" e
-AAA_MISSING_AVP modules/auth_diameter/diameter_msg.h /^ AAA_MISSING_AVP = 5005,$/;" e
-AAA_MSG_HDR_SIZE modules/acc/diam_message.h 52;" d
-AAA_MSG_HDR_SIZE modules/auth_diameter/diameter_msg.h 52;" d
-AAA_MUTI_ROUND_AUTH modules/acc/diam_message.h /^ AAA_MUTI_ROUND_AUTH = 1001,$/;" e
-AAA_MUTI_ROUND_AUTH modules/auth_diameter/diameter_msg.h /^ AAA_MUTI_ROUND_AUTH = 1001,$/;" e
-AAA_NOT_AUTHORIZED modules/auth_diameter/defs.h 19;" d
-AAA_NO_COMMON_APPLICATION modules/acc/diam_message.h /^ AAA_NO_COMMON_APPLICATION = 5010,$/;" e
-AAA_NO_COMMON_APPLICATION modules/auth_diameter/diameter_msg.h /^ AAA_NO_COMMON_APPLICATION = 5010,$/;" e
-AAA_NO_COMMON_SECURITY modules/acc/diam_message.h /^ AAA_NO_COMMON_SECURITY = 5017,$/;" e
-AAA_NO_COMMON_SECURITY modules/auth_diameter/diameter_msg.h /^ AAA_NO_COMMON_SECURITY = 5017,$/;" e
-AAA_NO_CONNECTION modules/acc/diam_tcp.h 42;" d
-AAA_NO_CONNECTION modules/auth_diameter/defs.h 27;" d
-AAA_NO_VENDOR_ID modules/acc/diam_message.h 38;" d
-AAA_NO_VENDOR_ID modules/auth_diameter/diameter_msg.h 38;" d
-AAA_OUT_OF_SPACE modules/acc/diam_message.h /^ AAA_OUT_OF_SPACE = 4002,$/;" e
-AAA_OUT_OF_SPACE modules/auth_diameter/diameter_msg.h /^ AAA_OUT_OF_SPACE = 4002,$/;" e
-AAA_RADIUS modules/acc/diam_message.h /^ AAA_RADIUS,$/;" e enum:avp::<anonymous>
-AAA_RADIUS modules/auth_diameter/diameter_msg.h /^ AAA_RADIUS,$/;" e enum:avp::<anonymous>
-AAA_REALM_NOT_SERVED modules/acc/diam_message.h /^ AAA_REALM_NOT_SERVED = 3003,$/;" e
-AAA_REALM_NOT_SERVED modules/auth_diameter/diameter_msg.h /^ AAA_REALM_NOT_SERVED = 3003,$/;" e
-AAA_REDIRECT_INDICATION modules/acc/diam_message.h /^ AAA_REDIRECT_INDICATION = 3006,$/;" e
-AAA_REDIRECT_INDICATION modules/auth_diameter/diameter_msg.h /^ AAA_REDIRECT_INDICATION = 3006,$/;" e
-AAA_RESOURCES_EXCEEDED modules/acc/diam_message.h /^ AAA_RESOURCES_EXCEEDED = 5006,$/;" e
-AAA_RESOURCES_EXCEEDED modules/auth_diameter/diameter_msg.h /^ AAA_RESOURCES_EXCEEDED = 5006,$/;" e
-AAA_SRVERR modules/auth_diameter/defs.h 20;" d
-AAA_SUCCESS modules/acc/diam_message.h /^ AAA_SUCCESS = 2001,$/;" e
-AAA_SUCCESS modules/auth_diameter/diameter_msg.h /^ AAA_SUCCESS = 2001,$/;" e
-AAA_TIMEOUT modules/acc/diam_tcp.h 38;" d
-AAA_TIMEOUT modules/auth_diameter/defs.h 24;" d
-AAA_TOO_BUSY modules/acc/diam_message.h /^ AAA_TOO_BUSY = 3004,$/;" e
-AAA_TOO_BUSY modules/auth_diameter/diameter_msg.h /^ AAA_TOO_BUSY = 3004,$/;" e
-AAA_UNABLE_TO_COMPLY modules/acc/diam_message.h /^ AAA_UNABLE_TO_COMPLY = 5012,$/;" e
-AAA_UNABLE_TO_COMPLY modules/auth_diameter/diameter_msg.h /^ AAA_UNABLE_TO_COMPLY = 5012,$/;" e
-AAA_UNABLE_TO_DELIVER modules/acc/diam_message.h /^ AAA_UNABLE_TO_DELIVER = 3002,$/;" e
-AAA_UNABLE_TO_DELIVER modules/auth_diameter/diameter_msg.h /^ AAA_UNABLE_TO_DELIVER = 3002,$/;" e
-AAA_UNKNOWN_PEER modules/acc/diam_message.h /^ AAA_UNKNOWN_PEER = 3010,$/;" e
-AAA_UNKNOWN_PEER modules/auth_diameter/diameter_msg.h /^ AAA_UNKNOWN_PEER = 3010,$/;" e
-AAA_UNKNOWN_SESSION_ID modules/acc/diam_message.h /^ AAA_UNKNOWN_SESSION_ID = 5002,$/;" e
-AAA_UNKNOWN_SESSION_ID modules/auth_diameter/diameter_msg.h /^ AAA_UNKNOWN_SESSION_ID = 5002,$/;" e
-AAA_UNSUPPORTED_VERSION modules/acc/diam_message.h /^ AAA_UNSUPPORTED_VERSION = 5011,$/;" e
-AAA_UNSUPPORTED_VERSION modules/auth_diameter/diameter_msg.h /^ AAA_UNSUPPORTED_VERSION = 5011,$/;" e
-AAA_USER_IN_GROUP modules/auth_diameter/defs.h 25;" d
-AA_ANSWER modules/acc/acc.c 66;" d file:
-AA_ANSWER modules/auth_diameter/defs.h 7;" d
-AA_REQUEST modules/acc/acc.c 65;" d file:
-AA_REQUEST modules/auth_diameter/defs.h 6;" d
-ABSTIMEOID modules/postgres/pg_type.h 61;" d
-ACC modules/acc/acc.h 41;" d
-ACCEPT_CALL modules/cpl/jcpli.h 48;" d
-ACCOUNTING_ANSWER modules/acc/acc.c 69;" d file:
-ACCOUNTING_REQUEST modules/acc/acc.c 68;" d file:
-ACC_ACKED modules/acc/acc.h 50;" d
-ACC_ACKED_LEN modules/acc/acc.h 51;" d
-ACC_ANSWERED modules/acc/acc.h 48;" d
-ACC_ANSWERED_LEN modules/acc/acc.h 49;" d
-ACC_FAILURE modules/acc/diam_tcp.h 40;" d
-ACC_LEN modules/acc/acc.h 42;" d
-ACC_MISSED modules/acc/acc.h 46;" d
-ACC_MISSED_LEN modules/acc/acc.h 47;" d
-ACC_REQUEST modules/acc/acc.h 44;" d
-ACC_REQUEST_LEN modules/acc/acc.h 45;" d
-ACC_SUCCESS modules/acc/diam_tcp.h 39;" d
-ACC_TCP modules/acc/diam_tcp.h 30;" d
-ACK parser/parse_fline.h 47;" d
-ACK1 parser/parse_fline.c /^ ACK1, ACK2,$/;" e file:
-ACK2 parser/parse_fline.c /^ ACK1, ACK2,$/;" e file:
-ACK_CMD modules/extcmd/extcmd_funcs.c 64;" d file:
-ACK_FORKING_HACK modules/tm/config.h 90;" d
-ACK_LEN parser/parse_fline.h 52;" d
-ACLITEMOID modules/postgres/pg_type.h 70;" d
-ACPT_DEF modules/options/mod_options.h 48;" d
-ACPT_DEF_LEN modules/options/mod_options.h 49;" d
-ACPT_ENC_DEF modules/options/mod_options.h 50;" d
-ACPT_ENC_DEF_LEN modules/options/mod_options.h 51;" d
-ACPT_ENC_STR modules/options/mod_options.h 35;" d
-ACPT_ENC_STR_LEN modules/options/mod_options.h 36;" d
-ACPT_LAN_DEF modules/options/mod_options.h 52;" d
-ACPT_LAN_DEF_LEN modules/options/mod_options.h 53;" d
-ACPT_LAN_STR modules/options/mod_options.h 37;" d
-ACPT_LAN_STR_LEN modules/options/mod_options.h 38;" d
-ACPT_STR modules/options/mod_options.h 33;" d
-ACPT_STR_LEN modules/options/mod_options.h 34;" d
-ACT1 parser/obsolete/strs.h 170;" d
-ACT2 parser/obsolete/strs.h 179;" d
-ACTIONS_ST route_struct.h /^ EXPR_ST, ACTIONS_ST, CMDF_ST, MODFIXUP_ST, URIHOST_ST, URIPORT_ST,$/;" e
-ACTION_O route_struct.h /^ DSTIP_O, DSTPORT_O, PROTO_O, AF_O, MSGLEN_O, DEFAULT_O, ACTION_O,$/;" e
-ACTION_PARAM modules/cpl-c/cpl.c 679;" d file:
-ACTION_PARAM_LEN modules/cpl-c/cpl.c 680;" d file:
-ACT_ENT_CASE parser/case_cont.h 105;" d
-AC_MSG_CODE modules/acc/diam_message.h 64;" d
-AC_MSG_CODE modules/acc/diam_message.h 74;" d
-AC_MSG_CODE modules/auth_diameter/diameter_msg.h 64;" d
-AC_MSG_CODE modules/auth_diameter/diameter_msg.h 74;" d
-ACt1 parser/obsolete/strs.h 169;" d
-ACt2 parser/obsolete/strs.h 178;" d
-ADDRESS_END modules/pa/xpidf.c 78;" d file:
-ADDRESS_END_L modules/pa/xpidf.c 79;" d file:
-ADDRESS_ETAG modules/pa/xpidf.c 54;" d file:
-ADDRESS_ETAG_L modules/pa/xpidf.c 55;" d file:
-ADDRESS_NODE modules/cpl-c/CPL_tree.h 39;" d
-ADDRESS_START modules/pa/xpidf.c 75;" d file:
-ADDRESS_START_L modules/pa/xpidf.c 76;" d file:
-ADDRESS_SWITCH_NODE modules/cpl-c/CPL_tree.h 38;" d
-ADDRESS_TYPE_VAL modules/cpl-c/CPL_tree.h 75;" d
-ADD_ADIRECTION modules/nathelper/nathelper.c 737;" d file:
-ADD_ANORTPPROXY modules/nathelper/nathelper.c 739;" d file:
-ADIRECTION modules/nathelper/nathelper.c 741;" d file:
-ADIRECTION_LEN modules/nathelper/nathelper.c 742;" d file:
-ADVERTISED_ADDRESS cfg.tab.c /^ ADVERTISED_ADDRESS = 364,$/;" e enum:yytokentype file:
-ADVERTISED_ADDRESS cfg.tab.c 306;" d file:
-ADVERTISED_ADDRESS cfg.tab.h /^ ADVERTISED_ADDRESS = 364,$/;" e enum:yytokentype
-ADVERTISED_ADDRESS cfg.tab.h 282;" d
-ADVERTISED_PORT cfg.tab.c /^ ADVERTISED_PORT = 365,$/;" e enum:yytokentype file:
-ADVERTISED_PORT cfg.tab.c 307;" d file:
-ADVERTISED_PORT cfg.tab.h /^ ADVERTISED_PORT = 365,$/;" e enum:yytokentype
-ADVERTISED_PORT cfg.tab.h 283;" d
-AF cfg.tab.c /^ AF = 304,$/;" e enum:yytokentype file:
-AF cfg.tab.c 246;" d file:
-AF cfg.tab.h /^ AF = 304,$/;" e enum:yytokentype
-AF cfg.tab.h 222;" d
-AF2PF ip_addr.h 161;" d
-AF2PF ip_addr.h 163;" d
-AF_LOCAL modules/mediaproxy/mediaproxy.c 73;" d file:
-AF_LOCAL modules/nathelper/nathelper.c 161;" d file:
-AF_LOCAL modules/tm/t_fifo.c 67;" d file:
-AF_LOCAL unixsock_server.c 59;" d file:
-AF_LOCAL utils/serunix/serunix.c 40;" d file:
-AF_O route_struct.h /^ DSTIP_O, DSTPORT_O, PROTO_O, AF_O, MSGLEN_O, DEFAULT_O, ACTION_O,$/;" e
-ALG_MD5 parser/digest/digest_parser.h /^ ALG_MD5 = 1, \/* MD5 - default value*\/$/;" e enum:alg
-ALG_MD5SESS parser/digest/digest_parser.h /^ ALG_MD5SESS = 2, \/* MD5-Session *\/$/;" e enum:alg
-ALG_MD5SESS_STR parser/digest/digest_parser.c 55;" d file:
-ALG_MD5SESS_STR_LEN parser/digest/digest_parser.c 56;" d file:
-ALG_MD5_STR parser/digest/digest_parser.c 52;" d file:
-ALG_MD5_STR_LEN parser/digest/digest_parser.c 53;" d file:
-ALG_OTHER parser/digest/digest_parser.h /^ ALG_OTHER = 4 \/* Unknown *\/$/;" e enum:alg
-ALG_UNSPEC parser/digest/digest_parser.h /^ ALG_UNSPEC = 0, \/* Algorithm parameter not specified *\/$/;" e enum:alg
-ALIAS cfg.tab.c /^ ALIAS = 315,$/;" e enum:yytokentype file:
-ALIAS cfg.tab.c 257;" d file:
-ALIAS cfg.tab.h /^ ALIAS = 315,$/;" e enum:yytokentype
-ALIAS cfg.tab.h 233;" d
-ALIAS1 parser/parse_via.c /^ ALIAS1, ALIAS2, ALIAS3, ALIAS4,$/;" e file:
-ALIAS2 parser/parse_via.c /^ ALIAS1, ALIAS2, ALIAS3, ALIAS4,$/;" e file:
-ALIAS3 parser/parse_via.c /^ ALIAS1, ALIAS2, ALIAS3, ALIAS4,$/;" e file:
-ALIAS4 parser/parse_via.c /^ ALIAS1, ALIAS2, ALIAS3, ALIAS4,$/;" e file:
-ALLDEP Makefile /^ALLDEP=Makefile Makefile.sources Makefile.defs Makefile.rules$/;" m
-ALL_LOG_FMT modules/acc/defs.h 43;" d
-ALL_LOG_FMT_LEN modules/acc/defs.h 44;" d
-ANCILLARY_NODE modules/cpl-c/CPL_tree.h 36;" d
-AND cfg.tab.c /^ AND = 379,$/;" e enum:yytokentype file:
-AND cfg.tab.c 321;" d file:
-AND cfg.tab.h /^ AND = 379,$/;" e enum:yytokentype
-AND cfg.tab.h 297;" d
-AND_OP route_struct.h /^enum { AND_OP=1, OR_OP, NOT_OP };$/;" e
-ANORTPPROXY modules/nathelper/nathelper.c 753;" d file:
-ANORTPPROXY_LEN modules/nathelper/nathelper.c 754;" d file:
-ANS_SIZE resolve.h 53;" d
-ANYARRAYOID modules/postgres/pg_type.h 91;" d
-ANYOID modules/postgres/pg_type.h 90;" d
-AOLDMEDIP modules/nathelper/nathelper.c 744;" d file:
-AOLDMEDIP6 modules/nathelper/nathelper.c 747;" d file:
-AOLDMEDIP6_LEN modules/nathelper/nathelper.c 748;" d file:
-AOLDMEDIP_LEN modules/nathelper/nathelper.c 745;" d file:
-AOLDMEDPRT modules/nathelper/nathelper.c 750;" d file:
-AOLDMEDPRT_LEN modules/nathelper/nathelper.c 751;" d file:
-API_H modules/auth/api.h 31;" d
-APPEND_BRANCH cfg.tab.c /^ APPEND_BRANCH = 276,$/;" e enum:yytokentype file:
-APPEND_BRANCH cfg.tab.c 218;" d file:
-APPEND_BRANCH cfg.tab.h /^ APPEND_BRANCH = 276,$/;" e enum:yytokentype
-APPEND_BRANCH cfg.tab.h 194;" d
-APPEND_BRANCH_T route_struct.h /^ APPEND_BRANCH_T,$/;" e
-APPEND_BUFFER_MAX modules/tm/t_fifo.c 99;" d file:
-APPLICATION_ID_SIZE modules/acc/diam_message.h 44;" d
-APPLICATION_ID_SIZE modules/auth_diameter/diameter_msg.h 44;" d
-ARDS parser/obsolete/strs.h 222;" d
-ARDS_CASE parser/case_max.h 35;" d
-ARDs parser/obsolete/strs.h 221;" d
-ARG_CMD unixsock_server.c 96;" d file:
-ARTY_CASE parser/case_remo.h 47;" d
-ARdS parser/obsolete/strs.h 220;" d
-ARds parser/obsolete/strs.h 219;" d
-ASSERT mem/vq_malloc.c 90;" d file:
-ASSERT mem/vq_malloc.c 93;" d file:
-AS_MSG_CODE modules/acc/diam_message.h 63;" d
-AS_MSG_CODE modules/acc/diam_message.h 73;" d
-AS_MSG_CODE modules/auth_diameter/diameter_msg.h 63;" d
-AS_MSG_CODE modules/auth_diameter/diameter_msg.h 73;" d
-ATOM_ETAG modules/pa/xpidf.c 57;" d file:
-ATOM_ETAG_L modules/pa/xpidf.c 58;" d file:
-ATOM_STAG modules/pa/xpidf.c 72;" d file:
-ATOM_STAG_L modules/pa/xpidf.c 73;" d file:
-ATR modules/acc/acc.c 74;" d file:
-ATTR_PTR modules/cpl-c/CPL_tree.h 213;" d
-AUG_ALLOC_H modules/postgres/aug_alloc.h 60;" d
-AUG_BAD_FD_SET modules/postgres/aug_sysdep.h 287;" d
-AUG_BAD_FD_SET modules/postgres/aug_sysdep.h 91;" d
-AUG_CONFIGURATION modules/postgres/aug_sysdep.h 132;" d
-AUG_CONFIGURATION modules/postgres/aug_sysdep.h 153;" d
-AUG_CONFIGURATION modules/postgres/aug_sysdep.h 155;" d
-AUG_CONFIGURATION modules/postgres/aug_sysdep.h 164;" d
-AUG_CONFIGURATION modules/postgres/aug_sysdep.h 166;" d
-AUG_CONFIGURATION modules/postgres/aug_sysdep.h 177;" d
-AUG_CONFIGURATION modules/postgres/aug_sysdep.h 179;" d
-AUG_CONFIGURATION modules/postgres/aug_sysdep.h 213;" d
-AUG_CONFIGURATION modules/postgres/aug_sysdep.h 222;" d
-AUG_CONFIGURATION modules/postgres/aug_sysdep.h 262;" d
-AUG_CONFIGURATION modules/postgres/aug_sysdep.h 271;" d
-AUG_CONFIGURATION modules/postgres/aug_sysdep.h 294;" d
-AUG_CONFIGURATION modules/postgres/aug_sysdep.h 316;" d
-AUG_CONFIGURATION modules/postgres/aug_sysdep.h 342;" d
-AUG_CONFIGURATION modules/postgres/aug_sysdep.h 79;" d
-AUG_DEBUG_H modules/postgres/aug_debug.h 60;" d
-AUG_HAS_LP modules/postgres/aug_sysdep.h 131;" d
-AUG_HAS_LP modules/postgres/aug_sysdep.h 146;" d
-AUG_HAS_LP modules/postgres/aug_sysdep.h 288;" d
-AUG_HAS_LP modules/postgres/aug_sysdep.h 309;" d
-AUG_HAS_LP modules/postgres/aug_sysdep.h 339;" d
-AUG_HAS_LP modules/postgres/aug_sysdep.h 93;" d
-AUG_HAS_LPR modules/postgres/aug_sysdep.h 196;" d
-AUG_HAS_LPR modules/postgres/aug_sysdep.h 237;" d
-AUG_HAS_LPR modules/postgres/aug_sysdep.h 96;" d
-AUG_HAS_LP_REQUEST modules/postgres/aug_sysdep.h 289;" d
-AUG_HAS_LP_REQUEST modules/postgres/aug_sysdep.h 310;" d
-AUG_HAS_LP_REQUEST modules/postgres/aug_sysdep.h 94;" d
-AUG_HAS_PREAD modules/postgres/aug_sysdep.h 147;" d
-AUG_HAS_PREAD modules/postgres/aug_sysdep.h 240;" d
-AUG_HAS_PREAD modules/postgres/aug_sysdep.h 98;" d
-AUG_HAS_PSAX modules/postgres/aug_sysdep.h 108;" d
-AUG_HAS_PSAX modules/postgres/aug_sysdep.h 198;" d
-AUG_HAS_PSAX modules/postgres/aug_sysdep.h 239;" d
-AUG_HAS_RAND48 modules/postgres/aug_sysdep.h 101;" d
-AUG_HAS_RAND48 modules/postgres/aug_sysdep.h 133;" d
-AUG_HAS_RAND48 modules/postgres/aug_sysdep.h 148;" d
-AUG_HAS_RAND48 modules/postgres/aug_sysdep.h 290;" d
-AUG_HAS_RAND48 modules/postgres/aug_sysdep.h 312;" d
-AUG_HAS_RAND48 modules/postgres/aug_sysdep.h 340;" d
-AUG_HAS_RANDOM modules/postgres/aug_sysdep.h 102;" d
-AUG_HAS_RANDOM modules/postgres/aug_sysdep.h 197;" d
-AUG_HAS_RANDOM modules/postgres/aug_sysdep.h 238;" d
-AUG_HAS_SELECT_H modules/postgres/aug_sysdep.h 311;" d
-AUG_HAS_SELECT_H modules/postgres/aug_sysdep.h 89;" d
-AUG_HAS_SINCOS modules/postgres/aug_sysdep.h 104;" d
-AUG_HAS_SINCOS modules/postgres/aug_sysdep.h 291;" d
-AUG_NO_CRYPT_H modules/postgres/aug_sysdep.h 111;" d
-AUG_NO_CRYPT_H modules/postgres/aug_sysdep.h 202;" d
-AUG_NO_CRYPT_H modules/postgres/aug_sysdep.h 241;" d
-AUG_NO_CRYPT_H modules/postgres/aug_sysdep.h 313;" d
-AUG_NO_CRYPT_H modules/postgres/aug_sysdep.h 341;" d
-AUG_NO_DB modules/postgres/aug_sysdep.h 118;" d
-AUG_NO_DB modules/postgres/aug_sysdep.h 243;" d
-AUG_NO_GETPAGESIZE modules/postgres/aug_sysdep.h 120;" d
-AUG_NO_IOVEC modules/postgres/aug_sysdep.h 105;" d
-AUG_NO_PTHREADS modules/postgres/aug_sysdep.h 121;" d
-AUG_NO_PTHREADS modules/postgres/aug_sysdep.h 207;" d
-AUG_NO_PUTENV modules/postgres/aug_sysdep.h 97;" d
-AUG_NO_TERMIOS modules/postgres/aug_sysdep.h 114;" d
-AUG_NO_TERMIO_H modules/postgres/aug_sysdep.h 116;" d
-AUG_NO_TERMIO_H modules/postgres/aug_sysdep.h 242;" d
-AUG_NO_TIMES modules/postgres/aug_sysdep.h 106;" d
-AUG_NO_TZARG modules/postgres/aug_sysdep.h 109;" d
-AUG_STD_H modules/postgres/aug_std.h 60;" d
-AUG_SYSDEP_H modules/postgres/aug_sysdep.h 60;" d
-AUTHDB_MOD_H modules/auth_db/authdb_mod.h 32;" d
-AUTHDIAM_MOD_H modules/auth_diameter/auth_diameter.h 35;" d
-AUTHORIZED modules/auth/api.h /^ AUTHORIZED \/* Authorized by default, no digest authorization necessary *\/$/;" e enum:auth_result
-AUTHORIZED modules/auth_diameter/defs.h /^ AUTHORIZED \/* Authorized by default *\/$/;" e enum:auth_result
-AUTHORIZE_H modules/auth_db/authorize.h 32;" d
-AUTHORIZE_H modules/auth_radius/authorize.h 35;" d
-AUTHRAD_MOD_H modules/auth_radius/authrad_mod.h 36;" d
-AUTH_ATIO_CASE parser/case_auth.h 34;" d
-AUTH_BODY_SIZE modules/tm/sip_msg.c 275;" d file:
-AUTH_MOD_H modules/auth/auth_mod.h 35;" d
-AUTH_ORIZ_CASE parser/case_auth.h 48;" d
-AVPDataStatus modules/acc/diam_message.h /^} AVPDataStatus;$/;" t
-AVPDataStatus modules/auth_diameter/diameter_msg.h /^} AVPDataStatus;$/;" t
-AVPOPS_DB_NAME_INT modules/avpops/avpops_impl.h 50;" d
-AVPOPS_DB_VAL_INT modules/avpops/avpops_impl.h 51;" d
-AVPOPS_FLAG_ALL modules/avpops/avpops_impl.h 75;" d
-AVPOPS_FLAG_CI modules/avpops/avpops_impl.h 76;" d
-AVPOPS_FLAG_DOMAIN modules/avpops/avpops_impl.h 78;" d
-AVPOPS_FLAG_USER modules/avpops/avpops_impl.h 77;" d
-AVPOPS_OP_EQ modules/avpops/avpops_impl.h 69;" d
-AVPOPS_OP_GT modules/avpops/avpops_impl.h 71;" d
-AVPOPS_OP_LT modules/avpops/avpops_impl.h 70;" d
-AVPOPS_OP_RE modules/avpops/avpops_impl.h 72;" d
-AVPOPS_USE_DOMAIN modules/avpops/avpops_impl.h 63;" d
-AVPOPS_USE_FROM modules/avpops/avpops_impl.h 59;" d
-AVPOPS_USE_HDRREQ modules/avpops/avpops_impl.h 64;" d
-AVPOPS_USE_HDRRPL modules/avpops/avpops_impl.h 65;" d
-AVPOPS_USE_RURI modules/avpops/avpops_impl.h 61;" d
-AVPOPS_USE_SRC_IP modules/avpops/avpops_impl.h 66;" d
-AVPOPS_USE_TO modules/avpops/avpops_impl.h 60;" d
-AVPOPS_USE_USERNAME modules/avpops/avpops_impl.h 62;" d
-AVPOPS_VAL_AVP modules/avpops/avpops_impl.h 57;" d
-AVPOPS_VAL_INT modules/avpops/avpops_impl.h 55;" d
-AVPOPS_VAL_NONE modules/avpops/avpops_impl.h 54;" d
-AVPOPS_VAL_STR modules/avpops/avpops_impl.h 56;" d
-AVPS_COL_INT modules/auth_db/authdb_mod.c 96;" d file:
-AVPS_COL_INT_LEN modules/auth_db/authdb_mod.c 97;" d file:
-AVPS_COL_STR modules/auth_db/authdb_mod.c 99;" d file:
-AVPS_COL_STR_LEN modules/auth_db/authdb_mod.c 100;" d file:
-AVP_Accounting_Record_Type modules/acc/diam_message.h /^ AVP_Accounting_Record_Type = 279,$/;" e
-AVP_Auth_Application_Id modules/acc/diam_message.h /^ AVP_Auth_Application_Id = 258,$/;" e
-AVP_Auth_Application_Id modules/auth_diameter/diameter_msg.h /^ AVP_Auth_Application_Id = 258,$/;" e
-AVP_Auth_Grace_Period modules/acc/diam_message.h /^ AVP_Auth_Grace_Period = 276,$/;" e
-AVP_Auth_Grace_Period modules/auth_diameter/diameter_msg.h /^ AVP_Auth_Grace_Period = 276,$/;" e
-AVP_Auth_Request_Type modules/acc/diam_message.h /^ AVP_Auth_Request_Type = 274,$/;" e
-AVP_Auth_Request_Type modules/auth_diameter/diameter_msg.h /^ AVP_Auth_Request_Type = 274,$/;" e
-AVP_Auth_Session_State modules/acc/diam_message.h /^ AVP_Auth_Session_State = 277,$/;" e
-AVP_Auth_Session_State modules/auth_diameter/diameter_msg.h /^ AVP_Auth_Session_State = 277,$/;" e
-AVP_Authorization_Lifetime modules/acc/diam_message.h /^ AVP_Authorization_Lifetime = 291,$/;" e
-AVP_Authorization_Lifetime modules/auth_diameter/diameter_msg.h /^ AVP_Authorization_Lifetime = 291,$/;" e
-AVP_CODE_SIZE modules/acc/diam_message.h 47;" d
-AVP_CODE_SIZE modules/auth_diameter/diameter_msg.h 47;" d
-AVP_Challenge modules/acc/diam_message.h /^ AVP_Challenge = 402,$/;" e
-AVP_Challenge modules/auth_diameter/diameter_msg.h /^ AVP_Challenge = 402,$/;" e
-AVP_Class modules/acc/diam_message.h /^ AVP_Class = 25,$/;" e
-AVP_Class modules/auth_diameter/diameter_msg.h /^ AVP_Class = 25,$/;" e
-AVP_DONT_FREE_DATA modules/acc/diam_message.h /^ AVP_DONT_FREE_DATA,$/;" e
-AVP_DONT_FREE_DATA modules/auth_diameter/diameter_msg.h /^ AVP_DONT_FREE_DATA,$/;" e
-AVP_DUPLICATE_DATA modules/acc/diam_message.h /^ AVP_DUPLICATE_DATA,$/;" e
-AVP_DUPLICATE_DATA modules/auth_diameter/diameter_msg.h /^ AVP_DUPLICATE_DATA,$/;" e
-AVP_Destination_Host modules/acc/diam_message.h /^ AVP_Destination_Host = 293,$/;" e
-AVP_Destination_Host modules/auth_diameter/diameter_msg.h /^ AVP_Destination_Host = 293,$/;" e
-AVP_Destination_Realm modules/acc/diam_message.h /^ AVP_Destination_Realm = 283,$/;" e
-AVP_Destination_Realm modules/auth_diameter/diameter_msg.h /^ AVP_Destination_Realm = 283,$/;" e
-AVP_Disconnect_Cause modules/acc/diam_message.h /^ AVP_Disconnect_Cause = 273,$/;" e
-AVP_Disconnect_Cause modules/auth_diameter/diameter_msg.h /^ AVP_Disconnect_Cause = 273,$/;" e
-AVP_Error_Message modules/acc/diam_message.h /^ AVP_Error_Message = 281,$/;" e
-AVP_Error_Message modules/auth_diameter/diameter_msg.h /^ AVP_Error_Message = 281,$/;" e
-AVP_FLAGS_SIZE modules/acc/diam_message.h 48;" d
-AVP_FLAGS_SIZE modules/auth_diameter/diameter_msg.h 48;" d
-AVP_FREE_DATA modules/acc/diam_message.h /^ AVP_FREE_DATA,$/;" e
-AVP_FREE_DATA modules/auth_diameter/diameter_msg.h /^ AVP_FREE_DATA,$/;" e
-AVP_HDR_SIZE modules/acc/diam_message.h 56;" d
-AVP_HDR_SIZE modules/auth_diameter/diameter_msg.h 56;" d
-AVP_Host_IP_Address modules/acc/diam_message.h /^ AVP_Host_IP_Address = 257,$/;" e
-AVP_Host_IP_Address modules/auth_diameter/diameter_msg.h /^ AVP_Host_IP_Address = 257,$/;" e
-AVP_IS_IN_DB modules/avpops/avpops_impl.h 47;" d
-AVP_LENGTH_SIZE modules/acc/diam_message.h 49;" d
-AVP_LENGTH_SIZE modules/auth_diameter/diameter_msg.h 49;" d
-AVP_Method modules/acc/diam_message.h /^ AVP_Method = 403,$/;" e
-AVP_Method modules/auth_diameter/diameter_msg.h /^ AVP_Method = 403,$/;" e
-AVP_NAME_STR usr_avp.h 53;" d
-AVP_Origin_Host modules/acc/diam_message.h /^ AVP_Origin_Host = 264,$/;" e
-AVP_Origin_Host modules/auth_diameter/diameter_msg.h /^ AVP_Origin_Host = 264,$/;" e
-AVP_Origin_Realm modules/acc/diam_message.h /^ AVP_Origin_Realm = 296,$/;" e
-AVP_Origin_Realm modules/auth_diameter/diameter_msg.h /^ AVP_Origin_Realm = 296,$/;" e
-AVP_Origin_State_Id modules/acc/diam_message.h /^ AVP_Origin_State_Id = 278,$/;" e
-AVP_Origin_State_Id modules/auth_diameter/diameter_msg.h /^ AVP_Origin_State_Id = 278,$/;" e
-AVP_Product_Name modules/acc/diam_message.h /^ AVP_Product_Name = 269,$/;" e
-AVP_Product_Name modules/auth_diameter/diameter_msg.h /^ AVP_Product_Name = 269,$/;" e
-AVP_Proxy_Host modules/acc/diam_message.h /^ AVP_Proxy_Host = 280,$/;" e
-AVP_Proxy_Host modules/auth_diameter/diameter_msg.h /^ AVP_Proxy_Host = 280,$/;" e
-AVP_Proxy_Info modules/acc/diam_message.h /^ AVP_Proxy_Info = 284,$/;" e
-AVP_Proxy_Info modules/auth_diameter/diameter_msg.h /^ AVP_Proxy_Info = 284,$/;" e
-AVP_Proxy_State modules/acc/diam_message.h /^ AVP_Proxy_State = 33,$/;" e
-AVP_Proxy_State modules/auth_diameter/diameter_msg.h /^ AVP_Proxy_State = 33,$/;" e
-AVP_Re_Auth_Request_Type modules/acc/diam_message.h /^ AVP_Re_Auth_Request_Type = 285,$/;" e
-AVP_Re_Auth_Request_Type modules/auth_diameter/diameter_msg.h /^ AVP_Re_Auth_Request_Type = 285,$/;" e
-AVP_Record_Route modules/acc/diam_message.h /^ AVP_Record_Route = 282,$/;" e
-AVP_Record_Route modules/auth_diameter/diameter_msg.h /^ AVP_Record_Route = 282,$/;" e
-AVP_Redirect_Host modules/acc/diam_message.h /^ AVP_Redirect_Host = 292,$/;" e
-AVP_Redirect_Host modules/auth_diameter/diameter_msg.h /^ AVP_Redirect_Host = 292,$/;" e
-AVP_Redirect_Max_Cache_Time modules/acc/diam_message.h /^ AVP_Redirect_Max_Cache_Time = 262,$/;" e
-AVP_Redirect_Max_Cache_Time modules/auth_diameter/diameter_msg.h /^ AVP_Redirect_Max_Cache_Time = 262,$/;" e
-AVP_Resource modules/acc/diam_message.h /^ AVP_Resource = 400,$/;" e
-AVP_Resource modules/auth_diameter/diameter_msg.h /^ AVP_Resource = 400,$/;" e
-AVP_Response modules/acc/diam_message.h /^ AVP_Response = 401, $/;" e
-AVP_Response modules/auth_diameter/diameter_msg.h /^ AVP_Response = 401, $/;" e
-AVP_Result_Code modules/acc/diam_message.h /^ AVP_Result_Code = 268,$/;" e
-AVP_Result_Code modules/auth_diameter/diameter_msg.h /^ AVP_Result_Code = 268,$/;" e
-AVP_SIP_CALLID modules/acc/diam_dict.h /^ AVP_SIP_CALLID = 550, \/* string *\/$/;" e
-AVP_SIP_CODE modules/acc/diam_dict.h /^ AVP_SIP_CODE = 564, \/* string *\/$/;" e
-AVP_SIP_CREDENTIALS modules/acc/diam_dict.h /^ AVP_SIP_CREDENTIALS = 565, \/* string *\/$/;" e
-AVP_SIP_CSEQ modules/acc/diam_dict.h /^ AVP_SIP_CSEQ = 557, \/* string *\/$/;" e
-AVP_SIP_FROM modules/acc/diam_dict.h /^ AVP_SIP_FROM = 560, \/* string *\/$/;" e
-AVP_SIP_FROM_TAG modules/acc/diam_dict.h /^ AVP_SIP_FROM_TAG = 555, \/* string *\/$/;" e
-AVP_SIP_FROM_URI modules/acc/diam_dict.h /^ AVP_SIP_FROM_URI = 551, \/* string *\/$/;" e
-AVP_SIP_FROM_USER modules/acc/diam_dict.h /^ AVP_SIP_FROM_USER = 562, \/* string *\/$/;" e
-AVP_SIP_IURI modules/acc/diam_dict.h /^ AVP_SIP_IURI = 558, \/* string *\/$/;" e
-AVP_SIP_METHOD modules/acc/diam_dict.h /^ AVP_SIP_METHOD = 553, \/* string *\/$/;" e
-AVP_SIP_MSGID modules/acc/diam_message.h /^ AVP_SIP_MSGID = 406 $/;" e
-AVP_SIP_MSGID modules/auth_diameter/diameter_msg.h /^ AVP_SIP_MSGID = 406 $/;" e
-AVP_SIP_OURI modules/acc/diam_dict.h /^ AVP_SIP_OURI = 559, \/* string *\/$/;" e
-AVP_SIP_STATUS modules/acc/diam_dict.h /^ AVP_SIP_STATUS = 554, \/* string *\/$/;" e
-AVP_SIP_TO modules/acc/diam_dict.h /^ AVP_SIP_TO = 561, \/* string *\/$/;" e
-AVP_SIP_TO_TAG modules/acc/diam_dict.h /^ AVP_SIP_TO_TAG = 556, \/* string *\/$/;" e
-AVP_SIP_TO_URI modules/acc/diam_dict.h /^ AVP_SIP_TO_URI = 552, \/* string *\/$/;" e
-AVP_SIP_TO_USER modules/acc/diam_dict.h /^ AVP_SIP_TO_USER = 563, \/* string *\/$/;" e
-AVP_SIP_UP_URI modules/acc/diam_dict.h /^ AVP_SIP_UP_URI = 566 \/* string *\/$/;" e
-AVP_Service_Type modules/acc/diam_message.h /^ AVP_Service_Type = 404,$/;" e
-AVP_Service_Type modules/auth_diameter/diameter_msg.h /^ AVP_Service_Type = 404,$/;" e
-AVP_Session_Binding modules/acc/diam_message.h /^ AVP_Session_Binding = 270,$/;" e
-AVP_Session_Binding modules/auth_diameter/diameter_msg.h /^ AVP_Session_Binding = 270,$/;" e
-AVP_Session_Id modules/acc/diam_message.h /^ AVP_Session_Id = 263,$/;" e
-AVP_Session_Id modules/auth_diameter/diameter_msg.h /^ AVP_Session_Id = 263,$/;" e
-AVP_Session_Timeout modules/acc/diam_message.h /^ AVP_Session_Timeout = 27,$/;" e
-AVP_Session_Timeout modules/auth_diameter/diameter_msg.h /^ AVP_Session_Timeout = 27,$/;" e
-AVP_Supported_Vendor_Id modules/acc/diam_message.h /^ AVP_Supported_Vendor_Id = 265,$/;" e
-AVP_Supported_Vendor_Id modules/auth_diameter/diameter_msg.h /^ AVP_Supported_Vendor_Id = 265,$/;" e
-AVP_TO_URI_T route_struct.h /^ AVP_TO_URI_T,$/;" e
-AVP_Termination_Cause modules/acc/diam_message.h /^ AVP_Termination_Cause = 295,$/;" e
-AVP_Termination_Cause modules/auth_diameter/diameter_msg.h /^ AVP_Termination_Cause = 295,$/;" e
-AVP_User_Group modules/acc/diam_message.h /^ AVP_User_Group = 405,$/;" e
-AVP_User_Group modules/auth_diameter/diameter_msg.h /^ AVP_User_Group = 405,$/;" e
-AVP_User_Name modules/acc/diam_message.h /^ AVP_User_Name = 1,$/;" e
-AVP_User_Name modules/auth_diameter/diameter_msg.h /^ AVP_User_Name = 1,$/;" e
-AVP_VAL_STR usr_avp.h 54;" d
-AVP_VENDOR_ID_SIZE modules/acc/diam_message.h 50;" d
-AVP_VENDOR_ID_SIZE modules/auth_diameter/diameter_msg.h 50;" d
-AVP_Vendor_Id modules/acc/diam_message.h /^ AVP_Vendor_Id = 266,$/;" e
-AVP_Vendor_Id modules/auth_diameter/diameter_msg.h /^ AVP_Vendor_Id = 266,$/;" e
-AVP_Vendor_Specific_Application_Id modules/acc/diam_message.h /^ AVP_Vendor_Specific_Application_Id= 260,$/;" e
-AVP_Vendor_Specific_Application_Id modules/auth_diameter/diameter_msg.h /^ AVP_Vendor_Specific_Application_Id= 260,$/;" e
-A_ACCT_SESSION_ID modules/acc/dict.h 52;" d
-A_ACCT_STATUS_TYPE modules/acc/dict.h 51;" d
-A_CALLED_STATION_ID modules/acc/dict.h 49;" d
-A_CALLID modules/acc/acc.h 54;" d
-A_CALLID_LEN modules/acc/acc.h 55;" d
-A_CALLING_STATION_ID modules/acc/dict.h 50;" d
-A_CISCO_AVPAIR modules/acc/dict.h 74;" d
-A_CODE modules/acc/acc.h 88;" d
-A_CODE_LEN modules/acc/acc.h 89;" d
-A_CSEQ modules/acc/acc.h 56;" d
-A_CSEQ_LEN modules/acc/acc.h 57;" d
-A_DIGEST_ALGORITHM modules/acc/dict.h 68;" d
-A_DIGEST_ATTRIBUTES modules/acc/dict.h 60;" d
-A_DIGEST_BODY_DIGEST modules/acc/dict.h 69;" d
-A_DIGEST_CNONCE modules/acc/dict.h 70;" d
-A_DIGEST_METHOD modules/acc/dict.h 65;" d
-A_DIGEST_NONCE modules/acc/dict.h 64;" d
-A_DIGEST_NONCE_COUNT modules/acc/dict.h 71;" d
-A_DIGEST_QOP modules/acc/dict.h 67;" d
-A_DIGEST_REALM modules/acc/dict.h 63;" d
-A_DIGEST_RESPONSE modules/acc/dict.h 59;" d
-A_DIGEST_URI modules/acc/dict.h 66;" d
-A_DIGEST_USER_NAME modules/acc/dict.h 72;" d
-A_EOL modules/acc/acc.h 99;" d
-A_EOL_LEN modules/acc/acc.h 100;" d
-A_EQ modules/acc/acc.h 97;" d
-A_EQ_LEN modules/acc/acc.h 98;" d
-A_FROM modules/acc/acc.h 60;" d
-A_FROMDOMAIN modules/acc/acc.h 64;" d
-A_FROMDOMAIN_LEN modules/acc/acc.h 65;" d
-A_FROMTAG modules/acc/acc.h 72;" d
-A_FROMTAG_LEN modules/acc/acc.h 73;" d
-A_FROMURI modules/acc/acc.h 74;" d
-A_FROMURI_LEN modules/acc/acc.h 75;" d
-A_FROMUSER modules/acc/acc.h 62;" d
-A_FROMUSER_LEN modules/acc/acc.h 63;" d
-A_FROM_LEN modules/acc/acc.h 61;" d
-A_IURI modules/acc/acc.h 66;" d
-A_IURI_LEN modules/acc/acc.h 67;" d
-A_MAX modules/acc/dict.h 76;" d
-A_METHOD modules/acc/acc.h 68;" d
-A_METHOD_LEN modules/acc/acc.h 69;" d
-A_OURI modules/acc/acc.h 70;" d
-A_OURI_LEN modules/acc/acc.h 71;" d
-A_REALM modules/acc/acc.h 90;" d
-A_REALM_LEN modules/acc/acc.h 91;" d
-A_RURI_DOMAIN modules/acc/acc.h 92;" d
-A_RURI_DOMAIN_LEN modules/acc/acc.h 93;" d
-A_SEPARATOR modules/acc/acc.h 95;" d
-A_SEPARATOR_LEN modules/acc/acc.h 96;" d
-A_SERVICE_TYPE modules/acc/dict.h 48;" d
-A_SIP_AVP modules/acc/dict.h 75;" d
-A_SIP_CSEQ modules/acc/dict.h 55;" d
-A_SIP_FROM_TAG modules/acc/dict.h 57;" d
-A_SIP_GROUP modules/acc/dict.h 73;" d
-A_SIP_METHOD modules/acc/dict.h 53;" d
-A_SIP_RESPONSE_CODE modules/acc/dict.h 54;" d
-A_SIP_RPID modules/acc/dict.h 62;" d
-A_SIP_TO_TAG modules/acc/dict.h 56;" d
-A_SIP_TRANSLATED_REQUEST_URI modules/acc/dict.h 58;" d
-A_SIP_URI_USER modules/acc/dict.h 61;" d
-A_STATUS modules/acc/acc.h 76;" d
-A_STATUS_LEN modules/acc/acc.h 77;" d
-A_TO modules/acc/acc.h 78;" d
-A_TOTAG modules/acc/acc.h 58;" d
-A_TOTAG_LEN modules/acc/acc.h 59;" d
-A_TOURI modules/acc/acc.h 80;" d
-A_TOURI_LEN modules/acc/acc.h 81;" d
-A_TOUSER modules/acc/acc.h 82;" d
-A_TOUSER_LEN modules/acc/acc.h 83;" d
-A_TO_LEN modules/acc/acc.h 79;" d
-A_UID modules/acc/acc.h 84;" d
-A_UID_LEN modules/acc/acc.h 85;" d
-A_UP_IURI modules/acc/acc.h 86;" d
-A_UP_IURI_LEN modules/acc/acc.h 87;" d
-A_USER_NAME modules/acc/dict.h 47;" d
-AcT1 parser/obsolete/strs.h 168;" d
-AcT2 parser/obsolete/strs.h 177;" d
-Act1 parser/obsolete/strs.h 167;" d
-Act2 parser/obsolete/strs.h 176;" d
-Ai modules/jabber/sha.c 70;" d file:
-ArDS parser/obsolete/strs.h 218;" d
-ArDs parser/obsolete/strs.h 217;" d
-ArdS parser/obsolete/strs.h 216;" d
-Ards parser/obsolete/strs.h 215;" d
-AsymmetricClients modules/mediaproxy/mediaproxy.c /^} AsymmetricClients;$/;" t file:
-BAD_CPL modules/cpl-c/cpl_parser.c 1509;" d file:
-BAD_CPL_LEN modules/cpl-c/cpl_parser.c 1510;" d file:
-BAD_XML modules/cpl-c/cpl_parser.c 1507;" d file:
-BAD_XML_LEN modules/cpl-c/cpl_parser.c 1508;" d file:
-BASIC_ATTR_SIZE modules/cpl-c/CPL_tree.h 216;" d
-BASIC_CLOSED modules/pa/pidf.c 103;" d file:
-BASIC_CLOSED_L modules/pa/pidf.c 104;" d file:
-BASIC_OPEN modules/pa/pidf.c 100;" d file:
-BASIC_OPEN_L modules/pa/pidf.c 101;" d file:
-BEGIN lex.yy.c 115;" d file:
-BIG_BUCKET mem/vq_malloc.c 86;" d file:
-BITMAP_TYPE db/db_fifo.c 83;" d file:
-BITMAP_TYPE_LEN db/db_fifo.c 84;" d file:
-BITOID modules/postgres/pg_type.h 79;" d
-BLOB_TYPE db/db_fifo.c 81;" d file:
-BLOB_TYPE_LEN db/db_fifo.c 82;" d file:
-BLOCK_STEP config.h 133;" d
-BODY parser/obsolete/parse_hname.c /^ BODY=220,$/;" e file:
-BODY test/auto.c /^ BODY=220,$/;" e file:
-BODY_ATTR modules/cpl-c/CPL_tree.h 194;" d
-BODY_EMAILHDR_LEN modules/cpl-c/CPL_tree.h 196;" d
-BODY_EMAILHDR_STR modules/cpl-c/CPL_tree.h 195;" d
-BOOLOID modules/postgres/pg_type.h 38;" d
-BOXOID modules/postgres/pg_type.h 56;" d
-BPCHAROID modules/postgres/pg_type.h 71;" d
-BRANCH1 parser/parse_via.c /^ BRANCH1, BRANCH2, BRANCH3, BRANCH4, BRANCH5,$/;" e file:
-BRANCH1 test/via_parse.c /^ BRANCH1, BRANCH2, BRANCH3, BRANCH4, BRANCH5,$/;" e file:
-BRANCH2 parser/parse_via.c /^ BRANCH1, BRANCH2, BRANCH3, BRANCH4, BRANCH5,$/;" e file:
-BRANCH2 test/via_parse.c /^ BRANCH1, BRANCH2, BRANCH3, BRANCH4, BRANCH5,$/;" e file:
-BRANCH3 parser/parse_via.c /^ BRANCH1, BRANCH2, BRANCH3, BRANCH4, BRANCH5,$/;" e file:
-BRANCH3 test/via_parse.c /^ BRANCH1, BRANCH2, BRANCH3, BRANCH4, BRANCH5,$/;" e file:
-BRANCH4 parser/parse_via.c /^ BRANCH1, BRANCH2, BRANCH3, BRANCH4, BRANCH5,$/;" e file:
-BRANCH4 test/via_parse.c /^ BRANCH1, BRANCH2, BRANCH3, BRANCH4, BRANCH5,$/;" e file:
-BRANCH5 parser/parse_via.c /^ BRANCH1, BRANCH2, BRANCH3, BRANCH4, BRANCH5,$/;" e file:
-BRANCH5 test/via_parse.c /^ BRANCH1, BRANCH2, BRANCH3, BRANCH4, BRANCH5,$/;" e file:
-BRANCH_SEPARATOR msg_translator.h 43;" d
-BUFFER_INCREMENT udp_server.h 37;" d
-BUFFER_SIZE modules/extcmd/extcmd_funcs.c 66;" d file:
-BUFSIZE test/shoot2.c 33;" d file:
-BUF_LEN modules/pa/notify.c 149;" d file:
-BUF_SIZE config.h 141;" d
-BUF_SIZE test/re_test.c 62;" d file:
-BUF_SIZE test/test.c 45;" d file:
-BUF_SIZE test/udp_flood.c 60;" d file:
-BUF_SIZE test/udp_flood_disc.c 62;" d file:
-BUF_SIZE test/udp_test_proxy.c 58;" d file:
-BUF_SIZE utils/serunix/serunix.c 54;" d file:
-BUILD_DEPENDS freebsd/Makefile /^BUILD_DEPENDS= ${LOCALBASE}\/include\/expat.h:${PORTSDIR}\/textproc\/expat* \\$/;" m
-BUILD_DEPENDS openbsd/Makefile /^BUILD_DEPENDS= :expat-1.*:textproc\/expat \\$/;" m
-BUILD_UH_ADDSIP modules/cpl-c/cpl.c 470;" d file:
-BUILD_UH_SHM modules/cpl-c/cpl.c 469;" d file:
-BUSY_BUFFER modules/tm/t_cancel.h 51;" d
-BUSY_NODE modules/cpl-c/CPL_tree.h 40;" d
-BUSY_STR modules/cpl-c/CPL_tree.h 171;" d
-BUSY_STR_LEN modules/cpl-c/CPL_tree.h 172;" d
-BUSY_VAL modules/cpl-c/CPL_tree.h 170;" d
-BYDAY_ATTR modules/cpl-c/CPL_tree.h 112;" d
-BYE1 parser/parse_fline.c /^ BYE1, BYE2,$/;" e file:
-BYE2 parser/parse_fline.c /^ BYE1, BYE2,$/;" e file:
-BYE_CMD modules/extcmd/extcmd_funcs.c 60;" d file:
-BYE_LEN parser/parse_fline.h 53;" d
-BYHOUR_ATTR modules/cpl-c/CPL_tree.h 111;" d
-BYMINUTE_ATTR modules/cpl-c/CPL_tree.h 110;" d
-BYMONTHDAY_ATTR modules/cpl-c/CPL_tree.h 113;" d
-BYMONTH_ATTR modules/cpl-c/CPL_tree.h 116;" d
-BYSECOND_ATTR modules/cpl-c/CPL_tree.h 109;" d
-BYSETPOS_ATTR modules/cpl-c/CPL_tree.h 118;" d
-BYTEAOID modules/postgres/pg_type.h 39;" d
-BYWEEKNO_ATTR modules/cpl-c/CPL_tree.h 115;" d
-BYYEARDAY_ATTR modules/cpl-c/CPL_tree.h 114;" d
-Bi modules/jabber/sha.c 71;" d file:
-Bool modules/mediaproxy/mediaproxy.c /^typedef int Bool;$/;" t file:
-CALC_H utils/gen_ha1/calc.h 30;" d
-CALL parser/obsolete/strs.h 134;" d
-CALLEE_PREFIX modules/avp_db/avp_db.c 48;" d file:
-CALLEE_PREFIX modules/avp_radius/avp_radius.c 51;" d file:
-CALLEE_PREFIX_LEN modules/avp_db/avp_db.c 49;" d file:
-CALLEE_PREFIX_LEN modules/avp_radius/avp_radius.c 52;" d file:
-CALLER_PREFIX modules/avp_db/avp_db.c 45;" d file:
-CALLER_PREFIX modules/avp_radius/avp_radius.c 48;" d file:
-CALLER_PREFIX_LEN modules/avp_db/avp_db.c 46;" d file:
-CALLER_PREFIX_LEN modules/avp_radius/avp_radius.c 49;" d file:
-CALLID modules/tm/t_msgbuilder.h 46;" d
-CALLID2 parser/obsolete/parse_hname.c /^ CALLID2, CALLID3, CALLID4, CALLID5, CALLID6,$/;" e file:
-CALLID2 test/auto.c /^ CALLID2, CALLID3, CALLID4, CALLID5, CALLID6,$/;" e file:
-CALLID3 parser/obsolete/parse_hname.c /^ CALLID2, CALLID3, CALLID4, CALLID5, CALLID6,$/;" e file:
-CALLID3 test/auto.c /^ CALLID2, CALLID3, CALLID4, CALLID5, CALLID6,$/;" e file:
-CALLID4 parser/obsolete/parse_hname.c /^ CALLID2, CALLID3, CALLID4, CALLID5, CALLID6,$/;" e file:
-CALLID4 test/auto.c /^ CALLID2, CALLID3, CALLID4, CALLID5, CALLID6,$/;" e file:
-CALLID5 parser/obsolete/parse_hname.c /^ CALLID2, CALLID3, CALLID4, CALLID5, CALLID6,$/;" e file:
-CALLID5 test/auto.c /^ CALLID2, CALLID3, CALLID4, CALLID5, CALLID6,$/;" e file:
-CALLID6 parser/obsolete/parse_hname.c /^ CALLID2, CALLID3, CALLID4, CALLID5, CALLID6,$/;" e file:
-CALLID6 test/auto.c /^ CALLID2, CALLID3, CALLID4, CALLID5, CALLID6,$/;" e file:
-CALLID_COL modules/usrloc/ul_mod.c 65;" d file:
-CALLID_H modules/tm/callid.h 35;" d
-CALLID_LEN modules/tm/t_msgbuilder.h 47;" d
-CALLID_NR_LEN modules/tm/callid.c 42;" d file:
-CALLID_SUFFIX_LEN modules/tm/callid.c 48;" d file:
-CALl parser/obsolete/strs.h 133;" d
-CANCEL parser/parse_fline.h 46;" d
-CANCEL1 parser/parse_fline.c /^ CANCEL1, CANCEL2, CANCEL3, CANCEL4, CANCEL5,$/;" e file:
-CANCEL2 parser/parse_fline.c /^ CANCEL1, CANCEL2, CANCEL3, CANCEL4, CANCEL5,$/;" e file:
-CANCEL3 parser/parse_fline.c /^ CANCEL1, CANCEL2, CANCEL3, CANCEL4, CANCEL5,$/;" e file:
-CANCEL4 parser/parse_fline.c /^ CANCEL1, CANCEL2, CANCEL3, CANCEL4, CANCEL5,$/;" e file:
-CANCEL5 parser/parse_fline.c /^ CANCEL1, CANCEL2, CANCEL3, CANCEL4, CANCEL5,$/;" e file:
-CANCELED modules/tm/config.h 81;" d
-CANCELING modules/tm/config.h 79;" d
-CANCEL_DONE modules/tm/config.h 80;" d
-CANCEL_LEN parser/parse_fline.h 51;" d
-CASE_ACCE_H parser/case_acce.h 31;" d
-CASE_ALLO_H parser/case_allo.h 31;" d
-CASE_AUTH_H parser/case_auth.h 31;" d
-CASE_CALL_H parser/case_call.h 37;" d
-CASE_CONT_H parser/case_cont.h 38;" d
-CASE_CSEQ_H parser/case_cseq.h 32;" d
-CASE_DIVE_H parser/case_dive.h 32;" d
-CASE_EVEN_H parser/case_even.h 32;" d
-CASE_EXPI_H parser/case_expi.h 37;" d
-CASE_FROM_H parser/case_from.h 32;" d
-CASE_MAX_H parser/case_max.h 32;" d
-CASE_ORGA_H parser/case_orga.h 32;" d
-CASE_PRIO_H parser/case_prio.h 32;" d
-CASE_PROX_H parser/case_prox.h 37;" d
-CASE_RECO_H parser/case_reco.h 32;" d
-CASE_REMO_H parser/case_remo.h 31;" d
-CASE_REQU_H parser/case_requ.h 37;" d
-CASE_ROUT_H parser/case_rout.h 32;" d
-CASE_SIP_H parser/case_sip.h 2;" d
-CASE_SUBJ_H parser/case_subj.h 32;" d
-CASE_SUPP_H parser/case_supp.h 32;" d
-CASE_TO_H parser/case_to.h 37;" d
-CASE_UNSU_H parser/case_unsu.h 37;" d
-CASE_USER_H parser/case_user.h 31;" d
-CASE_VIA_H parser/case_via.h 36;" d
-CASE_WWW_H parser/case_www.h 32;" d
-CASHOID modules/postgres/pg_type.h 66;" d
-CATEGORIES freebsd/Makefile /^CATEGORIES= net$/;" m
-CATEGORIES netbsd/Makefile /^CATEGORIES= net$/;" m
-CATEGORIES openbsd/Makefile /^CATEGORIES= net$/;" m
-CATE_CASE parser/case_www.h 35;" d
-CAlL parser/obsolete/strs.h 132;" d
-CAll parser/obsolete/strs.h 131;" d
-CC test/locking/Makefile /^CC=gcc$/;" m
-CDS_HDR modules/sms/libsms_modem.c 33;" d file:
-CDS_HDR_LEN modules/sms/libsms_modem.c 34;" d file:
-CDS_REPORT modules/sms/sms_funcs.h 63;" d
-CE_MSG_CODE modules/acc/diam_message.h 65;" d
-CE_MSG_CODE modules/acc/diam_message.h 75;" d
-CE_MSG_CODE modules/auth_diameter/diameter_msg.h 65;" d
-CE_MSG_CODE modules/auth_diameter/diameter_msg.h 75;" d
-CFG_DIR modules/dbtext/dbt_base.c 48;" d file:
-CFG_FILE config.h 46;" d
-CFLAGS test/locking/Makefile /^CFLAGS= -O2 -Wall$/;" m
-CHALLENGE_H modules/auth/challenge.h 32;" d
-CHAROID modules/postgres/pg_type.h 40;" d
-CHARSET_H modules/sms/libsms_charset.h 16;" d
-CHASH modules/pdt/domains.h 30;" d
-CHECKS_H modules/uri/checks.h 37;" d
-CHECKS_H modules/uri_db/checks.h 36;" d
-CHECKS_H modules/uri_radius/checks.h 31;" d
-CHECK_INTERVAL modules/mediaproxy/mediaproxy.c 1172;" d file:
-CHECK_VIA cfg.tab.c /^ CHECK_VIA = 321,$/;" e enum:yytokentype file:
-CHECK_VIA cfg.tab.c 263;" d file:
-CHECK_VIA cfg.tab.h /^ CHECK_VIA = 321,$/;" e enum:yytokentype
-CHECK_VIA cfg.tab.h 239;" d
-CHILDREN cfg.tab.c /^ CHILDREN = 320,$/;" e enum:yytokentype file:
-CHILDREN cfg.tab.c 262;" d file:
-CHILDREN cfg.tab.h /^ CHILDREN = 320,$/;" e enum:yytokentype
-CHILDREN cfg.tab.h 238;" d
-CHILD_NO config.h 57;" d
-CHROOT cfg.tab.c /^ CHROOT = 341,$/;" e enum:yytokentype file:
-CHROOT cfg.tab.c 283;" d file:
-CHROOT cfg.tab.h /^ CHROOT = 341,$/;" e enum:yytokentype
-CHROOT cfg.tab.h 259;" d
-CIDOID modules/postgres/pg_type.h 51;" d
-CIDROID modules/postgres/pg_type.h 69;" d
-CID_SEP modules/tm/callid.c 56;" d file:
-CIRCLEOID modules/postgres/pg_type.h 65;" d
-CLASS_ANY parser/parse_param.h /^ CLASS_ANY = 0, \/* Any parameters, well-known hooks will be not used *\/$/;" e enum:pclass
-CLASS_CONTACT parser/parse_param.h /^ CLASS_CONTACT, \/* Contact parameters *\/$/;" e enum:pclass
-CLASS_URI parser/parse_param.h /^ CLASS_URI \/* URI parameters *\/$/;" e enum:pclass
-CLEANUP_EOL config.h 168;" d
-CLEAR_ATTR modules/cpl-c/CPL_tree.h 142;" d
-CLONE_LUMP_LIST modules/tm/sip_msg.c 729;" d file:
-CMDF_ST route_struct.h /^ EXPR_ST, ACTIONS_ST, CMDF_ST, MODFIXUP_ST, URIHOST_ST, URIPORT_ST,$/;" e
-CMD_BUFFER_MAX modules/tm/t_fifo.c 100;" d file:
-CMD_SEPARATOR fifo_server.h 35;" d
-COLON cfg.tab.c /^ COLON = 398,$/;" e enum:yytokentype file:
-COLON cfg.tab.c 340;" d file:
-COLON cfg.tab.h /^ COLON = 398,$/;" e enum:yytokentype
-COLON cfg.tab.h 316;" d
-COMMA cfg.tab.c /^ COMMA = 387,$/;" e enum:yytokentype file:
-COMMA cfg.tab.c 329;" d file:
-COMMA cfg.tab.h /^ COMMA = 387,$/;" e enum:yytokentype
-COMMA cfg.tab.h 305;" d
-COMMAND_CODE_SIZE modules/acc/diam_message.h 43;" d
-COMMAND_CODE_SIZE modules/auth_diameter/diameter_msg.h 43;" d
-COMMENT freebsd/Makefile /^COMMENT= Sip Express Router, very fast and configurable SIP proxy$/;" m
-COMMENT lex.yy.c 1239;" d file:
-COMMENT netbsd/Makefile /^COMMENT= "SIP Express Router"$/;" m
-COMMENT openbsd/Makefile /^COMMENT= "SIP Express Router"$/;" m
-COMMENTFILE freebsd/Makefile /^COMMENTFILE= $/;" m
-COMMENT_ATTR modules/cpl-c/CPL_tree.h 186;" d
-COMMENT_LN lex.yy.c 1240;" d file:
-COMMENT_LN_S lex.yy.c 1199;" d file:
-COMMENT_S lex.yy.c 1198;" d file:
-COMMON_H modules/auth/common.h 31;" d
-COMMON_H modules/mangler/common.h 35;" d
-COMMON_H modules/pa/common.h 31;" d
-COMMON_H modules/registrar/common.h 32;" d
-COND_FALSE lump_struct.h /^enum lump_conditions { COND_FALSE, \/* always false *\/$/;" e enum:lump_conditions
-COND_IF_DIFF_AF lump_struct.h /^ COND_IF_DIFF_AF, \/* true if RCV af != SND af *\/$/;" e enum:lump_conditions
-COND_IF_DIFF_IP lump_struct.h /^ COND_IF_DIFF_IP, \/* true if RCV ip != SND ip *\/$/;" e enum:lump_conditions
-COND_IF_DIFF_PORT lump_struct.h /^ COND_IF_DIFF_PORT, \/* true if RCV port != SND port *\/$/;" e enum:lump_conditions
-COND_IF_DIFF_PROTO lump_struct.h /^ COND_IF_DIFF_PROTO, \/* true if RCV proto != SND proto *\/$/;" e enum:lump_conditions
-COND_IF_DIFF_REALMS lump_struct.h /^ COND_IF_DIFF_REALMS,\/* true if RCV realm != SND realm *\/$/;" e enum:lump_conditions
-COND_IF_RAND lump_struct.h /^ COND_IF_RAND \/* 50-50 random prob.of being true*\/$/;" e enum:lump_conditions
-COND_TRUE lump_struct.h /^ COND_TRUE, \/* always true *\/$/;" e enum:lump_conditions
-CONN_CLOSED modules/acc/diam_tcp.h 51;" d
-CONN_CLOSED modules/auth_diameter/tcp_comm.h 47;" d
-CONN_DESTROY tcp_conn.h /^enum conn_cmds { CONN_DESTROY=-3, CONN_ERROR=-2, CONN_EOF=-1, CONN_RELEASE, $/;" e enum:conn_cmds
-CONN_EOF tcp_conn.h /^enum conn_cmds { CONN_DESTROY=-3, CONN_ERROR=-2, CONN_EOF=-1, CONN_RELEASE, $/;" e enum:conn_cmds
-CONN_ERROR modules/acc/diam_tcp.h 50;" d
-CONN_ERROR modules/auth_diameter/tcp_comm.h 46;" d
-CONN_ERROR tcp_conn.h /^enum conn_cmds { CONN_DESTROY=-3, CONN_ERROR=-2, CONN_EOF=-1, CONN_RELEASE, $/;" e enum:conn_cmds
-CONN_GET_FD tcp_conn.h /^ CONN_GET_FD, CONN_NEW };$/;" e enum:conn_cmds
-CONN_NEW tcp_conn.h /^ CONN_GET_FD, CONN_NEW };$/;" e enum:conn_cmds
-CONN_RELEASE tcp_conn.h /^enum conn_cmds { CONN_DESTROY=-3, CONN_ERROR=-2, CONN_EOF=-1, CONN_RELEASE, $/;" e enum:conn_cmds
-CONN_SUCCESS modules/acc/diam_tcp.h 49;" d
-CONN_SUCCESS modules/auth_diameter/tcp_comm.h 45;" d
-CONT parser/obsolete/strs.h 161;" d
-CONTACT dset.c 41;" d file:
-CONTACT2 parser/obsolete/parse_hname.c /^ CONTACT2, CONTACT3, CONTACT4, CONTACT5, CONTACT6, $/;" e file:
-CONTACT2 test/auto.c /^ CONTACT2, CONTACT3, CONTACT4, CONTACT5, CONTACT6,$/;" e file:
-CONTACT3 parser/obsolete/parse_hname.c /^ CONTACT2, CONTACT3, CONTACT4, CONTACT5, CONTACT6, $/;" e file:
-CONTACT3 test/auto.c /^ CONTACT2, CONTACT3, CONTACT4, CONTACT5, CONTACT6,$/;" e file:
-CONTACT4 parser/obsolete/parse_hname.c /^ CONTACT2, CONTACT3, CONTACT4, CONTACT5, CONTACT6, $/;" e file:
-CONTACT4 test/auto.c /^ CONTACT2, CONTACT3, CONTACT4, CONTACT5, CONTACT6,$/;" e file:
-CONTACT5 parser/obsolete/parse_hname.c /^ CONTACT2, CONTACT3, CONTACT4, CONTACT5, CONTACT6, $/;" e file:
-CONTACT5 test/auto.c /^ CONTACT2, CONTACT3, CONTACT4, CONTACT5, CONTACT6,$/;" e file:
-CONTACT6 parser/obsolete/parse_hname.c /^ CONTACT2, CONTACT3, CONTACT4, CONTACT5, CONTACT6, $/;" e file:
-CONTACT6 test/auto.c /^ CONTACT2, CONTACT3, CONTACT4, CONTACT5, CONTACT6,$/;" e file:
-CONTACT_BEGIN modules/registrar/reply.c 53;" d file:
-CONTACT_BEGIN_LEN modules/registrar/reply.c 54;" d file:
-CONTACT_COL modules/usrloc/ul_mod.c 62;" d file:
-CONTACT_DELIM dset.c 44;" d file:
-CONTACT_DELIM_LEN dset.c 45;" d file:
-CONTACT_END modules/pa/pidf.c 88;" d file:
-CONTACT_END_L modules/pa/pidf.c 89;" d file:
-CONTACT_ETAG modules/pa/pidf.c 91;" d file:
-CONTACT_ETAG_L modules/pa/pidf.c 92;" d file:
-CONTACT_H parser/contact/contact.h 36;" d
-CONTACT_LEN dset.c 42;" d file:
-CONTACT_MIDDLE modules/pa/lpidf.c 46;" d file:
-CONTACT_MIDDLE_L modules/pa/lpidf.c 47;" d file:
-CONTACT_OPS_H modules/mangler/contact_ops.h 37;" d
-CONTACT_PREFIX modules/msilo/msfuncs.c 44;" d file:
-CONTACT_PREFIX modules/msilo/msilo.c 70;" d file:
-CONTACT_PREFIX_LEN modules/msilo/msfuncs.c 46;" d file:
-CONTACT_PREFIX_LEN modules/msilo/msilo.c 72;" d file:
-CONTACT_SEP modules/registrar/reply.c 62;" d file:
-CONTACT_SEP_LEN modules/registrar/reply.c 63;" d file:
-CONTACT_START modules/pa/lpidf.c 43;" d file:
-CONTACT_START modules/pa/pidf.c 79;" d file:
-CONTACT_START_L modules/pa/lpidf.c 44;" d file:
-CONTACT_START_L modules/pa/pidf.c 80;" d file:
-CONTACT_SUFFIX modules/msilo/msfuncs.c 45;" d file:
-CONTACT_SUFFIX modules/msilo/msilo.c 71;" d file:
-CONTACT_SUFFIX_LEN modules/msilo/msfuncs.c 47;" d file:
-CONTACT_SUFFIX_LEN modules/msilo/msilo.c 73;" d file:
-CONTAINS_ATTR modules/cpl-c/CPL_tree.h 84;" d
-CONTENT_CASE parser/case_cont.h 84;" d
-CONTENT_LENGTH config.h 73;" d
-CONTENT_LENGTH_LEN config.h 74;" d
-CONTENT_TYPE modules/pa/notify.c 50;" d file:
-CONTENT_TYPE_HDR modules/cpl-c/cpl.c 689;" d file:
-CONTENT_TYPE_HDR modules/sms/sms_funcs.c 98;" d file:
-CONTENT_TYPE_HDR_LEN modules/cpl-c/cpl.c 690;" d file:
-CONTENT_TYPE_HDR_LEN modules/sms/sms_funcs.c 99;" d file:
-CONTENT_TYPE_L modules/pa/notify.c 51;" d file:
-CONT_TYPE_LPIDF modules/pa/notify.c 68;" d file:
-CONT_TYPE_LPIDF_L modules/pa/notify.c 69;" d file:
-CONT_TYPE_PIDF modules/pa/notify.c 71;" d file:
-CONT_TYPE_PIDF_L modules/pa/notify.c 72;" d file:
-CONT_TYPE_WINFO modules/pa/notify.c 74;" d file:
-CONT_TYPE_WINFO_L modules/pa/notify.c 75;" d file:
-CONT_TYPE_XCAP_CHANGE modules/pa/notify.c 77;" d file:
-CONT_TYPE_XCAP_CHANGE_L modules/pa/notify.c 78;" d file:
-CONT_TYPE_XPIDF modules/pa/notify.c 65;" d file:
-CONT_TYPE_XPIDF_L modules/pa/notify.c 66;" d file:
-CON_CONNECTED modules/postgres/con_postgres.h 64;" d
-CON_CONNECTION modules/mysql/my_con.h 51;" d
-CON_CONNECTION modules/postgres/con_postgres.h 61;" d
-CON_FILE modules/flatstore/flat_con.h 48;" d
-CON_FP modules/postgres/con_postgres.h 62;" d
-CON_PID modules/postgres/con_postgres.h 63;" d
-CON_POSTGRES_H modules/postgres/con_postgres.h 41;" d
-CON_RESULT modules/mysql/my_con.h 50;" d
-CON_RESULT modules/postgres/con_postgres.h 60;" d
-CON_ROW modules/mysql/my_con.h 52;" d
-CON_SQLURL modules/postgres/con_postgres.h 59;" d
-CON_TABLE db/db_con.h 46;" d
-CON_TAIL db/db_con.h 47;" d
-CON_TIMESTAMP modules/mysql/my_con.h 53;" d
-CONt parser/obsolete/strs.h 160;" d
-COUNT_ATTR modules/cpl-c/CPL_tree.h 108;" d
-COnT parser/obsolete/strs.h 159;" d
-COnt parser/obsolete/strs.h 158;" d
-CPL_ACCEPTLANG_DUPLICATED modules/cpl-c/cpl_run.h 52;" d
-CPL_FORCE_STATEFUL modules/cpl-c/cpl_run.h 43;" d
-CPL_FROM_DUPLICATED modules/cpl-c/cpl_run.h 48;" d
-CPL_IS_STATEFUL modules/cpl-c/cpl_run.h 42;" d
-CPL_LOC_DUPL modules/cpl-c/loc_set.h 42;" d
-CPL_LOC_NATED modules/cpl-c/loc_set.h 43;" d
-CPL_LOC_SET_MODIFIED modules/cpl-c/cpl_run.h 44;" d
-CPL_LOG_CMD modules/cpl-c/cpl_nonsig.h 48;" d
-CPL_MAIL_CMD modules/cpl-c/cpl_nonsig.h 49;" d
-CPL_NODE modules/cpl-c/CPL_tree.h 33;" d
-CPL_ORGANIZATION_DUPLICATED modules/cpl-c/cpl_run.h 50;" d
-CPL_PRIORITY_DUPLICATED modules/cpl-c/cpl_run.h 53;" d
-CPL_PROXY_DONE modules/cpl-c/cpl_run.h 45;" d
-CPL_RUNTIME_ERROR modules/cpl-c/cpl_run.c 62;" d file:
-CPL_RUN_INCOMING modules/cpl-c/cpl_run.h 41;" d
-CPL_RUN_OUTGOING modules/cpl-c/cpl_run.h 40;" d
-CPL_RURI_DUPLICATED modules/cpl-c/cpl_run.h 46;" d
-CPL_SCRIPT modules/cpl-c/cpl.c 677;" d file:
-CPL_SCRIPT_ERROR modules/cpl-c/cpl_run.c 61;" d file:
-CPL_SCRIPT_LEN modules/cpl-c/cpl.c 678;" d file:
-CPL_SUBJECT_DUPLICATED modules/cpl-c/cpl_run.h 49;" d
-CPL_TO_CONTINUE modules/cpl-c/cpl_run.c 63;" d file:
-CPL_TO_DUPLICATED modules/cpl-c/cpl_run.h 47;" d
-CPL_USERAGENT_DUPLICATED modules/cpl-c/cpl_run.h 51;" d
-CPORT modules/nathelper/nathelper.c 179;" d file:
-CR cfg.tab.c /^ CR = 397,$/;" e enum:yytokentype file:
-CR cfg.tab.c 339;" d file:
-CR cfg.tab.h /^ CR = 397,$/;" e enum:yytokentype
-CR cfg.tab.h 315;" d
-CRC16_LEN crc.h 8;" d
-CRLF config.h 90;" d
-CRLF modules/pa/location.c 59;" d file:
-CRLF modules/pa/lpidf.c 55;" d file:
-CRLF modules/pa/notify.c 89;" d file:
-CRLF modules/pa/pidf.c 43;" d file:
-CRLF modules/pa/watcher.c 536;" d file:
-CRLF modules/pa/xpidf.c 36;" d file:
-CRLF_L modules/pa/location.c 60;" d file:
-CRLF_L modules/pa/lpidf.c 56;" d file:
-CRLF_L modules/pa/notify.c 90;" d file:
-CRLF_L modules/pa/pidf.c 44;" d file:
-CRLF_L modules/pa/watcher.c 537;" d file:
-CRLF_L modules/pa/xpidf.c 37;" d file:
-CRLF_LEN config.h 91;" d
-CSEQ modules/tm/t_msgbuilder.h 42;" d
-CSEQ parser/obsolete/strs.h 117;" d
-CSEQ2 parser/obsolete/parse_hname.c /^ C_START, CSEQ2, CSEQ3,$/;" e file:
-CSEQ2 test/auto.c /^ C_START, CSEQ2, CSEQ3,$/;" e file:
-CSEQ3 parser/obsolete/parse_hname.c /^ C_START, CSEQ2, CSEQ3,$/;" e file:
-CSEQ3 test/auto.c /^ C_START, CSEQ2, CSEQ3,$/;" e file:
-CSEQ_COL modules/usrloc/ul_mod.c 66;" d file:
-CSEQ_LEN modules/tm/t_msgbuilder.h 43;" d
-CSEq parser/obsolete/strs.h 116;" d
-CSTRINGOID modules/postgres/pg_type.h 89;" d
-CS_DIRTY modules/usrloc/ucontact.h /^ CS_DIRTY \/* Update contact - not flushed yet *\/$/;" e enum:cstate
-CS_NEW modules/usrloc/ucontact.h /^ CS_NEW, \/* New contact - not flushed yet *\/$/;" e enum:cstate
-CS_SYNC modules/usrloc/ucontact.h /^ CS_SYNC, \/* Synchronized contact with the database *\/$/;" e enum:cstate
-CSeQ parser/obsolete/strs.h 115;" d
-CSeq parser/obsolete/strs.h 114;" d
-CT_CHARSET modules/msilo/msfuncs.h 35;" d
-CT_MSGR modules/msilo/msfuncs.h 36;" d
-CT_TYPE modules/msilo/msfuncs.h 34;" d
-CURR_POS modules/pike/ip_tree.h 53;" d
-C_START parser/obsolete/parse_hname.c /^ C_START, CSEQ2, CSEQ3,$/;" e file:
-C_START test/auto.c /^ C_START, CSEQ2, CSEQ3,$/;" e file:
-CaLL parser/obsolete/strs.h 130;" d
-CaLl parser/obsolete/strs.h 129;" d
-CalL parser/obsolete/strs.h 128;" d
-Call parser/obsolete/strs.h 127;" d
-CheckLocalPartyProc modules/mediaproxy/mediaproxy.c /^typedef int (*CheckLocalPartyProc)(struct sip_msg* msg, char* s1, char* s2);$/;" t file:
-Ci modules/jabber/sha.c 72;" d file:
-ClientNatTest modules/mediaproxy/mediaproxy.c /^ClientNatTest(struct sip_msg* msg, char* str1, char* str2)$/;" f file:
-CoNT parser/obsolete/strs.h 157;" d
-CoNt parser/obsolete/strs.h 156;" d
-ConT parser/obsolete/strs.h 155;" d
-Cont parser/obsolete/strs.h 154;" d
-CsEQ parser/obsolete/strs.h 113;" d
-CsEq parser/obsolete/strs.h 112;" d
-CseQ parser/obsolete/strs.h 111;" d
-Cseq parser/obsolete/strs.h 110;" d
-CvtHex utils/gen_ha1/calc.c /^void CvtHex(HASH Bin, HASHHEX Hex)$/;" f
-DAB modules/postgres/aug_debug.h 115;" d
-DAB modules/postgres/aug_debug.h 137;" d
-DABBULK modules/postgres/aug_debug.h 117;" d
-DABBULK modules/postgres/aug_debug.h 139;" d
-DABDUMP modules/postgres/aug_debug.h 119;" d
-DABDUMP modules/postgres/aug_debug.h 141;" d
-DABL modules/postgres/aug_debug.h 114;" d
-DABL modules/postgres/aug_debug.h 136;" d
-DABLEVEL modules/postgres/aug_debug.h 106;" d
-DABLEVEL modules/postgres/aug_debug.h 135;" d
-DABLOAD modules/postgres/aug_debug.h 123;" d
-DABLOAD modules/postgres/aug_debug.h 145;" d
-DABL_NOP modules/postgres/aug_debug.h 130;" d
-DABL_NOP modules/postgres/aug_debug.h 132;" d
-DABNAME modules/postgres/aug_debug.h 102;" d
-DABNAME modules/postgres/aug_debug.h 134;" d
-DABRESET modules/postgres/aug_debug.h 122;" d
-DABRESET modules/postgres/aug_debug.h 144;" d
-DABSET modules/postgres/aug_debug.h 121;" d
-DABSET modules/postgres/aug_debug.h 143;" d
-DABTEXT modules/postgres/aug_debug.h 118;" d
-DABTEXT modules/postgres/aug_debug.h 140;" d
-DABTRACE modules/postgres/aug_debug.h 116;" d
-DABTRACE modules/postgres/aug_debug.h 138;" d
-DAB_BULK modules/postgres/aug_debug.h 98;" d
-DAB_OFF modules/postgres/aug_debug.h 95;" d
-DAB_STD modules/postgres/aug_debug.h 97;" d
-DAB_TRACE modules/postgres/aug_debug.h 96;" d
-DAB_UNKNOWN modules/postgres/aug_debug.h 94;" d
-DATEOID modules/postgres/pg_type.h 73;" d
-DATE_LEN modules/sms/sms_funcs.h 59;" d
-DATE_TYPE db/db_fifo.c 79;" d file:
-DATE_TYPE_LEN db/db_fifo.c 80;" d file:
-DBASE_H modules/mysql/dbase.h 32;" d
-DBASE_H modules/postgres/dbase.h 41;" d
-DBG dprint.h 175;" d
-DBG dprint.h 177;" d
-DBG dprint.h 181;" d
-DBG dprint.h 183;" d
-DBG test/p_uri.c 6;" d file:
-DBG_F_MALLOC mem/mem.h 52;" d
-DBG_F_MALLOC mem/shm_mem.h 66;" d
-DBG_F_MALLOC_STR version.h 142;" d
-DBG_F_MALLOC_STR version.h 144;" d
-DBG_QM_MALLOC mem/mem.h 49;" d
-DBG_QM_MALLOC mem/shm_mem.h 63;" d
-DBG_QM_MALLOC_STR version.h 136;" d
-DBG_QM_MALLOC_STR version.h 138;" d
-DBT_CON_CONNECTION modules/dbtext/dbt_res.h 63;" d
-DBT_CON_RESULT modules/dbtext/dbt_res.h 64;" d
-DBT_CON_ROW modules/dbtext/dbt_res.h 65;" d
-DBT_DELIM modules/dbtext/dbt_lib.h 56;" d
-DBT_DELIM_C modules/dbtext/dbt_lib.h 57;" d
-DBT_DELIM_R modules/dbtext/dbt_lib.h 58;" d
-DBT_FLAG_AUTO modules/dbtext/dbt_lib.h 47;" d
-DBT_FLAG_NULL modules/dbtext/dbt_lib.h 46;" d
-DBT_FLAG_UNSET modules/dbtext/dbt_lib.h 45;" d
-DBT_FL_IGN modules/dbtext/dbt_lib.h 52;" d
-DBT_FL_SET modules/dbtext/dbt_lib.h 53;" d
-DBT_FL_UNSET modules/dbtext/dbt_lib.h 54;" d
-DBT_ID modules/dbtext/dbt_base.c 51;" d file:
-DBT_ID_LEN modules/dbtext/dbt_base.c 52;" d file:
-DBT_PATH_LEN modules/dbtext/dbt_base.c 53;" d file:
-DBT_TBFL_MODI modules/dbtext/dbt_lib.h 50;" d
-DBT_TBFL_ZERO modules/dbtext/dbt_lib.h 49;" d
-DB_BITMAP db/db_val.h /^ DB_BITMAP \/* Bitmap of flags *\/$/;" e
-DB_BLOB db/db_val.h /^ DB_BLOB, \/* Large binary object *\/$/;" e
-DB_CAPABILITY db/db_cap.h 55;" d
-DB_CAP_ALL db/db_cap.h 48;" d
-DB_CAP_DELETE db/db_cap.h /^ DB_CAP_DELETE = 1 << 3, \/* Database driver can delete data from database *\/$/;" e enum:db_cap
-DB_CAP_H db/db_cap.h 29;" d
-DB_CAP_INSERT db/db_cap.h /^ DB_CAP_INSERT = 1 << 2, \/* Database driver can insert data into database *\/$/;" e enum:db_cap
-DB_CAP_QUERY db/db_cap.h /^ DB_CAP_QUERY = 1 << 0, \/* Database driver can query database *\/$/;" e enum:db_cap
-DB_CAP_RAW_QUERY db/db_cap.h /^ DB_CAP_RAW_QUERY = 1 << 1, \/* Database driver can perform raw queries *\/$/;" e enum:db_cap
-DB_CAP_UPDATE db/db_cap.h /^ DB_CAP_UPDATE = 1 << 4 \/* Database driver can update data in the database *\/$/;" e enum:db_cap
-DB_CON_H db/db_con.h 31;" d
-DB_DATETIME db/db_val.h /^ DB_DATETIME, \/* Date and time *\/$/;" e
-DB_DOUBLE db/db_val.h /^ DB_DOUBLE, \/* double data type *\/$/;" e
-DB_GET_ERR modules/cpl-c/cpl_loader.c 416;" d file:
-DB_H db/db.h 35;" d
-DB_INT db/db_val.h /^ DB_INT, \/* 32-bit integer *\/$/;" e
-DB_KEY_CODE modules/pdt/pdt.c 63;" d file:
-DB_KEY_H db/db_key.h 30;" d
-DB_KEY_NAME modules/pdt/pdt.c 62;" d file:
-DB_MOD_H modules/mysql/db_mod.h 37;" d
-DB_OP_H db/db_op.h 30;" d
-DB_RES_H db/db_res.h 30;" d
-DB_RMV_ERR modules/cpl-c/cpl_loader.c 352;" d file:
-DB_ROW_H db/db_row.h 30;" d
-DB_SAVE_ERR modules/cpl-c/cpl_loader.c 248;" d file:
-DB_STR db/db_val.h /^ DB_STR, \/* str structure *\/$/;" e
-DB_STRING db/db_val.h /^ DB_STRING, \/* Zero-terminated string *\/$/;" e
-DB_TABLE db/example/dbexample.c 35;" d file:
-DB_TABLE modules/avpops/avpops.c /^static char *DB_TABLE = 0; \/* table *\/$/;" v file:
-DB_TABLE modules/cpl-c/cpl.c /^static char *DB_TABLE = 0; \/* *\/$/;" v file:
-DB_TABLE modules/dbtext/dbtex/dbtex.c 41;" d file:
-DB_URL db/example/dbexample.c 34;" d file:
-DB_URL modules/avpops/avpops.c /^static char *DB_URL = 0; \/* database url *\/$/;" v file:
-DB_URL modules/cpl-c/cpl.c /^static char *DB_URL = 0; \/* database url *\/$/;" v file:
-DB_URL modules/dbtext/dbtex/dbtex.c 36;" d file:
-DB_UTILS_H modules/postgres/db_utils.h 41;" d
-DB_VAL_H db/db_val.h 30;" d
-DEBUG cfg.tab.c /^ DEBUG = 310,$/;" e enum:yytokentype file:
-DEBUG cfg.tab.c 252;" d file:
-DEBUG cfg.tab.h /^ DEBUG = 310,$/;" e enum:yytokentype
-DEBUG cfg.tab.h 228;" d
-DEBUG_DMALLOC_STR version.h 148;" d
-DEBUG_DMALLOC_STR version.h 150;" d
-DECODE_ALL_CONTACTS modules/mangler/contact_ops.h 47;" d
-DEFAULT_ACTION modules/cpl-c/cpl_run.c 60;" d file:
-DEFAULT_ALLOW_FILE modules/permissions/permissions.h 43;" d
-DEFAULT_CSEQ modules/tm/uac.h 41;" d
-DEFAULT_DB_URL config.h 189;" d
-DEFAULT_DB_URL_LEN config.h 190;" d
-DEFAULT_DENY_FILE modules/permissions/permissions.h 44;" d
-DEFAULT_FIFO_DIR config.h 157;" d
-DEFAULT_LOG_FMT modules/acc/defs.h 37;" d
-DEFAULT_LOG_NAME modules/cpl-c/cpl_nonsig.c 58;" d file:
-DEFAULT_LOG_NAME_LEN modules/cpl-c/cpl_nonsig.c 59;" d file:
-DEFAULT_NODE modules/cpl-c/CPL_tree.h 41;" d
-DEFAULT_O route_struct.h /^ DSTIP_O, DSTPORT_O, PROTO_O, AF_O, MSGLEN_O, DEFAULT_O, ACTION_O,$/;" e
-DEFAULT_RODB_URL config.h 192;" d
-DEFAULT_RODB_URL_LEN config.h 193;" d
-DEFAULT_RT config.h 62;" d
-DEFAULT_SEPARATOR modules/mangler/contact_ops.h 49;" d
-DEFAULT_TCP_CONNECT_TIMEOUT tcp_conn.h 51;" d
-DEFAULT_TCP_SEND_TIMEOUT tcp_conn.h 49;" d
-DEFAULT_TIMEOUT utils/serunix/serunix.c 55;" d file:
-DEFS Makefile /^DEFS:=$/;" m
-DEFS test/locking/Makefile /^DEFS=$/;" m
-DEFS_H modules/mysql/defs.h 32;" d
-DEFS_H modules/postgres/defs.h 41;" d
-DELETE_CMD db/db_fifo.c 53;" d file:
-DELETE_LIST modules/tm/timer.h /^ DELETE_LIST,$/;" e enum:lists
-DELETE_STR db/db_fifo.c 61;" d file:
-DELETE_STR_LEN db/db_fifo.c 62;" d file:
-DEL_TIME_OUT modules/tm/config.h 58;" d
-DEPENDS netbsd/Makefile /^DEPENDS= expat-[0-9]*:..\/..\/textproc\/expat \\$/;" m
-DESTINATION_VAL modules/cpl-c/CPL_tree.h 73;" d
-DETACHED_LIST modules/tm/timer.c 127;" d file:
-DHASH modules/pdt/domains.h 29;" d
-DIAMETER_AUTHORIZE_H modules/auth_diameter/authorize.h 35;" d
-DIAMETER_DEFS modules/auth_diameter/defs.h 2;" d
-DIAM_ACC_FMT modules/acc/defs.h 59;" d
-DIAM_ACC_H modules/acc/diam_dict.h 4;" d
-DIFF cfg.tab.c /^ DIFF = 376,$/;" e enum:yytokentype file:
-DIFF cfg.tab.c 318;" d file:
-DIFF cfg.tab.h /^ DIFF = 376,$/;" e enum:yytokentype
-DIFF cfg.tab.h 294;" d
-DIFF_OP route_struct.h /^enum { EQUAL_OP=10, MATCH_OP, GT_OP, LT_OP, GTE_OP, LTE_OP, DIFF_OP, NO_OP };$/;" e
-DIGEST_H parser/digest/digest.h 32;" d
-DIGEST_KEYS_H parser/digest/digest_keys.h 32;" d
-DIGEST_MD5 modules/auth/challenge.c 68;" d file:
-DIGEST_MD5_LEN modules/auth/challenge.c 69;" d file:
-DIGEST_NONCE modules/auth/challenge.c 66;" d file:
-DIGEST_NONCE_LEN modules/auth/challenge.c 67;" d file:
-DIGEST_PARSER_H parser/digest/digest_parser.h 38;" d
-DIGEST_REALM modules/auth/challenge.c 64;" d file:
-DIGEST_REALM_LEN modules/auth/challenge.c 65;" d file:
-DIGEST_SCHEME parser/digest/digest_parser.c 43;" d file:
-DIG_LEN parser/digest/digest_parser.c 44;" d file:
-DISABLE_CACHE modules/permissions/permissions.h 65;" d
-DISABLE_CORE cfg.tab.c /^ DISABLE_CORE = 366,$/;" e enum:yytokentype file:
-DISABLE_CORE cfg.tab.c 308;" d file:
-DISABLE_CORE cfg.tab.h /^ DISABLE_CORE = 366,$/;" e enum:yytokentype
-DISABLE_CORE cfg.tab.h 284;" d
-DISABLE_NAGLE_STR version.h 63;" d
-DISABLE_NAGLE_STR version.h 65;" d
-DISABLE_TCP cfg.tab.c /^ DISABLE_TCP = 344,$/;" e enum:yytokentype file:
-DISABLE_TCP cfg.tab.c 286;" d file:
-DISABLE_TCP cfg.tab.h /^ DISABLE_TCP = 344,$/;" e enum:yytokentype
-DISABLE_TCP cfg.tab.h 262;" d
-DISABLE_TLS cfg.tab.c /^ DISABLE_TLS = 349,$/;" e enum:yytokentype file:
-DISABLE_TLS cfg.tab.c 291;" d file:
-DISABLE_TLS cfg.tab.h /^ DISABLE_TLS = 349,$/;" e enum:yytokentype
-DISABLE_TLS cfg.tab.h 267;" d
-DISPALY_VAL modules/cpl-c/CPL_tree.h 91;" d
-DISPLAY_NAME_START modules/pa/watcher.c 563;" d file:
-DISPLAY_NAME_START_L modules/pa/watcher.c 564;" d file:
-DISPLAY_QUOTED parser/parse_to.c /^ START_TO, DISPLAY_QUOTED, E_DISPLAY_QUOTED, DISPLAY_TOKEN,$/;" e file:
-DISPLAY_TOKEN parser/parse_to.c /^ START_TO, DISPLAY_QUOTED, E_DISPLAY_QUOTED, DISPLAY_TOKEN,$/;" e file:
-DISPLAY_VAL modules/cpl-c/CPL_tree.h 80;" d
-DISPOSITION_CASE parser/case_cont.h 74;" d
-DISTFILES netbsd/Makefile /^DISTFILES= ${DISTNAME}_src.tar.gz$/;" m
-DISTFILES openbsd/Makefile /^DISTFILES= ${DISTNAME}_src.tar.gz$/;" m
-DISTNAME freebsd/Makefile /^DISTNAME= ${PORTNAME}-${PORTVERSION}_src$/;" m
-DISTNAME netbsd/Makefile /^DISTNAME= ${PORTNAME}-${PORTVERSION}$/;" m
-DISTNAME openbsd/Makefile /^DISTNAME= ${PORTNAME}-${PORTVERSION}$/;" m
-DIVERSION_HF modules/diversion/diversion.c 42;" d file:
-DIVERSION_HF_LEN modules/diversion/diversion.c 43;" d file:
-DIVERSION_PREFIX modules/diversion/diversion.c 45;" d file:
-DIVERSION_PREFIX_LEN modules/diversion/diversion.c 46;" d file:
-DIVERSION_SUFFIX modules/diversion/diversion.c 48;" d file:
-DIVERSION_SUFFIX_LEN modules/diversion/diversion.c 49;" d file:
-DLG_CONFIRMED modules/tm/dlg.h /^ DLG_CONFIRMED, \/* Confirmed dialog, 2xx received *\/$/;" e enum:dlg_state
-DLG_DESTROYED modules/tm/dlg.h /^ DLG_DESTROYED \/* Destroyed dialog *\/$/;" e enum:dlg_state
-DLG_EARLY modules/tm/dlg.h /^ DLG_EARLY, \/* Early dialog, provisional response received *\/$/;" e enum:dlg_state
-DLG_H modules/tm/dlg.h 32;" d
-DLG_NEW modules/tm/dlg.h /^ DLG_NEW = 0, \/* New dialog, no reply received yet *\/$/;" e enum:dlg_state
-DLIST_H modules/pa/dlist.h 32;" d
-DLIST_H modules/usrloc/dlist.h 32;" d
-DLOG modules/postgres/con_postgres.h 67;" d
-DLSYM_PREFIX sr_module.c 154;" d file:
-DNS cfg.tab.c /^ DNS = 316,$/;" e enum:yytokentype file:
-DNS cfg.tab.c 258;" d file:
-DNS cfg.tab.h /^ DNS = 316,$/;" e enum:yytokentype
-DNS cfg.tab.h 234;" d
-DNS_HDR_SIZE resolve.h 54;" d
-DNS_IP_HACK_STR version.h 94;" d
-DNS_IP_HACK_STR version.h 96;" d
-DOCTYPE modules/pa/pidf.c 61;" d file:
-DOCTYPE modules/pa/xpidf.c 63;" d file:
-DOCTYPE_L modules/pa/pidf.c 62;" d file:
-DOCTYPE_L modules/pa/xpidf.c 64;" d file:
-DOCUMENT_TYPE modules/pa/subscribe.c 55;" d file:
-DOCUMENT_TYPE_L modules/pa/subscribe.c 56;" d file:
-DOC_LOCATION modules/pa/watcher.h /^ DOC_LOCATION = 5,$/;" e enum:doctype
-DOC_LPIDF modules/pa/watcher.h /^ DOC_LPIDF = 1,$/;" e enum:doctype
-DOC_PIDF modules/pa/watcher.h /^ DOC_PIDF = 2,$/;" e enum:doctype
-DOC_WINFO modules/pa/watcher.h /^ DOC_WINFO = 3,$/;" e enum:doctype
-DOC_XCAP_CHANGE modules/pa/watcher.h /^ DOC_XCAP_CHANGE = 4,$/;" e enum:doctype
-DOC_XPIDF modules/pa/watcher.h /^ DOC_XPIDF = 0,$/;" e enum:doctype
-DOMAIN_COL modules/auth_db/authdb_mod.c 87;" d file:
-DOMAIN_COL modules/domain/domain_mod.c 67;" d file:
-DOMAIN_COL modules/group/group_mod.c 83;" d file:
-DOMAIN_COL modules/uri_db/uridb_mod.c 72;" d file:
-DOMAIN_COL modules/usrloc/ul_mod.c 61;" d file:
-DOMAIN_COL_LEN modules/auth_db/authdb_mod.c 88;" d file:
-DOMAIN_COL_LEN modules/domain/domain_mod.c 68;" d file:
-DOMAIN_COL_LEN modules/group/group_mod.c 84;" d file:
-DOMAIN_COL_LEN modules/uri_db/uridb_mod.c 73;" d file:
-DOMAIN_DUMP modules/domain/fifo.h 36;" d
-DOMAIN_H modules/domain/domain.h 31;" d
-DOMAIN_MOD_H modules/domain/domain_mod.h 32;" d
-DOMAIN_RELOAD modules/domain/fifo.h 35;" d
-DOMAIN_TABLE modules/domain/domain_mod.c 64;" d file:
-DOMAIN_TABLE_LEN modules/domain/domain_mod.c 65;" d file:
-DOT cfg.tab.c /^ DOT = 396,$/;" e enum:yytokentype file:
-DOT cfg.tab.c 338;" d file:
-DOT cfg.tab.h /^ DOT = 396,$/;" e enum:yytokentype
-DOT cfg.tab.h 314;" d
-DOUBLE_TYPE db/db_fifo.c 75;" d file:
-DOUBLE_TYPE_LEN db/db_fifo.c 76;" d file:
-DO_AUTHORIZATION modules/auth/api.h /^ DO_AUTHORIZATION, \/* Perform digest authorization *\/$/;" e enum:auth_result
-DO_AUTHORIZATION modules/auth_diameter/defs.h /^ DO_AUTHORIZATION, \/* Credentials included *\/$/;" e enum:auth_result
-DO_DNS globals.h 41;" d
-DO_REV_DNS globals.h 42;" d
-DPRINT_LEV dprint.h 51;" d
-DPRINT_PRIO dprint.h 53;" d
-DP_MSG_CODE modules/acc/diam_message.h 67;" d
-DP_MSG_CODE modules/acc/diam_message.h 77;" d
-DP_MSG_CODE modules/auth_diameter/diameter_msg.h 67;" d
-DP_MSG_CODE modules/auth_diameter/diameter_msg.h 77;" d
-DPrint dprint.h 63;" d
-DPrint dprint.h 65;" d
-DPrint dprint.h 69;" d
-DPrint dprint.h 80;" d
-DROP cfg.tab.c /^ DROP = 264,$/;" e enum:yytokentype file:
-DROP cfg.tab.c 206;" d file:
-DROP cfg.tab.h /^ DROP = 264,$/;" e enum:yytokentype
-DROP cfg.tab.h 182;" d
-DROP_T route_struct.h /^enum { FORWARD_T=1, SEND_T, DROP_T, LOG_T, ERROR_T, ROUTE_T, EXEC_T,$/;" e
-DSTIP cfg.tab.c /^ DSTIP = 301,$/;" e enum:yytokentype file:
-DSTIP cfg.tab.c 243;" d file:
-DSTIP cfg.tab.h /^ DSTIP = 301,$/;" e enum:yytokentype
-DSTIP cfg.tab.h 219;" d
-DSTIP_O route_struct.h /^ DSTIP_O, DSTPORT_O, PROTO_O, AF_O, MSGLEN_O, DEFAULT_O, ACTION_O,$/;" e
-DSTPORT cfg.tab.c /^ DSTPORT = 302,$/;" e enum:yytokentype file:
-DSTPORT cfg.tab.c 244;" d file:
-DSTPORT cfg.tab.h /^ DSTPORT = 302,$/;" e enum:yytokentype
-DSTPORT cfg.tab.h 220;" d
-DSTPORT_O route_struct.h /^ DSTIP_O, DSTPORT_O, PROTO_O, AF_O, MSGLEN_O, DEFAULT_O, ACTION_O,$/;" e
-DTEND_ATTR modules/cpl-c/CPL_tree.h 103;" d
-DTSTART_ATTR modules/cpl-c/CPL_tree.h 102;" d
-DURATION_ATTR modules/cpl-c/CPL_tree.h 104;" d
-DW_MSG_CODE modules/acc/diam_message.h 66;" d
-DW_MSG_CODE modules/acc/diam_message.h 76;" d
-DW_MSG_CODE modules/auth_diameter/diameter_msg.h 66;" d
-DW_MSG_CODE modules/auth_diameter/diameter_msg.h 76;" d
-Decode md5.c /^static void Decode (output, input, len)$/;" f file:
-Di modules/jabber/sha.c 73;" d file:
-DigestCalcHA1 utils/gen_ha1/calc.c /^void DigestCalcHA1(const char * pszAlg, const char * pszUserName,$/;" f
-DigestCalcResponse utils/gen_ha1/calc.c /^void DigestCalcResponse($/;" f
-EAT_SPACES modules/msilo/msfuncs.c 49;" d file:
-ECHO lex.yy.c 1296;" d file:
-EI_PA_CONTACT_MISS modules/pa/reply.c 43;" d file:
-EI_PA_CONT_PARSE modules/pa/reply.c 52;" d file:
-EI_PA_CONT_STAR modules/pa/reply.c 53;" d file:
-EI_PA_EVENT_MISS modules/pa/reply.c 45;" d file:
-EI_PA_EVENT_PARSE modules/pa/reply.c 46;" d file:
-EI_PA_EVENT_UNSUPP modules/pa/reply.c 48;" d file:
-EI_PA_EXPIRES_PARSE modules/pa/reply.c 47;" d file:
-EI_PA_EXTRACT_USER modules/pa/reply.c 51;" d file:
-EI_PA_FROM_ERROR modules/pa/reply.c 54;" d file:
-EI_PA_FROM_MISS modules/pa/reply.c 44;" d file:
-EI_PA_INTERNAL_ERROR modules/pa/reply.c 57;" d file:
-EI_PA_NO_MEMORY modules/pa/reply.c 49;" d file:
-EI_PA_OK modules/pa/reply.c 41;" d file:
-EI_PA_PARSE_ERR modules/pa/reply.c 42;" d file:
-EI_PA_SMALL_BUFFER modules/pa/reply.c 55;" d file:
-EI_PA_TIMER_ERROR modules/pa/reply.c 50;" d file:
-EI_PA_UNSUPP_DOC modules/pa/reply.c 56;" d file:
-EI_R_AOR_LEN modules/registrar/reply.c 210;" d file:
-EI_R_AOR_PARSE modules/registrar/reply.c 211;" d file:
-EI_R_CID_MISS modules/registrar/reply.c 216;" d file:
-EI_R_CS_MISS modules/registrar/reply.c 217;" d file:
-EI_R_FINE modules/registrar/reply.c 200;" d file:
-EI_R_INV_CSEQ modules/registrar/reply.c 204;" d file:
-EI_R_INV_EXP modules/registrar/reply.c 212;" d file:
-EI_R_INV_Q modules/registrar/reply.c 213;" d file:
-EI_R_OOO modules/registrar/reply.c 222;" d file:
-EI_R_PARSE modules/registrar/reply.c 214;" d file:
-EI_R_PARSE_CONT modules/registrar/reply.c 219;" d file:
-EI_R_PARSE_EXP modules/registrar/reply.c 218;" d file:
-EI_R_RETRANS modules/registrar/reply.c 223;" d file:
-EI_R_STAR_CONT modules/registrar/reply.c 221;" d file:
-EI_R_STAR_EXP modules/registrar/reply.c 220;" d file:
-EI_R_TOO_MANY modules/registrar/reply.c 225;" d file:
-EI_R_TO_MISS modules/registrar/reply.c 215;" d file:
-EI_R_TO_USER modules/registrar/reply.c 209;" d file:
-EI_R_UL_DEL_C modules/registrar/reply.c 207;" d file:
-EI_R_UL_DEL_R modules/registrar/reply.c 201;" d file:
-EI_R_UL_GET_R modules/registrar/reply.c 202;" d file:
-EI_R_UL_INS_C modules/registrar/reply.c 205;" d file:
-EI_R_UL_INS_R modules/registrar/reply.c 206;" d file:
-EI_R_UL_NEW_R modules/registrar/reply.c 203;" d file:
-EI_R_UL_UPD_C modules/registrar/reply.c 208;" d file:
-EI_R_UNESCAPE modules/registrar/reply.c 224;" d file:
-ELEM_IS_AVP modules/tm/t_fifo.c 157;" d file:
-ELEM_IS_HDR modules/tm/t_fifo.c 158;" d file:
-ELEM_IS_MSG modules/tm/t_fifo.c 159;" d file:
-ELEM_T route_struct.h /^enum { EXP_T=1, ELEM_T };$/;" e
-ELEM_TYPE_AVP modules/tm/t_fifo.c 151;" d file:
-ELEM_TYPE_AVP_LEN modules/tm/t_fifo.c 152;" d file:
-ELEM_TYPE_HDR modules/tm/t_fifo.c 153;" d file:
-ELEM_TYPE_HDR_LEN modules/tm/t_fifo.c 154;" d file:
-ELEM_TYPE_MSG modules/tm/t_fifo.c 155;" d file:
-ELEM_TYPE_MSG_LEN modules/tm/t_fifo.c 156;" d file:
-ELEM_VAL_BODY modules/tm/t_fifo.c 161;" d file:
-ELEM_VAL_BODY_LEN modules/tm/t_fifo.c 162;" d file:
-ELSE cfg.tab.c /^ ELSE = 285,$/;" e enum:yytokentype file:
-ELSE cfg.tab.c 227;" d file:
-ELSE cfg.tab.h /^ ELSE = 285,$/;" e enum:yytokentype
-ELSE cfg.tab.h 203;" d
-EMAIL_HDR_NAME modules/cpl-c/cpl_parser.c /^enum {EMAIL_TO,EMAIL_HDR_NAME,EMAIL_KNOWN_HDR_BODY,EMAIL_UNKNOWN_HDR_BODY};$/;" e file:
-EMAIL_KNOWN_HDR_BODY modules/cpl-c/cpl_parser.c /^enum {EMAIL_TO,EMAIL_HDR_NAME,EMAIL_KNOWN_HDR_BODY,EMAIL_UNKNOWN_HDR_BODY};$/;" e file:
-EMAIL_TO modules/cpl-c/cpl_parser.c /^enum {EMAIL_TO,EMAIL_HDR_NAME,EMAIL_KNOWN_HDR_BODY,EMAIL_UNKNOWN_HDR_BODY};$/;" e file:
-EMAIL_UNKNOWN_HDR_BODY modules/cpl-c/cpl_parser.c /^enum {EMAIL_TO,EMAIL_HDR_NAME,EMAIL_KNOWN_HDR_BODY,EMAIL_UNKNOWN_HDR_BODY};$/;" e file:
-EMERGENCY_STR modules/cpl-c/CPL_tree.h 126;" d
-EMERGENCY_STR_LEN modules/cpl-c/CPL_tree.h 127;" d
-EMERGENCY_VAL modules/cpl-c/CPL_tree.h 125;" d
-ENABLE_CACHE modules/permissions/permissions.h 66;" d
-ENCODE_ALL_CONTACTS modules/mangler/contact_ops.h 46;" d
-ENCONDING_BUFFER_SIZE modules/cpl-c/cpl_parser.c 60;" d file:
-ENC_ERR modules/cpl-c/cpl_parser.c 1513;" d file:
-ENC_ERR_LEN modules/cpl-c/cpl_parser.c 1514;" d file:
-END parser/parse_to.c /^ URI_OR_TOKEN, MAYBE_URI_END, END, F_CR, F_LF, F_CRLF$/;" e file:
-END_CHECK_PATTERN mem/vq_malloc.h 63;" d
-END_CHECK_PATTERN1 mem/f_malloc.c 111;" d file:
-END_CHECK_PATTERN1 mem/q_malloc.c 127;" d file:
-END_CHECK_PATTERN2 mem/f_malloc.c 112;" d file:
-END_CHECK_PATTERN2 mem/q_malloc.c 128;" d file:
-END_CHECK_PATTERN_LEN mem/vq_malloc.h 64;" d
-END_CHR db/db_fifo.c 71;" d file:
-END_ERR_MSG modules/sms/sms_report.c 39;" d file:
-END_ERR_MSG_LEN modules/sms/sms_report.c 40;" d file:
-END_OF_HEADER parser/parse_via.c /^ END_OF_HEADER$/;" e file:
-END_OF_HEADER test/via_parse.c /^ END_OF_HEADER$/;" e file:
-END_TO_END_IDENTIFIER_SIZE modules/acc/diam_message.h 46;" d
-END_TO_END_IDENTIFIER_SIZE modules/auth_diameter/diameter_msg.h 46;" d
-ENODATA modules/postgres/aug_sysdep.h 246;" d
-ENTI_CASE parser/case_www.h 44;" d
-ENT_ parser/obsolete/strs.h 292;" d
-ENUM_H modules/enum/enum.h 32;" d
-ENUM_MOD_H modules/enum/enum_mod.h 32;" d
-ENt_ parser/obsolete/strs.h 291;" d
-EOB_ACT_CONTINUE_SCAN lex.yy.c 146;" d file:
-EOB_ACT_END_OF_FILE lex.yy.c 147;" d file:
-EOB_ACT_LAST_MATCH lex.yy.c 148;" d file:
-EO_SCRIPT modules/cpl-c/cpl_run.c 59;" d file:
-EO_STEP mem/vq_malloc.h 58;" d
-EPROTO modules/postgres/aug_sysdep.h 247;" d
-EQUAL cfg.tab.c /^ EQUAL = 370,$/;" e enum:yytokentype file:
-EQUAL cfg.tab.c 312;" d file:
-EQUAL cfg.tab.h /^ EQUAL = 370,$/;" e enum:yytokentype
-EQUAL cfg.tab.h 288;" d
-EQUAL_ATTR modules/cpl-c/CPL_tree.h 123;" d
-EQUAL_OP route_struct.h /^enum { EQUAL_OP=10, MATCH_OP, GT_OP, LT_OP, GTE_OP, LTE_OP, DIFF_OP, NO_OP };$/;" e
-EQUAL_T cfg.tab.c /^ EQUAL_T = 371,$/;" e enum:yytokentype file:
-EQUAL_T cfg.tab.c 313;" d file:
-EQUAL_T cfg.tab.h /^ EQUAL_T = 371,$/;" e enum:yytokentype
-EQUAL_T cfg.tab.h 289;" d
-EQ_LEN modules/tm/t_lookup.c 111;" d file:
-EQ_REQ_URI_LEN modules/tm/t_lookup.c 112;" d file:
-EQ_REQ_URI_STR modules/tm/t_lookup.c 118;" d file:
-EQ_STR modules/tm/t_lookup.c 115;" d file:
-EQ_VIA_LEN modules/tm/t_lookup.c 105;" d file:
-EQ_VIA_STR modules/tm/t_lookup.c 122;" d file:
-ERASE_CELL modules/pdt/domains.h 37;" d
-ERR modules/cpl-c/cpl_log.h 44;" d
-ERROR cfg.tab.c /^ ERROR = 266,$/;" e enum:yytokentype file:
-ERROR cfg.tab.c 208;" d file:
-ERROR cfg.tab.h /^ ERROR = 266,$/;" e enum:yytokentype
-ERROR cfg.tab.h 184;" d
-ERROR crc.c 37;" d file:
-ERROR modules/auth/api.h /^ ERROR = -2 , \/* Error occurred, a reply has been sent out -> return 0 to the ser core *\/$/;" e enum:auth_result
-ERROR modules/auth_diameter/defs.h /^ ERROR = -2 , \/* Error occurred, a reply has been $/;" e enum:auth_result
-ERROR_STR modules/cpl-c/CPL_tree.h 180;" d
-ERROR_STR_LEN modules/cpl-c/CPL_tree.h 181;" d
-ERROR_T route_struct.h /^enum { FORWARD_T=1, SEND_T, DROP_T, LOG_T, ERROR_T, ROUTE_T, EXEC_T,$/;" e
-ERROR_VAL modules/cpl-c/CPL_tree.h 179;" d
-ERR_LEN modules/cpl-c/cpl_log.h 45;" d
-ERR_MODEM_TEXT modules/sms/sms_funcs.c 84;" d file:
-ERR_MODEM_TEXT_LEN modules/sms/sms_funcs.c 86;" d file:
-ERR_NUMBER_TEXT modules/sms/sms_funcs.c 74;" d file:
-ERR_NUMBER_TEXT_LEN modules/sms/sms_funcs.c 77;" d file:
-ERR_TRUNCATE_TEXT modules/sms/sms_funcs.c 79;" d file:
-ERR_TRUNCATE_TEXT_LEN modules/sms/sms_funcs.c 82;" d file:
-ESCAPE modules/exec/exec_hf.h 56;" d
-EUNATCH modules/postgres/aug_sysdep.h 248;" d
-EVENT modules/pa/notify.c 53;" d file:
-EVENT_L modules/pa/notify.c 54;" d file:
-EVENT_LOCATION parser/parse_event.h 45;" d
-EVENT_OTHER parser/parse_event.h 41;" d
-EVENT_PRESENCE parser/parse_event.h 42;" d
-EVENT_PRESENCE_WINFO parser/parse_event.h 43;" d
-EVENT_START modules/pa/watcher.c 559;" d file:
-EVENT_START_L modules/pa/watcher.c 560;" d file:
-EVENT_XCAP_CHANGE parser/parse_event.h 44;" d
-EV_ASSIGN modules/exec/exec_hf.h 48;" d
-EV_DID modules/exec/exec_hf.h 46;" d
-EV_ORURI modules/exec/exec_hf.h 42;" d
-EV_OUSER modules/exec/exec_hf.h 44;" d
-EV_RURI modules/exec/exec_hf.h 41;" d
-EV_SRCIP modules/exec/exec_hf.h 40;" d
-EV_TID modules/exec/exec_hf.h 45;" d
-EV_USER modules/exec/exec_hf.h 43;" d
-EXEC cfg.tab.c /^ EXEC = 270,$/;" e enum:yytokentype file:
-EXEC cfg.tab.c 212;" d file:
-EXEC cfg.tab.h /^ EXEC = 270,$/;" e enum:yytokentype
-EXEC cfg.tab.h 188;" d
-EXEC_T route_struct.h /^enum { FORWARD_T=1, SEND_T, DROP_T, LOG_T, ERROR_T, ROUTE_T, EXEC_T,$/;" e
-EXPIRES_COL modules/usrloc/ul_mod.c 63;" d file:
-EXPIRES_PARAM modules/registrar/reply.c 59;" d file:
-EXPIRES_PARAM_LEN modules/registrar/reply.c 60;" d file:
-EXPI_RES_CASE parser/case_expi.h 41;" d
-EXPONENT_LENGTH modules/jabber/xsnprintf.c 261;" d file:
-EXPRESSION_LENGTH modules/permissions/rule.h 36;" d
-EXPR_DROP route_struct.h 42;" d
-EXPR_ST route_struct.h /^ EXPR_ST, ACTIONS_ST, CMDF_ST, MODFIXUP_ST, URIHOST_ST, URIPORT_ST,$/;" e
-EXP_T route_struct.h /^enum { EXP_T=1, ELEM_T };$/;" e
-EXTERNAL_CANCEL modules/tm/h_table.h 76;" d
-EXTRA_DEBUG_STR version.h 88;" d
-EXTRA_DEBUG_STR version.h 90;" d
-EXT_REWRITE_URI modules/ext/ext.c 60;" d file:
-EXT_REWRITE_USER modules/ext/ext.c 61;" d file:
-E_BAD_ADDRESS error.h 61;" d
-E_BAD_PROTO error.h 65;" d
-E_BAD_RE error.h 34;" d
-E_BAD_REQ error.h 67;" d
-E_BAD_SERVER error.h 70;" d
-E_BAD_TO error.h 49;" d
-E_BAD_TUPEL error.h 42;" d
-E_BAD_URI error.h 63;" d
-E_BAD_VIA error.h 40;" d
-E_BUG error.h 36;" d
-E_CFG error.h 37;" d
-E_DIG_CNONCE parser/digest/digest.h /^ E_DIG_CNONCE = 32, \/* CNONCE missing *\/$/;" e enum:dig_err
-E_DIG_DOMAIN parser/digest/digest.h /^ E_DIG_DOMAIN = 128 \/* Username domain != realm *\/$/;" e enum:dig_err
-E_DIG_NC parser/digest/digest.h /^ E_DIG_NC = 64, \/* Nonce-count missing *\/$/;" e enum:dig_err
-E_DIG_NONCE parser/digest/digest.h /^ E_DIG_NONCE = 4, \/* Nonce value missing *\/$/;" e enum:dig_err
-E_DIG_OK parser/digest/digest.h /^ E_DIG_OK = 0, \/* Everything is OK *\/$/;" e enum:dig_err
-E_DIG_REALM parser/digest/digest.h /^ E_DIG_REALM = 2, \/* Realm missing *\/$/;" e enum:dig_err
-E_DIG_RESPONSE parser/digest/digest.h /^ E_DIG_RESPONSE = 16, \/* Response missing *\/$/;" e enum:dig_err
-E_DIG_URI parser/digest/digest.h /^ E_DIG_URI = 8, \/* URI missing *\/$/;" e enum:dig_err
-E_DIG_USERNAME parser/digest/digest.h /^ E_DIG_USERNAME = 1, \/* Username missing *\/$/;" e enum:dig_err
-E_DISPLAY_QUOTED parser/parse_to.c /^ START_TO, DISPLAY_QUOTED, E_DISPLAY_QUOTED, DISPLAY_TOKEN,$/;" e file:
-E_EXEC error.h 46;" d
-E_INFO modules/registrar/reply.c 50;" d file:
-E_INFO_LEN modules/registrar/reply.c 51;" d file:
-E_INVALID_PARAMS error.h 51;" d
-E_NO_SOCKET error.h 38;" d
-E_OUT_OF_MEM error.h 33;" d
-E_PARA_VALUE parser/parse_to.c /^ TAG3, PARA_VALUE_TOKEN , PARA_VALUE_QUOTED, E_PARA_VALUE$/;" e file:
-E_Q_DEC_MISSING error.h 56;" d
-E_Q_EMPTY error.h 54;" d
-E_Q_INV_CHAR error.h 53;" d
-E_Q_TOO_BIG error.h 55;" d
-E_SCRIPT error.h 44;" d
-E_SEND error.h 59;" d
-E_TOO_MANY_BRANCHES error.h 48;" d
-E_UNSPEC error.h 32;" d
-E_URI_ENCLOSED parser/parse_to.c /^ S_URI_ENCLOSED, URI_ENCLOSED, E_URI_ENCLOSED,$/;" e file:
-Ei modules/jabber/sha.c 74;" d file:
-EnT_ parser/obsolete/strs.h 290;" d
-Encode md5.c /^static void Encode (output, input, len)$/;" f file:
-EndMediaSession modules/mediaproxy/mediaproxy.c /^EndMediaSession(struct sip_msg* msg, char* str1, char* str2)$/;" f file:
-Ent_ parser/obsolete/strs.h 289;" d
-F md5.c 76;" d file:
-FAILURE_NODE modules/cpl-c/CPL_tree.h 42;" d
-FAILURE_ROUTE sr_module.h 70;" d
-FAILURE_RT_NO config.h 60;" d
-FAKED_REPLY parser/msg_parser.h 249;" d
-FALSE db/example/dbexample.c 38;" d file:
-FALSE modules/dbtext/dbtex/dbtex.c 44;" d file:
-FALSE modules/jabber/xsnprintf.c 247;" d file:
-FAST_LOCK_STR version.h 155;" d
-FAST_LOCK_STR version.h 157;" d
-FAST_LOCK_STR version.h 159;" d
-FAST_LOCK_STR version.h 162;" d
-FD_CLR_AND_MAX modules/extcmd/extcmd_funcs.c /^inline void FD_CLR_AND_MAX( fd_set *fdset, int fd, int *max_fd)$/;" f
-FD_SET_AND_MAX modules/extcmd/extcmd_funcs.c /^inline void FD_SET_AND_MAX( fd_set *fdset, int fd, int *max_fd)$/;" f
-FF md5.c 88;" d file:
-FIELD_ATTR modules/cpl-c/CPL_tree.h 70;" d
-FIFO cfg.tab.c /^ FIFO = 325,$/;" e enum:yytokentype file:
-FIFO cfg.tab.c 267;" d file:
-FIFO cfg.tab.h /^ FIFO = 325,$/;" e enum:yytokentype
-FIFO cfg.tab.h 243;" d
-FIFO_ARG fifo_server.h 49;" d
-FIFO_CALLID modules/usrloc/ul_fifo.c 55;" d file:
-FIFO_CALLID_LEN modules/usrloc/ul_fifo.c 56;" d file:
-FIFO_CSEQ modules/usrloc/ul_fifo.c 57;" d file:
-FIFO_DB db/db_fifo.h 36;" d
-FIFO_DB_URL cfg.tab.c /^ FIFO_DB_URL = 330,$/;" e enum:yytokentype file:
-FIFO_DB_URL cfg.tab.c 272;" d file:
-FIFO_DB_URL cfg.tab.h /^ FIFO_DB_URL = 330,$/;" e enum:yytokentype
-FIFO_DB_URL cfg.tab.h 248;" d
-FIFO_DIR cfg.tab.c /^ FIFO_DIR = 326,$/;" e enum:yytokentype file:
-FIFO_DIR cfg.tab.c 268;" d file:
-FIFO_DIR cfg.tab.h /^ FIFO_DIR = 326,$/;" e enum:yytokentype
-FIFO_DIR cfg.tab.h 244;" d
-FIFO_H modules/permissions/fifo.h 30;" d
-FIFO_IS_GFLAG modules/gflags/gflags.c 51;" d file:
-FIFO_KILL fifo_server.h 53;" d
-FIFO_PRINT fifo_server.h 39;" d
-FIFO_PS fifo_server.h 47;" d
-FIFO_PWD fifo_server.h 51;" d
-FIFO_REPLY_RETRIES config.h 173;" d
-FIFO_REPLY_WAIT config.h 174;" d
-FIFO_RESET_GFLAG modules/gflags/gflags.c 52;" d file:
-FIFO_ROUTE_PREFIX modules/tm/uac_fifo.c 458;" d file:
-FIFO_ROUTE_PREFIX modules/tm/uac_unixsock.c 353;" d file:
-FIFO_ROUTE_SEPARATOR modules/tm/uac_fifo.c 459;" d file:
-FIFO_ROUTE_SEPARATOR modules/tm/uac_unixsock.c 354;" d file:
-FIFO_SET_GFLAG modules/gflags/gflags.c 50;" d file:
-FIFO_UA modules/usrloc/ul_fifo.c 58;" d file:
-FIFO_UA_LEN modules/usrloc/ul_fifo.c 59;" d file:
-FIFO_UPTIME fifo_server.h 41;" d
-FIFO_VERSION fifo_server.h 43;" d
-FIFO_WHICH fifo_server.h 45;" d
-FILE_LOAD_ERR modules/cpl-c/cpl_loader.c 247;" d file:
-FILE_NAME_SUFIX modules/cpl-c/cpl_nonsig.c 52;" d file:
-FILE_NAME_SUFIX_LEN modules/cpl-c/cpl_nonsig.c 53;" d file:
-FILE_SUFFIX modules/flatstore/flat_con.c 38;" d file:
-FILE_SUFFIX_LEN modules/flatstore/flat_con.c 39;" d file:
-FIN_ACK parser/parse_fline.c /^ FIN_INVITE = 100, FIN_ACK, FIN_CANCEL, FIN_BYE, FIN_SIP,$/;" e file:
-FIN_ALIAS parser/parse_via.c /^ FIN_MADDR, FIN_RECEIVED, FIN_RPORT, FIN_I, FIN_ALIAS$/;" e file:
-FIN_BRANCH parser/parse_via.c /^ FIN_HIDDEN = 230, FIN_TTL, FIN_BRANCH,$/;" e file:
-FIN_BRANCH test/via_parse.c /^ FIN_HIDDEN, FIN_TTL, FIN_BRANCH, FIN_MADDR, FIN_RECEIVED,$/;" e file:
-FIN_BYE parser/parse_fline.c /^ FIN_INVITE = 100, FIN_ACK, FIN_CANCEL, FIN_BYE, FIN_SIP,$/;" e file:
-FIN_CANCEL parser/parse_fline.c /^ FIN_INVITE = 100, FIN_ACK, FIN_CANCEL, FIN_BYE, FIN_SIP,$/;" e file:
-FIN_HIDDEN parser/parse_via.c /^ FIN_HIDDEN = 230, FIN_TTL, FIN_BRANCH,$/;" e file:
-FIN_HIDDEN test/via_parse.c /^ FIN_HIDDEN, FIN_TTL, FIN_BRANCH, FIN_MADDR, FIN_RECEIVED,$/;" e file:
-FIN_I parser/parse_via.c /^ FIN_MADDR, FIN_RECEIVED, FIN_RPORT, FIN_I, FIN_ALIAS$/;" e file:
-FIN_INVITE parser/parse_fline.c /^ FIN_INVITE = 100, FIN_ACK, FIN_CANCEL, FIN_BYE, FIN_SIP,$/;" e file:
-FIN_MADDR parser/parse_via.c /^ FIN_MADDR, FIN_RECEIVED, FIN_RPORT, FIN_I, FIN_ALIAS$/;" e file:
-FIN_MADDR test/via_parse.c /^ FIN_HIDDEN, FIN_TTL, FIN_BRANCH, FIN_MADDR, FIN_RECEIVED,$/;" e file:
-FIN_RECEIVED parser/parse_via.c /^ FIN_MADDR, FIN_RECEIVED, FIN_RPORT, FIN_I, FIN_ALIAS$/;" e file:
-FIN_RECEIVED test/via_parse.c /^ FIN_HIDDEN, FIN_TTL, FIN_BRANCH, FIN_MADDR, FIN_RECEIVED,$/;" e file:
-FIN_RPORT parser/parse_via.c /^ FIN_MADDR, FIN_RECEIVED, FIN_RPORT, FIN_I, FIN_ALIAS$/;" e file:
-FIN_SIP parser/parse_fline.c /^ FIN_INVITE = 100, FIN_ACK, FIN_CANCEL, FIN_BYE, FIN_SIP,$/;" e file:
-FIN_SIP parser/parse_via.c /^ SIP1, SIP2, FIN_SIP,$/;" e file:
-FIN_SIP test/via_parse.c /^ SIP1, SIP2, FIN_SIP,$/;" e file:
-FIN_TCP parser/parse_via.c /^ TCP_TLS1, TCP2, FIN_TCP,$/;" e file:
-FIN_TLS parser/parse_via.c /^ TLS2, FIN_TLS,$/;" e file:
-FIN_TTL parser/parse_via.c /^ FIN_HIDDEN = 230, FIN_TTL, FIN_BRANCH,$/;" e file:
-FIN_TTL test/via_parse.c /^ FIN_HIDDEN, FIN_TTL, FIN_BRANCH, FIN_MADDR, FIN_RECEIVED,$/;" e file:
-FIN_UDP parser/parse_via.c /^ UDP1, UDP2, FIN_UDP,$/;" e file:
-FIN_VER parser/parse_fline.c /^ VER1, VER2, VER3, VER4, VER5, VER6, FIN_VER,$/;" e file:
-FIN_VER parser/parse_via.c /^ VER1, VER2, FIN_VER,$/;" e file:
-FIN_VER test/via_parse.c /^ VER1, VER2, FIN_VER,$/;" e file:
-FIRSTONLY_VAL modules/cpl-c/CPL_tree.h 162;" d
-FIRST_QUATERNIONS parser/digest/param_parser.c 179;" d file:
-FIRST_QUATERNIONS parser/parse_hname2.c 93;" d file:
-FIX_MEDIP modules/nathelper/nathelper.c 738;" d file:
-FIX_PRECISION modules/jabber/xsnprintf.c 316;" d file:
-FLAGS test/ifls.c 53;" d file:
-FLAGS_ATTR modules/avp/avp.c 44;" d file:
-FLAGS_ATTR_LEN modules/avp/avp.c 45;" d file:
-FLAGS_COL modules/usrloc/ul_mod.c 69;" d file:
-FLAGS_SIZE modules/acc/diam_message.h 42;" d
-FLAGS_SIZE modules/auth_diameter/diameter_msg.h 42;" d
-FLATSTORE_MOD_H modules/flatstore/flatstore_mod.h 37;" d
-FLAT_ROTATE modules/flatstore/flat_fifo.c 36;" d file:
-FLAT_ROTATE_LEN modules/flatstore/flat_fifo.c 37;" d file:
-FLEXINT_H lex.yy.c 29;" d file:
-FLEX_BETA lex.yy.c 13;" d file:
-FLEX_SCANNER lex.yy.c 8;" d file:
-FLOAT4OID modules/postgres/pg_type.h 59;" d
-FLOAT8OID modules/postgres/pg_type.h 60;" d
-FLOAT_DIGITS modules/jabber/xsnprintf.c 260;" d file:
-FLOOR_ETAG modules/pa/pidf.c 127;" d file:
-FLOOR_ETAG_L modules/pa/pidf.c 128;" d file:
-FLOOR_STAG modules/pa/pidf.c 124;" d file:
-FLOOR_STAG_L modules/pa/pidf.c 125;" d file:
-FL_ACC flags.h /^ FL_BROWN, FL_BLACK, FL_ACC, FL_MAX };$/;" e
-FL_ALL modules/usrloc/ucontact.h /^ FL_ALL = 0xFFFFFFFF \/* All flags set *\/$/;" e enum:flags
-FL_BLACK flags.h /^ FL_BROWN, FL_BLACK, FL_ACC, FL_MAX };$/;" e
-FL_BLUE flags.h /^enum { FL_WHITE=1, FL_YELLOW, FL_GREEN, FL_RED, FL_BLUE, FL_MAGENTA,$/;" e
-FL_BROWN flags.h /^ FL_BROWN, FL_BLACK, FL_ACC, FL_MAX };$/;" e
-FL_FORCE_ACTIVE parser/msg_parser.h 72;" d
-FL_FORCE_RPORT parser/msg_parser.h 71;" d
-FL_GREEN flags.h /^enum { FL_WHITE=1, FL_YELLOW, FL_GREEN, FL_RED, FL_BLUE, FL_MAGENTA,$/;" e
-FL_INVITE modules/usrloc/ucontact.h /^ FL_INVITE = 1 << 1, \/* Contact supports INVITE and related methods *\/$/;" e enum:flags
-FL_MAGENTA flags.h /^enum { FL_WHITE=1, FL_YELLOW, FL_GREEN, FL_RED, FL_BLUE, FL_MAGENTA,$/;" e
-FL_MAX flags.h /^ FL_BROWN, FL_BLACK, FL_ACC, FL_MAX };$/;" e
-FL_MEM modules/usrloc/ucontact.h /^ FL_MEM = 1 << 8, \/* Update memory only -- used for REGISTER replication *\/$/;" e enum:flags
-FL_MESSAGE modules/usrloc/ucontact.h /^ FL_MESSAGE = 1 << 3, \/* Contact supports MESSAGE *\/$/;" e enum:flags
-FL_NAT modules/usrloc/ucontact.h /^ FL_NAT = 1 << 0, \/* Contact is behind NAT *\/$/;" e enum:flags
-FL_NONE modules/usrloc/ucontact.h /^ FL_NONE = 0, \/* No flags set *\/$/;" e enum:flags
-FL_N_INVITE modules/usrloc/ucontact.h /^ FL_N_INVITE = 1 << 2, \/* Contact doesn't support INVITE and related methods *\/$/;" e enum:flags
-FL_N_MESSAGE modules/usrloc/ucontact.h /^ FL_N_MESSAGE = 1 << 4, \/* Contact doesn't support MESSAGE *\/$/;" e enum:flags
-FL_N_SUBSCRIBE modules/usrloc/ucontact.h /^ FL_N_SUBSCRIBE = 1 << 6, \/* Contact doesn't support SUBSCRIBE and NOTIFY *\/$/;" e enum:flags
-FL_PERMANENT modules/usrloc/ucontact.h /^ FL_PERMANENT = 1 << 7, \/* Permanent contact (does not expire) *\/$/;" e enum:flags
-FL_RED flags.h /^enum { FL_WHITE=1, FL_YELLOW, FL_GREEN, FL_RED, FL_BLUE, FL_MAGENTA,$/;" e
-FL_SDP_IP_AFS parser/msg_parser.h 73;" d
-FL_SDP_PORT_AFS parser/msg_parser.h 74;" d
-FL_SUBSCRIBE modules/usrloc/ucontact.h /^ FL_SUBSCRIBE = 1 << 5, \/* Contact supports SUBSCRIBE and NOTIFY *\/$/;" e enum:flags
-FL_WHITE flags.h /^enum { FL_WHITE=1, FL_YELLOW, FL_GREEN, FL_RED, FL_BLUE, FL_MAGENTA,$/;" e
-FL_YELLOW flags.h /^enum { FL_WHITE=1, FL_YELLOW, FL_GREEN, FL_RED, FL_BLUE, FL_MAGENTA,$/;" e
-FORCE_RPORT cfg.tab.c /^ FORCE_RPORT = 282,$/;" e enum:yytokentype file:
-FORCE_RPORT cfg.tab.c 224;" d file:
-FORCE_RPORT cfg.tab.h /^ FORCE_RPORT = 282,$/;" e enum:yytokentype
-FORCE_RPORT cfg.tab.h 200;" d
-FORCE_RPORT_T route_struct.h /^ FORCE_RPORT_T,$/;" e
-FORCE_SEND_SOCKET cfg.tab.c /^ FORCE_SEND_SOCKET = 288,$/;" e enum:yytokentype file:
-FORCE_SEND_SOCKET cfg.tab.c 230;" d file:
-FORCE_SEND_SOCKET cfg.tab.h /^ FORCE_SEND_SOCKET = 288,$/;" e enum:yytokentype
-FORCE_SEND_SOCKET cfg.tab.h 206;" d
-FORCE_SEND_SOCKET_T route_struct.h /^ FORCE_SEND_SOCKET_T$/;" e
-FORCE_TCP_ALIAS cfg.tab.c /^ FORCE_TCP_ALIAS = 283,$/;" e enum:yytokentype file:
-FORCE_TCP_ALIAS cfg.tab.c 225;" d file:
-FORCE_TCP_ALIAS cfg.tab.h /^ FORCE_TCP_ALIAS = 283,$/;" e enum:yytokentype
-FORCE_TCP_ALIAS cfg.tab.h 201;" d
-FORCE_TCP_ALIAS_T route_struct.h /^ FORCE_TCP_ALIAS_T,$/;" e
-FORK cfg.tab.c /^ FORK = 311,$/;" e enum:yytokentype file:
-FORK cfg.tab.c 253;" d file:
-FORK cfg.tab.h /^ FORK = 311,$/;" e enum:yytokentype
-FORK cfg.tab.h 229;" d
-FORW parser/obsolete/strs.h 205;" d
-FORWARD cfg.tab.c /^ FORWARD = 258,$/;" e enum:yytokentype file:
-FORWARD cfg.tab.c 200;" d file:
-FORWARD cfg.tab.h /^ FORWARD = 258,$/;" e enum:yytokentype
-FORWARD cfg.tab.h 176;" d
-FORWARD_T route_struct.h /^enum { FORWARD_T=1, SEND_T, DROP_T, LOG_T, ERROR_T, ROUTE_T, EXEC_T,$/;" e
-FORWARD_TCP cfg.tab.c /^ FORWARD_TCP = 259,$/;" e enum:yytokentype file:
-FORWARD_TCP cfg.tab.c 201;" d file:
-FORWARD_TCP cfg.tab.h /^ FORWARD_TCP = 259,$/;" e enum:yytokentype
-FORWARD_TCP cfg.tab.h 177;" d
-FORWARD_TCP_T route_struct.h /^ FORWARD_TCP_T,$/;" e
-FORWARD_TLS cfg.tab.c /^ FORWARD_TLS = 260,$/;" e enum:yytokentype file:
-FORWARD_TLS cfg.tab.c 202;" d file:
-FORWARD_TLS cfg.tab.h /^ FORWARD_TLS = 260,$/;" e enum:yytokentype
-FORWARD_TLS cfg.tab.h 178;" d
-FORWARD_TLS_T route_struct.h /^ FORWARD_TLS_T,$/;" e
-FORWARD_UDP cfg.tab.c /^ FORWARD_UDP = 261,$/;" e enum:yytokentype file:
-FORWARD_UDP cfg.tab.c 203;" d file:
-FORWARD_UDP cfg.tab.h /^ FORWARD_UDP = 261,$/;" e enum:yytokentype
-FORWARD_UDP cfg.tab.h 179;" d
-FORWARD_UDP_T route_struct.h /^ FORWARD_UDP_T,$/;" e
-FORW_CASE parser/case_max.h 43;" d
-FOR_ALL_ATTR modules/cpl-c/cpl_parser.c 62;" d file:
-FORw parser/obsolete/strs.h 204;" d
-FOrW parser/obsolete/strs.h 203;" d
-FOrw parser/obsolete/strs.h 202;" d
-FRAG_CLEAR_USED mem/f_malloc.c 85;" d file:
-FRAG_CLEAR_USED mem/q_malloc.c 100;" d file:
-FRAG_END mem/q_malloc.c 54;" d file:
-FRAG_END mem/vq_malloc.h 41;" d
-FRAG_ISUSED mem/vq_malloc.h 54;" d
-FRAG_MARK_USED mem/f_malloc.c 84;" d file:
-FRAG_MARK_USED mem/q_malloc.c 99;" d file:
-FRAG_NEXT mem/f_malloc.c 53;" d file:
-FRAG_NEXT mem/q_malloc.c 58;" d file:
-FRAG_NEXT mem/vq_malloc.h 45;" d
-FRAG_OVERHEAD mem/f_malloc.c 56;" d file:
-FRAG_OVERHEAD mem/q_malloc.c 71;" d file:
-FRAG_PREV mem/q_malloc.c 62;" d file:
-FRAG_PREV mem/vq_malloc.h 51;" d
-FRAG_WAS_USED mem/f_malloc.c 86;" d file:
-FRAG_WAS_USED mem/q_malloc.c 101;" d file:
-FREQ_ATTR modules/cpl-c/CPL_tree.h 105;" d
-FREQ_DAILY modules/cpl-c/cpl_time.h 105;" d
-FREQ_MONTHLY modules/cpl-c/cpl_time.h 103;" d
-FREQ_NOFREQ modules/cpl-c/cpl_time.h 101;" d
-FREQ_WEEKLY modules/cpl-c/cpl_time.h 104;" d
-FREQ_YEARLY modules/cpl-c/cpl_time.h 102;" d
-FROM modules/tm/t_msgbuilder.h 48;" d
-FROM parser/obsolete/strs.h 90;" d
-FROM1 parser/obsolete/parse_hname.c /^ FROM1, FROM2, FROM3,$/;" e file:
-FROM1 test/auto.c /^ FROM1, FROM2, FROM3,$/;" e file:
-FROM2 parser/obsolete/parse_hname.c /^ FROM1, FROM2, FROM3,$/;" e file:
-FROM2 test/auto.c /^ FROM1, FROM2, FROM3,$/;" e file:
-FROM3 parser/obsolete/parse_hname.c /^ FROM1, FROM2, FROM3,$/;" e file:
-FROM3 test/auto.c /^ FROM1, FROM2, FROM3,$/;" e file:
-FROMTAG modules/tm/t_msgbuilder.h 50;" d
-FROMTAG_LEN modules/tm/t_msgbuilder.h 51;" d
-FROM_LEN modules/tm/t_msgbuilder.h 49;" d
-FROM_TAG_LEN modules/tm/uac.c 72;" d file:
-FROM_URI cfg.tab.c /^ FROM_URI = 297,$/;" e enum:yytokentype file:
-FROM_URI cfg.tab.c 239;" d file:
-FROM_URI cfg.tab.h /^ FROM_URI = 297,$/;" e enum:yytokentype
-FROM_URI cfg.tab.h 215;" d
-FROM_URI_O route_struct.h /^enum { METHOD_O=1, URI_O, FROM_URI_O, TO_URI_O, SRCIP_O, SRCPORT_O,$/;" e
-FROm parser/obsolete/strs.h 89;" d
-FR_INV_TIMER_AVP modules/tm/t_funcs.h 78;" d
-FR_INV_TIMER_LIST modules/tm/timer.h /^ FR_TIMER_LIST, FR_INV_TIMER_LIST,$/;" e enum:lists
-FR_TIMER_AVP modules/tm/t_funcs.h 77;" d
-FR_TIMER_LIST modules/tm/timer.h /^ FR_TIMER_LIST, FR_INV_TIMER_LIST,$/;" e enum:lists
-FR_TIME_OUT modules/tm/config.h 49;" d
-FR_USED mem/vq_malloc.h 38;" d
-FRoM parser/obsolete/strs.h 88;" d
-FRom parser/obsolete/strs.h 87;" d
-FTH_CMD modules/extcmd/extcmd_funcs.c 61;" d file:
-F_CALLID parser/obsolete/parse_hname.c /^ F_VIA=1000, F_FROM, F_TO, F_CSEQ, F_CALLID, F_CONTACT, F_MAXFORWARDS,$/;" e file:
-F_CALLID test/auto.c /^ F_VIA=1000, F_FROM, F_TO, F_CSEQ, F_CALLID, F_CONTACT, F_MAXFORWARDS,$/;" e file:
-F_COMMENT parser/parse_via.c /^ F_COMMENT, P_COMMENT,$/;" e file:
-F_COMMENT test/via_parse.c /^ F_COMMENT, P_COMMENT,$/;" e file:
-F_CONN_NON_BLOCKING tcp_conn.h 60;" d
-F_CONTACT parser/obsolete/parse_hname.c /^ F_VIA=1000, F_FROM, F_TO, F_CSEQ, F_CALLID, F_CONTACT, F_MAXFORWARDS,$/;" e file:
-F_CONTACT test/auto.c /^ F_VIA=1000, F_FROM, F_TO, F_CSEQ, F_CALLID, F_CONTACT, F_MAXFORWARDS,$/;" e file:
-F_CR parser/parse_fline.c /^ L_LF, F_CR, F_LF$/;" e file:
-F_CR parser/parse_to.c /^ URI_OR_TOKEN, MAYBE_URI_END, END, F_CR, F_LF, F_CRLF$/;" e file:
-F_CR parser/parse_via.c /^ F_CR,$/;" e file:
-F_CR test/via_parse.c /^ F_CR,$/;" e file:
-F_CRLF parser/parse_to.c /^ URI_OR_TOKEN, MAYBE_URI_END, END, F_CR, F_LF, F_CRLF$/;" e file:
-F_CRLF parser/parse_via.c /^ F_CRLF,$/;" e file:
-F_CRLF test/via_parse.c /^ F_CRLF,$/;" e file:
-F_CSEQ parser/obsolete/parse_hname.c /^ F_VIA=1000, F_FROM, F_TO, F_CSEQ, F_CALLID, F_CONTACT, F_MAXFORWARDS,$/;" e file:
-F_CSEQ test/auto.c /^ F_VIA=1000, F_FROM, F_TO, F_CSEQ, F_CALLID, F_CONTACT, F_MAXFORWARDS,$/;" e file:
-F_FROM parser/obsolete/parse_hname.c /^ F_VIA=1000, F_FROM, F_TO, F_CSEQ, F_CALLID, F_CONTACT, F_MAXFORWARDS,$/;" e file:
-F_FROM test/auto.c /^ F_VIA=1000, F_FROM, F_TO, F_CSEQ, F_CALLID, F_CONTACT, F_MAXFORWARDS,$/;" e file:
-F_HASH_SIZE mem/f_malloc.h 69;" d
-F_HOST parser/parse_via.c /^ F_HOST, P_HOST,$/;" e file:
-F_HOST test/via_parse.c /^enum{ F_HOST, P_HOST,$/;" e file:
-F_IP6HOST parser/parse_via.c /^ F_IP6HOST, P_IP6HOST, $/;" e file:
-F_IP6HOST test/via_parse.c /^ F_IP6HOST, P_IP6HOST,$/;" e file:
-F_LF parser/parse_fline.c /^ L_LF, F_CR, F_LF$/;" e file:
-F_LF parser/parse_to.c /^ URI_OR_TOKEN, MAYBE_URI_END, END, F_CR, F_LF, F_CRLF$/;" e file:
-F_LF parser/parse_via.c /^ F_LF,$/;" e file:
-F_LF test/via_parse.c /^ F_LF,$/;" e file:
-F_MALLOC_OPTIMIZE mem/f_malloc.h 64;" d
-F_MALLOC_OPTIMIZE_FACTOR mem/f_malloc.h 63;" d
-F_MALLOC_STR version.h 124;" d
-F_MALLOC_STR version.h 126;" d
-F_MAXFORWARDS parser/obsolete/parse_hname.c /^ F_VIA=1000, F_FROM, F_TO, F_CSEQ, F_CALLID, F_CONTACT, F_MAXFORWARDS,$/;" e file:
-F_MAXFORWARDS test/auto.c /^ F_VIA=1000, F_FROM, F_TO, F_CSEQ, F_CALLID, F_CONTACT, F_MAXFORWARDS,$/;" e file:
-F_PARAM parser/parse_via.c /^ L_PARAM, F_PARAM, P_PARAM,$/;" e file:
-F_PARAM test/via_parse.c /^ L_PARAM, F_PARAM, P_PARAM,$/;" e file:
-F_PORT parser/parse_via.c /^ L_PORT, F_PORT, P_PORT,$/;" e file:
-F_PORT test/via_parse.c /^ L_PORT, F_PORT, P_PORT,$/;" e file:
-F_PROTO parser/parse_via.c /^ L_PROTO, F_PROTO$/;" e file:
-F_PROTO test/via_parse.c /^ L_PROTO, F_PROTO, P_PROTO$/;" e file:
-F_RECROUTE parser/obsolete/parse_hname.c /^ F_ROUTE, F_RECROUTE,$/;" e file:
-F_ROUTE parser/obsolete/parse_hname.c /^ F_ROUTE, F_RECROUTE,$/;" e file:
-F_ROUTE test/auto.c /^ F_ROUTE,$/;" e file:
-F_SIP parser/parse_via.c /^ F_SIP = 100,$/;" e file:
-F_SIP test/via_parse.c /^enum{ F_SIP=100,$/;" e file:
-F_TO parser/obsolete/parse_hname.c /^ F_VIA=1000, F_FROM, F_TO, F_CSEQ, F_CALLID, F_CONTACT, F_MAXFORWARDS,$/;" e file:
-F_TO test/auto.c /^ F_VIA=1000, F_FROM, F_TO, F_CSEQ, F_CALLID, F_CONTACT, F_MAXFORWARDS,$/;" e file:
-F_VALUE parser/parse_via.c /^ L_VALUE = 200, F_VALUE, P_VALUE, P_STRING,$/;" e file:
-F_VALUE test/via_parse.c /^enum{ L_VALUE=200, F_VALUE, P_VALUE, P_STRING,$/;" e file:
-F_VER parser/parse_via.c /^ L_VER, F_VER,$/;" e file:
-F_VER test/via_parse.c /^ L_VER, F_VER,$/;" e file:
-F_VIA parser/obsolete/parse_hname.c /^ F_VIA=1000, F_FROM, F_TO, F_CSEQ, F_CALLID, F_CONTACT, F_MAXFORWARDS,$/;" e file:
-F_VIA parser/parse_via.c /^ L_VIA, F_VIA,$/;" e file:
-F_VIA test/auto.c /^ F_VIA=1000, F_FROM, F_TO, F_CSEQ, F_CALLID, F_CONTACT, F_MAXFORWARDS,$/;" e file:
-F_VIA test/via_parse.c /^ L_VIA, F_VIA,$/;" e file:
-False modules/mediaproxy/mediaproxy.c 84;" d file:
-FixContact modules/mediaproxy/functions.h /^FixContact(struct sip_msg* msg, char* str1, char* str2)$/;" f
-FoRW parser/obsolete/strs.h 201;" d
-FoRw parser/obsolete/strs.h 200;" d
-ForW parser/obsolete/strs.h 199;" d
-Forw parser/obsolete/strs.h 198;" d
-FrOM parser/obsolete/strs.h 86;" d
-FrOm parser/obsolete/strs.h 85;" d
-FroM parser/obsolete/strs.h 84;" d
-From parser/obsolete/strs.h 83;" d
-G md5.c 77;" d file:
-GALIAS_CHAR_MARKER usr_avp.h 56;" d
-GENERAL_PARAM parser/parse_to.h /^ TAG_PARAM = 400, GENERAL_PARAM$/;" e
-GEN_LOCK_T_PREFERED lock_ops.h 225;" d
-GEN_LOCK_T_PREFERED lock_ops.h 248;" d
-GEN_PARAM parser/parse_via.h /^ GEN_PARAM,$/;" e
-GEN_PARAM test/via_parse.c /^ GEN_PARAM$/;" e file:
-GET_HASH mem/f_malloc.c 72;" d file:
-GET_HASH mem/q_malloc.c 86;" d file:
-GET_NEXT_HOP parser/msg_parser.h 95;" d
-GET_NODE_SIZE modules/cpl-c/CPL_tree.h 215;" d
-GET_RURI parser/msg_parser.h 106;" d
-GG md5.c 93;" d file:
-GRANULARITY mem/memtest.c 138;" d file:
-GREATER_ATTR modules/cpl-c/CPL_tree.h 122;" d
-GROUP cfg.tab.c /^ GROUP = 340,$/;" e enum:yytokentype file:
-GROUP cfg.tab.c 282;" d file:
-GROUP cfg.tab.h /^ GROUP = 340,$/;" e enum:yytokentype
-GROUP cfg.tab.h 258;" d
-GROUPRAD_MOD_H modules/group_radius/grouprad_mod.h 35;" d
-GROUP_COL modules/group/group_mod.c 86;" d file:
-GROUP_COL_LEN modules/group/group_mod.c 87;" d file:
-GROUP_H modules/group/group.h 37;" d
-GROUP_H modules/group_radius/group.h 36;" d
-GROUP_MOD_H modules/group/group_mod.h 36;" d
-GT cfg.tab.c /^ GT = 372,$/;" e enum:yytokentype file:
-GT cfg.tab.c 314;" d file:
-GT cfg.tab.h /^ GT = 372,$/;" e enum:yytokentype
-GT cfg.tab.h 290;" d
-GTE cfg.tab.c /^ GTE = 374,$/;" e enum:yytokentype file:
-GTE cfg.tab.c 316;" d file:
-GTE cfg.tab.h /^ GTE = 374,$/;" e enum:yytokentype
-GTE cfg.tab.h 292;" d
-GTE_OP route_struct.h /^enum { EQUAL_OP=10, MATCH_OP, GT_OP, LT_OP, GTE_OP, LTE_OP, DIFF_OP, NO_OP };$/;" e
-GT_OP route_struct.h /^enum { EQUAL_OP=10, MATCH_OP, GT_OP, LT_OP, GTE_OP, LTE_OP, DIFF_OP, NO_OP };$/;" e
-H md5.c 78;" d file:
-HASH modules/auth_db/rfc2617.h /^typedef char HASH[HASHLEN];$/;" t
-HASH utils/gen_ha1/calc.h /^typedef char HASH[HASHLEN];$/;" t
-HASHHEX modules/auth_db/rfc2617.h /^typedef char HASHHEX[HASHHEXLEN+1];$/;" t
-HASHHEX utils/gen_ha1/calc.h /^typedef char HASHHEX[HASHHEXLEN+1];$/;" t
-HASHHEXLEN modules/auth_db/rfc2617.h 41;" d
-HASHHEXLEN utils/gen_ha1/calc.h 37;" d
-HASHLEN modules/auth_db/rfc2617.h 37;" d
-HASHLEN utils/gen_ha1/calc.h 33;" d
-HASH_H modules/permissions/hash.h 29;" d
-HASH_SIZE modules/domain/domain_mod.h 42;" d
-HASH_SIZE modules/permissions/hash.h 35;" d
-HA_MD5 modules/auth_db/rfc2617.h /^ HA_MD5, \/* Plain MD5 *\/$/;" e
-HA_MD5_SESS modules/auth_db/rfc2617.h /^ HA_MD5_SESS, \/* MD5-Session *\/$/;" e
-HDR_ACCEPT parser/hf.h 66;" d
-HDR_ACCEPTDISPOSITION parser/hf.h 72;" d
-HDR_ACCEPTLANGUAGE parser/hf.h 67;" d
-HDR_ALLOW parser/hf.h 64;" d
-HDR_AUTHORIZATION parser/hf.h 58;" d
-HDR_CALLID parser/hf.h 51;" d
-HDR_CONTACT parser/hf.h 52;" d
-HDR_CONTENTDISPOSITION parser/hf.h 73;" d
-HDR_CONTENTLENGTH parser/hf.h 57;" d
-HDR_CONTENTTYPE parser/hf.h 56;" d
-HDR_CSEQ parser/hf.h 50;" d
-HDR_DIVERSION parser/hf.h 74;" d
-HDR_EOH parser/hf.h 43;" d
-HDR_ERROR parser/hf.h 44;" d
-HDR_EVENT parser/hf.h 65;" d
-HDR_EXPIRES parser/hf.h 59;" d
-HDR_FROM parser/hf.h 49;" d
-HDR_MAXFORWARDS parser/hf.h 53;" d
-HDR_NOT_FOUND modules/cpl-c/cpl_run.c 65;" d file:
-HDR_ORGANIZATION parser/hf.h 68;" d
-HDR_OTHER parser/hf.h 76;" d
-HDR_PRIORITY parser/hf.h 69;" d
-HDR_PROXYAUTH parser/hf.h 60;" d
-HDR_PROXYREQUIRE parser/hf.h 62;" d
-HDR_RECORDROUTE parser/hf.h 55;" d
-HDR_ROUTE parser/hf.h 54;" d
-HDR_RPID parser/hf.h 75;" d
-HDR_SUBJECT parser/hf.h 70;" d
-HDR_SUPPORTED parser/hf.h 61;" d
-HDR_TO parser/hf.h 48;" d
-HDR_UNSUPPORTED parser/hf.h 63;" d
-HDR_USERAGENT parser/hf.h 71;" d
-HDR_VIA parser/hf.h 45;" d
-HDR_VIA1 parser/hf.h 46;" d
-HDR_VIA2 parser/hf.h 47;" d
-HEADER_SIZE modules/extcmd/extcmd_funcs.c 67;" d file:
-HEX2I resolve.h 128;" d
-HEXDIG ip_addr.h 410;" d
-HFN_SYMBOL modules/exec/exec_hf.h 59;" d
-HF_H parser/hf.h 36;" d
-HF_LEN modules/tm/t_lookup.c 130;" d file:
-HF_PREFIX modules/exec/exec_hf.h 37;" d
-HF_PREFIX_LEN modules/exec/exec_hf.h 38;" d
-HF_SEPARATOR modules/exec/exec_hf.h 50;" d
-HF_SEP_STR modules/options/mod_options.h 41;" d
-HF_SEP_STR_LEN modules/options/mod_options.h 42;" d
-HH md5.c 98;" d file:
-HIDDEN1 parser/parse_via.c /^ HIDDEN1, HIDDEN2, HIDDEN3, HIDDEN4, HIDDEN5,$/;" e file:
-HIDDEN1 test/via_parse.c /^ HIDDEN1, HIDDEN2, HIDDEN3, HIDDEN4, HIDDEN5,$/;" e file:
-HIDDEN2 parser/parse_via.c /^ HIDDEN1, HIDDEN2, HIDDEN3, HIDDEN4, HIDDEN5,$/;" e file:
-HIDDEN2 test/via_parse.c /^ HIDDEN1, HIDDEN2, HIDDEN3, HIDDEN4, HIDDEN5,$/;" e file:
-HIDDEN3 parser/parse_via.c /^ HIDDEN1, HIDDEN2, HIDDEN3, HIDDEN4, HIDDEN5,$/;" e file:
-HIDDEN3 test/via_parse.c /^ HIDDEN1, HIDDEN2, HIDDEN3, HIDDEN4, HIDDEN5,$/;" e file:
-HIDDEN4 parser/parse_via.c /^ HIDDEN1, HIDDEN2, HIDDEN3, HIDDEN4, HIDDEN5,$/;" e file:
-HIDDEN4 test/via_parse.c /^ HIDDEN1, HIDDEN2, HIDDEN3, HIDDEN4, HIDDEN5,$/;" e file:
-HIDDEN5 parser/parse_via.c /^ HIDDEN1, HIDDEN2, HIDDEN3, HIDDEN4, HIDDEN5,$/;" e file:
-HIDDEN5 test/via_parse.c /^ HIDDEN1, HIDDEN2, HIDDEN3, HIDDEN4, HIDDEN5,$/;" e file:
-HNV_UNRESERVED modules/exec/exec_hf.h 55;" d
-HOOK_SET modules/tm/sip_msg.c 277;" d file:
-HOP_BY_HOP_IDENTIFIER_SIZE modules/acc/diam_message.h 45;" d
-HOP_BY_HOP_IDENTIFIER_SIZE modules/auth_diameter/diameter_msg.h 45;" d
-HOST_VAL modules/cpl-c/CPL_tree.h 77;" d
-HSLOT_H modules/pa/hslot.h 32;" d
-HSLOT_H modules/usrloc/hslot.h 32;" d
-H_BODY tcp_conn.h /^enum tcp_req_states { H_SKIP_EMPTY, H_SKIP, H_LF, H_LFCR, H_BODY, H_STARTWS,$/;" e enum:tcp_req_states
-H_CONT_LEN1 tcp_conn.h /^ H_CONT_LEN1, H_CONT_LEN2, H_CONT_LEN3, H_CONT_LEN4, H_CONT_LEN5,$/;" e enum:tcp_req_states
-H_CONT_LEN10 tcp_conn.h /^ H_CONT_LEN6, H_CONT_LEN7, H_CONT_LEN8, H_CONT_LEN9, H_CONT_LEN10,$/;" e enum:tcp_req_states
-H_CONT_LEN11 tcp_conn.h /^ H_CONT_LEN11, H_CONT_LEN12, H_CONT_LEN13, H_L_COLON, $/;" e enum:tcp_req_states
-H_CONT_LEN12 tcp_conn.h /^ H_CONT_LEN11, H_CONT_LEN12, H_CONT_LEN13, H_L_COLON, $/;" e enum:tcp_req_states
-H_CONT_LEN13 tcp_conn.h /^ H_CONT_LEN11, H_CONT_LEN12, H_CONT_LEN13, H_L_COLON, $/;" e enum:tcp_req_states
-H_CONT_LEN2 tcp_conn.h /^ H_CONT_LEN1, H_CONT_LEN2, H_CONT_LEN3, H_CONT_LEN4, H_CONT_LEN5,$/;" e enum:tcp_req_states
-H_CONT_LEN3 tcp_conn.h /^ H_CONT_LEN1, H_CONT_LEN2, H_CONT_LEN3, H_CONT_LEN4, H_CONT_LEN5,$/;" e enum:tcp_req_states
-H_CONT_LEN4 tcp_conn.h /^ H_CONT_LEN1, H_CONT_LEN2, H_CONT_LEN3, H_CONT_LEN4, H_CONT_LEN5,$/;" e enum:tcp_req_states
-H_CONT_LEN5 tcp_conn.h /^ H_CONT_LEN1, H_CONT_LEN2, H_CONT_LEN3, H_CONT_LEN4, H_CONT_LEN5,$/;" e enum:tcp_req_states
-H_CONT_LEN6 tcp_conn.h /^ H_CONT_LEN6, H_CONT_LEN7, H_CONT_LEN8, H_CONT_LEN9, H_CONT_LEN10,$/;" e enum:tcp_req_states
-H_CONT_LEN7 tcp_conn.h /^ H_CONT_LEN6, H_CONT_LEN7, H_CONT_LEN8, H_CONT_LEN9, H_CONT_LEN10,$/;" e enum:tcp_req_states
-H_CONT_LEN8 tcp_conn.h /^ H_CONT_LEN6, H_CONT_LEN7, H_CONT_LEN8, H_CONT_LEN9, H_CONT_LEN10,$/;" e enum:tcp_req_states
-H_CONT_LEN9 tcp_conn.h /^ H_CONT_LEN6, H_CONT_LEN7, H_CONT_LEN8, H_CONT_LEN9, H_CONT_LEN10,$/;" e enum:tcp_req_states
-H_CONT_LEN_BODY tcp_conn.h /^ H_CONT_LEN_BODY, H_CONT_LEN_BODY_PARSE $/;" e enum:tcp_req_states
-H_CONT_LEN_BODY_PARSE tcp_conn.h /^ H_CONT_LEN_BODY, H_CONT_LEN_BODY_PARSE $/;" e enum:tcp_req_states
-H_LF tcp_conn.h /^enum tcp_req_states { H_SKIP_EMPTY, H_SKIP, H_LF, H_LFCR, H_BODY, H_STARTWS,$/;" e enum:tcp_req_states
-H_LFCR tcp_conn.h /^enum tcp_req_states { H_SKIP_EMPTY, H_SKIP, H_LF, H_LFCR, H_BODY, H_STARTWS,$/;" e enum:tcp_req_states
-H_L_COLON tcp_conn.h /^ H_CONT_LEN11, H_CONT_LEN12, H_CONT_LEN13, H_L_COLON, $/;" e enum:tcp_req_states
-H_SKIP tcp_conn.h /^enum tcp_req_states { H_SKIP_EMPTY, H_SKIP, H_LF, H_LFCR, H_BODY, H_STARTWS,$/;" e enum:tcp_req_states
-H_SKIP_EMPTY tcp_conn.h /^enum tcp_req_states { H_SKIP_EMPTY, H_SKIP, H_LF, H_LFCR, H_BODY, H_STARTWS,$/;" e enum:tcp_req_states
-H_STARTWS tcp_conn.h /^enum tcp_req_states { H_SKIP_EMPTY, H_SKIP, H_LF, H_LFCR, H_BODY, H_STARTWS,$/;" e enum:tcp_req_states
-I md5.c 79;" d file:
-ID cfg.tab.c /^ ID = 384,$/;" e enum:yytokentype file:
-ID cfg.tab.c 326;" d file:
-ID cfg.tab.h /^ ID = 384,$/;" e enum:yytokentype
-ID cfg.tab.h 302;" d
-IDBUF_LEN modules/tm/t_fifo.c 97;" d file:
-ID_CASE parser/case_call.h 41;" d
-ID_PARAM config.h 105;" d
-ID_PARAM_LEN config.h 106;" d
-IF cfg.tab.c /^ IF = 284,$/;" e enum:yytokentype file:
-IF cfg.tab.c 226;" d file:
-IF cfg.tab.h /^ IF = 284,$/;" e enum:yytokentype
-IF cfg.tab.h 202;" d
-IFISMETHOD parser/msg_parser.h 77;" d
-IF_DOWN test/ifls.c 54;" d file:
-IF_T route_struct.h /^ SET_PORT_T, SET_URI_T, IF_T, MODULE_T,$/;" e
-IF_UP test/ifls.c 55;" d file:
-II md5.c 103;" d file:
-INBOUND modules/rr/record.c 63;" d file:
-INCLUDE test/locking/Makefile /^INCLUDE=$/;" m
-INCL_LIBXODE_H modules/jabber/xode.h 63;" d
-INCOMING_NODE modules/cpl-c/CPL_tree.h 34;" d
-INETOID modules/postgres/pg_type.h 68;" d
-INITIAL lex.yy.c 1236;" d file:
-INITIAL parser/obsolete/parse_hname.c /^enum { INITIAL=0,$/;" e file:
-INITIAL test/auto.c /^enum { INITIAL=0,$/;" e file:
-INITIAL_S lex.yy.c 1197;" d file:
-INIT_AV modules/acc/dict.h 89;" d
-INIT_REF_UNSAFE modules/tm/t_funcs.h 111;" d
-INSERT_CMD db/db_fifo.c 54;" d file:
-INSERT_STR db/db_fifo.c 63;" d file:
-INSERT_STR_LEN db/db_fifo.c 64;" d file:
-INS_CHAR modules/jabber/xsnprintf.c 291;" d file:
-INT modules/jabber/doc/xjab.sql /^ juid INT NOT NULL AUTO_INCREMENT,$/;" F
-INT modules/jabber/doc/xjab.sql /^ juid INT NOT NULL,$/;" F
-INT16_MAX lex.yy.c 64;" d file:
-INT16_MIN lex.yy.c 55;" d file:
-INT2OID modules/postgres/pg_type.h 43;" d
-INT2STR_MAX_LEN ut.h 157;" d
-INT2VECTOROID modules/postgres/pg_type.h 44;" d
-INT32_MAX lex.yy.c 67;" d file:
-INT32_MIN lex.yy.c 58;" d file:
-INT4OID modules/postgres/pg_type.h 45;" d
-INT64 modules/jabber/sha.c 58;" d file:
-INT64 modules/jabber/sha.c 61;" d file:
-INT8OID modules/postgres/pg_type.h 42;" d
-INT8_MAX lex.yy.c 61;" d file:
-INT8_MIN lex.yy.c 52;" d file:
-INTEGER modules/msilo/doc/msilo.sql /^ mid INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,$/;" F
-INTEGER modules/pdt/doc/pdt.sql /^ code INTEGER NOT NULL PRIMARY KEY,$/;" F
-INTERNALOID modules/postgres/pg_type.h 95;" d
-INTERVALOID modules/postgres/pg_type.h 77;" d
-INTERVAL_ATTR modules/cpl-c/CPL_tree.h 106;" d
-INT_NULL modules/jabber/xsnprintf.c 250;" d file:
-INT_PARAM sr_module.h 61;" d
-INT_TYPE db/db_fifo.c 73;" d file:
-INT_TYPE_LEN db/db_fifo.c 74;" d file:
-INVITE parser/parse_fline.h 48;" d
-INVITE1 parser/parse_fline.c /^ INVITE1, INVITE2, INVITE3, INVITE4, INVITE5,$/;" e file:
-INVITE2 parser/parse_fline.c /^ INVITE1, INVITE2, INVITE3, INVITE4, INVITE5,$/;" e file:
-INVITE3 parser/parse_fline.c /^ INVITE1, INVITE2, INVITE3, INVITE4, INVITE5,$/;" e file:
-INVITE4 parser/parse_fline.c /^ INVITE1, INVITE2, INVITE3, INVITE4, INVITE5,$/;" e file:
-INVITE5 parser/parse_fline.c /^ INVITE1, INVITE2, INVITE3, INVITE4, INVITE5,$/;" e file:
-INVITE_LEN parser/parse_fline.h 50;" d
-INV_CMD modules/extcmd/extcmd_funcs.c 63;" d file:
-INV_FR_TIME_OUT modules/tm/config.h 50;" d
-ION_CASE parser/case_prox.h 41;" d
-IPC_PERMISSIONS modules/tm/lock.h 74;" d
-IPV6ADDR cfg.tab.c /^ IPV6ADDR = 386,$/;" e enum:yytokentype file:
-IPV6ADDR cfg.tab.c 328;" d file:
-IPV6ADDR cfg.tab.h /^ IPV6ADDR = 386,$/;" e enum:yytokentype
-IPV6ADDR cfg.tab.h 304;" d
-IP_ADDR_MAX_STR_SIZE ip_addr.h 395;" d
-IP_HELPER_H modules/mangler/ip_helper.h 36;" d
-IP_REGEX modules/mangler/sdp_mangler.h 54;" d
-IP_REGEX modules/mangler/sdp_mangler.h 60;" d
-IP_ST route_struct.h /^enum { NOSUBTYPE=0, STRING_ST, NET_ST, NUMBER_ST, IP_ST, RE_ST, PROXY_ST,$/;" e
-IRE_CASE parser/case_requ.h 42;" d
-ISFLAGSET cfg.tab.c /^ ISFLAGSET = 294,$/;" e enum:yytokentype file:
-ISFLAGSET cfg.tab.c 236;" d file:
-ISFLAGSET cfg.tab.h /^ ISFLAGSET = 294,$/;" e enum:yytokentype
-ISFLAGSET cfg.tab.h 212;" d
-ISFLAGSET_T route_struct.h /^ SETFLAG_T, RESETFLAG_T, ISFLAGSET_T ,$/;" e
-IS_ATTR modules/cpl-c/CPL_tree.h 83;" d
-IS_BIGBUCKET mem/vq_malloc.c 87;" d file:
-IS_REFFED_UNSAFE modules/tm/t_funcs.h 112;" d
-IZAT_CASE parser/case_prox.h 55;" d
-I_START parser/obsolete/parse_hname.c /^ I_START,$/;" e file:
-I_START test/auto.c /^ I_START,$/;" e file:
-JB_CLIENT_OPEN_STREAM modules/jabber/xjab_jcon.c 56;" d file:
-JB_ID_BASE modules/jabber/xjab_jcon.c 52;" d file:
-JB_IQ_ROSTER_GET modules/jabber/xjab_jcon.c 58;" d file:
-JB_START_STREAM modules/jabber/xjab_jcon.c 53;" d file:
-JB_START_STREAM_LEN modules/jabber/xjab_jcon.c 54;" d file:
-K1 modules/jabber/sha.c 77;" d file:
-K2 modules/jabber/sha.c 78;" d file:
-K3 modules/jabber/sha.c 79;" d file:
-K4 modules/jabber/sha.c 80;" d file:
-KEYS_H parser/keys.h 37;" d
-KID_OFFSET modules/cpl-c/CPL_tree.h 219;" d
-KID_OFFSET_PTR modules/cpl-c/CPL_tree.h 212;" d
-KILL_CMD unixsock_server.c 98;" d file:
-LANGUAGE_HANDLEROID modules/postgres/pg_type.h 94;" d
-LANGUAGE_NODE modules/cpl-c/CPL_tree.h 46;" d
-LANGUAGE_SWITCH_NODE modules/cpl-c/CPL_tree.h 47;" d
-LBRACE cfg.tab.c /^ LBRACE = 391,$/;" e enum:yytokentype file:
-LBRACE cfg.tab.c 333;" d file:
-LBRACE cfg.tab.h /^ LBRACE = 391,$/;" e enum:yytokentype
-LBRACE cfg.tab.h 309;" d
-LBRACK cfg.tab.c /^ LBRACK = 393,$/;" e enum:yytokentype file:
-LBRACK cfg.tab.c 335;" d file:
-LBRACK cfg.tab.h /^ LBRACK = 393,$/;" e enum:yytokentype
-LBRACK cfg.tab.h 311;" d
-LD_AFTER data_lump.c /^enum lump_dir { LD_NEXT, LD_BEFORE, LD_AFTER };$/;" e enum:lump_dir file:
-LD_BEFORE data_lump.c /^enum lump_dir { LD_NEXT, LD_BEFORE, LD_AFTER };$/;" e enum:lump_dir file:
-LD_NEXT data_lump.c /^enum lump_dir { LD_NEXT, LD_BEFORE, LD_AFTER };$/;" e enum:lump_dir file:
-LEAF_NODE modules/pike/ip_tree.h 46;" d
-LENG parser/obsolete/strs.h 326;" d
-LEN_GT_T route_struct.h /^ LEN_GT_T, PREFIX_T, STRIP_T,STRIP_TAIL_T,$/;" e
-LEN_LEN modules/extcmd/extcmd_funcs.c 69;" d file:
-LENg parser/obsolete/strs.h 325;" d
-LESS_ATTR modules/cpl-c/CPL_tree.h 121;" d
-LEnG parser/obsolete/strs.h 324;" d
-LEng parser/obsolete/strs.h 323;" d
-LF modules/cpl-c/cpl_log.h 51;" d
-LF parser/obsolete/parse_hname.c /^ LF=25000$/;" e file:
-LF test/auto.c /^ LF=25000,$/;" e file:
-LF_LEN modules/cpl-c/cpl_log.h 52;" d
-LIBS db/example/Makefile /^LIBS=$/;" m
-LIBS modules/acc/Makefile /^LIBS=$/;" m
-LIBS modules/auth/Makefile /^LIBS=$/;" m
-LIBS modules/auth_db/Makefile /^LIBS=$/;" m
-LIBS modules/avp_db/Makefile /^LIBS=$/;" m
-LIBS modules/avpops/Makefile /^LIBS= $/;" m
-LIBS modules/cpl-c/Makefile /^LIBS= -L$(LOCALBASE)\/lib -lxml2$/;" m
-LIBS modules/cpl/Makefile /^LIBS= $/;" m
-LIBS modules/dbtext/Makefile /^LIBS=$/;" m
-LIBS modules/dbtext/dbtex/Makefile /^LIBS=$/;" m
-LIBS modules/dispatcher/Makefile /^LIBS=$/;" m
-LIBS modules/diversion/Makefile /^LIBS=$/;" m
-LIBS modules/domain/Makefile /^LIBS=$/;" m
-LIBS modules/enum/Makefile /^LIBS=$/;" m
-LIBS modules/exec/Makefile /^LIBS=$/;" m
-LIBS modules/ext/Makefile /^LIBS= $/;" m
-LIBS modules/extcmd/Makefile /^LIBS=$/;" m
-LIBS modules/gflags/Makefile /^LIBS=$/;" m
-LIBS modules/group/Makefile /^LIBS=$/;" m
-LIBS modules/jabber/Makefile /^LIBS=-L$(LOCALBASE)\/lib -lexpat$/;" m
-LIBS modules/mangler/Makefile /^LIBS=$/;" m
-LIBS modules/maxfwd/Makefile /^LIBS= $/;" m
-LIBS modules/mediaproxy/Makefile /^LIBS=$/;" m
-LIBS modules/msilo/Makefile /^LIBS=$/;" m
-LIBS modules/mysql/Makefile /^LIBS=-L\/usr\/lib\/mysql -L$(LOCALBASE)\/lib -L$(LOCALBASE)\/lib\/mysql \\$/;" m
-LIBS modules/nathelper/Makefile /^LIBS=$/;" m
-LIBS modules/options/Makefile /^LIBS=$/;" m
-LIBS modules/pa/Makefile /^LIBS=$/;" m
-LIBS modules/pdt/Makefile /^LIBS=$/;" m
-LIBS modules/permissions/Makefile /^LIBS=$/;" m
-LIBS modules/pike/Makefile /^LIBS= $/;" m
-LIBS modules/postgres/Makefile /^LIBS=-L$(LOCALBASE)\/lib -L$(LOCALBASE)\/pgsql\/lib -L$(LOCALBASE)\/lib\/pgsql -lpq$/;" m
-LIBS modules/print/Makefile /^LIBS=$/;" m
-LIBS modules/registrar/Makefile /^LIBS=$/;" m
-LIBS modules/rr/Makefile /^LIBS=$/;" m
-LIBS modules/sl/Makefile /^LIBS= $/;" m
-LIBS modules/sms/Makefile /^LIBS=$/;" m
-LIBS modules/speeddial/Makefile /^LIBS=$/;" m
-LIBS modules/textops/Makefile /^LIBS=$/;" m
-LIBS modules/tm/Makefile /^LIBS=$/;" m
-LIBS modules/uri/Makefile /^LIBS=$/;" m
-LIBS modules/uri_db/Makefile /^LIBS=$/;" m
-LIBS modules/usrloc/Makefile /^LIBS=$/;" m
-LIBS modules/xlog/Makefile /^LIBS=$/;" m
-LIBS test/locking/Makefile /^LIBS=$/;" m
-LIBS utils/gen_ha1/Makefile /^LIBS=..\/..\/md5.o$/;" m
-LIBS utils/serunix/Makefile /^LIBS:=$(filter-out -lfl, $(LIBS) )$/;" m
-LIB_DEPENDS freebsd/Makefile /^LIB_DEPENDS= expat:${PORTSDIR}\/textproc\/expat* \\$/;" m
-LIB_DEPENDS openbsd/Makefile /^LIB_DEPENDS= expat.2:expat-1.*:textproc\/expat \\$/;" m
-LINEOID modules/postgres/pg_type.h 58;" d
-LINE_LENGTH modules/permissions/rule.h 37;" d
-LISTEN cfg.tab.c /^ LISTEN = 314,$/;" e enum:yytokentype file:
-LISTEN cfg.tab.c 256;" d file:
-LISTEN cfg.tab.h /^ LISTEN = 314,$/;" e enum:yytokentype
-LISTEN cfg.tab.h 232;" d
-LOADMODULE cfg.tab.c /^ LOADMODULE = 336,$/;" e enum:yytokentype file:
-LOADMODULE cfg.tab.c 278;" d file:
-LOADMODULE cfg.tab.h /^ LOADMODULE = 336,$/;" e enum:yytokentype
-LOADMODULE cfg.tab.h 254;" d
-LOAD_AVP_T route_struct.h /^ LOAD_AVP_T,$/;" e
-LOAD_CALLEE modules/avp_db/avp_db.c /^ LOAD_CALLEE \/* Use the callee's username and domain as the key *\/$/;" e enum:load_avp_param file:
-LOAD_CALLEE modules/avp_radius/avp_radius.c /^ LOAD_CALLEE, \/* Use the callee's username and domain as the key *\/$/;" e enum:load_avp_param file:
-LOAD_CALLEE_UUID modules/avp_db/avp_db.c /^ LOAD_CALLEE_UUID, \/* Use the callee's UUID as the key *\/$/;" e enum:load_avp_param file:
-LOAD_CALLER modules/avp_db/avp_db.c /^ LOAD_CALLER, \/* Use the caller's username and domain as the key *\/$/;" e enum:load_avp_param file:
-LOAD_CALLER modules/avp_radius/avp_radius.c /^ LOAD_CALLER, \/* Use the caller's username and domain as the key *\/$/;" e enum:load_avp_param file:
-LOAD_CALLER_UUID modules/avp_db/avp_db.c /^ LOAD_CALLER_UUID, \/* Use the caller's UUID as the key *\/$/;" e enum:load_avp_param file:
-LOAD_DIGEST modules/avp_radius/avp_radius.c /^ LOAD_DIGEST$/;" e enum:load_avp_param file:
-LOAD_ERROR modules/jabber/xjab_load.c 31;" d file:
-LOAD_ERROR modules/tm/tm_load.c 39;" d file:
-LOCATIONINFO_ETAG modules/pa/location.c 70;" d file:
-LOCATIONINFO_ETAG_L modules/pa/location.c 71;" d file:
-LOCATIONINFO_STAG modules/pa/location.c 68;" d file:
-LOCATIONINFO_STAG_L modules/pa/location.c 69;" d file:
-LOCATION_ATTR modules/cpl-c/CPL_tree.h 153;" d
-LOCATION_ETAG modules/pa/pidf.c 109;" d file:
-LOCATION_ETAG_L modules/pa/pidf.c 110;" d file:
-LOCATION_NODE modules/cpl-c/CPL_tree.h 45;" d
-LOCATION_STAG modules/pa/pidf.c 106;" d file:
-LOCATION_STAG_L modules/pa/pidf.c 107;" d file:
-LOCK test/locking/locking_test.c 107;" d file:
-LOCK test/locking/locking_test.c 112;" d file:
-LOCK test/locking/locking_test.c 117;" d file:
-LOCK test/locking/locking_test.c 122;" d file:
-LOCK test/locking/locking_test.c 85;" d file:
-LOCK test/locking/locking_test.c 88;" d file:
-LOCK_HASH modules/tm/h_table.h 68;" d
-LOCK_REPLIES modules/tm/t_reply.h 75;" d
-LOC_ETAG modules/pa/pidf.c 115;" d file:
-LOC_ETAG_L modules/pa/pidf.c 116;" d file:
-LOC_STAG modules/pa/pidf.c 112;" d file:
-LOC_STAG_L modules/pa/pidf.c 113;" d file:
-LOG dprint.h 100;" d
-LOG dprint.h 102;" d
-LOG dprint.h 106;" d
-LOG dprint.h 138;" d
-LOG test/p_uri.c 7;" d file:
-LOG test/via_parse.c 80;" d file:
-LOG123 modules/jabber/tree234.c 47;" d file:
-LOG123 modules/jabber/tree234.c 49;" d file:
-LOGFACILITY cfg.tab.c /^ LOGFACILITY = 313,$/;" e enum:yytokentype file:
-LOGFACILITY cfg.tab.c 255;" d file:
-LOGFACILITY cfg.tab.h /^ LOGFACILITY = 313,$/;" e enum:yytokentype
-LOGFACILITY cfg.tab.h 231;" d
-LOGSTDERROR cfg.tab.c /^ LOGSTDERROR = 312,$/;" e enum:yytokentype file:
-LOGSTDERROR cfg.tab.c 254;" d file:
-LOGSTDERROR cfg.tab.h /^ LOGSTDERROR = 312,$/;" e enum:yytokentype
-LOGSTDERROR cfg.tab.h 230;" d
-LOG_NODE modules/cpl-c/CPL_tree.h 43;" d
-LOG_SEPARATOR modules/cpl-c/cpl_nonsig.c 55;" d file:
-LOG_SEPARATOR_LEN modules/cpl-c/cpl_nonsig.c 56;" d file:
-LOG_T route_struct.h /^enum { FORWARD_T=1, SEND_T, DROP_T, LOG_T, ERROR_T, ROUTE_T, EXEC_T,$/;" e
-LOG_TERMINATOR modules/cpl-c/cpl_nonsig.c 61;" d file:
-LOG_TERMINATOR_LEN modules/cpl-c/cpl_nonsig.c 62;" d file:
-LOG_TOK cfg.tab.c /^ LOG_TOK = 265,$/;" e enum:yytokentype file:
-LOG_TOK cfg.tab.c 207;" d file:
-LOG_TOK cfg.tab.h /^ LOG_TOK = 265,$/;" e enum:yytokentype
-LOG_TOK cfg.tab.h 183;" d
-LONG_RUN mem/memtest.c 62;" d file:
-LOOKUP_H modules/registrar/lookup.h 32;" d
-LOOKUP_NODE modules/cpl-c/CPL_tree.h 44;" d
-LOOP_COUNT test/test.c 41;" d file:
-LOOSE_H modules/rr/loose.h 32;" d
-LOWER_BYTE parser/digest/param_parser.c 35;" d file:
-LOWER_BYTE parser/parse_hname2.c 42;" d file:
-LOWER_DWORD parser/digest/param_parser.c 36;" d file:
-LOWER_DWORD parser/parse_hname2.c 43;" d file:
-LPAREN cfg.tab.c /^ LPAREN = 390,$/;" e enum:yytokentype file:
-LPAREN cfg.tab.c 332;" d file:
-LPAREN cfg.tab.h /^ LPAREN = 390,$/;" e enum:yytokentype
-LPAREN cfg.tab.h 308;" d
-LPIDF_H modules/pa/lpidf.h 32;" d
-LPIDF_ST_CLOSED modules/pa/lpidf.h /^ LPIDF_ST_CLOSED,$/;" e enum:lpidf_status
-LPIDF_ST_OPEN modules/pa/lpidf.h /^ LPIDF_ST_OPEN,$/;" e enum:lpidf_status
-LSEGOID modules/postgres/pg_type.h 54;" d
-LT cfg.tab.c /^ LT = 373,$/;" e enum:yytokentype file:
-LT cfg.tab.c 315;" d file:
-LT cfg.tab.h /^ LT = 373,$/;" e enum:yytokentype
-LT cfg.tab.h 291;" d
-LTE cfg.tab.c /^ LTE = 375,$/;" e enum:yytokentype file:
-LTE cfg.tab.c 317;" d file:
-LTE cfg.tab.h /^ LTE = 375,$/;" e enum:yytokentype
-LTE cfg.tab.h 293;" d
-LTE_OP route_struct.h /^enum { EQUAL_OP=10, MATCH_OP, GT_OP, LT_OP, GTE_OP, LTE_OP, DIFF_OP, NO_OP };$/;" e
-LT_OP route_struct.h /^enum { EQUAL_OP=10, MATCH_OP, GT_OP, LT_OP, GTE_OP, LTE_OP, DIFF_OP, NO_OP };$/;" e
-LUMPFLAG_DUPED lump_struct.h /^enum lump_flag { LUMPFLAG_NONE=0, LUMPFLAG_DUPED=1, LUMPFLAG_SHMEM=2 };$/;" e enum:lump_flag
-LUMPFLAG_NONE lump_struct.h /^enum lump_flag { LUMPFLAG_NONE=0, LUMPFLAG_DUPED=1, LUMPFLAG_SHMEM=2 };$/;" e enum:lump_flag
-LUMPFLAG_SHMEM lump_struct.h /^enum lump_flag { LUMPFLAG_NONE=0, LUMPFLAG_DUPED=1, LUMPFLAG_SHMEM=2 };$/;" e enum:lump_flag
-LUMP_ADD lump_struct.h /^enum lump_op { LUMP_NOP=0, LUMP_DEL, LUMP_ADD, LUMP_ADD_SUBST, LUMP_ADD_OPT };$/;" e enum:lump_op
-LUMP_ADD_OPT lump_struct.h /^enum lump_op { LUMP_NOP=0, LUMP_DEL, LUMP_ADD, LUMP_ADD_SUBST, LUMP_ADD_OPT };$/;" e enum:lump_op
-LUMP_ADD_SUBST lump_struct.h /^enum lump_op { LUMP_NOP=0, LUMP_DEL, LUMP_ADD, LUMP_ADD_SUBST, LUMP_ADD_OPT };$/;" e enum:lump_op
-LUMP_DEL lump_struct.h /^enum lump_op { LUMP_NOP=0, LUMP_DEL, LUMP_ADD, LUMP_ADD_SUBST, LUMP_ADD_OPT };$/;" e enum:lump_op
-LUMP_LIST_LEN modules/tm/sip_msg.c 376;" d file:
-LUMP_NOP lump_struct.h /^enum lump_op { LUMP_NOP=0, LUMP_DEL, LUMP_ADD, LUMP_ADD_SUBST, LUMP_ADD_OPT };$/;" e enum:lump_op
-LUMP_RPL_BODY data_lump_rpl.h 44;" d
-LUMP_RPL_HDR data_lump_rpl.h 43;" d
-LUMP_RPL_NODUP data_lump_rpl.h 45;" d
-LUMP_RPL_NOFREE data_lump_rpl.h 46;" d
-LUMP_RPL_SHMEM data_lump_rpl.h 47;" d
-L_ALERT dprint.h 36;" d
-L_CRIT dprint.h 37;" d
-L_DBG dprint.h 42;" d
-L_ERR dprint.h 38;" d
-L_INFO dprint.h 41;" d
-L_LF parser/parse_fline.c /^ L_LF, F_CR, F_LF$/;" e file:
-L_NOTICE dprint.h 40;" d
-L_PARAM parser/parse_via.c /^ L_PARAM, F_PARAM, P_PARAM,$/;" e file:
-L_PARAM test/via_parse.c /^ L_PARAM, F_PARAM, P_PARAM,$/;" e file:
-L_PORT parser/parse_via.c /^ L_PORT, F_PORT, P_PORT,$/;" e file:
-L_PORT test/via_parse.c /^ L_PORT, F_PORT, P_PORT,$/;" e file:
-L_PROTO parser/parse_via.c /^ L_PROTO, F_PROTO$/;" e file:
-L_PROTO test/via_parse.c /^ L_PROTO, F_PROTO, P_PROTO$/;" e file:
-L_REASON parser/parse_fline.c /^ L_STATUS, P_STATUS, L_REASON, P_REASON,$/;" e file:
-L_STATUS parser/parse_fline.c /^ L_STATUS, P_STATUS, L_REASON, P_REASON,$/;" e file:
-L_URI parser/parse_fline.c /^ P_METHOD = 200, L_URI, P_URI, L_VER, $/;" e file:
-L_VALUE parser/parse_via.c /^ L_VALUE = 200, F_VALUE, P_VALUE, P_STRING,$/;" e file:
-L_VALUE test/via_parse.c /^enum{ L_VALUE=200, F_VALUE, P_VALUE, P_STRING,$/;" e file:
-L_VER parser/parse_fline.c /^ P_METHOD = 200, L_URI, P_URI, L_VER, $/;" e file:
-L_VER parser/parse_via.c /^ L_VER, F_VER,$/;" e file:
-L_VER test/via_parse.c /^ L_VER, F_VER,$/;" e file:
-L_VIA parser/parse_via.c /^ L_VIA, F_VIA,$/;" e file:
-L_VIA test/via_parse.c /^ L_VIA, F_VIA,$/;" e file:
-L_WARN dprint.h 39;" d
-LeNG parser/obsolete/strs.h 322;" d
-LeNg parser/obsolete/strs.h 321;" d
-LenG parser/obsolete/strs.h 320;" d
-Leng parser/obsolete/strs.h 319;" d
-MACADDROID modules/postgres/pg_type.h 67;" d
-MADDR1 parser/parse_via.c /^ MADDR1, MADDR2, MADDR3, MADDR4,$/;" e file:
-MADDR1 test/via_parse.c /^ MADDR1, MADDR2, MADDR3, MADDR4,$/;" e file:
-MADDR2 parser/parse_via.c /^ MADDR1, MADDR2, MADDR3, MADDR4,$/;" e file:
-MADDR2 test/via_parse.c /^ MADDR1, MADDR2, MADDR3, MADDR4,$/;" e file:
-MADDR3 parser/parse_via.c /^ MADDR1, MADDR2, MADDR3, MADDR4,$/;" e file:
-MADDR3 test/via_parse.c /^ MADDR1, MADDR2, MADDR3, MADDR4,$/;" e file:
-MADDR4 parser/parse_via.c /^ MADDR1, MADDR2, MADDR3, MADDR4,$/;" e file:
-MADDR4 test/via_parse.c /^ MADDR1, MADDR2, MADDR3, MADDR4,$/;" e file:
-MAIL_NODE modules/cpl-c/CPL_tree.h 48;" d
-MAINTAINER freebsd/Makefile /^MAINTAINER= andrei at iptel.org$/;" m
-MAINTAINER netbsd/Makefile /^MAINTAINER= andrei at iptel.org$/;" m
-MAINTAINER openbsd/Makefile /^MAINTAINER= andrei at iptel.org $/;" m
-MAKE_ENV freebsd/Makefile /^MAKE_ENV= include_modules="mysql jabber cpl-c pa"$/;" m
-MAKE_ENV netbsd/Makefile /^MAKE_ENV= include_modules="mysql jabber cpl-c pa"$/;" m
-MAKE_ENV openbsd/Makefile /^MAKE_ENV= include_modules="mysql jabber cpl-c pa"$/;" m
-MAN5 freebsd/Makefile /^MAN5=ser.cfg.5$/;" m
-MAN5 netbsd/Makefile /^MAN5=ser.cfg.5$/;" m
-MAN5 openbsd/Makefile /^MAN5=ser.cfg.5$/;" m
-MAN8 freebsd/Makefile /^MAN8=ser.8$/;" m
-MAN8 netbsd/Makefile /^MAN8=ser.8$/;" m
-MAN8 openbsd/Makefile /^MAN8=ser.8$/;" m
-MANCOMPRESSED freebsd/Makefile /^MANCOMPRESSED= no$/;" m
-MANGLER_MOD_H modules/mangler/mangler.h 36;" d
-MASK_MSG_CODE modules/acc/diam_message.h 70;" d
-MASK_MSG_CODE modules/acc/diam_message.h 80;" d
-MASK_MSG_CODE modules/auth_diameter/diameter_msg.h 70;" d
-MASK_MSG_CODE modules/auth_diameter/diameter_msg.h 80;" d
-MASTER_SITES freebsd/Makefile /^MASTER_SITES= ftp:\/\/ftp.berlios.de\/pub\/ser\/0.9.4\/src\/$/;" m
-MASTER_SITES netbsd/Makefile /^MASTER_SITES= ftp:\/\/ftp.berlios.de\/pub\/ser\/0.9.4\/src\/$/;" m
-MASTER_SITES openbsd/Makefile /^MASTER_SITES= ftp:\/\/ftp.berlios.de\/pub\/ser\/0.9.4\/src\/$/;" m
-MATCH cfg.tab.c /^ MATCH = 377,$/;" e enum:yytokentype file:
-MATCH cfg.tab.c 319;" d file:
-MATCH cfg.tab.h /^ MATCH = 377,$/;" e enum:yytokentype
-MATCH cfg.tab.h 295;" d
-MATCHES_SUBTAG_ATTR modules/cpl-c/CPL_tree.h 95;" d
-MATCHES_TAG_ATTR modules/cpl-c/CPL_tree.h 94;" d
-MATCH_OP route_struct.h /^enum { EQUAL_OP=10, MATCH_OP, GT_OP, LT_OP, GTE_OP, LTE_OP, DIFF_OP, NO_OP };$/;" e
-MAX socket_info.c 408;" d file:
-MAX test/ifls.c 75;" d file:
-MAXBUFFER cfg.tab.c /^ MAXBUFFER = 338,$/;" e enum:yytokentype file:
-MAXBUFFER cfg.tab.c 280;" d file:
-MAXBUFFER cfg.tab.h /^ MAXBUFFER = 338,$/;" e enum:yytokentype
-MAXBUFFER cfg.tab.h 256;" d
-MAXCOLUMNS modules/postgres/dbase.c 39;" d file:
-MAXFORWARDS10 parser/obsolete/parse_hname.c /^ MAXFORWARDS6, MAXFORWARDS7, MAXFORWARDS8, MAXFORWARDS9, MAXFORWARDS10,$/;" e file:
-MAXFORWARDS10 test/auto.c /^ MAXFORWARDS6, MAXFORWARDS7, MAXFORWARDS8, MAXFORWARDS9, MAXFORWARDS10,$/;" e file:
-MAXFORWARDS11 parser/obsolete/parse_hname.c /^ MAXFORWARDS11,$/;" e file:
-MAXFORWARDS11 test/auto.c /^ MAXFORWARDS11,$/;" e file:
-MAXFORWARDS2 parser/obsolete/parse_hname.c /^ M_FOUND, MAXFORWARDS2, MAXFORWARDS3, MAXFORWARDS4, MAXFORWARDS5,$/;" e file:
-MAXFORWARDS2 test/auto.c /^ M_START, MAXFORWARDS2, MAXFORWARDS3, MAXFORWARDS4, MAXFORWARDS5,$/;" e file:
-MAXFORWARDS3 parser/obsolete/parse_hname.c /^ M_FOUND, MAXFORWARDS2, MAXFORWARDS3, MAXFORWARDS4, MAXFORWARDS5,$/;" e file:
-MAXFORWARDS3 test/auto.c /^ M_START, MAXFORWARDS2, MAXFORWARDS3, MAXFORWARDS4, MAXFORWARDS5,$/;" e file:
-MAXFORWARDS4 parser/obsolete/parse_hname.c /^ M_FOUND, MAXFORWARDS2, MAXFORWARDS3, MAXFORWARDS4, MAXFORWARDS5,$/;" e file:
-MAXFORWARDS4 test/auto.c /^ M_START, MAXFORWARDS2, MAXFORWARDS3, MAXFORWARDS4, MAXFORWARDS5,$/;" e file:
-MAXFORWARDS5 parser/obsolete/parse_hname.c /^ M_FOUND, MAXFORWARDS2, MAXFORWARDS3, MAXFORWARDS4, MAXFORWARDS5,$/;" e file:
-MAXFORWARDS5 test/auto.c /^ M_START, MAXFORWARDS2, MAXFORWARDS3, MAXFORWARDS4, MAXFORWARDS5,$/;" e file:
-MAXFORWARDS6 parser/obsolete/parse_hname.c /^ MAXFORWARDS6, MAXFORWARDS7, MAXFORWARDS8, MAXFORWARDS9, MAXFORWARDS10,$/;" e file:
-MAXFORWARDS6 test/auto.c /^ MAXFORWARDS6, MAXFORWARDS7, MAXFORWARDS8, MAXFORWARDS9, MAXFORWARDS10,$/;" e file:
-MAXFORWARDS7 parser/obsolete/parse_hname.c /^ MAXFORWARDS6, MAXFORWARDS7, MAXFORWARDS8, MAXFORWARDS9, MAXFORWARDS10,$/;" e file:
-MAXFORWARDS7 test/auto.c /^ MAXFORWARDS6, MAXFORWARDS7, MAXFORWARDS8, MAXFORWARDS9, MAXFORWARDS10,$/;" e file:
-MAXFORWARDS8 parser/obsolete/parse_hname.c /^ MAXFORWARDS6, MAXFORWARDS7, MAXFORWARDS8, MAXFORWARDS9, MAXFORWARDS10,$/;" e file:
-MAXFORWARDS8 test/auto.c /^ MAXFORWARDS6, MAXFORWARDS7, MAXFORWARDS8, MAXFORWARDS9, MAXFORWARDS10,$/;" e file:
-MAXFORWARDS9 parser/obsolete/parse_hname.c /^ MAXFORWARDS6, MAXFORWARDS7, MAXFORWARDS8, MAXFORWARDS9, MAXFORWARDS10,$/;" e file:
-MAXFORWARDS9 test/auto.c /^ MAXFORWARDS6, MAXFORWARDS7, MAXFORWARDS8, MAXFORWARDS9, MAXFORWARDS10,$/;" e file:
-MAXSHORTSTR modules/jabber/xode.h 40;" d
-MAX_ parser/obsolete/strs.h 188;" d
-MAX_AAA_MSG_SIZE modules/acc/diam_tcp.h 47;" d
-MAX_AAA_MSG_SIZE modules/auth_diameter/tcp_comm.h 43;" d
-MAX_ACK_LEN modules/tm/config.h 45;" d
-MAX_AOR_LEN modules/pa/subscribe.c 484;" d file:
-MAX_AOR_LEN modules/registrar/common.c 45;" d file:
-MAX_ARRAY db/db_fifo.c 50;" d file:
-MAX_BODY modules/tm/config.h 74;" d
-MAX_BRANCHES config.h 149;" d
-MAX_BRANCH_PARAM_LEN config.h 180;" d
-MAX_BUCKET config.h 135;" d
-MAX_BUF modules/sms/libsms_modem.c 32;" d file:
-MAX_BUFFER_LEN modules/ext/ext.c 59;" d file:
-MAX_CHAR_BUF modules/sms/sms_funcs.h 41;" d
-MAX_CLIENTS modules/extcmd/clients.h 32;" d
-MAX_CODE modules/pdt/domains.h 33;" d
-MAX_CODE_10 modules/pdt/domains.h 34;" d
-MAX_CODE_R modules/pdt/domains.h 35;" d
-MAX_COMMENT_SIZE modules/cpl-c/CPL_tree.h 187;" d
-MAX_CONFIG_PARAM modules/sms/sms_funcs.h 42;" d
-MAX_CONSUME_BUFFER config.h 155;" d
-MAX_CONTACT_BUFFER modules/registrar/reply.c 48;" d file:
-MAX_CONTACT_LEN modules/usrloc/ul_fifo.c 45;" d file:
-MAX_CTIME_LEN fifo_server.h 55;" d
-MAX_DEL_KEYS modules/msilo/msilo.c 80;" d file:
-MAX_DNS_NAME resolve.h 55;" d
-MAX_DNS_STRING resolve.h 56;" d
-MAX_DOMAIN_SIZE modules/enum/enum.h 38;" d
-MAX_DST modules/tm/config.h 75;" d
-MAX_EMAIL_BODY_SIZE modules/cpl-c/cpl_parser.c 133;" d file:
-MAX_EMAIL_HDR_SIZE modules/cpl-c/cpl_parser.c 132;" d file:
-MAX_EMAIL_SUBJECT_SIZE modules/cpl-c/cpl_parser.c 134;" d file:
-MAX_EXPIRES_LEN modules/usrloc/ul_fifo.c 46;" d file:
-MAX_FD daemonize.c 64;" d file:
-MAX_FD main.c 335;" d file:
-MAX_FD modules/cpl-c/cpl_nonsig.c 50;" d file:
-MAX_FIFO_COMMAND config.h 152;" d
-MAX_FIXED_BLOCK config.h 131;" d
-MAX_FLAG flags.h 38;" d
-MAX_FLAGS_LEN modules/usrloc/ul_fifo.c 49;" d file:
-MAX_FLAG_LEN modules/gflags/gflags.c 48;" d file:
-MAX_FROM modules/tm/config.h 76;" d
-MAX_HASH_SIZE modules/pdt/domains.h 32;" d
-MAX_HEADER modules/tm/config.h 73;" d
-MAX_HSIZE_TWO_POW modules/pdt/domains.h 31;" d
-MAX_IP_BRANCHES modules/pike/ip_tree.h 50;" d
-MAX_LEN cfg.tab.c /^ MAX_LEN = 291,$/;" e enum:yytokentype file:
-MAX_LEN cfg.tab.c 233;" d file:
-MAX_LEN cfg.tab.h /^ MAX_LEN = 291,$/;" e enum:yytokentype
-MAX_LEN cfg.tab.h 209;" d
-MAX_LISTEN config.h 54;" d
-MAX_LOCATION modules/pa/publish.c 546;" d file:
-MAX_LOCATION modules/pa/publish.c 702;" d file:
-MAX_LOCATION modules/pa/publish.c 806;" d file:
-MAX_LOCATION modules/pa/publish.c 967;" d file:
-MAX_LOG_DIR_SIZE modules/cpl-c/cpl_nonsig.h 51;" d
-MAX_LOG_FILE_NAME modules/cpl-c/cpl_nonsig.c 49;" d file:
-MAX_LOG_NR modules/cpl-c/cpl_log.h 42;" d
-MAX_MANGLED_PORT modules/mangler/sdp_mangler.h 67;" d
-MAX_MATCH modules/enum/regexp.h 37;" d
-MAX_MEM modules/sms/libsms_sms.h 34;" d
-MAX_METHOD modules/tm/config.h 72;" d
-MAX_MIMES_NR parser/parse_content.h 62;" d
-MAX_MODEMS modules/sms/sms_funcs.h 38;" d
-MAX_NAME_SIZE modules/cpl-c/CPL_tree.h 185;" d
-MAX_NETWORKS modules/sms/sms_funcs.h 39;" d
-MAX_OFFSET_VALUE modules/mangler/sdp_mangler.h 69;" d
-MAX_ORIGINAL_PORT modules/mangler/sdp_mangler.h 65;" d
-MAX_PDOMAIN modules/pa/publish.c 455;" d file:
-MAX_PDOMAIN modules/pa/publish.c 547;" d file:
-MAX_PDOMAIN modules/pa/publish.c 703;" d file:
-MAX_PDOMAIN modules/pa/publish.c 807;" d file:
-MAX_PDOMAIN modules/pa/publish.c 968;" d file:
-MAX_PIPE_BUFFER_LEN modules/ext/config.h 33;" d
-MAX_PORT_LEN config.h 89;" d
-MAX_PRESENCE modules/pa/publish.c 454;" d file:
-MAX_PRINT_TEXT config.h 159;" d
-MAX_PROXY_RECURSE modules/cpl-c/cpl.c 73;" d file:
-MAX_PT_DESC pt.h 48;" d
-MAX_P_URI modules/pa/publish.c 453;" d file:
-MAX_P_URI modules/pa/publish.c 545;" d file:
-MAX_P_URI modules/pa/publish.c 701;" d file:
-MAX_P_URI modules/pa/publish.c 805;" d file:
-MAX_P_URI modules/pa/publish.c 966;" d file:
-MAX_Q qvalue.h 70;" d
-MAX_QUERY_SIZE resolve.h 52;" d
-MAX_QUEUED_MESSAGES modules/sms/sms_funcs.h 45;" d
-MAX_Q_LEN modules/usrloc/ul_fifo.c 47;" d file:
-MAX_Q_STR qvalue.h 73;" d
-MAX_Q_STR_LEN qvalue.h 74;" d
-MAX_REASON_LEN error.h 73;" d
-MAX_RECEIVED_SIZE config.h 145;" d
-MAX_RECV_BUFFER_SIZE udp_server.h 36;" d
-MAX_REC_LEV config.h 64;" d
-MAX_REDIRECTION_LEN config.h 162;" d
-MAX_REPLACE_WITH re.c 72;" d file:
-MAX_REPLICATE_LEN modules/usrloc/ul_fifo.c 48;" d file:
-MAX_RPID_LEN modules/auth/api.h 38;" d
-MAX_RPORT_SIZE config.h 146;" d
-MAX_RULE_FILES modules/permissions/permissions.h 55;" d
-MAX_SIZE_LINE db/db_fifo.c 49;" d file:
-MAX_SMS_LENGTH modules/sms/sms_funcs.h 43;" d
-MAX_SMS_PARTS modules/sms/sms_funcs.h 44;" d
-MAX_STATIC_BUF modules/cpl-c/cpl_loader.c 472;" d file:
-MAX_STATIC_BUF modules/cpl-c/cpl_loader.c 56;" d file:
-MAX_TABLE modules/usrloc/ul_fifo.h 45;" d
-MAX_TCP_CHILDREN tcp_main.c 108;" d file:
-MAX_TIME modules/textops/textops.c 91;" d file:
-MAX_TRIES modules/acc/diam_tcp.h 53;" d
-MAX_TRIES modules/auth_diameter/tcp_comm.c 58;" d file:
-MAX_TYPE_VAL modules/pike/ip_tree.c 265;" d file:
-MAX_URI_SIZE config.h 68;" d
-MAX_USER modules/usrloc/ul_fifo.h 46;" d
-MAX_USERHOST_LEN modules/cpl-c/cpl.c 74;" d file:
-MAX_USERURI_SIZE modules/speeddial/sdlookup.c 45;" d file:
-MAX_VIA_LINE_SIZE config.h 144;" d
-MAX_WAIT_SEC modules/acc/diam_tcp.h 44;" d
-MAX_WAIT_SEC modules/auth_diameter/tcp_comm.h 40;" d
-MAX_WAIT_USEC modules/acc/diam_tcp.h 45;" d
-MAX_WAIT_USEC modules/auth_diameter/tcp_comm.h 41;" d
-MAX_WARNING_LEN config.h 84;" d
-MAYBE_URI_END parser/parse_to.c /^ URI_OR_TOKEN, MAYBE_URI_END, END, F_CR, F_LF, F_CRLF$/;" e file:
-MAx_ parser/obsolete/strs.h 187;" d
-MCAST_LOOPBACK cfg.tab.c /^ MCAST_LOOPBACK = 368,$/;" e enum:yytokentype file:
-MCAST_LOOPBACK cfg.tab.c 310;" d file:
-MCAST_LOOPBACK cfg.tab.h /^ MCAST_LOOPBACK = 368,$/;" e enum:yytokentype
-MCAST_LOOPBACK cfg.tab.h 286;" d
-MCAST_TTL cfg.tab.c /^ MCAST_TTL = 369,$/;" e enum:yytokentype file:
-MCAST_TTL cfg.tab.c 311;" d file:
-MCAST_TTL cfg.tab.h /^ MCAST_TTL = 369,$/;" e enum:yytokentype
-MCAST_TTL cfg.tab.h 287;" d
-MCOOKIE config.h 177;" d
-MCOOKIE_LEN config.h 178;" d
-MD md5utils.c 25;" d file:
-MD5Final md5.c /^void MD5Final (digest, context)$/;" f
-MD5GLOBAL_H md5global.h 12;" d
-MD5Init md5.c /^void MD5Init (context)$/;" f
-MD5Transform md5.c /^static void MD5Transform (state, block)$/;" f file:
-MD5Update md5.c /^void MD5Update (context, input, inputLen)$/;" f
-MD5_CTX md5.h /^} MD5_CTX;$/;" t
-MD5_H md5.h 29;" d
-MD5_LEN md5utils.h 35;" d
-MD5_memcpy md5.c /^static void MD5_memcpy (output, input, len)$/;" f file:
-MD5_memset md5.c /^static void MD5_memset (output, value, len)$/;" f file:
-MDFinal md5utils.c 42;" d file:
-MDInit md5utils.c 40;" d file:
-MDStringArray md5utils.c /^void MDStringArray (char *dst, str src[], int size)$/;" f
-MDUpdate md5utils.c 41;" d file:
-MD_CTX md5utils.c 39;" d file:
-MEMLOG cfg.tab.c /^ MEMLOG = 323,$/;" e enum:yytokentype file:
-MEMLOG cfg.tab.c 265;" d file:
-MEMLOG cfg.tab.h /^ MEMLOG = 323,$/;" e enum:yytokentype
-MEMLOG cfg.tab.h 241;" d
-MEM_CHECK modules/postgres/aug_alloc.c 129;" d file:
-MEM_CROWN modules/postgres/aug_alloc.c 124;" d file:
-MEM_DECAPITATE modules/postgres/aug_alloc.c 125;" d file:
-MEM_FRAG_AVOIDANCE mem/f_malloc.c 92;" d file:
-MEM_FRAG_AVOIDANCE mem/q_malloc.c 108;" d file:
-MEM_MAGIC_BOUND modules/postgres/aug_alloc.c 112;" d file:
-MEM_MAGIC_FILL modules/postgres/aug_alloc.c 113;" d file:
-MEM_TAIL modules/postgres/aug_alloc.c 128;" d file:
-MESSAGE_400 modules/auth/common.h 35;" d
-MESSAGE_400 modules/auth_diameter/defs.h 37;" d
-MESSAGE_401 modules/auth/challenge.c 56;" d file:
-MESSAGE_401 modules/auth_diameter/defs.h 35;" d
-MESSAGE_407 modules/auth/challenge.c 49;" d file:
-MESSAGE_407 modules/auth_diameter/defs.h 36;" d
-MESSAGE_500 modules/auth/common.h 36;" d
-MESSAGE_500 modules/auth_db/authorize.c 52;" d file:
-MESSAGE_500 modules/auth_diameter/defs.h 38;" d
-MESSAGE_LENGTH_SIZE modules/acc/diam_message.h 41;" d
-MESSAGE_LENGTH_SIZE modules/auth_diameter/diameter_msg.h 41;" d
-METHOD cfg.tab.c /^ METHOD = 295,$/;" e enum:yytokentype file:
-METHOD cfg.tab.c 237;" d file:
-METHOD cfg.tab.h /^ METHOD = 295,$/;" e enum:yytokentype
-METHOD cfg.tab.h 213;" d
-METHOD_ACK parser/msg_parser.h /^enum request_method { METHOD_UNDEF=0, METHOD_INVITE=1, METHOD_CANCEL=2, METHOD_ACK=4, $/;" e enum:request_method
-METHOD_BYE parser/msg_parser.h /^ METHOD_BYE=8, METHOD_OTHER=16 };$/;" e enum:request_method
-METHOD_CANCEL parser/msg_parser.h /^enum request_method { METHOD_UNDEF=0, METHOD_INVITE=1, METHOD_CANCEL=2, METHOD_ACK=4, $/;" e enum:request_method
-METHOD_COL modules/usrloc/ul_mod.c 67;" d file:
-METHOD_INVITE parser/msg_parser.h /^enum request_method { METHOD_UNDEF=0, METHOD_INVITE=1, METHOD_CANCEL=2, METHOD_ACK=4, $/;" e enum:request_method
-METHOD_NOTIFY modules/pa/notify.c 119;" d file:
-METHOD_NOTIFY_L modules/pa/notify.c 120;" d file:
-METHOD_O route_struct.h /^enum { METHOD_O=1, URI_O, FROM_URI_O, TO_URI_O, SRCIP_O, SRCPORT_O,$/;" e
-METHOD_OTHER parser/msg_parser.h /^ METHOD_BYE=8, METHOD_OTHER=16 };$/;" e enum:request_method
-METHOD_UNDEF parser/msg_parser.h /^enum request_method { METHOD_UNDEF=0, METHOD_INVITE=1, METHOD_CANCEL=2, METHOD_ACK=4, $/;" e enum:request_method
-METH_ACK parser/parse_methods.h /^ METH_ACK = 2, $/;" e enum:method
-METH_BYE parser/parse_methods.h /^ METH_BYE = 4, $/;" e enum:method
-METH_CANCEL parser/parse_methods.h /^ METH_CANCEL = 8,$/;" e enum:method
-METH_INFO parser/parse_methods.h /^ METH_INFO = 16, $/;" e enum:method
-METH_INVITE parser/parse_methods.h /^ METH_INVITE = 32, $/;" e enum:method
-METH_MESSAGE parser/parse_methods.h /^ METH_MESSAGE = 4096,$/;" e enum:method
-METH_NOTIFY parser/parse_methods.h /^ METH_NOTIFY = 64,$/;" e enum:method
-METH_OPTIONS parser/parse_methods.h /^ METH_OPTIONS = 128, $/;" e enum:method
-METH_PRACK parser/parse_methods.h /^ METH_PRACK = 256, $/;" e enum:method
-METH_REFER parser/parse_methods.h /^ METH_REFER = 8192$/;" e enum:method
-METH_REGISTER parser/parse_methods.h /^ METH_REGISTER = 512,$/;" e enum:method
-METH_SUBSCRIBE parser/parse_methods.h /^ METH_SUBSCRIBE = 1024, $/;" e enum:method
-METH_UNKNOWN parser/parse_methods.h /^ METH_UNKNOWN = 1, $/;" e enum:method
-METH_UPDATE parser/parse_methods.h /^ METH_UPDATE = 2048, $/;" e enum:method
-MF_HDR modules/maxfwd/mf_funcs.c 45;" d file:
-MF_HDR_LEN modules/maxfwd/mf_funcs.c 46;" d file:
-MHOMED cfg.tab.c /^ MHOMED = 343,$/;" e enum:yytokentype file:
-MHOMED cfg.tab.c 285;" d file:
-MHOMED cfg.tab.h /^ MHOMED = 343,$/;" e enum:yytokentype
-MHOMED cfg.tab.h 261;" d
-MIME_TYPE modules/pa/pidf.c 49;" d file:
-MIME_TYPE modules/pa/xpidf.c 42;" d file:
-MIME_TYPE_L modules/pa/pidf.c 50;" d file:
-MIME_TYPE_L modules/pa/xpidf.c 43;" d file:
-MINUS cfg.tab.c /^ MINUS = 382,$/;" e enum:yytokentype file:
-MINUS cfg.tab.c 324;" d file:
-MINUS cfg.tab.h /^ MINUS = 382,$/;" e enum:yytokentype
-MINUS cfg.tab.h 300;" d
-MIN_FRAG_SIZE mem/f_malloc.h 59;" d
-MIN_FRAG_SIZE mem/q_malloc.h 61;" d
-MIN_MANGLED_PORT modules/mangler/sdp_mangler.h 66;" d
-MIN_OFFSET_VALUE modules/mangler/sdp_mangler.h 68;" d
-MIN_ORIGINAL_PORT modules/mangler/sdp_mangler.h 64;" d
-MIN_Q qvalue.h 71;" d
-MIN_Q_STR qvalue.h 76;" d
-MIN_Q_STR_LEN qvalue.h 77;" d
-MIN_UDP_PACKET config.h 201;" d
-MODE_ASCII modules/sms/libsms_modem.h 24;" d
-MODE_DIGICOM modules/sms/libsms_modem.h 23;" d
-MODE_NEW modules/sms/libsms_modem.h 25;" d
-MODE_OLD modules/sms/libsms_modem.h 22;" d
-MODE_ONFAILURE modules/tm/t_reply.h /^enum route_mode { MODE_REQUEST=1, MODE_ONREPLY, MODE_ONFAILURE };$/;" e enum:route_mode
-MODE_ONREPLY modules/tm/t_reply.h /^enum route_mode { MODE_REQUEST=1, MODE_ONREPLY, MODE_ONFAILURE };$/;" e enum:route_mode
-MODE_REQUEST modules/tm/t_reply.h /^enum route_mode { MODE_REQUEST=1, MODE_ONREPLY, MODE_ONFAILURE };$/;" e enum:route_mode
-MODFIXUP_ST route_struct.h /^ EXPR_ST, ACTIONS_ST, CMDF_ST, MODFIXUP_ST, URIHOST_ST, URIPORT_ST,$/;" e
-MODPARAM cfg.tab.c /^ MODPARAM = 337,$/;" e enum:yytokentype file:
-MODPARAM cfg.tab.c 279;" d file:
-MODPARAM cfg.tab.h /^ MODPARAM = 337,$/;" e enum:yytokentype
-MODPARAM cfg.tab.h 255;" d
-MODULE_T route_struct.h /^ SET_PORT_T, SET_URI_T, IF_T, MODULE_T,$/;" e
-MODULE_VERSION sr_module.h 80;" d
-MON_WEEK modules/cpl-c/cpl_time.c 105;" d file:
-MORE_CORE mem/vq_malloc.c 100;" d file:
-MORE_CORE mem/vq_malloc.c 97;" d file:
-MSGLEN cfg.tab.c /^ MSGLEN = 306,$/;" e enum:yytokentype file:
-MSGLEN cfg.tab.c 248;" d file:
-MSGLEN cfg.tab.h /^ MSGLEN = 306,$/;" e enum:yytokentype
-MSGLEN cfg.tab.h 224;" d
-MSGLEN_O route_struct.h /^ DSTIP_O, DSTPORT_O, PROTO_O, AF_O, MSGLEN_O, DEFAULT_O, ACTION_O,$/;" e
-MSG_200 modules/pa/reply.c 37;" d file:
-MSG_200 modules/registrar/reply.c 195;" d file:
-MSG_400 modules/pa/reply.c 38;" d file:
-MSG_400 modules/registrar/reply.c 196;" d file:
-MSG_500 modules/pa/reply.c 39;" d file:
-MSG_500 modules/registrar/reply.c 197;" d file:
-MSG_503 modules/registrar/reply.c 198;" d file:
-MSG_ACK modules/mediaproxy/mediaproxy.c 1346;" d file:
-MSG_CMD modules/extcmd/extcmd_funcs.c 58;" d file:
-MSG_INVITE modules/mediaproxy/mediaproxy.c 1345;" d file:
-MSG_LIST_ERR modules/msilo/ms_msg_list.h 50;" d
-MSG_LIST_EXIST modules/msilo/ms_msg_list.h 51;" d
-MSG_LIST_OK modules/msilo/ms_msg_list.h 49;" d
-MSG_REPLY modules/mediaproxy/mediaproxy.c 1347;" d file:
-MSG_UNKNOWN modules/mediaproxy/mediaproxy.c 1344;" d file:
-MSILO_TAG modules/msilo/msfuncs.h 39;" d
-MSILO_TAG modules/msilo/msfuncs.h 41;" d
-MSNSUBSTATUS_OFFLINE modules/pa/xpidf.c 90;" d file:
-MSNSUBSTATUS_OFFLINE_L modules/pa/xpidf.c 91;" d file:
-MSNSUBSTATUS_ONLINE modules/pa/xpidf.c 87;" d file:
-MSNSUBSTATUS_ONLINE_L modules/pa/xpidf.c 88;" d file:
-MS_MSG_DONE modules/msilo/ms_msg_list.h 43;" d
-MS_MSG_ERRO modules/msilo/ms_msg_list.h 44;" d
-MS_MSG_NULL modules/msilo/ms_msg_list.h 41;" d
-MS_MSG_SENT modules/msilo/ms_msg_list.h 42;" d
-MS_SEM_DONE modules/msilo/ms_msg_list.h 47;" d
-MS_SEM_SENT modules/msilo/ms_msg_list.h 46;" d
-MYSELF cfg.tab.c /^ MYSELF = 305,$/;" e enum:yytokentype file:
-MYSELF cfg.tab.c 247;" d file:
-MYSELF cfg.tab.h /^ MYSELF = 305,$/;" e enum:yytokentype
-MYSELF cfg.tab.h 223;" d
-MYSELF_ST route_struct.h /^ MYSELF_ST, STR_ST, SOCKID_ST, SOCKETINFO_ST };$/;" e
-MYSQL_URL_PREFIX modules/mysql/utils.c 96;" d file:
-MYSQL_URL_PREFIX_LEN modules/mysql/utils.c 97;" d file:
-MY_BLOCK mem/memtest.c 46;" d file:
-MY_BLOCK mem/memtest.c 53;" d file:
-MY_BRANCH config.h 86;" d
-MY_BRANCH_LEN config.h 87;" d
-MY_CON_H modules/mysql/my_con.h 30;" d
-MY_FREE mem/memtest.c 44;" d file:
-MY_FREE mem/memtest.c 51;" d file:
-MY_FREE mem/shm_mem.h 79;" d
-MY_FREE mem/shm_mem.h 87;" d
-MY_FREE mem/shm_mem.h 95;" d
-MY_HF_SEP msg_translator.h 40;" d
-MY_HF_SEP_LEN msg_translator.h 41;" d
-MY_ID_H modules/mysql/my_id.h 30;" d
-MY_INIT mem/memtest.c 45;" d file:
-MY_INIT mem/memtest.c 52;" d file:
-MY_MALLOC mem/memtest.c 43;" d file:
-MY_MALLOC mem/memtest.c 50;" d file:
-MY_MALLOC mem/shm_mem.h 78;" d
-MY_MALLOC mem/shm_mem.h 86;" d
-MY_MALLOC mem/shm_mem.h 94;" d
-MY_POOL_H modules/mysql/my_pool.h 30;" d
-MY_REALLOC mem/shm_mem.h 88;" d
-MY_REALLOC mem/shm_mem.h 96;" d
-MY_STATUS mem/memtest.c 47;" d file:
-MY_STATUS mem/memtest.c 54;" d file:
-MY_STATUS mem/shm_mem.h 80;" d
-MY_STATUS mem/shm_mem.h 89;" d
-MY_STATUS mem/shm_mem.h 97;" d
-MY_VIA config.h 70;" d
-MY_VIA_LEN config.h 71;" d
-M_FOUND parser/obsolete/parse_hname.c /^ M_FOUND, MAXFORWARDS2, MAXFORWARDS3, MAXFORWARDS4, MAXFORWARDS5,$/;" e file:
-M_NAME modules/acc/acc.c 71;" d file:
-M_NAME modules/acc/acc_mod.c 76;" d file:
-M_NAME modules/acc/diam_tcp.c 48;" d file:
-M_NAME modules/auth_diameter/auth_diameter.h 39;" d
-M_START test/auto.c /^ M_START, MAXFORWARDS2, MAXFORWARDS3, MAXFORWARDS4, MAXFORWARDS5,$/;" e file:
-MaX_ parser/obsolete/strs.h 186;" d
-Max_ parser/obsolete/strs.h 185;" d
-MemAlign modules/postgres/aug_alloc.c /^typedef double MemAlign;$/;" t file:
-MemDestructor modules/postgres/aug_alloc.c /^typedef struct MemDestructor MemDestructor; \/* not yet implemented *\/$/;" t file:
-MemHead modules/postgres/aug_alloc.c /^typedef union MemHead MemHead;$/;" t file:
-MemHead modules/postgres/aug_alloc.c /^union MemHead$/;" u file:
-MemHeadStruct modules/postgres/aug_alloc.c /^struct MemHeadStruct$/;" s file:
-MemMagic modules/postgres/aug_alloc.c /^typedef augUInt32 MemMagic;$/;" t file:
-MemOpt modules/postgres/aug_alloc.c /^struct MemOpt$/;" s file:
-MemOpt modules/postgres/aug_alloc.c /^typedef struct MemOpt MemOpt;$/;" t file:
-NA modules/acc/acc.h 38;" d
-NAME Makefile /^NAME=$(MAIN_NAME)$/;" m
-NAME db/example/Makefile /^NAME=dbexample.so$/;" m
-NAME modules/acc/Makefile /^NAME=acc.so$/;" m
-NAME modules/auth/Makefile /^NAME=auth.so$/;" m
-NAME modules/auth_db/Makefile /^NAME=auth_db.so$/;" m
-NAME modules/auth_diameter/Makefile /^NAME=auth_diameter.so$/;" m
-NAME modules/auth_radius/Makefile /^NAME=auth_radius.so$/;" m
-NAME modules/avp/Makefile /^NAME=avp.so$/;" m
-NAME modules/avp_db/Makefile /^NAME=avp_db.so$/;" m
-NAME modules/avp_radius/Makefile /^NAME=avp_radius.so$/;" m
-NAME modules/avpops/Makefile /^NAME=avpops.so$/;" m
-NAME modules/cpl-c/Makefile /^NAME=cpl-c.so$/;" m
-NAME modules/cpl/Makefile /^NAME=cpl.so$/;" m
-NAME modules/dbtext/Makefile /^NAME=dbtext.so$/;" m
-NAME modules/dbtext/dbtex/Makefile /^NAME=dbtex.so$/;" m
-NAME modules/dispatcher/Makefile /^NAME=dispatcher.so$/;" m
-NAME modules/diversion/Makefile /^NAME=diversion.so$/;" m
-NAME modules/domain/Makefile /^NAME=domain.so$/;" m
-NAME modules/enum/Makefile /^NAME=enum.so$/;" m
-NAME modules/exec/Makefile /^NAME=exec.so$/;" m
-NAME modules/ext/Makefile /^NAME=ext.so$/;" m
-NAME modules/extcmd/Makefile /^NAME=extcmd.so$/;" m
-NAME modules/flatstore/Makefile /^NAME=flatstore.so$/;" m
-NAME modules/gflags/Makefile /^NAME=gflags.so$/;" m
-NAME modules/group/Makefile /^NAME=group.so$/;" m
-NAME modules/group_radius/Makefile /^NAME=group_radius.so$/;" m
-NAME modules/jabber/Makefile /^NAME=jabber.so$/;" m
-NAME modules/mangler/Makefile /^NAME=mangler.so$/;" m
-NAME modules/maxfwd/Makefile /^NAME=maxfwd.so$/;" m
-NAME modules/mediaproxy/Makefile /^NAME=mediaproxy.so$/;" m
-NAME modules/msilo/Makefile /^NAME=msilo.so$/;" m
-NAME modules/mysql/Makefile /^NAME=mysql.so$/;" m
-NAME modules/nathelper/Makefile /^NAME=nathelper.so$/;" m
-NAME modules/options/Makefile /^NAME=options.so$/;" m
-NAME modules/pa/Makefile /^NAME=pa.so$/;" m
-NAME modules/pdt/Makefile /^NAME=pdt.so$/;" m
-NAME modules/permissions/Makefile /^NAME=permissions.so$/;" m
-NAME modules/pike/Makefile /^NAME=pike.so$/;" m
-NAME modules/postgres/Makefile /^NAME=postgres.so$/;" m
-NAME modules/print/Makefile /^NAME=print.so$/;" m
-NAME modules/registrar/Makefile /^NAME=registrar.so$/;" m
-NAME modules/rr/Makefile /^NAME=rr.so$/;" m
-NAME modules/sl/Makefile /^NAME=sl.so$/;" m
-NAME modules/sms/Makefile /^NAME=sms.so$/;" m
-NAME modules/speeddial/Makefile /^NAME=speeddial.so$/;" m
-NAME modules/textops/Makefile /^NAME=textops.so$/;" m
-NAME modules/tm/Makefile /^NAME=tm.so$/;" m
-NAME modules/uri/Makefile /^NAME=uri.so$/;" m
-NAME modules/uri_db/Makefile /^NAME=uri_db.so$/;" m
-NAME modules/uri_radius/Makefile /^NAME=uri_radius.so$/;" m
-NAME modules/usrloc/Makefile /^NAME=usrloc.so$/;" m
-NAME modules/xlog/Makefile /^NAME=xlog.so$/;" m
-NAME test/locking/Makefile /^NAME=locking_test$/;" m
-NAME utils/gen_ha1/Makefile /^NAME=gen_ha1$/;" m
-NAME utils/serunix/Makefile /^NAME=serunix$/;" m
-NAMEOID modules/postgres/pg_type.h 41;" d
-NAME_ATTR modules/cpl-c/CPL_tree.h 184;" d
-NAT_UAC_TEST_C_1918 modules/nathelper/nathelper.c 168;" d file:
-NAT_UAC_TEST_RCVD modules/nathelper/nathelper.c 169;" d file:
-NAT_UAC_TEST_RPORT modules/nathelper/nathelper.c 172;" d file:
-NAT_UAC_TEST_S_1918 modules/nathelper/nathelper.c 171;" d file:
-NAT_UAC_TEST_V_1918 modules/nathelper/nathelper.c 170;" d file:
-NA_LEN modules/acc/acc.h 39;" d
-NDIG modules/jabber/xsnprintf.c 91;" d file:
-NET_ST route_struct.h /^enum { NOSUBTYPE=0, STRING_ST, NET_ST, NUMBER_ST, IP_ST, RE_ST, PROXY_ST,$/;" e
-NEW_NODE modules/pike/ip_tree.h 45;" d
-NEXT_SEP modules/msilo/msfuncs.c 59;" d file:
-NO modules/jabber/xsnprintf.c /^ NO = 0, YES = 1$/;" e file:
-NOANSWER_NODE modules/cpl-c/CPL_tree.h 50;" d
-NODE_TYPE modules/cpl-c/CPL_tree.h 209;" d
-NONCE_H modules/auth/nonce.h 32;" d
-NONCE_LEN modules/auth/nonce.h 41;" d
-NON_URGENT_STR modules/cpl-c/CPL_tree.h 135;" d
-NON_URGENT_STR_LEN modules/cpl-c/CPL_tree.h 136;" d
-NON_URGENT_VAL modules/cpl-c/CPL_tree.h 134;" d
-NORMAL_ORDER modules/tm/dlg.c 49;" d file:
-NORMAL_STR modules/cpl-c/CPL_tree.h 132;" d
-NORMAL_STR_LEN modules/cpl-c/CPL_tree.h 133;" d
-NORMAL_VAL modules/cpl-c/CPL_tree.h 131;" d
-NOSMP_STR version.h 185;" d
-NOSMP_STR version.h 187;" d
-NOSUBTYPE route_struct.h /^enum { NOSUBTYPE=0, STRING_ST, NET_ST, NUMBER_ST, IP_ST, RE_ST, PROXY_ST,$/;" e
-NOT cfg.tab.c /^ NOT = 380,$/;" e enum:yytokentype file:
-NOT cfg.tab.c 322;" d file:
-NOT cfg.tab.h /^ NOT = 380,$/;" e enum:yytokentype
-NOT cfg.tab.h 298;" d
-NOTE modules/cpl-c/cpl_log.h 48;" d
-NOTE_LEN modules/cpl-c/cpl_log.h 49;" d
-NOTFOUND_NODE modules/cpl-c/CPL_tree.h 49;" d
-NOTFOUND_STR modules/cpl-c/CPL_tree.h 174;" d
-NOTFOUND_STR_LEN modules/cpl-c/CPL_tree.h 175;" d
-NOTFOUND_VAL modules/cpl-c/CPL_tree.h 173;" d
-NOTIFY_H modules/pa/notify.h 31;" d
-NOTIFY_H modules/usrloc/notify.h 30;" d
-NOT_AUTHORIZED modules/auth/api.h /^ NOT_AUTHORIZED, \/* Don't perform authorization, credentials missing *\/$/;" e enum:auth_result
-NOT_ERASE_CELL modules/pdt/domains.h 38;" d
-NOT_OP route_struct.h /^enum { AND_OP=1, OR_OP, NOT_OP };$/;" e
-NOT_PRESENT_NODE modules/cpl-c/CPL_tree.h 65;" d
-NOT_RR_DRIVEN modules/rr/loose.c 52;" d file:
-NO_CANCEL modules/tm/h_table.h 75;" d
-NO_CMD modules/extcmd/extcmd_funcs.c 57;" d file:
-NO_CREDENTIALS modules/auth_diameter/defs.h /^ NO_CREDENTIALS, \/* Credentials missing *\/$/;" e enum:auth_result
-NO_DB modules/usrloc/ul_mod.h 48;" d
-NO_DEBUG_STR version.h 76;" d
-NO_DEBUG_STR version.h 78;" d
-NO_DNS globals.h 40;" d
-NO_LOG dprint.h 95;" d
-NO_LOG_STR version.h 82;" d
-NO_LOG_STR version.h 84;" d
-NO_OP route_struct.h /^enum { EQUAL_OP=10, MATCH_OP, GT_OP, LT_OP, GTE_OP, LTE_OP, DIFF_OP, NO_OP };$/;" e
-NO_REPORT modules/sms/sms_funcs.h 61;" d
-NO_SCRIPT modules/tm/tm_load.h 50;" d
-NO_UPDATE modules/pike/ip_tree.h 48;" d
-NO_VAL modules/cpl-c/CPL_tree.h 143;" d
-NR_CELLS modules/sms/sms_report.h 34;" d
-NR_KEYS modules/msilo/msilo.c 81;" d file:
-NR_KEYS modules/pdt/pdt.c 61;" d file:
-NR_OF_ATTR modules/cpl-c/CPL_tree.h 211;" d
-NR_OF_KIDS modules/cpl-c/CPL_tree.h 210;" d
-NR_OF_TIMER_LISTS modules/tm/timer.h /^ NR_OF_TIMER_LISTS$/;" e enum:lists
-NSTR modules/jabber/tree234.c 1264;" d file:
-NTNone modules/mediaproxy/mediaproxy.c /^ NTNone=0,$/;" e file:
-NTPrivateContact modules/mediaproxy/mediaproxy.c /^ NTPrivateContact=1,$/;" e file:
-NTPrivateVia modules/mediaproxy/mediaproxy.c /^ NTPrivateVia=4$/;" e file:
-NTSourceAddress modules/mediaproxy/mediaproxy.c /^ NTSourceAddress=2,$/;" e file:
-NUL modules/jabber/xsnprintf.c 249;" d file:
-NULL_CPL modules/cpl-c/cpl_parser.c 1511;" d file:
-NULL_CPL_LEN modules/cpl-c/cpl_parser.c 1512;" d file:
-NULL_VAL db/db_fifo.c 86;" d file:
-NULL_VAL_LEN db/db_fifo.c 87;" d file:
-NUM modules/jabber/xsnprintf.c 300;" d file:
-NUMBER cfg.tab.c /^ NUMBER = 383,$/;" e enum:yytokentype file:
-NUMBER cfg.tab.c 325;" d file:
-NUMBER cfg.tab.h /^ NUMBER = 383,$/;" e enum:yytokentype
-NUMBER cfg.tab.h 301;" d
-NUMBER_O route_struct.h /^ NUMBER_O};$/;" e
-NUMBER_ST route_struct.h /^enum { NOSUBTYPE=0, STRING_ST, NET_ST, NUMBER_ST, IP_ST, RE_ST, PROXY_ST,$/;" e
-NUMERICOID modules/postgres/pg_type.h 81;" d
-NUM_BUF_SIZE modules/jabber/xsnprintf.c 268;" d file:
-N_DOCTYPES modules/pa/watcher.h /^ N_DOCTYPES$/;" e enum:doctype
-NatTest modules/mediaproxy/mediaproxy.c /^} NatTest;$/;" t file:
-NatTestProc modules/mediaproxy/mediaproxy.c /^typedef Bool (*NatTestProc)(struct sip_msg* msg);$/;" t file:
-NatTestType modules/mediaproxy/mediaproxy.c /^} NatTestType;$/;" t file:
-NetInfo modules/mediaproxy/mediaproxy.c /^} NetInfo;$/;" t file:
-OFFLINE_MESSAGE modules/msilo/msilo.c 74;" d file:
-OFFLINE_MESSAGE_LEN modules/msilo/msilo.c 75;" d file:
-OIDOID modules/postgres/pg_type.h 48;" d
-OIDVECTOROID modules/postgres/pg_type.h 52;" d
-OK crc.c 36;" d file:
-OK_MSG modules/sms/sms_funcs.c 94;" d file:
-OK_MSG_LEN modules/sms/sms_funcs.c 96;" d file:
-ONREPLY_ROUTE sr_module.h 71;" d
-ONREPLY_RT_NO config.h 61;" d
-OPAQUEOID modules/postgres/pg_type.h 96;" d
-OPEN_FD_LIMIT cfg.tab.c /^ OPEN_FD_LIMIT = 367,$/;" e enum:yytokentype file:
-OPEN_FD_LIMIT cfg.tab.c 309;" d file:
-OPEN_FD_LIMIT cfg.tab.h /^ OPEN_FD_LIMIT = 367,$/;" e enum:yytokentype
-OPEN_FD_LIMIT cfg.tab.h 285;" d
-OPT_RPL_H modules/options/mod_options.h 31;" d
-OP_EQ db/db_op.h 34;" d
-OP_GEQ db/db_op.h 36;" d
-OP_GT db/db_op.h 33;" d
-OP_LEQ db/db_op.h 35;" d
-OP_LT db/db_op.h 32;" d
-OR cfg.tab.c /^ OR = 378,$/;" e enum:yytokentype file:
-OR cfg.tab.c 320;" d file:
-OR cfg.tab.h /^ OR = 378,$/;" e enum:yytokentype
-OR cfg.tab.h 296;" d
-ORDERING_ATTR modules/cpl-c/CPL_tree.h 159;" d
-ORGANIZATION_VAL modules/cpl-c/CPL_tree.h 89;" d
-ORIGINAL_DESTINATION_VAL modules/cpl-c/CPL_tree.h 74;" d
-ORIGIN_VAL modules/cpl-c/CPL_tree.h 72;" d
-ORTE_CASE parser/case_supp.h 35;" d
-OR_OP route_struct.h /^enum { AND_OP=1, OR_OP, NOT_OP };$/;" e
-OS test/locking/Makefile /^OS = $(shell uname -s)$/;" m
-OTHERWISE_NODE modules/cpl-c/CPL_tree.h 64;" d
-OUTBOUND modules/rr/record.c 64;" d file:
-OUTE parser/obsolete/strs.h 282;" d
-OUTE_CASE parser/case_reco.h 35;" d
-OUTGOING_NODE modules/cpl-c/CPL_tree.h 35;" d
-OUTe parser/obsolete/strs.h 281;" d
-OUtE parser/obsolete/strs.h 280;" d
-OUte parser/obsolete/strs.h 279;" d
-OuTE parser/obsolete/strs.h 278;" d
-OuTe parser/obsolete/strs.h 277;" d
-OutE parser/obsolete/strs.h 276;" d
-Oute parser/obsolete/strs.h 275;" d
-PACKAGE_END modules/pa/watcher.c 572;" d file:
-PACKAGE_END_L modules/pa/watcher.c 573;" d file:
-PACKAGE_START modules/pa/watcher.c 570;" d file:
-PACKAGE_START_L modules/pa/watcher.c 571;" d file:
-PAD modules/jabber/xsnprintf.c 328;" d file:
-PADDING md5.c /^static unsigned char PADDING[64] = {$/;" v file:
-PAERRNO_H modules/pa/paerrno.h 31;" d
-PARALLEL_VAL modules/cpl-c/CPL_tree.h 160;" d
-PARAM_ALIAS parser/parse_via.h /^ PARAM_MADDR, PARAM_RECEIVED, PARAM_RPORT, PARAM_I, PARAM_ALIAS,$/;" e
-PARAM_ATTR modules/cpl-c/CPL_tree.h 154;" d
-PARAM_BRANCH parser/parse_via.h /^ PARAM_HIDDEN=230, PARAM_TTL, PARAM_BRANCH, $/;" e
-PARAM_ERROR parser/parse_via.h /^ PARAM_ERROR$/;" e
-PARAM_HIDDEN parser/parse_via.h /^ PARAM_HIDDEN=230, PARAM_TTL, PARAM_BRANCH, $/;" e
-PARAM_I parser/parse_via.h /^ PARAM_MADDR, PARAM_RECEIVED, PARAM_RPORT, PARAM_I, PARAM_ALIAS,$/;" e
-PARAM_MADDR parser/parse_via.h /^ PARAM_MADDR, PARAM_RECEIVED, PARAM_RPORT, PARAM_I, PARAM_ALIAS,$/;" e
-PARAM_PARSER_H parser/digest/param_parser.h 32;" d
-PARAM_RECEIVED parser/parse_via.h /^ PARAM_MADDR, PARAM_RECEIVED, PARAM_RPORT, PARAM_I, PARAM_ALIAS,$/;" e
-PARAM_RPORT parser/parse_via.h /^ PARAM_MADDR, PARAM_RECEIVED, PARAM_RPORT, PARAM_I, PARAM_ALIAS,$/;" e
-PARAM_TTL parser/parse_via.h /^ PARAM_HIDDEN=230, PARAM_TTL, PARAM_BRANCH, $/;" e
-PARAM_TYPE_MASK sr_module.h 63;" d
-PARANOID modules/mysql/defs.h 34;" d
-PARANOID modules/postgres/defs.h 43;" d
-PARA_NAME parser/parse_to.c /^ S_PARA_NAME=20, PARA_NAME, S_EQUAL, S_PARA_VALUE, TAG1, TAG2,$/;" e file:
-PARA_VALUE_QUOTED parser/parse_to.c /^ TAG3, PARA_VALUE_TOKEN , PARA_VALUE_QUOTED, E_PARA_VALUE$/;" e file:
-PARA_VALUE_TOKEN parser/parse_to.c /^ TAG3, PARA_VALUE_TOKEN , PARA_VALUE_QUOTED, E_PARA_VALUE$/;" e file:
-PARSE_ALLOW_H parser/parse_allow.h 29;" d
-PARSE_COMPACT parser/parse_hname2.c 120;" d file:
-PARSE_CONFIG_H modules/permissions/parse_config.h 32;" d
-PARSE_CONTACT_H parser/contact/parse_contact.h 36;" d
-PARSE_CSEQ parser/parse_cseq.h 30;" d
-PARSE_DEF_H parser/parse_def.h 30;" d
-PARSE_DIVERSION_H parser/parse_diversion.h 29;" d
-PARSE_ERROR parser/parse_def.h 32;" d
-PARSE_EVENT_H parser/parse_event.h 36;" d
-PARSE_EXPIRES_H parser/parse_expires.h 32;" d
-PARSE_FLINE_H parser/parse_fline.h 30;" d
-PARSE_HNAME2_H parser/parse_hname2.h 32;" d
-PARSE_HNAME_H parser/obsolete/parse_hname.h 30;" d
-PARSE_HOSTPORT_H parser/parse_hostport.h 30;" d
-PARSE_METHODS_H parser/parse_methods.h 29;" d
-PARSE_NAMEADDR_H parser/parse_nameaddr.h 33;" d
-PARSE_OK parser/parse_def.h 33;" d
-PARSE_PARAM_H parser/parse_param.h 37;" d
-PARSE_PIDF_BASIC modules/pa/pidf.h 89;" d
-PARSE_PIDF_CONTACT modules/pa/pidf.h 88;" d
-PARSE_PIDF_EXPIRES modules/pa/pidf.h 100;" d
-PARSE_PIDF_FLOOR modules/pa/pidf.h 93;" d
-PARSE_PIDF_LOC modules/pa/pidf.h 91;" d
-PARSE_PIDF_LOCATION_MASK modules/pa/pidf.h 103;" d
-PARSE_PIDF_PACKET_LOSS modules/pa/pidf.h 98;" d
-PARSE_PIDF_PRESCAPS modules/pa/pidf.h 101;" d
-PARSE_PIDF_PRIORITY modules/pa/pidf.h 99;" d
-PARSE_PIDF_RADIUS modules/pa/pidf.h 97;" d
-PARSE_PIDF_ROOM modules/pa/pidf.h 94;" d
-PARSE_PIDF_SITE modules/pa/pidf.h 92;" d
-PARSE_PIDF_STATUS modules/pa/pidf.h 90;" d
-PARSE_PIDF_X modules/pa/pidf.h 95;" d
-PARSE_PIDF_Y modules/pa/pidf.h 96;" d
-PARSE_RPID_H parser/parse_rpid.h 28;" d
-PARSE_RR_H parser/parse_rr.h 32;" d
-PARSE_SHORT parser/digest/param_parser.c 41;" d file:
-PARSE_SIPIFMATCH_H parser/parse_sipifmatch.h 2;" d
-PARSE_TO parser/parse_to.h 30;" d
-PARSE_URI_H parser/parse_uri.h 30;" d
-PARSE_VIA_H parser/parse_via.h 40;" d
-PAR_ALGORITHM parser/digest/param_parser.h /^ PAR_ALGORITHM, \/* algorithm parameter *\/$/;" e enum:dig_par
-PAR_CNONCE parser/digest/param_parser.h /^ PAR_CNONCE, \/* cnonce parameter *\/$/;" e enum:dig_par
-PAR_NC parser/digest/param_parser.h /^ PAR_NC, \/* nonce-count parameter *\/$/;" e enum:dig_par
-PAR_NONCE parser/digest/param_parser.h /^ PAR_NONCE, \/* nonce parameter *\/$/;" e enum:dig_par
-PAR_OPAQUE parser/digest/param_parser.h /^ PAR_OPAQUE, \/* opaque parameter *\/$/;" e enum:dig_par
-PAR_OTHER parser/digest/param_parser.h /^ PAR_OTHER \/* unknown parameter *\/$/;" e enum:dig_par
-PAR_QOP parser/digest/param_parser.h /^ PAR_QOP, \/* qop parameter *\/$/;" e enum:dig_par
-PAR_REALM parser/digest/param_parser.h /^ PAR_REALM, \/* realm parameter *\/$/;" e enum:dig_par
-PAR_RESPONSE parser/digest/param_parser.h /^ PAR_RESPONSE, \/* response parameter *\/$/;" e enum:dig_par
-PAR_URI parser/digest/param_parser.h /^ PAR_URI, \/* uri parameter *\/$/;" e enum:dig_par
-PAR_USERNAME parser/digest/param_parser.h /^ PAR_USERNAME, \/* username parameter *\/$/;" e enum:dig_par
-PASS_COL modules/auth_db/authdb_mod.c 90;" d file:
-PASS_COL_2 modules/auth_db/authdb_mod.c 93;" d file:
-PASS_COL_2_LEN modules/auth_db/authdb_mod.c 94;" d file:
-PASS_COL_LEN modules/auth_db/authdb_mod.c 91;" d file:
-PATHOID modules/postgres/pg_type.h 55;" d
-PATH_MAX_GUESS config.h 187;" d
-PA_ACCEPT_PARSE modules/pa/paerrno.h /^ PA_ACCEPT_PARSE, \/* Error while parsing Accept header field *\/$/;" e enum:paerr
-PA_DIALOG_ERR modules/pa/paerrno.h /^ PA_DIALOG_ERR, \/* Error while creating dialog *\/$/;" e enum:paerr
-PA_EVENT_MISS modules/pa/paerrno.h /^ PA_EVENT_MISS, \/* Event header field missing *\/$/;" e enum:paerr
-PA_EVENT_PARSE modules/pa/paerrno.h /^ PA_EVENT_PARSE, \/* Error while parsing Event header field *\/$/;" e enum:paerr
-PA_EVENT_UNSUPP modules/pa/paerrno.h /^ PA_EVENT_UNSUPP, \/* Unsupported event package *\/$/;" e enum:paerr
-PA_EXPIRES_PARSE modules/pa/paerrno.h /^ PA_EXPIRES_PARSE, \/* Error while parsing Expires header field *\/$/;" e enum:paerr
-PA_EXTRACT_USER modules/pa/paerrno.h /^ PA_EXTRACT_USER, \/* Error while extracting username from R-URI *\/$/;" e enum:paerr
-PA_FROM_ERR modules/pa/paerrno.h /^ PA_FROM_ERR, \/* From malformed or missing *\/$/;" e enum:paerr
-PA_FROM_MISS modules/pa/paerrno.h /^ PA_FROM_MISS, \/* From header field missing *\/$/;" e enum:paerr
-PA_INTERNAL_ERROR modules/pa/paerrno.h /^ PA_INTERNAL_ERROR \/* Internal server error *\/$/;" e enum:paerr
-PA_MOD_H modules/pa/pa_mod.h 31;" d
-PA_NO_MEMORY modules/pa/paerrno.h /^ PA_NO_MEMORY, \/* No memory left *\/$/;" e enum:paerr
-PA_OK modules/pa/paerrno.h /^ PA_OK, \/* Everything went OK *\/$/;" e enum:paerr
-PA_PARSE_ERR modules/pa/paerrno.h /^ PA_PARSE_ERR, \/* Error while parsing headers *\/$/;" e enum:paerr
-PA_SMALL_BUFFER modules/pa/paerrno.h /^ PA_SMALL_BUFFER, \/* Buffer too small *\/$/;" e enum:paerr
-PA_TIMER_ERROR modules/pa/paerrno.h /^ PA_TIMER_ERROR, \/* Error in timer *\/$/;" e enum:paerr
-PA_TO_ERR modules/pa/paerrno.h /^ PA_TO_ERR, \/* To malformed or missing *\/$/;" e enum:paerr
-PA_UNSUPP_DOC modules/pa/paerrno.h /^ PA_UNSUPP_DOC, \/* Unsupported presence document format *\/$/;" e enum:paerr
-PA_URI_PARSE modules/pa/paerrno.h /^ PA_URI_PARSE, \/* Error while parsing URI *\/$/;" e enum:paerr
-PA_WRONG_ACCEPTS modules/pa/paerrno.h /^ PA_WRONG_ACCEPTS, \/* Accepts does not match event package *\/$/;" e enum:paerr
-PDOMAIN_H modules/pa/pdomain.h 36;" d
-PERMANENT_ATTR modules/cpl-c/CPL_tree.h 165;" d
-PERMISSIONS_H modules/permissions/permissions.h 37;" d
-PERMIT_DISTFILES_CDROM openbsd/Makefile /^PERMIT_DISTFILES_CDROM= Yes$/;" m
-PERMIT_DISTFILES_FTP openbsd/Makefile /^PERMIT_DISTFILES_FTP= Yes$/;" m
-PERMIT_PACKAGE_CDROM openbsd/Makefile /^PERMIT_PACKAGE_CDROM= Yes$/;" m
-PERMIT_PACKAGE_FTP openbsd/Makefile /^PERMIT_PACKAGE_FTP= Yes$/;" m
-PFLAG_LOCATION_CHANGED modules/pa/presentity.h /^ PFLAG_LOCATION_CHANGED=16$/;" e enum:pflag
-PFLAG_PRESENCE_CHANGED modules/pa/presentity.h /^ PFLAG_PRESENCE_CHANGED=1,$/;" e enum:pflag
-PFLAG_PRESENCE_LISTS_CHANGED modules/pa/presentity.h /^ PFLAG_PRESENCE_LISTS_CHANGED=2,$/;" e enum:pflag
-PFLAG_WATCHERINFO_CHANGED modules/pa/presentity.h /^ PFLAG_WATCHERINFO_CHANGED=4,$/;" e enum:pflag
-PFLAG_XCAP_CHANGED modules/pa/presentity.h /^ PFLAG_XCAP_CHANGED=8,$/;" e enum:pflag
-PF_LOCAL modules/nathelper/nathelper.c 164;" d file:
-PF_LOCAL modules/tm/t_fifo.c 70;" d file:
-PF_LOCAL unixsock_server.c 62;" d file:
-PF_LOCAL utils/serunix/serunix.c 43;" d file:
-PIDF_DTD modules/pa/pidf.c 58;" d file:
-PIDF_DTD_L modules/pa/pidf.c 59;" d file:
-PIDF_H modules/pa/pidf.h 31;" d
-PIDF_ST_CLOSED modules/pa/pidf.h /^ PIDF_ST_CLOSED$/;" e enum:pidf_status
-PIDF_ST_OPEN modules/pa/pidf.h /^ PIDF_ST_OPEN,$/;" e enum:pidf_status
-PIKE_PRINT_IP_TREE modules/pike/pike_fifo.h 44;" d
-PIKE_PRINT_TIMER modules/pike/pike_fifo.h 45;" d
-PKG_MALLOC_STR version.h 112;" d
-PKG_MALLOC_STR version.h 114;" d
-PKG_MEM_POOL_SIZE config.h 120;" d
-PLOG modules/postgres/con_postgres.h 66;" d
-PLUS cfg.tab.c /^ PLUS = 381,$/;" e enum:yytokentype file:
-PLUS cfg.tab.c 323;" d file:
-PLUS cfg.tab.h /^ PLUS = 381,$/;" e enum:yytokentype
-PLUS cfg.tab.h 299;" d
-POINTER md5global.h /^typedef unsigned char *POINTER;$/;" t
-POINTOID modules/postgres/pg_type.h 53;" d
-POLYGONOID modules/postgres/pg_type.h 57;" d
-PORT cfg.tab.c /^ PORT = 318,$/;" e enum:yytokentype file:
-PORT cfg.tab.c 260;" d file:
-PORT cfg.tab.h /^ PORT = 318,$/;" e enum:yytokentype
-PORT cfg.tab.h 236;" d
-PORT test/test.c 42;" d file:
-PORTNAME freebsd/Makefile /^PORTNAME= ser$/;" m
-PORTNAME netbsd/Makefile /^PORTNAME= ser$/;" m
-PORTNAME openbsd/Makefile /^PORTNAME= ser$/;" m
-PORTVERSION freebsd/Makefile /^PORTVERSION= 0.9.4$/;" m
-PORTVERSION netbsd/Makefile /^PORTVERSION= 0.9.4$/;" m
-PORTVERSION openbsd/Makefile /^PORTVERSION= 0.9.4$/;" m
-PORT_REGEX modules/mangler/sdp_mangler.h 53;" d
-PORT_REGEX modules/mangler/sdp_mangler.h 59;" d
-PORT_VAL modules/cpl-c/CPL_tree.h 78;" d
-POST_SCRIPT_CB script_cb.h /^ POST_SCRIPT_CB$/;" e
-PPOR_CASE parser/case_unsu.h 55;" d
-PREFIX cfg.tab.c /^ PREFIX = 273,$/;" e enum:yytokentype file:
-PREFIX cfg.tab.c 215;" d file:
-PREFIX cfg.tab.h /^ PREFIX = 273,$/;" e enum:yytokentype
-PREFIX cfg.tab.h 191;" d
-PREFIX modules/jabber/xsnprintf.c 340;" d file:
-PREFIX_T route_struct.h /^ LEN_GT_T, PREFIX_T, STRIP_T,STRIP_TAIL_T,$/;" e
-PRESCAPS_ETAG modules/pa/pidf.c 157;" d file:
-PRESCAPS_ETAG_L modules/pa/pidf.c 158;" d file:
-PRESCAPS_STAG modules/pa/pidf.c 154;" d file:
-PRESCAPS_STAG_L modules/pa/pidf.c 155;" d file:
-PRESCAP_APPLICATION modules/pa/presentity.h /^ PRESCAP_APPLICATION = (1 << 3)$/;" e enum:prescaps
-PRESCAP_AUDIO modules/pa/presentity.h /^ PRESCAP_AUDIO = (1 << 0),$/;" e enum:prescaps
-PRESCAP_TEXT modules/pa/presentity.h /^ PRESCAP_TEXT = (1 << 2),$/;" e enum:prescaps
-PRESCAP_VIDEO modules/pa/presentity.h /^ PRESCAP_VIDEO = (1 << 1),$/;" e enum:prescaps
-PRESENCE_END modules/pa/pidf.c 67;" d file:
-PRESENCE_END_L modules/pa/pidf.c 68;" d file:
-PRESENCE_ETAG modules/pa/pidf.c 70;" d file:
-PRESENCE_ETAG modules/pa/xpidf.c 51;" d file:
-PRESENCE_ETAG_L modules/pa/pidf.c 71;" d file:
-PRESENCE_ETAG_L modules/pa/xpidf.c 52;" d file:
-PRESENCE_STAG modules/pa/xpidf.c 48;" d file:
-PRESENCE_STAG_L modules/pa/xpidf.c 49;" d file:
-PRESENCE_START modules/pa/pidf.c 64;" d file:
-PRESENCE_START_L modules/pa/pidf.c 65;" d file:
-PRESENCE_TEXT modules/pa/notify.c 56;" d file:
-PRESENCE_TEXT_L modules/pa/notify.c 57;" d file:
-PRESENTITY_END modules/pa/xpidf.c 69;" d file:
-PRESENTITY_END_L modules/pa/xpidf.c 70;" d file:
-PRESENTITY_H modules/pa/presentity.h 32;" d
-PRESENTITY_START modules/pa/xpidf.c 66;" d file:
-PRESENTITY_START_L modules/pa/xpidf.c 67;" d file:
-PRES_LOCATION_STR parser/parse_event.c 57;" d file:
-PRES_LOCATION_STR_LEN parser/parse_event.c 58;" d file:
-PRES_OFFLINE modules/usrloc/notify.h /^ PRES_OFFLINE = 0,$/;" e enum:pres_state
-PRES_ONLINE modules/usrloc/notify.h /^ PRES_ONLINE$/;" e enum:pres_state
-PRES_STR parser/parse_event.c 48;" d file:
-PRES_STR_LEN parser/parse_event.c 49;" d file:
-PRES_WINFO_STR parser/parse_event.c 51;" d file:
-PRES_WINFO_STR_LEN parser/parse_event.c 52;" d file:
-PRES_XCAP_CHANGE_STR parser/parse_event.c 54;" d file:
-PRES_XCAP_CHANGE_STR_LEN parser/parse_event.c 55;" d file:
-PREV_FRAG_END mem/q_malloc.c 67;" d file:
-PREV_FRAG_END mem/vq_malloc.h 48;" d
-PREV_POS modules/pike/ip_tree.h 52;" d
-PRE_SCRIPT_CB script_cb.h /^ PRE_SCRIPT_CB,$/;" e
-PRINT_CMD unixsock_server.c 91;" d file:
-PRIORITY_ATTR modules/cpl-c/CPL_tree.h 141;" d
-PRIORITY_END modules/pa/pidf.c 85;" d file:
-PRIORITY_END_L modules/pa/pidf.c 86;" d file:
-PRIORITY_NODE modules/cpl-c/CPL_tree.h 52;" d
-PRIORITY_START modules/pa/pidf.c 82;" d file:
-PRIORITY_START_L modules/pa/pidf.c 83;" d file:
-PRIORITY_SWITCH_NODE modules/cpl-c/CPL_tree.h 53;" d
-PRIOSTR_ATTR modules/cpl-c/CPL_tree.h 124;" d
-PROC_FIFO sr_module.h 76;" d
-PROC_MAIN sr_module.h 74;" d
-PROC_TCP_MAIN sr_module.h 77;" d
-PROC_TIMER sr_module.h 75;" d
-PROC_UNIXSOCK sr_module.h 78;" d
-PROTO cfg.tab.c /^ PROTO = 303,$/;" e enum:yytokentype file:
-PROTO cfg.tab.c 245;" d file:
-PROTO cfg.tab.h /^ PROTO = 303,$/;" e enum:yytokentype
-PROTO cfg.tab.h 221;" d
-PROTO2UINT main.c 706;" d file:
-PROTOTYPES md5global.h 16;" d
-PROTO_LIST md5global.h 33;" d
-PROTO_LIST md5global.h 35;" d
-PROTO_NONE ip_addr.h /^enum sip_protos { PROTO_NONE, PROTO_UDP, PROTO_TCP, PROTO_TLS, PROTO_SCTP };$/;" e enum:sip_protos
-PROTO_NONE test/p_uri.c /^enum {PROTO_NONE, PROTO_UDP, PROTO_TCP, PROTO_TLS, PROTO_SCTP };$/;" e file:
-PROTO_O route_struct.h /^ DSTIP_O, DSTPORT_O, PROTO_O, AF_O, MSGLEN_O, DEFAULT_O, ACTION_O,$/;" e
-PROTO_SCTP ip_addr.h /^enum sip_protos { PROTO_NONE, PROTO_UDP, PROTO_TCP, PROTO_TLS, PROTO_SCTP };$/;" e enum:sip_protos
-PROTO_SCTP test/p_uri.c /^enum {PROTO_NONE, PROTO_UDP, PROTO_TCP, PROTO_TLS, PROTO_SCTP };$/;" e file:
-PROTO_TCP ip_addr.h /^enum sip_protos { PROTO_NONE, PROTO_UDP, PROTO_TCP, PROTO_TLS, PROTO_SCTP };$/;" e enum:sip_protos
-PROTO_TCP test/p_uri.c /^enum {PROTO_NONE, PROTO_UDP, PROTO_TCP, PROTO_TLS, PROTO_SCTP };$/;" e file:
-PROTO_TLS ip_addr.h /^enum sip_protos { PROTO_NONE, PROTO_UDP, PROTO_TCP, PROTO_TLS, PROTO_SCTP };$/;" e enum:sip_protos
-PROTO_TLS test/p_uri.c /^enum {PROTO_NONE, PROTO_UDP, PROTO_TCP, PROTO_TLS, PROTO_SCTP };$/;" e file:
-PROTO_UDP ip_addr.h /^enum sip_protos { PROTO_NONE, PROTO_UDP, PROTO_TCP, PROTO_TLS, PROTO_SCTP };$/;" e enum:sip_protos
-PROTO_UDP test/p_uri.c /^enum {PROTO_NONE, PROTO_UDP, PROTO_TCP, PROTO_TLS, PROTO_SCTP };$/;" e file:
-PROX2_CASE parser/case_prox.h 89;" d
-PROXY_AUTH_CHALLENGE modules/auth/challenge.c 50;" d file:
-PROXY_AUTH_CHALLENGE modules/auth_diameter/defs.h 33;" d
-PROXY_AUTH_CHALLENGE_LEN modules/auth_diameter/defs.h 30;" d
-PROXY_NODE modules/cpl-c/CPL_tree.h 51;" d
-PROXY_ST route_struct.h /^enum { NOSUBTYPE=0, STRING_ST, NET_ST, NUMBER_ST, IP_ST, RE_ST, PROXY_ST,$/;" e
-PSTATE_H modules/pa/pstate.h 31;" d
-PS_AWAY modules/pa/pstate.h /^ PS_AWAY, \/* Presentity is away *\/$/;" e enum:pstate
-PS_CMD unixsock_server.c 95;" d file:
-PS_DND modules/pa/pstate.h /^ PS_DND, \/* Do Not Disturb *\/$/;" e enum:pstate
-PS_NSTATES modules/pa/pstate.h /^ PS_NSTATES$/;" e enum:pstate
-PS_OFFLINE modules/pa/pstate.h /^ PS_OFFLINE, \/* Presentity is offline *\/$/;" e enum:pstate
-PS_ONLINE modules/pa/pstate.h /^ PS_ONLINE, \/* Presentity is online *\/$/;" e enum:pstate
-PS_TYPING modules/pa/pstate.h /^ PS_TYPING, \/* Presentity is typing a message *\/$/;" e enum:pstate
-PS_UNKNOWN modules/pa/pstate.h /^ PS_UNKNOWN = 0, \/* State of presentity is unknown *\/$/;" e enum:pstate
-PS_XAWAY modules/pa/pstate.h /^ PS_XAWAY, \/* Presentity is extended-away *\/$/;" e enum:pstate
-PTHREAD_LIBS test/locking/Makefile /^PTHREAD_LIBS= -lc_r$/;" m
-PTHREAD_LIBS test/locking/Makefile /^PTHREAD_LIBS= -lpthread$/;" m
-PTIME_H modules/pa/ptime.h 32;" d
-PUBLIC_ID modules/pa/location.c 62;" d file:
-PUBLIC_ID modules/pa/pidf.c 46;" d file:
-PUBLIC_ID modules/pa/watcher.c 539;" d file:
-PUBLIC_ID modules/pa/xpidf.c 39;" d file:
-PUBLIC_ID_L modules/pa/location.c 63;" d file:
-PUBLIC_ID_L modules/pa/pidf.c 47;" d file:
-PUBLIC_ID_L modules/pa/watcher.c 540;" d file:
-PUBLIC_ID_L modules/pa/xpidf.c 40;" d file:
-PUBLISH_H modules/pa/publish.h 32;" d
-PWD_CMD unixsock_server.c 97;" d file:
-P_COMMENT parser/parse_via.c /^ F_COMMENT, P_COMMENT,$/;" e file:
-P_COMMENT test/via_parse.c /^ F_COMMENT, P_COMMENT,$/;" e file:
-P_EXPIRES parser/parse_param.h /^ P_EXPIRES, \/* Contact: expires parameter *\/$/;" e enum:ptype
-P_HOST parser/parse_via.c /^ F_HOST, P_HOST,$/;" e file:
-P_HOST test/via_parse.c /^enum{ F_HOST, P_HOST,$/;" e file:
-P_IP6HOST parser/parse_via.c /^ F_IP6HOST, P_IP6HOST, $/;" e file:
-P_IP6HOST test/via_parse.c /^ F_IP6HOST, P_IP6HOST,$/;" e file:
-P_LR parser/parse_param.h /^ P_LR, \/* URI: lr parameter *\/$/;" e enum:ptype
-P_MADDR parser/parse_param.h /^ P_MADDR, \/* URI: maddr parameter *\/$/;" e enum:ptype
-P_METHOD parser/parse_fline.c /^ P_METHOD = 200, L_URI, P_URI, L_VER, $/;" e file:
-P_METHOD parser/parse_param.h /^ P_METHOD, \/* Contact: method parameter *\/$/;" e enum:ptype
-P_OTHER parser/parse_param.h /^ P_OTHER = 0, \/* Unknown parameter *\/$/;" e enum:ptype
-P_PARAM parser/parse_via.c /^ L_PARAM, F_PARAM, P_PARAM,$/;" e file:
-P_PARAM test/via_parse.c /^ L_PARAM, F_PARAM, P_PARAM,$/;" e file:
-P_PORT parser/parse_via.c /^ L_PORT, F_PORT, P_PORT,$/;" e file:
-P_PORT test/via_parse.c /^ L_PORT, F_PORT, P_PORT,$/;" e file:
-P_PROTO test/via_parse.c /^ L_PROTO, F_PROTO, P_PROTO$/;" e file:
-P_Q parser/parse_param.h /^ P_Q, \/* Contact: q parameter *\/$/;" e enum:ptype
-P_R2 parser/parse_param.h /^ P_R2, \/* URI: r2 parameter (ser specific) *\/$/;" e enum:ptype
-P_REASON parser/parse_fline.c /^ L_STATUS, P_STATUS, L_REASON, P_REASON,$/;" e file:
-P_RECEIVED parser/parse_param.h /^ P_RECEIVED, \/* Contact: received parameter *\/$/;" e enum:ptype
-P_STATUS parser/parse_fline.c /^ L_STATUS, P_STATUS, L_REASON, P_REASON,$/;" e file:
-P_STRING parser/parse_via.c /^ L_VALUE = 200, F_VALUE, P_VALUE, P_STRING,$/;" e file:
-P_STRING test/via_parse.c /^enum{ L_VALUE=200, F_VALUE, P_VALUE, P_STRING,$/;" e file:
-P_TRANSPORT parser/parse_param.h /^ P_TRANSPORT, \/* URI: transport parameter *\/$/;" e enum:ptype
-P_TTL parser/parse_param.h /^ P_TTL, \/* URI: ttl parameter *\/$/;" e enum:ptype
-P_URI parser/parse_fline.c /^ P_METHOD = 200, L_URI, P_URI, L_VER, $/;" e file:
-P_VALUE parser/parse_via.c /^ L_VALUE = 200, F_VALUE, P_VALUE, P_STRING,$/;" e file:
-P_VALUE test/via_parse.c /^enum{ L_VALUE=200, F_VALUE, P_VALUE, P_STRING,$/;" e file:
-QM_HASH_SIZE mem/q_malloc.h 71;" d
-QM_MALLOC_OPTIMIZE mem/q_malloc.h 66;" d
-QM_MALLOC_OPTIMIZE_FACTOR mem/q_malloc.h 65;" d
-QOP_AUTH parser/digest/digest_parser.h /^ QOP_AUTH = 1, \/* Authentication only *\/$/;" e enum:qop_type
-QOP_AUTHINT parser/digest/digest_parser.h /^ QOP_AUTHINT = 2, \/* Authentication with integrity checks *\/$/;" e enum:qop_type
-QOP_AUTHINT_STR parser/digest/digest_parser.c 49;" d file:
-QOP_AUTHINT_STR_LEN parser/digest/digest_parser.c 50;" d file:
-QOP_AUTH_STR parser/digest/digest_parser.c 46;" d file:
-QOP_AUTH_STR_LEN parser/digest/digest_parser.c 47;" d file:
-QOP_OTHER parser/digest/digest_parser.h /^ QOP_OTHER = 4 \/* Unknown *\/$/;" e enum:qop_type
-QOP_PARAM modules/auth/challenge.c 60;" d file:
-QOP_PARAM_LEN modules/auth/challenge.c 61;" d file:
-QOP_UNSPEC parser/digest/digest_parser.h /^ QOP_UNSPEC = 0, \/* QOP parameter not present in response *\/$/;" e enum:qop_type
-QUAD_T modules/jabber/xode.h 41;" d
-QUIR_CASE parser/case_prox.h 75;" d
-Q_CLOSED modules/pa/lpidf.c 52;" d file:
-Q_CLOSED_L modules/pa/lpidf.c 53;" d file:
-Q_COL modules/usrloc/ul_mod.c 64;" d file:
-Q_OPEN modules/pa/lpidf.c 49;" d file:
-Q_OPEN_L modules/pa/lpidf.c 50;" d file:
-Q_PARAM dset.c 47;" d file:
-Q_PARAM modules/registrar/reply.c 56;" d file:
-Q_PARAM_LEN dset.c 48;" d file:
-Q_PARAM_LEN modules/registrar/reply.c 57;" d file:
-Q_PREFIX qvalue.h 79;" d
-Q_PREFIX_LEN qvalue.h 80;" d
-Q_UNSPECIFIED qvalue.h 67;" d
-RADIUS_ETAG modules/pa/pidf.c 151;" d file:
-RADIUS_ETAG_L modules/pa/pidf.c 152;" d file:
-RADIUS_STAG modules/pa/pidf.c 148;" d file:
-RADIUS_STAG_L modules/pa/pidf.c 149;" d file:
-RAD_ACC_FMT modules/acc/defs.h 55;" d
-RAND_SECRET_LEN modules/auth/auth_mod.c 54;" d file:
-RAWQUERYRES_CMD db/db_fifo.c 57;" d file:
-RAWQUERYRES_STR db/db_fifo.c 69;" d file:
-RAWQUERYRES_STR_LEN db/db_fifo.c 70;" d file:
-RAWQUERY_CMD db/db_fifo.c 56;" d file:
-RAWQUERY_STR db/db_fifo.c 67;" d file:
-RAWQUERY_STR_LEN db/db_fifo.c 68;" d file:
-RA_MSG_CODE modules/acc/diam_message.h 68;" d
-RA_MSG_CODE modules/acc/diam_message.h 78;" d
-RA_MSG_CODE modules/auth_diameter/diameter_msg.h 68;" d
-RA_MSG_CODE modules/auth_diameter/diameter_msg.h 78;" d
-RBRACE cfg.tab.c /^ RBRACE = 392,$/;" e enum:yytokentype file:
-RBRACE cfg.tab.c 334;" d file:
-RBRACE cfg.tab.h /^ RBRACE = 392,$/;" e enum:yytokentype
-RBRACE cfg.tab.h 310;" d
-RBRACK cfg.tab.c /^ RBRACK = 394,$/;" e enum:yytokentype file:
-RBRACK cfg.tab.c 336;" d file:
-RBRACK cfg.tab.h /^ RBRACK = 394,$/;" e enum:yytokentype
-RBRACK cfg.tab.h 312;" d
-RCV_NAME modules/registrar/reg_mod.c 74;" d file:
-RCV_NAME_LEN modules/registrar/reg_mod.c 75;" d file:
-RD_R parser/obsolete/strs.h 265;" d
-RD_R_CASE parser/case_reco.h 43;" d
-RD_r parser/obsolete/strs.h 264;" d
-READ modules/nathelper/nhelpr_funcs.c 53;" d file:
-READ parser/digest/param_parser.c 79;" d file:
-READ parser/parse_hname2.c 89;" d file:
-READ_SLEEP modules/sms/libsms_modem.h 27;" d
-READ_TIMEOUT modules/sms/libsms_modem.h 28;" d
-REASON_ATTR modules/cpl-c/CPL_tree.h 169;" d
-REASON_DEACTIVATED modules/pa/notify.c 101;" d file:
-REASON_DEACTIVATED_L modules/pa/notify.c 102;" d file:
-REASON_GIVEUP modules/pa/notify.c 116;" d file:
-REASON_GIVEUP_L modules/pa/notify.c 117;" d file:
-REASON_NORESOURCE modules/pa/notify.c 104;" d file:
-REASON_NORESOURCE_L modules/pa/notify.c 105;" d file:
-REASON_PROBATION modules/pa/notify.c 107;" d file:
-REASON_PROBATION_L modules/pa/notify.c 108;" d file:
-REASON_REJECTED modules/pa/notify.c 110;" d file:
-REASON_REJECTED_L modules/pa/notify.c 111;" d file:
-REASON_TIMEOUT modules/pa/notify.c 113;" d file:
-REASON_TIMEOUT_L modules/pa/notify.c 114;" d file:
-RECEIVED config.h 93;" d
-RECEIVED1 parser/parse_via.c /^ RECEIVED1, RECEIVED2, RECEIVED3, RECEIVED4, RECEIVED5, RECEIVED6,$/;" e file:
-RECEIVED1 test/via_parse.c /^ RECEIVED1, RECEIVED2, RECEIVED3, RECEIVED4, RECEIVED5, RECEIVED6,$/;" e file:
-RECEIVED2 parser/parse_via.c /^ RECEIVED1, RECEIVED2, RECEIVED3, RECEIVED4, RECEIVED5, RECEIVED6,$/;" e file:
-RECEIVED2 test/via_parse.c /^ RECEIVED1, RECEIVED2, RECEIVED3, RECEIVED4, RECEIVED5, RECEIVED6,$/;" e file:
-RECEIVED3 parser/parse_via.c /^ RECEIVED1, RECEIVED2, RECEIVED3, RECEIVED4, RECEIVED5, RECEIVED6,$/;" e file:
-RECEIVED3 test/via_parse.c /^ RECEIVED1, RECEIVED2, RECEIVED3, RECEIVED4, RECEIVED5, RECEIVED6,$/;" e file:
-RECEIVED4 parser/parse_via.c /^ RECEIVED1, RECEIVED2, RECEIVED3, RECEIVED4, RECEIVED5, RECEIVED6,$/;" e file:
-RECEIVED4 test/via_parse.c /^ RECEIVED1, RECEIVED2, RECEIVED3, RECEIVED4, RECEIVED5, RECEIVED6,$/;" e file:
-RECEIVED5 parser/parse_via.c /^ RECEIVED1, RECEIVED2, RECEIVED3, RECEIVED4, RECEIVED5, RECEIVED6,$/;" e file:
-RECEIVED5 test/via_parse.c /^ RECEIVED1, RECEIVED2, RECEIVED3, RECEIVED4, RECEIVED5, RECEIVED6,$/;" e file:
-RECEIVED6 parser/parse_via.c /^ RECEIVED1, RECEIVED2, RECEIVED3, RECEIVED4, RECEIVED5, RECEIVED6,$/;" e file:
-RECEIVED6 test/via_parse.c /^ RECEIVED1, RECEIVED2, RECEIVED3, RECEIVED4, RECEIVED5, RECEIVED6,$/;" e file:
-RECEIVED7 parser/parse_via.c /^ RECEIVED7,$/;" e file:
-RECEIVED7 test/via_parse.c /^ RECEIVED7,$/;" e file:
-RECEIVED_COL modules/usrloc/ul_mod.c 71;" d file:
-RECEIVED_LEN config.h 94;" d
-RECO parser/obsolete/strs.h 256;" d
-RECORDOID modules/postgres/pg_type.h 88;" d
-RECORD_H modules/rr/record.h 35;" d
-RECROUTE1 parser/obsolete/parse_hname.c /^ RECROUTE1, RECROUTE2, RECROUTE3, RECROUTE4, RECROUTE5, $/;" e file:
-RECROUTE10 parser/obsolete/parse_hname.c /^ RECROUTE6, RECROUTE7, RECROUTE8, RECROUTE9, RECROUTE10,$/;" e file:
-RECROUTE2 parser/obsolete/parse_hname.c /^ RECROUTE1, RECROUTE2, RECROUTE3, RECROUTE4, RECROUTE5, $/;" e file:
-RECROUTE3 parser/obsolete/parse_hname.c /^ RECROUTE1, RECROUTE2, RECROUTE3, RECROUTE4, RECROUTE5, $/;" e file:
-RECROUTE4 parser/obsolete/parse_hname.c /^ RECROUTE1, RECROUTE2, RECROUTE3, RECROUTE4, RECROUTE5, $/;" e file:
-RECROUTE5 parser/obsolete/parse_hname.c /^ RECROUTE1, RECROUTE2, RECROUTE3, RECROUTE4, RECROUTE5, $/;" e file:
-RECROUTE6 parser/obsolete/parse_hname.c /^ RECROUTE6, RECROUTE7, RECROUTE8, RECROUTE9, RECROUTE10,$/;" e file:
-RECROUTE7 parser/obsolete/parse_hname.c /^ RECROUTE6, RECROUTE7, RECROUTE8, RECROUTE9, RECROUTE10,$/;" e file:
-RECROUTE8 parser/obsolete/parse_hname.c /^ RECROUTE6, RECROUTE7, RECROUTE8, RECROUTE9, RECROUTE10,$/;" e file:
-RECROUTE9 parser/obsolete/parse_hname.c /^ RECROUTE6, RECROUTE7, RECROUTE8, RECROUTE9, RECROUTE10,$/;" e file:
-RECURSE_ATTR modules/cpl-c/CPL_tree.h 158;" d
-REC_ERR modules/cpl-c/cpl_time.c 946;" d file:
-REC_MATCH modules/cpl-c/cpl_time.c 947;" d file:
-REC_NOMATCH modules/cpl-c/cpl_time.c 948;" d file:
-RECo parser/obsolete/strs.h 255;" d
-REDIRECTION_NODE modules/cpl-c/CPL_tree.h 56;" d
-REDIRECT_CALL modules/cpl/jcpli.h 50;" d
-REDIRECT_NODE modules/cpl-c/CPL_tree.h 55;" d
-RED_NODE modules/pike/ip_tree.h 47;" d
-REFCURSOROID modules/postgres/pg_type.h 82;" d
-REF_ATTR modules/cpl-c/CPL_tree.h 201;" d
-REF_UNSAFE modules/tm/t_funcs.h 110;" d
-REGCLASSOID modules/postgres/pg_type.h 86;" d
-REGEXP_H modules/enum/regexp.h 33;" d
-REGOPERATOROID modules/postgres/pg_type.h 85;" d
-REGOPEROID modules/postgres/pg_type.h 84;" d
-REGPROCEDUREOID modules/postgres/pg_type.h 83;" d
-REGPROCOID modules/postgres/pg_type.h 46;" d
-REGTIME_H modules/registrar/regtime.h 32;" d
-REGTYPEOID modules/postgres/pg_type.h 87;" d
-REG_MOD_H modules/registrar/reg_mod.h 32;" d
-REJECT lex.yy.c 1123;" d file:
-REJECT_CALL modules/cpl/jcpli.h 49;" d
-REJECT_NODE modules/cpl-c/CPL_tree.h 54;" d
-REJECT_STR modules/cpl-c/CPL_tree.h 177;" d
-REJECT_STR_LEN modules/cpl-c/CPL_tree.h 178;" d
-REJECT_VAL modules/cpl-c/CPL_tree.h 176;" d
-REL234_EQ modules/jabber/tree234.h /^ REL234_EQ, REL234_LT, REL234_LE, REL234_GT, REL234_GE$/;" e
-REL234_GE modules/jabber/tree234.h /^ REL234_EQ, REL234_LT, REL234_LE, REL234_GT, REL234_GE$/;" e
-REL234_GT modules/jabber/tree234.h /^ REL234_EQ, REL234_LT, REL234_LE, REL234_GT, REL234_GE$/;" e
-REL234_LE modules/jabber/tree234.h /^ REL234_EQ, REL234_LT, REL234_LE, REL234_GT, REL234_GE$/;" e
-REL234_LT modules/jabber/tree234.h /^ REL234_EQ, REL234_LT, REL234_LE, REL234_GT, REL234_GE$/;" e
-RELTIMEOID modules/postgres/pg_type.h 62;" d
-REMOVE_ACTION modules/cpl-c/cpl.c 683;" d file:
-REMOVE_ACTION_LEN modules/cpl-c/cpl.c 684;" d file:
-REMOVE_LOCATION_NODE modules/cpl-c/CPL_tree.h 57;" d
-REMOVE_SCRIPT modules/cpl-c/cpl.c 686;" d file:
-REPLACE_CHAR re.h /^enum replace_special { REPLACE_NMATCH, REPLACE_CHAR, REPLACE_URI };$/;" e enum:replace_special
-REPLACE_NMATCH re.h /^enum replace_special { REPLACE_NMATCH, REPLACE_CHAR, REPLACE_URI };$/;" e enum:replace_special
-REPLACE_URI re.h /^enum replace_special { REPLACE_NMATCH, REPLACE_CHAR, REPLACE_URI };$/;" e enum:replace_special
-REPLY_CLASS parser/msg_parser.h 65;" d
-REPLY_H modules/pa/reply.h 31;" d
-REPLY_H modules/registrar/reply.h 32;" d
-REPLY_OVERBUFFER_LEN modules/tm/config.h 68;" d
-REPLY_STATUS parser/msg_parser.h 64;" d
-REPLY_TO_VIA cfg.tab.c /^ REPLY_TO_VIA = 335,$/;" e enum:yytokentype file:
-REPLY_TO_VIA cfg.tab.c 277;" d file:
-REPLY_TO_VIA cfg.tab.h /^ REPLY_TO_VIA = 335,$/;" e enum:yytokentype
-REPLY_TO_VIA cfg.tab.h 253;" d
-REPORT_TIMEOUT modules/sms/sms_report.c 35;" d file:
-REQUEST_ROUTE sr_module.h 69;" d
-REQ_EXIST modules/tm/h_table.h /^enum kill_reason { REQ_FWDED=1, REQ_RPLD=2, REQ_RLSD=4, REQ_EXIST=8 };$/;" e enum:kill_reason
-REQ_FWDED modules/tm/h_table.h /^enum kill_reason { REQ_FWDED=1, REQ_RPLD=2, REQ_RLSD=4, REQ_EXIST=8 };$/;" e enum:kill_reason
-REQ_LINE parser/msg_parser.h 62;" d
-REQ_METHOD parser/msg_parser.h 63;" d
-REQ_RLSD modules/tm/h_table.h /^enum kill_reason { REQ_FWDED=1, REQ_RPLD=2, REQ_RLSD=4, REQ_EXIST=8 };$/;" e enum:kill_reason
-REQ_RPLD modules/tm/h_table.h /^enum kill_reason { REQ_FWDED=1, REQ_RPLD=2, REQ_RLSD=4, REQ_EXIST=8 };$/;" e enum:kill_reason
-RERRNO_H modules/registrar/rerrno.h 32;" d
-RESETFLAG cfg.tab.c /^ RESETFLAG = 293,$/;" e enum:yytokentype file:
-RESETFLAG cfg.tab.c 235;" d file:
-RESETFLAG cfg.tab.h /^ RESETFLAG = 293,$/;" e enum:yytokentype
-RESETFLAG cfg.tab.h 211;" d
-RESETFLAG_T route_struct.h /^ SETFLAG_T, RESETFLAG_T, ISFLAGSET_T ,$/;" e
-RESIZE test/shoot.c 30;" d file:
-RESIZE test/shoot2.c 32;" d file:
-RES_COL_N db/db_res.h 51;" d
-RES_H modules/mysql/res.h 31;" d
-RES_NAMES db/db_res.h 49;" d
-RES_ROWS db/db_res.h 52;" d
-RES_ROW_N db/db_res.h 53;" d
-RES_TYPES db/db_res.h 50;" d
-RETRY_AFTER modules/registrar/reply.c 286;" d file:
-RETRY_AFTER_LEN modules/registrar/reply.c 287;" d file:
-RETR_T1 modules/tm/config.h 61;" d
-RETR_T2 modules/tm/config.h 62;" d
-REVERSE_ORDER modules/tm/dlg.c 50;" d file:
-REVERT_URI cfg.tab.c /^ REVERT_URI = 281,$/;" e enum:yytokentype file:
-REVERT_URI cfg.tab.c 223;" d file:
-REVERT_URI cfg.tab.h /^ REVERT_URI = 281,$/;" e enum:yytokentype
-REVERT_URI cfg.tab.h 199;" d
-REVERT_URI_T route_struct.h /^ REVERT_URI_T,$/;" e
-REV_DNS cfg.tab.c /^ REV_DNS = 317,$/;" e enum:yytokentype file:
-REV_DNS cfg.tab.c 259;" d file:
-REV_DNS cfg.tab.h /^ REV_DNS = 317,$/;" e enum:yytokentype
-REV_DNS cfg.tab.h 235;" d
-RE_ST route_struct.h /^enum { NOSUBTYPE=0, STRING_ST, NET_ST, NUMBER_ST, IP_ST, RE_ST, PROXY_ST,$/;" e
-REcO parser/obsolete/strs.h 254;" d
-REco parser/obsolete/strs.h 253;" d
-RFC2617_H modules/auth_db/rfc2617.h 32;" d
-ROOM_ETAG modules/pa/pidf.c 133;" d file:
-ROOM_ETAG_L modules/pa/pidf.c 134;" d file:
-ROOM_STAG modules/pa/pidf.c 130;" d file:
-ROOM_STAG_L modules/pa/pidf.c 131;" d file:
-ROTATE_LEFT md5.c 83;" d file:
-ROUND4 modules/tm/sip_msg.c 66;" d file:
-ROUNDDOWN mem/f_malloc.c 62;" d file:
-ROUNDDOWN mem/q_malloc.c 76;" d file:
-ROUNDTO mem/f_malloc.h 51;" d
-ROUNDTO mem/f_malloc.h 53;" d
-ROUNDTO mem/f_malloc.h 57;" d
-ROUNDTO mem/q_malloc.h 50;" d
-ROUNDTO mem/q_malloc.h 52;" d
-ROUNDTO mem/q_malloc.h 56;" d
-ROUNDTO_MASK mem/f_malloc.c 60;" d file:
-ROUNDTO_MASK mem/q_malloc.c 74;" d file:
-ROUNDUP mem/f_malloc.c 61;" d file:
-ROUNDUP mem/q_malloc.c 75;" d file:
-ROUT parser/obsolete/strs.h 239;" d
-ROUTE cfg.tab.c /^ ROUTE = 267,$/;" e enum:yytokentype file:
-ROUTE cfg.tab.c 209;" d file:
-ROUTE cfg.tab.h /^ ROUTE = 267,$/;" e enum:yytokentype
-ROUTE cfg.tab.h 185;" d
-ROUTE1 parser/obsolete/parse_hname.c /^ ROUTE1, ROUTE2, ROUTE3, ROUTE4,$/;" e file:
-ROUTE1 test/auto.c /^ ROUTE1, ROUTE2, ROUTE3, ROUTE4,$/;" e file:
-ROUTE2 parser/obsolete/parse_hname.c /^ ROUTE1, ROUTE2, ROUTE3, ROUTE4,$/;" e file:
-ROUTE2 test/auto.c /^ ROUTE1, ROUTE2, ROUTE3, ROUTE4,$/;" e file:
-ROUTE3 parser/obsolete/parse_hname.c /^ ROUTE1, ROUTE2, ROUTE3, ROUTE4,$/;" e file:
-ROUTE3 test/auto.c /^ ROUTE1, ROUTE2, ROUTE3, ROUTE4,$/;" e file:
-ROUTE4 parser/obsolete/parse_hname.c /^ ROUTE1, ROUTE2, ROUTE3, ROUTE4,$/;" e file:
-ROUTE4 test/auto.c /^ ROUTE1, ROUTE2, ROUTE3, ROUTE4,$/;" e file:
-ROUTE_BUFFER_MAX modules/tm/t_fifo.c 98;" d file:
-ROUTE_FAILURE cfg.tab.c /^ ROUTE_FAILURE = 268,$/;" e enum:yytokentype file:
-ROUTE_FAILURE cfg.tab.c 210;" d file:
-ROUTE_FAILURE cfg.tab.h /^ ROUTE_FAILURE = 268,$/;" e enum:yytokentype
-ROUTE_FAILURE cfg.tab.h 186;" d
-ROUTE_MAX_REC_LEV config.h 65;" d
-ROUTE_ONREPLY cfg.tab.c /^ ROUTE_ONREPLY = 269,$/;" e enum:yytokentype file:
-ROUTE_ONREPLY cfg.tab.c 211;" d file:
-ROUTE_ONREPLY cfg.tab.h /^ ROUTE_ONREPLY = 269,$/;" e enum:yytokentype
-ROUTE_ONREPLY cfg.tab.h 187;" d
-ROUTE_PREFIX modules/rr/loose.c 54;" d file:
-ROUTE_PREFIX modules/tm/dlg.c 52;" d file:
-ROUTE_PREFIX modules/tm/t_msgbuilder.c 60;" d file:
-ROUTE_PREFIX_LEN modules/rr/loose.c 55;" d file:
-ROUTE_PREFIX_LEN modules/tm/dlg.c 53;" d file:
-ROUTE_PREFIX_LEN modules/tm/t_msgbuilder.c 61;" d file:
-ROUTE_SEPARATOR modules/tm/dlg.c 55;" d file:
-ROUTE_SEPARATOR modules/tm/t_msgbuilder.c 63;" d file:
-ROUTE_SEPARATOR_LEN modules/tm/dlg.c 56;" d file:
-ROUTE_SEPARATOR_LEN modules/tm/t_msgbuilder.c 64;" d file:
-ROUTE_SUFFIX modules/rr/loose.c 57;" d file:
-ROUTE_SUFFIX_LEN modules/rr/loose.c 58;" d file:
-ROUTE_T route_struct.h /^enum { FORWARD_T=1, SEND_T, DROP_T, LOG_T, ERROR_T, ROUTE_T, EXEC_T,$/;" e
-ROUt parser/obsolete/strs.h 238;" d
-ROW_H modules/mysql/row.h 31;" d
-ROW_N db/db_row.h 45;" d
-ROW_VALUES db/db_row.h 44;" d
-ROuT parser/obsolete/strs.h 237;" d
-ROut parser/obsolete/strs.h 236;" d
-RPAREN cfg.tab.c /^ RPAREN = 389,$/;" e enum:yytokentype file:
-RPAREN cfg.tab.c 331;" d file:
-RPAREN cfg.tab.h /^ RPAREN = 389,$/;" e enum:yytokentype
-RPAREN cfg.tab.h 307;" d
-RPID_H modules/auth/rpid.h 35;" d
-RPID_HF_NAME modules/auth/rpid.c 49;" d file:
-RPID_HF_NAME_LEN modules/auth/rpid.c 50;" d file:
-RPL_CMD modules/extcmd/extcmd_funcs.c 59;" d file:
-RPORT config.h 102;" d
-RPORT1 parser/parse_via.c /^ RPORT1, RPORT2, RPORT3,$/;" e file:
-RPORT2 parser/parse_via.c /^ RPORT1, RPORT2, RPORT3,$/;" e file:
-RPORT3 parser/parse_via.c /^ RPORT1, RPORT2, RPORT3,$/;" e file:
-RPORT_LEN config.h 103;" d
-RPS_COMPLETED modules/tm/t_reply.h /^ RPS_COMPLETED,$/;" e enum:rps
-RPS_DISCARDED modules/tm/t_reply.h /^ RPS_DISCARDED,$/;" e enum:rps
-RPS_ERROR modules/tm/t_reply.h /^ RPS_ERROR=0, $/;" e enum:rps
-RPS_PROVISIONAL modules/tm/t_reply.h /^ RPS_PROVISIONAL$/;" e enum:rps
-RPS_PUSHED_AFTER_COMPLETION modules/tm/t_reply.h /^ RPS_PUSHED_AFTER_COMPLETION,$/;" e enum:rps
-RPS_STORE modules/tm/t_reply.h /^ RPS_STORE,$/;" e enum:rps
-RR_DRIVEN modules/rr/loose.c 51;" d file:
-RR_ERROR modules/rr/loose.c 50;" d file:
-RR_FROMTAG modules/rr/record.c 57;" d file:
-RR_FROMTAG_LEN modules/rr/record.c 58;" d file:
-RR_LR_FULL_TERM modules/rr/record.c 51;" d file:
-RR_LR_FULL_TERM_LEN modules/rr/record.c 52;" d file:
-RR_LR_TERM modules/rr/record.c 48;" d file:
-RR_LR_TERM_LEN modules/rr/record.c 49;" d file:
-RR_MOD_H modules/rr/rr_mod.h 37;" d
-RR_PREFIX modules/rr/record.c 45;" d file:
-RR_PREFIX_LEN modules/rr/record.c 46;" d file:
-RR_R2 modules/rr/record.c 60;" d file:
-RR_R2_LEN modules/rr/record.c 61;" d file:
-RR_SR_TERM modules/rr/record.c 54;" d file:
-RR_SR_TERM_LEN modules/rr/record.c 55;" d file:
-RSIO_CASE parser/case_dive.h 35;" d
-RTLD_NOW sr_module.c 209;" d file:
-RT_200 modules/sl/sl_stats.h /^enum reply_type { RT_200, RT_202, RT_2xx,$/;" e enum:reply_type
-RT_202 modules/sl/sl_stats.h /^enum reply_type { RT_200, RT_202, RT_2xx,$/;" e enum:reply_type
-RT_2xx modules/sl/sl_stats.h /^enum reply_type { RT_200, RT_202, RT_2xx,$/;" e enum:reply_type
-RT_300 modules/sl/sl_stats.h /^ RT_300, RT_301, RT_302, RT_3xx,$/;" e enum:reply_type
-RT_301 modules/sl/sl_stats.h /^ RT_300, RT_301, RT_302, RT_3xx,$/;" e enum:reply_type
-RT_302 modules/sl/sl_stats.h /^ RT_300, RT_301, RT_302, RT_3xx,$/;" e enum:reply_type
-RT_3xx modules/sl/sl_stats.h /^ RT_300, RT_301, RT_302, RT_3xx,$/;" e enum:reply_type
-RT_400 modules/sl/sl_stats.h /^ RT_400, RT_401, RT_403, RT_404, RT_407, $/;" e enum:reply_type
-RT_401 modules/sl/sl_stats.h /^ RT_400, RT_401, RT_403, RT_404, RT_407, $/;" e enum:reply_type
-RT_403 modules/sl/sl_stats.h /^ RT_400, RT_401, RT_403, RT_404, RT_407, $/;" e enum:reply_type
-RT_404 modules/sl/sl_stats.h /^ RT_400, RT_401, RT_403, RT_404, RT_407, $/;" e enum:reply_type
-RT_407 modules/sl/sl_stats.h /^ RT_400, RT_401, RT_403, RT_404, RT_407, $/;" e enum:reply_type
-RT_408 modules/sl/sl_stats.h /^ RT_408, RT_483, RT_4xx,$/;" e enum:reply_type
-RT_483 modules/sl/sl_stats.h /^ RT_408, RT_483, RT_4xx,$/;" e enum:reply_type
-RT_4xx modules/sl/sl_stats.h /^ RT_408, RT_483, RT_4xx,$/;" e enum:reply_type
-RT_500 modules/sl/sl_stats.h /^ RT_500, RT_5xx, $/;" e enum:reply_type
-RT_5xx modules/sl/sl_stats.h /^ RT_500, RT_5xx, $/;" e enum:reply_type
-RT_6xx modules/sl/sl_stats.h /^ RT_6xx,$/;" e enum:reply_type
-RT_END modules/sl/sl_stats.h /^ RT_END };$/;" e enum:reply_type
-RT_NO config.h 59;" d
-RT_T1_TO_1 modules/tm/timer.h /^ RT_T1_TO_1, RT_T1_TO_2, RT_T1_TO_3, RT_T2,$/;" e enum:lists
-RT_T1_TO_2 modules/tm/timer.h /^ RT_T1_TO_1, RT_T1_TO_2, RT_T1_TO_3, RT_T2,$/;" e enum:lists
-RT_T1_TO_3 modules/tm/timer.h /^ RT_T1_TO_1, RT_T1_TO_2, RT_T1_TO_3, RT_T2,$/;" e enum:lists
-RT_T2 modules/tm/timer.h /^ RT_T1_TO_1, RT_T1_TO_2, RT_T1_TO_3, RT_T2,$/;" e enum:lists
-RT_xxx modules/sl/sl_stats.h /^ RT_xxx,$/;" e enum:reply_type
-RULE_H modules/permissions/rule.h 32;" d
-R_AOR_LEN modules/registrar/rerrno.h /^ R_AOR_LEN, \/* Address Of Record too long *\/$/;" e enum:rerr
-R_AOR_PARSE modules/registrar/rerrno.h /^ R_AOR_PARSE, \/* Error while parsing Address Of Record *\/$/;" e enum:rerr
-R_CID_MISS modules/registrar/rerrno.h /^ R_CID_MISS, \/* Missing Call-ID header field *\/$/;" e enum:rerr
-R_CS_MISS modules/registrar/rerrno.h /^ R_CS_MISS, \/* Missing CSeq header field *\/$/;" e enum:rerr
-R_FINE modules/registrar/rerrno.h /^ R_FINE = 0, \/* Everything went OK *\/$/;" e enum:rerr
-R_INV_CSEQ modules/registrar/rerrno.h /^ R_INV_CSEQ, \/* Invalid CSeq value *\/$/;" e enum:rerr
-R_INV_EXP modules/registrar/rerrno.h /^ R_INV_EXP, \/* Invalid expires parameter in contact *\/$/;" e enum:rerr
-R_INV_Q modules/registrar/rerrno.h /^ R_INV_Q, \/* Invalid q parameter in contact *\/$/;" e enum:rerr
-R_OOO modules/registrar/rerrno.h /^ R_OOO, \/* Out-Of-Order request *\/$/;" e enum:rerr
-R_PARSE modules/registrar/rerrno.h /^ R_PARSE, \/* Error while parsing message *\/$/;" e enum:rerr
-R_PARSE_CONT modules/registrar/rerrno.h /^ R_PARSE_CONT, \/* Error while parsing Contact *\/$/;" e enum:rerr
-R_PARSE_EXP modules/registrar/rerrno.h /^ R_PARSE_EXP, \/* Error while parsing Expires *\/$/;" e enum:rerr
-R_RETRANS modules/registrar/rerrno.h /^ R_RETRANS, \/* Request is retransmission *\/$/;" e enum:rerr
-R_STAR_CONT modules/registrar/rerrno.h /^ R_STAR_CONT, \/* star and more contacts *\/$/;" e enum:rerr
-R_STAR_EXP modules/registrar/rerrno.h /^ R_STAR_EXP, \/* star and expires != 0 *\/$/;" e enum:rerr
-R_TOO_MANY modules/registrar/rerrno.h /^ R_TOO_MANY \/* Too many contacts *\/$/;" e enum:rerr
-R_TO_MISS modules/registrar/rerrno.h /^ R_TO_MISS, \/* Missing To header field *\/$/;" e enum:rerr
-R_TO_USER modules/registrar/rerrno.h /^ R_TO_USER, \/* No username part in To URI *\/$/;" e enum:rerr
-R_UL_DEL_C modules/registrar/rerrno.h /^ R_UL_DEL_C, \/* Usrloc contact delete failed *\/$/;" e enum:rerr
-R_UL_DEL_R modules/registrar/rerrno.h /^ R_UL_DEL_R, \/* Usrloc record delete failed *\/$/;" e enum:rerr
-R_UL_GET_R modules/registrar/rerrno.h /^ R_UL_GET_R, \/* Usrloc record get failed *\/$/;" e enum:rerr
-R_UL_INS_C modules/registrar/rerrno.h /^ R_UL_INS_C, \/* Usrloc insert contact failed *\/$/;" e enum:rerr
-R_UL_INS_R modules/registrar/rerrno.h /^ R_UL_INS_R, \/* Usrloc insert record failed *\/$/;" e enum:rerr
-R_UL_NEW_R modules/registrar/rerrno.h /^ R_UL_NEW_R, \/* Usrloc new record failed *\/$/;" e enum:rerr
-R_UL_UPD_C modules/registrar/rerrno.h /^ R_UL_UPD_C, \/* Usrloc contact update failed *\/$/;" e enum:rerr
-R_UNESCAPE modules/registrar/rerrno.h /^ R_UNESCAPE, \/* Error while unescaping username *\/$/;" e enum:rerr
-Rd_R parser/obsolete/strs.h 263;" d
-Rd_r parser/obsolete/strs.h 262;" d
-ReCO parser/obsolete/strs.h 252;" d
-ReCo parser/obsolete/strs.h 251;" d
-RecO parser/obsolete/strs.h 250;" d
-Reco parser/obsolete/strs.h 249;" d
-RoUT parser/obsolete/strs.h 235;" d
-RoUt parser/obsolete/strs.h 234;" d
-RouT parser/obsolete/strs.h 233;" d
-Rout parser/obsolete/strs.h 232;" d
-S11 md5.c 43;" d file:
-S12 md5.c 44;" d file:
-S13 md5.c 45;" d file:
-S14 md5.c 46;" d file:
-S21 md5.c 47;" d file:
-S22 md5.c 48;" d file:
-S23 md5.c 49;" d file:
-S24 md5.c 50;" d file:
-S31 md5.c 51;" d file:
-S32 md5.c 52;" d file:
-S33 md5.c 53;" d file:
-S34 md5.c 54;" d file:
-S41 md5.c 55;" d file:
-S42 md5.c 56;" d file:
-S43 md5.c 57;" d file:
-S44 md5.c 58;" d file:
-SAVE_H modules/registrar/save.h 37;" d
-SCHEME_DOMAIN_COL modules/avpops/avpops_parse.c 50;" d file:
-SCHEME_DOMAIN_COL_LEN modules/avpops/avpops_parse.c 51;" d file:
-SCHEME_INT_TYPE modules/avpops/avpops_parse.c 58;" d file:
-SCHEME_INT_TYPE_LEN modules/avpops/avpops_parse.c 59;" d file:
-SCHEME_STR_TYPE modules/avpops/avpops_parse.c 60;" d file:
-SCHEME_STR_TYPE_LEN modules/avpops/avpops_parse.c 61;" d file:
-SCHEME_TABLE modules/avpops/avpops_parse.c 54;" d file:
-SCHEME_TABLE_LEN modules/avpops/avpops_parse.c 55;" d file:
-SCHEME_USERNAME_COL modules/avpops/avpops_parse.c 48;" d file:
-SCHEME_USERNAME_COL_LEN modules/avpops/avpops_parse.c 49;" d file:
-SCHEME_UUID_COL modules/avpops/avpops_parse.c 46;" d file:
-SCHEME_UUID_COL_LEN modules/avpops/avpops_parse.c 47;" d file:
-SCHEME_VALUE_COL modules/avpops/avpops_parse.c 52;" d file:
-SCHEME_VALUE_COL_LEN modules/avpops/avpops_parse.c 53;" d file:
-SCHEME_VAL_TYPE modules/avpops/avpops_parse.c 56;" d file:
-SCHEME_VAL_TYPE_LEN modules/avpops/avpops_parse.c 57;" d file:
-SCRIPT_DEFAULT modules/cpl-c/cpl_run.h 35;" d
-SCRIPT_END modules/cpl-c/cpl_run.h 34;" d
-SCRIPT_FORMAT_ERROR modules/cpl-c/cpl_run.h 38;" d
-SCRIPT_RUN_ERROR modules/cpl-c/cpl_run.h 37;" d
-SCRIPT_TO_BE_CONTINUED modules/cpl-c/cpl_run.h 36;" d
-SDP_MANGLER_H modules/mangler/sdp_mangler.h 37;" d
-SELECT_CMD db/db_fifo.c 52;" d file:
-SELECT_STR db/db_fifo.c 59;" d file:
-SELECT_STR_LEN db/db_fifo.c 60;" d file:
-SEMICOLON cfg.tab.c /^ SEMICOLON = 388,$/;" e enum:yytokentype file:
-SEMICOLON cfg.tab.c 330;" d file:
-SEMICOLON cfg.tab.h /^ SEMICOLON = 388,$/;" e enum:yytokentype
-SEMICOLON cfg.tab.h 306;" d
-SEM_MAX modules/tm/lock.c 50;" d file:
-SEM_MIN modules/tm/lock.c 49;" d file:
-SEND cfg.tab.c /^ SEND = 262,$/;" e enum:yytokentype file:
-SEND cfg.tab.c 204;" d file:
-SEND cfg.tab.h /^ SEND = 262,$/;" e enum:yytokentype
-SEND cfg.tab.h 180;" d
-SEND_ADDR test/test.c 44;" d file:
-SEND_BUFFER modules/tm/t_funcs.h 101;" d
-SEND_PORT test/test.c 43;" d file:
-SEND_PR_BUFFER modules/tm/t_funcs.h 93;" d
-SEND_PR_BUFFER modules/tm/t_funcs.h 97;" d
-SEND_T route_struct.h /^enum { FORWARD_T=1, SEND_T, DROP_T, LOG_T, ERROR_T, ROUTE_T, EXEC_T,$/;" e
-SEND_TCP cfg.tab.c /^ SEND_TCP = 263,$/;" e enum:yytokentype file:
-SEND_TCP cfg.tab.c 205;" d file:
-SEND_TCP cfg.tab.h /^ SEND_TCP = 263,$/;" e enum:yytokentype
-SEND_TCP cfg.tab.h 181;" d
-SEND_TCP_T route_struct.h /^ SEND_TCP_T,$/;" e
-SEQUENTIAL_VAL modules/cpl-c/CPL_tree.h 161;" d
-SERVER_HDR config.h 80;" d
-SERVER_HDR_LEN config.h 82;" d
-SERVER_SIGNATURE cfg.tab.c /^ SERVER_SIGNATURE = 334,$/;" e enum:yytokentype file:
-SERVER_SIGNATURE cfg.tab.c 276;" d file:
-SERVER_SIGNATURE cfg.tab.h /^ SERVER_SIGNATURE = 334,$/;" e enum:yytokentype
-SERVER_SIGNATURE cfg.tab.h 252;" d
-SERVICE_LEN modules/acc/diam_dict.h 6;" d
-SERVICE_LEN modules/auth_diameter/defs.h 9;" d
-SER_COMPILE_FLAGS version.h 191;" d
-SER_FULL_VERSION version.h 34;" d
-SETFLAG cfg.tab.c /^ SETFLAG = 292,$/;" e enum:yytokentype file:
-SETFLAG cfg.tab.c 234;" d file:
-SETFLAG cfg.tab.h /^ SETFLAG = 292,$/;" e enum:yytokentype
-SETFLAG cfg.tab.h 210;" d
-SETFLAG_T route_struct.h /^ SETFLAG_T, RESETFLAG_T, ISFLAGSET_T ,$/;" e
-SET_ADV_ADDRESS cfg.tab.c /^ SET_ADV_ADDRESS = 286,$/;" e enum:yytokentype file:
-SET_ADV_ADDRESS cfg.tab.c 228;" d file:
-SET_ADV_ADDRESS cfg.tab.h /^ SET_ADV_ADDRESS = 286,$/;" e enum:yytokentype
-SET_ADV_ADDRESS cfg.tab.h 204;" d
-SET_ADV_ADDR_T route_struct.h /^ SET_ADV_ADDR_T,$/;" e
-SET_ADV_PORT cfg.tab.c /^ SET_ADV_PORT = 287,$/;" e enum:yytokentype file:
-SET_ADV_PORT cfg.tab.c 229;" d file:
-SET_ADV_PORT cfg.tab.h /^ SET_ADV_PORT = 287,$/;" e enum:yytokentype
-SET_ADV_PORT cfg.tab.h 205;" d
-SET_ADV_PORT_T route_struct.h /^ SET_ADV_PORT_T,$/;" e
-SET_HOST cfg.tab.c /^ SET_HOST = 271,$/;" e enum:yytokentype file:
-SET_HOST cfg.tab.c 213;" d file:
-SET_HOST cfg.tab.h /^ SET_HOST = 271,$/;" e enum:yytokentype
-SET_HOST cfg.tab.h 189;" d
-SET_HOSTPORT cfg.tab.c /^ SET_HOSTPORT = 272,$/;" e enum:yytokentype file:
-SET_HOSTPORT cfg.tab.c 214;" d file:
-SET_HOSTPORT cfg.tab.h /^ SET_HOSTPORT = 272,$/;" e enum:yytokentype
-SET_HOSTPORT cfg.tab.h 190;" d
-SET_HOSTPORT_T route_struct.h /^ SET_HOST_T, SET_HOSTPORT_T, SET_USER_T, SET_USERPASS_T, $/;" e
-SET_HOST_T route_struct.h /^ SET_HOST_T, SET_HOSTPORT_T, SET_USER_T, SET_USERPASS_T, $/;" e
-SET_KID_OFFSET modules/cpl-c/CPL_tree.h 218;" d
-SET_PORT cfg.tab.c /^ SET_PORT = 279,$/;" e enum:yytokentype file:
-SET_PORT cfg.tab.c 221;" d file:
-SET_PORT cfg.tab.h /^ SET_PORT = 279,$/;" e enum:yytokentype
-SET_PORT cfg.tab.h 197;" d
-SET_PORT_T route_struct.h /^ SET_PORT_T, SET_URI_T, IF_T, MODULE_T,$/;" e
-SET_STR_VAL modules/msilo/msilo.c 93;" d file:
-SET_URI cfg.tab.c /^ SET_URI = 280,$/;" e enum:yytokentype file:
-SET_URI cfg.tab.c 222;" d file:
-SET_URI cfg.tab.h /^ SET_URI = 280,$/;" e enum:yytokentype
-SET_URI cfg.tab.h 198;" d
-SET_URI_T route_struct.h /^ SET_PORT_T, SET_URI_T, IF_T, MODULE_T,$/;" e
-SET_USER cfg.tab.c /^ SET_USER = 277,$/;" e enum:yytokentype file:
-SET_USER cfg.tab.c 219;" d file:
-SET_USER cfg.tab.h /^ SET_USER = 277,$/;" e enum:yytokentype
-SET_USER cfg.tab.h 195;" d
-SET_USERPASS cfg.tab.c /^ SET_USERPASS = 278,$/;" e enum:yytokentype file:
-SET_USERPASS cfg.tab.c 220;" d file:
-SET_USERPASS cfg.tab.h /^ SET_USERPASS = 278,$/;" e enum:yytokentype
-SET_USERPASS cfg.tab.h 196;" d
-SET_USERPASS_T route_struct.h /^ SET_HOST_T, SET_HOSTPORT_T, SET_USER_T, SET_USERPASS_T, $/;" e
-SET_USER_T route_struct.h /^ SET_HOST_T, SET_HOSTPORT_T, SET_USER_T, SET_USERPASS_T, $/;" e
-SHELL modules/ext/config.h 34;" d
-SHELL_NAME modules/ext/config.h 35;" d
-SHELL_PARAM modules/ext/config.h 36;" d
-SHM_MEM_SIZE config.h 123;" d
-SHM_MEM_STR version.h 100;" d
-SHM_MEM_STR version.h 102;" d
-SHM_MMAP_STR version.h 106;" d
-SHM_MMAP_STR version.h 108;" d
-SHORTEST_MYSQL_URL modules/mysql/utils.c 93;" d file:
-SHORTEST_MYSQL_URL_LEN modules/mysql/utils.c 94;" d file:
-SID_START modules/pa/watcher.c 561;" d file:
-SID_START_L modules/pa/watcher.c 562;" d file:
-SIMPLE_NODE_SIZE modules/cpl-c/CPL_tree.h 214;" d
-SIP modules/exec/exec_hf.h 36;" d
-SIP1 parser/parse_fline.c /^ SIP1, SIP2, SIP3, SIP4, SIP5, SIP6,$/;" e file:
-SIP1 parser/parse_via.c /^ SIP1, SIP2, FIN_SIP,$/;" e file:
-SIP1 test/via_parse.c /^ SIP1, SIP2, FIN_SIP,$/;" e file:
-SIP2 parser/parse_fline.c /^ SIP1, SIP2, SIP3, SIP4, SIP5, SIP6,$/;" e file:
-SIP2 parser/parse_via.c /^ SIP1, SIP2, FIN_SIP,$/;" e file:
-SIP2 test/via_parse.c /^ SIP1, SIP2, FIN_SIP,$/;" e file:
-SIP3 parser/parse_fline.c /^ SIP1, SIP2, SIP3, SIP4, SIP5, SIP6,$/;" e file:
-SIP4 parser/parse_fline.c /^ SIP1, SIP2, SIP3, SIP4, SIP5, SIP6,$/;" e file:
-SIP5 parser/parse_fline.c /^ SIP1, SIP2, SIP3, SIP4, SIP5, SIP6,$/;" e file:
-SIP6 parser/parse_fline.c /^ SIP1, SIP2, SIP3, SIP4, SIP5, SIP6,$/;" e file:
-SIPS_PORT config.h 44;" d
-SIP_ACCOUNTING modules/acc/diam_dict.h 7;" d
-SIP_ACC_SERVICE modules/auth_diameter/defs.h 15;" d
-SIP_AUTHENTICATION modules/auth_diameter/defs.h 10;" d
-SIP_AUTH_SERVICE modules/auth_diameter/defs.h 13;" d
-SIP_GROUP_CHECK modules/auth_diameter/defs.h 11;" d
-SIP_GROUP_SERVICE modules/auth_diameter/defs.h 14;" d
-SIP_INVALID parser/parse_fline.h 41;" d
-SIP_MSG_H modules/registrar/sip_msg.h 32;" d
-SIP_PORT config.h 43;" d
-SIP_REPLY parser/parse_fline.h 38;" d
-SIP_REQUEST parser/parse_fline.h 35;" d
-SIP_VERSION parser/parse_fline.h 43;" d
-SIP_VERSION_LEN parser/parse_fline.h 44;" d
-SIP_WARNING cfg.tab.c /^ SIP_WARNING = 324,$/;" e enum:yytokentype file:
-SIP_WARNING cfg.tab.c 266;" d file:
-SIP_WARNING cfg.tab.h /^ SIP_WARNING = 324,$/;" e enum:yytokentype
-SIP_WARNING cfg.tab.h 242;" d
-SITE_ETAG modules/pa/pidf.c 121;" d file:
-SITE_ETAG_L modules/pa/pidf.c 122;" d file:
-SITE_STAG modules/pa/pidf.c 118;" d file:
-SITE_STAG_L modules/pa/pidf.c 119;" d file:
-SI_IS_IP ip_addr.h /^enum si_flags { SI_NONE=0, SI_IS_IP=1, SI_IS_LO=2, SI_IS_MCAST=4 };$/;" e enum:si_flags
-SI_IS_LO ip_addr.h /^enum si_flags { SI_NONE=0, SI_IS_IP=1, SI_IS_LO=2, SI_IS_MCAST=4 };$/;" e enum:si_flags
-SI_IS_MCAST ip_addr.h /^enum si_flags { SI_NONE=0, SI_IS_IP=1, SI_IS_LO=2, SI_IS_MCAST=4 };$/;" e enum:si_flags
-SI_NONE ip_addr.h /^enum si_flags { SI_NONE=0, SI_IS_IP=1, SI_IS_LO=2, SI_IS_MCAST=4 };$/;" e enum:si_flags
-SKIP_CHARS modules/msilo/msfuncs.c 54;" d file:
-SLASH cfg.tab.c /^ SLASH = 395,$/;" e enum:yytokentype file:
-SLASH cfg.tab.c 337;" d file:
-SLASH cfg.tab.h /^ SLASH = 395,$/;" e enum:yytokentype
-SLASH cfg.tab.h 313;" d
-SL_RPL_WAIT_TIME modules/sl/sl_funcs.h 34;" d
-SL_TOTAG_SEPARATOR modules/sl/sl_funcs.h 36;" d
-SMS_EDGE_PART modules/sms/sms_funcs.h 53;" d
-SMS_EDGE_PART_LEN modules/sms/sms_funcs.h 54;" d
-SMS_FOOTER modules/sms/sms_funcs.h 51;" d
-SMS_FOOTER_LEN modules/sms/sms_funcs.h 52;" d
-SMS_HDR_AF_ADDR modules/sms/sms_funcs.h 49;" d
-SMS_HDR_AF_ADDR_LEN modules/sms/sms_funcs.h 50;" d
-SMS_HDR_BF_ADDR modules/sms/sms_funcs.h 47;" d
-SMS_HDR_BF_ADDR_LEN modules/sms/sms_funcs.h 48;" d
-SMS_REPORT modules/sms/sms_funcs.h 62;" d
-SMS_TRUNCATED modules/sms/sms_funcs.h 55;" d
-SMS_TRUNCATED_LEN modules/sms/sms_funcs.h 56;" d
-SOCKETINFO_ST route_struct.h /^ MYSELF_ST, STR_ST, SOCKID_ST, SOCKETINFO_ST };$/;" e
-SOCKID_ST route_struct.h /^ MYSELF_ST, STR_ST, SOCKID_ST, SOCKETINFO_ST };$/;" e
-SOCK_GROUP cfg.tab.c /^ SOCK_GROUP = 329,$/;" e enum:yytokentype file:
-SOCK_GROUP cfg.tab.c 271;" d file:
-SOCK_GROUP cfg.tab.h /^ SOCK_GROUP = 329,$/;" e enum:yytokentype
-SOCK_GROUP cfg.tab.h 247;" d
-SOCK_MODE cfg.tab.c /^ SOCK_MODE = 327,$/;" e enum:yytokentype file:
-SOCK_MODE cfg.tab.c 269;" d file:
-SOCK_MODE cfg.tab.h /^ SOCK_MODE = 327,$/;" e enum:yytokentype
-SOCK_MODE cfg.tab.h 245;" d
-SOCK_USER cfg.tab.c /^ SOCK_USER = 328,$/;" e enum:yytokentype file:
-SOCK_USER cfg.tab.c 270;" d file:
-SOCK_USER cfg.tab.h /^ SOCK_USER = 328,$/;" e enum:yytokentype
-SOCK_USER cfg.tab.h 246;" d
-SOURCE_ATTR modules/cpl-c/CPL_tree.h 147;" d
-SOURCE_REG_STR modules/cpl-c/CPL_tree.h 149;" d
-SOURCE_REG_STR_LEN modules/cpl-c/CPL_tree.h 150;" d
-SP parser/parser_f.h 49;" d
-SQL_ACC_FMT modules/acc/defs.h 48;" d
-SQL_BUF_LEN modules/mysql/dbase.c 47;" d file:
-SQL_BUF_LEN modules/mysql/defs.h 35;" d
-SQL_BUF_LEN modules/postgres/defs.h 44;" d
-SQL_MC_FMT modules/acc/defs.h 50;" d
-SRCIP cfg.tab.c /^ SRCIP = 299,$/;" e enum:yytokentype file:
-SRCIP cfg.tab.c 241;" d file:
-SRCIP cfg.tab.h /^ SRCIP = 299,$/;" e enum:yytokentype
-SRCIP cfg.tab.h 217;" d
-SRCIP_O route_struct.h /^enum { METHOD_O=1, URI_O, FROM_URI_O, TO_URI_O, SRCIP_O, SRCPORT_O,$/;" e
-SRCPORT cfg.tab.c /^ SRCPORT = 300,$/;" e enum:yytokentype file:
-SRCPORT cfg.tab.c 242;" d file:
-SRCPORT cfg.tab.h /^ SRCPORT = 300,$/;" e enum:yytokentype
-SRCPORT cfg.tab.h 218;" d
-SRCPORT_O route_struct.h /^enum { METHOD_O=1, URI_O, FROM_URI_O, TO_URI_O, SRCIP_O, SRCPORT_O,$/;" e
-SRV_MAX_PREFIX_LEN config.h 117;" d
-SRV_TCP_PREFIX config.h 111;" d
-SRV_TCP_PREFIX_LEN config.h 112;" d
-SRV_TLS_PREFIX config.h 114;" d
-SRV_TLS_PREFIX_LEN config.h 115;" d
-SRV_UDP_PREFIX config.h 108;" d
-SRV_UDP_PREFIX_LEN config.h 109;" d
-SR_DEACTIVATED modules/pa/notify.h /^ SR_DEACTIVATED = 0,$/;" e enum:ss_reason
-SR_GIVEUP modules/pa/notify.h /^ SR_GIVEUP$/;" e enum:ss_reason
-SR_NORESOURCE modules/pa/notify.h /^ SR_NORESOURCE,$/;" e enum:ss_reason
-SR_PROBATION modules/pa/notify.h /^ SR_PROBATION,$/;" e enum:ss_reason
-SR_REJECTED modules/pa/notify.h /^ SR_REJECTED,$/;" e enum:ss_reason
-SR_TIMEOUT modules/pa/notify.h /^ SR_TIMEOUT,$/;" e enum:ss_reason
-SSLv2 cfg.tab.c /^ SSLv2 = 356,$/;" e enum:yytokentype file:
-SSLv2 cfg.tab.c 298;" d file:
-SSLv2 cfg.tab.h /^ SSLv2 = 356,$/;" e enum:yytokentype
-SSLv2 cfg.tab.h 274;" d
-SSLv23 cfg.tab.c /^ SSLv23 = 355,$/;" e enum:yytokentype file:
-SSLv23 cfg.tab.c 297;" d file:
-SSLv23 cfg.tab.h /^ SSLv23 = 355,$/;" e enum:yytokentype
-SSLv23 cfg.tab.h 273;" d
-SSLv3 cfg.tab.c /^ SSLv3 = 357,$/;" e enum:yytokentype file:
-SSLv3 cfg.tab.c 299;" d file:
-SSLv3 cfg.tab.h /^ SSLv3 = 357,$/;" e enum:yytokentype
-SSLv3 cfg.tab.h 275;" d
-SS_ACTIVE modules/pa/notify.h /^ SS_ACTIVE = 0,$/;" e enum:subs_state
-SS_EXPIRES modules/pa/notify.c 83;" d file:
-SS_EXPIRES_L modules/pa/notify.c 84;" d file:
-SS_PENDING modules/pa/notify.h /^ SS_PENDING$/;" e enum:subs_state
-SS_REASON modules/pa/notify.c 86;" d file:
-SS_REASON_L modules/pa/notify.c 87;" d file:
-SS_TERMINATED modules/pa/notify.h /^ SS_TERMINATED,$/;" e enum:subs_state
-ST1 parser/contact/contact.c 41;" d file:
-ST2 parser/contact/contact.c 42;" d file:
-ST3 parser/contact/contact.c 43;" d file:
-ST4 parser/contact/contact.c 44;" d file:
-ST5 parser/contact/contact.c 45;" d file:
-ST6 parser/contact/contact.c 46;" d file:
-STALE_PARAM modules/auth/challenge.c 62;" d file:
-STALE_PARAM_LEN modules/auth/challenge.c 63;" d file:
-STAR cfg.tab.c /^ STAR = 399$/;" e enum:yytokentype file:
-STAR cfg.tab.c 341;" d file:
-STAR cfg.tab.h /^ STAR = 399$/;" e enum:yytokentype
-STAR cfg.tab.h 317;" d
-START parser/parse_fline.c /^enum { START,$/;" e file:
-START_ERR_MSG modules/sms/sms_report.c 36;" d file:
-START_ERR_MSG_LEN modules/sms/sms_report.c 38;" d file:
-START_TO parser/parse_to.c /^ START_TO, DISPLAY_QUOTED, E_DISPLAY_QUOTED, DISPLAY_TOKEN,$/;" e file:
-STAT cfg.tab.c /^ STAT = 319,$/;" e enum:yytokentype file:
-STAT cfg.tab.c 261;" d file:
-STAT cfg.tab.h /^ STAT = 319,$/;" e enum:yytokentype
-STAT cfg.tab.h 237;" d
-STATE_COL modules/usrloc/ul_mod.c 68;" d file:
-STATS_RX_DROPS stats.h 92;" d
-STATS_RX_DROPS stats.h 99;" d
-STATS_RX_REQUEST stats.h 88;" d
-STATS_RX_REQUEST stats.h 95;" d
-STATS_RX_RESPONSE stats.h 90;" d
-STATS_RX_RESPONSE stats.h 97;" d
-STATS_STR version.h 38;" d
-STATS_STR version.h 40;" d
-STATS_TX_DROPS stats.h 100;" d
-STATS_TX_DROPS stats.h 93;" d
-STATS_TX_REQUEST stats.h 89;" d
-STATS_TX_REQUEST stats.h 96;" d
-STATS_TX_RESPONSE stats.h 91;" d
-STATS_TX_RESPONSE stats.h 98;" d
-STATUS_ATTR modules/cpl-c/CPL_tree.h 168;" d
-STATUS_CLOSED modules/pa/xpidf.c 84;" d file:
-STATUS_CLOSED_L modules/pa/xpidf.c 85;" d file:
-STATUS_ETAG modules/pa/pidf.c 97;" d file:
-STATUS_ETAG_L modules/pa/pidf.c 98;" d file:
-STATUS_OPEN modules/pa/xpidf.c 81;" d file:
-STATUS_OPEN_L modules/pa/xpidf.c 82;" d file:
-STATUS_STAG modules/pa/pidf.c 94;" d file:
-STATUS_STAG_L modules/pa/pidf.c 95;" d file:
-STATUS_START modules/pa/watcher.c 557;" d file:
-STATUS_START_L modules/pa/watcher.c 558;" d file:
-STAudio modules/mediaproxy/mediaproxy.c /^ STAudio,$/;" e file:
-STAudioVideo modules/mediaproxy/mediaproxy.c /^ STAudioVideo$/;" e file:
-STERMAN_H modules/auth_radius/sterman.h 35;" d
-STORED_NOTE modules/sms/sms_funcs.c 88;" d file:
-STORED_NOTE_LEN modules/sms/sms_funcs.c 92;" d file:
-STORE_ACTION modules/cpl-c/cpl.c 681;" d file:
-STORE_ACTION_LEN modules/cpl-c/cpl.c 682;" d file:
-STORE_SCRIPT modules/cpl-c/cpl.c 687;" d file:
-STR2IOVEC modules/nathelper/nathelper.c 175;" d file:
-STRICT_CHECK modules/mangler/common.h 37;" d
-STRING cfg.tab.c /^ STRING = 385,$/;" e enum:yytokentype file:
-STRING cfg.tab.c 327;" d file:
-STRING cfg.tab.h /^ STRING = 385,$/;" e enum:yytokentype
-STRING cfg.tab.h 303;" d
-STRING1 lex.yy.c 1237;" d file:
-STRING2 lex.yy.c 1238;" d file:
-STRING_NODE modules/cpl-c/CPL_tree.h 60;" d
-STRING_S lex.yy.c 1200;" d file:
-STRING_ST route_struct.h /^enum { NOSUBTYPE=0, STRING_ST, NET_ST, NUMBER_ST, IP_ST, RE_ST, PROXY_ST,$/;" e
-STRING_SWITCH_NODE modules/cpl-c/CPL_tree.h 61;" d
-STRING_TYPE db/db_fifo.c 77;" d file:
-STRING_TYPE_LEN db/db_fifo.c 78;" d file:
-STRIP cfg.tab.c /^ STRIP = 274,$/;" e enum:yytokentype file:
-STRIP cfg.tab.c 216;" d file:
-STRIP cfg.tab.h /^ STRIP = 274,$/;" e enum:yytokentype
-STRIP cfg.tab.h 192;" d
-STRIP_T route_struct.h /^ LEN_GT_T, PREFIX_T, STRIP_T,STRIP_TAIL_T,$/;" e
-STRIP_TAIL cfg.tab.c /^ STRIP_TAIL = 275,$/;" e enum:yytokentype file:
-STRIP_TAIL cfg.tab.c 217;" d file:
-STRIP_TAIL cfg.tab.h /^ STRIP_TAIL = 275,$/;" e enum:yytokentype
-STRIP_TAIL cfg.tab.h 193;" d
-STRIP_TAIL_T route_struct.h /^ LEN_GT_T, PREFIX_T, STRIP_T,STRIP_TAIL_T,$/;" e
-STRS_H parser/obsolete/strs.h 29;" d
-STR_BUF_ALLOC_UNIT lex.yy.c 1202;" d file:
-STR_BUF_SIZE modules/avpops/avpops_impl.c 662;" d file:
-STR_NOT_FOUND modules/cpl-c/cpl_run.h 55;" d
-STR_NULL str.h 41;" d
-STR_PARAM sr_module.h 60;" d
-STR_ST route_struct.h /^ MYSELF_ST, STR_ST, SOCKID_ST, SOCKETINFO_ST };$/;" e
-STR_STATIC_INIT str.h 40;" d
-STR_TO_DEC modules/jabber/xsnprintf.c 302;" d file:
-STUnknown modules/mediaproxy/mediaproxy.c /^ STUnknown=0,$/;" e file:
-STVideo modules/mediaproxy/mediaproxy.c /^ STVideo,$/;" e file:
-ST_ACTIVE modules/pa/notify.c 92;" d file:
-ST_ACTIVE_L modules/pa/notify.c 93;" d file:
-ST_CHECK_PATTERN mem/f_malloc.c 110;" d file:
-ST_CHECK_PATTERN mem/q_malloc.c 126;" d file:
-ST_CHECK_PATTERN mem/vq_malloc.h 62;" d
-ST_MSG_CODE modules/acc/diam_message.h 69;" d
-ST_MSG_CODE modules/acc/diam_message.h 79;" d
-ST_MSG_CODE modules/auth_diameter/diameter_msg.h 69;" d
-ST_MSG_CODE modules/auth_diameter/diameter_msg.h 79;" d
-ST_PENDING modules/pa/notify.c 98;" d file:
-ST_PENDING_L modules/pa/notify.c 99;" d file:
-ST_TERMINATED modules/pa/notify.c 95;" d file:
-ST_TERMINATED_L modules/pa/notify.c 96;" d file:
-SUBACTION_NODE modules/cpl-c/CPL_tree.h 37;" d
-SUBDOMAIN_OF_ATTR modules/cpl-c/CPL_tree.h 85;" d
-SUBFIELD_ATTR modules/cpl-c/CPL_tree.h 71;" d
-SUBJECT_ATTR modules/cpl-c/CPL_tree.h 191;" d
-SUBJECT_EMAILHDR_LEN modules/cpl-c/CPL_tree.h 193;" d
-SUBJECT_EMAILHDR_STR modules/cpl-c/CPL_tree.h 192;" d
-SUBJECT_VAL modules/cpl-c/CPL_tree.h 88;" d
-SUBSCRIBER_TABLE modules/uri_db/uridb_mod.c 78;" d file:
-SUBSCRIBER_TABLE_LEN modules/uri_db/uridb_mod.c 79;" d file:
-SUBSCRIBER_TABLE_VERSION modules/uri_db/uridb_mod.c 59;" d file:
-SUBSCRIBE_H modules/pa/subscribe.h 31;" d
-SUBSCRIPTION_STATE modules/pa/notify.c 80;" d file:
-SUBSCRIPTION_STATE_L modules/pa/notify.c 81;" d file:
-SUBST_CHAR modules/tm/config.h 96;" d
-SUBST_LUMP msg_translator.c 781;" d file:
-SUBST_LUMP_LEN msg_translator.c 510;" d file:
-SUBST_NOP lump_struct.h /^enum lump_subst{ SUBST_NOP=0, \/* do nothing *\/$/;" e enum:lump_subst
-SUBST_RCV_ALL lump_struct.h /^ SUBST_RCV_ALL, SUBST_SND_ALL \/* ip:port;transport=proto *\/$/;" e enum:lump_subst
-SUBST_RCV_IP lump_struct.h /^ SUBST_RCV_IP, SUBST_SND_IP, \/* add ip address *\/$/;" e enum:lump_subst
-SUBST_RCV_PORT lump_struct.h /^ SUBST_RCV_PORT, SUBST_SND_PORT, \/* add port no *\/$/;" e enum:lump_subst
-SUBST_RCV_PROTO lump_struct.h /^ SUBST_RCV_PROTO, SUBST_SND_PROTO,\/* add protocol(udp,tcp,tls)*\/$/;" e enum:lump_subst
-SUBST_SND_ALL lump_struct.h /^ SUBST_RCV_ALL, SUBST_SND_ALL \/* ip:port;transport=proto *\/$/;" e enum:lump_subst
-SUBST_SND_IP lump_struct.h /^ SUBST_RCV_IP, SUBST_SND_IP, \/* add ip address *\/$/;" e enum:lump_subst
-SUBST_SND_PORT lump_struct.h /^ SUBST_RCV_PORT, SUBST_SND_PORT, \/* add port no *\/$/;" e enum:lump_subst
-SUBST_SND_PROTO lump_struct.h /^ SUBST_RCV_PROTO, SUBST_SND_PROTO,\/* add protocol(udp,tcp,tls)*\/$/;" e enum:lump_subst
-SUBTYPE_ALL parser/parse_content.h 55;" d
-SUBTYPE_CPIM parser/parse_content.h 52;" d
-SUBTYPE_CPLXML parser/parse_content.h 54;" d
-SUBTYPE_PLAIN parser/parse_content.h 51;" d
-SUBTYPE_SDP parser/parse_content.h 53;" d
-SUBTYPE_UNKNOWN parser/parse_content.h 56;" d
-SUB_NODE modules/cpl-c/CPL_tree.h 58;" d
-SUCCESS_NODE modules/cpl-c/CPL_tree.h 59;" d
-SUN_LEN modules/tm/t_fifo.c 76;" d file:
-SUN_LEN unixsock_server.c 68;" d file:
-SUN_LEN utils/serunix/serunix.c 49;" d file:
-SUN_WEEK modules/cpl-c/cpl_time.c 102;" d file:
-SUPT_DEF modules/options/mod_options.h 54;" d
-SUPT_DEF_LEN modules/options/mod_options.h 55;" d
-SUPT_STR modules/options/mod_options.h 39;" d
-SUPT_STR_LEN modules/options/mod_options.h 40;" d
-SUP_CPROTOVER modules/nathelper/nathelper.c 178;" d file:
-SYN_BRANCH cfg.tab.c /^ SYN_BRANCH = 322,$/;" e enum:yytokentype file:
-SYN_BRANCH cfg.tab.c 264;" d file:
-SYN_BRANCH cfg.tab.h /^ SYN_BRANCH = 322,$/;" e enum:yytokentype
-SYN_BRANCH cfg.tab.h 240;" d
-S_CONN_ACCEPT tcp_conn.h /^ S_CONN_ACCEPT, S_CONN_CONNECT };$/;" e enum:tcp_conn_states
-S_CONN_BAD tcp_conn.h /^enum tcp_conn_states { S_CONN_ERROR=-2, S_CONN_BAD=-1, S_CONN_OK=0, $/;" e enum:tcp_conn_states
-S_CONN_CONNECT tcp_conn.h /^ S_CONN_ACCEPT, S_CONN_CONNECT };$/;" e enum:tcp_conn_states
-S_CONN_EOF tcp_conn.h /^ S_CONN_INIT, S_CONN_EOF, $/;" e enum:tcp_conn_states
-S_CONN_ERROR tcp_conn.h /^enum tcp_conn_states { S_CONN_ERROR=-2, S_CONN_BAD=-1, S_CONN_OK=0, $/;" e enum:tcp_conn_states
-S_CONN_INIT tcp_conn.h /^ S_CONN_INIT, S_CONN_EOF, $/;" e enum:tcp_conn_states
-S_CONN_OK tcp_conn.h /^enum tcp_conn_states { S_CONN_ERROR=-2, S_CONN_BAD=-1, S_CONN_OK=0, $/;" e enum:tcp_conn_states
-S_EQUAL parser/parse_to.c /^ S_PARA_NAME=20, PARA_NAME, S_EQUAL, S_PARA_VALUE, TAG1, TAG2,$/;" e file:
-S_ID_LEN modules/pa/watcher.c 114;" d file:
-S_NULL modules/jabber/xsnprintf.c 257;" d file:
-S_NULL_LEN modules/jabber/xsnprintf.c 258;" d file:
-S_PARA_NAME parser/parse_to.c /^ S_PARA_NAME=20, PARA_NAME, S_EQUAL, S_PARA_VALUE, TAG1, TAG2,$/;" e file:
-S_PARA_VALUE parser/parse_to.c /^ S_PARA_NAME=20, PARA_NAME, S_EQUAL, S_PARA_VALUE, TAG1, TAG2,$/;" e file:
-S_TABLE_VERSION modules/msilo/msilo.c 118;" d file:
-S_URI_ENCLOSED parser/parse_to.c /^ S_URI_ENCLOSED, URI_ENCLOSED, E_URI_ENCLOSED,$/;" e file:
-StreamInfo modules/mediaproxy/mediaproxy.c /^} StreamInfo;$/;" t file:
-StreamType modules/mediaproxy/mediaproxy.c /^} StreamType;$/;" t file:
-T modules/tm/t_lookup.c /^static struct cell *T;$/;" v file:
-TABLE modules/group/group_mod.c 77;" d file:
-TABLENAME_COLUMN config.h 198;" d
-TABLE_ENTRIES hash_func.h 37;" d
-TABLE_LEN modules/group/group_mod.c 78;" d file:
-TABLE_VERSION modules/auth_db/authdb_mod.c 52;" d file:
-TABLE_VERSION modules/domain/domain_mod.c 62;" d file:
-TABLE_VERSION modules/group/group_mod.c 53;" d file:
-TABLE_VERSION modules/permissions/trusted.c 48;" d file:
-TABLE_VERSION modules/usrloc/ul_mod.h 52;" d
-TAG1 parser/parse_to.c /^ S_PARA_NAME=20, PARA_NAME, S_EQUAL, S_PARA_VALUE, TAG1, TAG2,$/;" e file:
-TAG2 parser/parse_to.c /^ S_PARA_NAME=20, PARA_NAME, S_EQUAL, S_PARA_VALUE, TAG1, TAG2,$/;" e file:
-TAG3 parser/parse_to.c /^ TAG3, PARA_VALUE_TOKEN , PARA_VALUE_QUOTED, E_PARA_VALUE$/;" e file:
-TAG_OVERBUFFER_LEN modules/tm/config.h 69;" d
-TAG_PARAM parser/parse_to.h /^ TAG_PARAM = 400, GENERAL_PARAM$/;" e
-TCFLSH modules/postgres/aug_sysdep.h 256;" d
-TCGETA modules/postgres/aug_sysdep.h 253;" d
-TCGETS modules/postgres/aug_sysdep.h 251;" d
-TCP cfg.tab.c /^ TCP = 308,$/;" e enum:yytokentype file:
-TCP cfg.tab.c 250;" d file:
-TCP cfg.tab.h /^ TCP = 308,$/;" e enum:yytokentype
-TCP cfg.tab.h 226;" d
-TCP2 parser/parse_via.c /^ TCP_TLS1, TCP2, FIN_TCP,$/;" e file:
-TCPCONN_LOCK tcp_conn.h 173;" d
-TCPCONN_UNLOCK tcp_conn.h 174;" d
-TCP_ACCEPT_ALIASES cfg.tab.c /^ TCP_ACCEPT_ALIASES = 345,$/;" e enum:yytokentype file:
-TCP_ACCEPT_ALIASES cfg.tab.c 287;" d file:
-TCP_ACCEPT_ALIASES cfg.tab.h /^ TCP_ACCEPT_ALIASES = 345,$/;" e enum:yytokentype
-TCP_ACCEPT_ALIASES cfg.tab.h 263;" d
-TCP_ALIAS_HASH_SIZE tcp_conn.h 176;" d
-TCP_BUF_SIZE tcp_conn.h 46;" d
-TCP_CHILDREN cfg.tab.c /^ TCP_CHILDREN = 346,$/;" e enum:yytokentype file:
-TCP_CHILDREN cfg.tab.c 288;" d file:
-TCP_CHILDREN cfg.tab.h /^ TCP_CHILDREN = 346,$/;" e enum:yytokentype
-TCP_CHILDREN cfg.tab.h 264;" d
-TCP_CHILD_SELECT_TIMEOUT tcp_conn.h 56;" d
-TCP_CHILD_TIMEOUT tcp_conn.h 53;" d
-TCP_COMM_H modules/auth_diameter/tcp_comm.h 36;" d
-TCP_CONNECT_TIMEOUT cfg.tab.c /^ TCP_CONNECT_TIMEOUT = 347,$/;" e enum:yytokentype file:
-TCP_CONNECT_TIMEOUT cfg.tab.c 289;" d file:
-TCP_CONNECT_TIMEOUT cfg.tab.h /^ TCP_CONNECT_TIMEOUT = 347,$/;" e enum:yytokentype
-TCP_CONNECT_TIMEOUT cfg.tab.h 265;" d
-TCP_CON_MAX_ALIASES tcp_conn.h 44;" d
-TCP_CON_SEND_TIMEOUT tcp_conn.h 48;" d
-TCP_CON_TIMEOUT tcp_conn.h 47;" d
-TCP_ID_HASH_SIZE tcp_conn.h 177;" d
-TCP_MAIN_SELECT_TIMEOUT tcp_conn.h 55;" d
-TCP_READ_ERROR tcp_conn.h /^enum tcp_req_errors { TCP_REQ_INIT, TCP_REQ_OK, TCP_READ_ERROR,$/;" e enum:tcp_req_errors
-TCP_REQ_BAD_LEN tcp_conn.h /^ TCP_REQ_OVERRUN, TCP_REQ_BAD_LEN };$/;" e enum:tcp_req_errors
-TCP_REQ_INIT tcp_conn.h /^enum tcp_req_errors { TCP_REQ_INIT, TCP_REQ_OK, TCP_READ_ERROR,$/;" e enum:tcp_req_errors
-TCP_REQ_OK tcp_conn.h /^enum tcp_req_errors { TCP_REQ_INIT, TCP_REQ_OK, TCP_READ_ERROR,$/;" e enum:tcp_req_errors
-TCP_REQ_OVERRUN tcp_conn.h /^ TCP_REQ_OVERRUN, TCP_REQ_BAD_LEN };$/;" e enum:tcp_req_errors
-TCP_SEND_TIMEOUT cfg.tab.c /^ TCP_SEND_TIMEOUT = 348,$/;" e enum:yytokentype file:
-TCP_SEND_TIMEOUT cfg.tab.c 290;" d file:
-TCP_SEND_TIMEOUT cfg.tab.h /^ TCP_SEND_TIMEOUT = 348,$/;" e enum:yytokentype
-TCP_SEND_TIMEOUT cfg.tab.h 266;" d
-TCP_TLS1 parser/parse_via.c /^ TCP_TLS1, TCP2, FIN_TCP,$/;" e file:
-TCSETA modules/postgres/aug_sysdep.h 254;" d
-TCSETS modules/postgres/aug_sysdep.h 252;" d
-TCSETSW modules/postgres/aug_sysdep.h 255;" d
-TED_CASE parser/case_unsu.h 41;" d
-TEL_VAL modules/cpl-c/CPL_tree.h 79;" d
-TEST_RUN mem/memtest.c 61;" d file:
-TEST_SIZE mem/memtest.c 60;" d file:
-TEXTOID modules/postgres/pg_type.h 47;" d
-TE_P_CASE parser/case_remo.h 56;" d
-TG_DEL modules/tm/lock.h /^ TG_DEL,$/;" e enum:timer_groups
-TG_FR modules/tm/lock.h /^ TG_FR,$/;" e enum:timer_groups
-TG_NR modules/tm/lock.h /^ TG_NR$/;" e enum:timer_groups
-TG_RT modules/tm/lock.h /^ TG_RT,$/;" e enum:timer_groups
-TG_WT modules/tm/lock.h /^ TG_WT,$/;" e enum:timer_groups
-TH12 parser/obsolete/strs.h 331;" d
-TH21 parser/obsolete/strs.h 336;" d
-THOR_CASE parser/case_prox.h 65;" d
-TH_CASE parser/case_cont.h 42;" d
-TIDOID modules/postgres/pg_type.h 49;" d
-TIMEOID modules/postgres/pg_type.h 74;" d
-TIMEOUT_ATTR modules/cpl-c/CPL_tree.h 148;" d
-TIMER_DELETED modules/tm/timer.h 45;" d
-TIMER_ORDERED modules/tm/timer.c 645;" d file:
-TIMER_TICK config.h 125;" d
-TIMESTAMPOID modules/postgres/pg_type.h 75;" d
-TIMESTAMPTZOID modules/postgres/pg_type.h 76;" d
-TIMETZOID modules/postgres/pg_type.h 78;" d
-TIME_FORMAT modules/textops/textops.c 90;" d file:
-TIME_LEN modules/sms/sms_funcs.h 58;" d
-TIME_NODE modules/cpl-c/CPL_tree.h 62;" d
-TIME_SWITCH_NODE modules/cpl-c/CPL_tree.h 63;" d
-TINTERVALOID modules/postgres/pg_type.h 63;" d
-TLS cfg.tab.c /^ TLS = 309,$/;" e enum:yytokentype file:
-TLS cfg.tab.c 251;" d file:
-TLS cfg.tab.h /^ TLS = 309,$/;" e enum:yytokentype
-TLS cfg.tab.h 227;" d
-TLS2 parser/parse_via.c /^ TLS2, FIN_TLS,$/;" e file:
-TLSLOG cfg.tab.c /^ TLSLOG = 350,$/;" e enum:yytokentype file:
-TLSLOG cfg.tab.c 292;" d file:
-TLSLOG cfg.tab.h /^ TLSLOG = 350,$/;" e enum:yytokentype
-TLSLOG cfg.tab.h 268;" d
-TLS_CA_FILE config.h 50;" d
-TLS_CA_LIST cfg.tab.c /^ TLS_CA_LIST = 363,$/;" e enum:yytokentype file:
-TLS_CA_LIST cfg.tab.c 305;" d file:
-TLS_CA_LIST cfg.tab.h /^ TLS_CA_LIST = 363,$/;" e enum:yytokentype
-TLS_CA_LIST cfg.tab.h 281;" d
-TLS_CERTIFICATE cfg.tab.c /^ TLS_CERTIFICATE = 361,$/;" e enum:yytokentype file:
-TLS_CERTIFICATE cfg.tab.c 303;" d file:
-TLS_CERTIFICATE cfg.tab.h /^ TLS_CERTIFICATE = 361,$/;" e enum:yytokentype
-TLS_CERTIFICATE cfg.tab.h 279;" d
-TLS_CERT_FILE config.h 49;" d
-TLS_HANDSHAKE_TIMEOUT cfg.tab.c /^ TLS_HANDSHAKE_TIMEOUT = 353,$/;" e enum:yytokentype file:
-TLS_HANDSHAKE_TIMEOUT cfg.tab.c 295;" d file:
-TLS_HANDSHAKE_TIMEOUT cfg.tab.h /^ TLS_HANDSHAKE_TIMEOUT = 353,$/;" e enum:yytokentype
-TLS_HANDSHAKE_TIMEOUT cfg.tab.h 271;" d
-TLS_METHOD cfg.tab.c /^ TLS_METHOD = 352,$/;" e enum:yytokentype file:
-TLS_METHOD cfg.tab.c 294;" d file:
-TLS_METHOD cfg.tab.h /^ TLS_METHOD = 352,$/;" e enum:yytokentype
-TLS_METHOD cfg.tab.h 270;" d
-TLS_PKEY_FILE config.h 48;" d
-TLS_PORT_NO cfg.tab.c /^ TLS_PORT_NO = 351,$/;" e enum:yytokentype file:
-TLS_PORT_NO cfg.tab.c 293;" d file:
-TLS_PORT_NO cfg.tab.h /^ TLS_PORT_NO = 351,$/;" e enum:yytokentype
-TLS_PORT_NO cfg.tab.h 269;" d
-TLS_PRIVATE_KEY cfg.tab.c /^ TLS_PRIVATE_KEY = 362,$/;" e enum:yytokentype file:
-TLS_PRIVATE_KEY cfg.tab.c 304;" d file:
-TLS_PRIVATE_KEY cfg.tab.h /^ TLS_PRIVATE_KEY = 362,$/;" e enum:yytokentype
-TLS_PRIVATE_KEY cfg.tab.h 280;" d
-TLS_REQUIRE_CERTIFICATE cfg.tab.c /^ TLS_REQUIRE_CERTIFICATE = 360,$/;" e enum:yytokentype file:
-TLS_REQUIRE_CERTIFICATE cfg.tab.c 302;" d file:
-TLS_REQUIRE_CERTIFICATE cfg.tab.h /^ TLS_REQUIRE_CERTIFICATE = 360,$/;" e enum:yytokentype
-TLS_REQUIRE_CERTIFICATE cfg.tab.h 278;" d
-TLS_SEND_TIMEOUT cfg.tab.c /^ TLS_SEND_TIMEOUT = 354,$/;" e enum:yytokentype file:
-TLS_SEND_TIMEOUT cfg.tab.c 296;" d file:
-TLS_SEND_TIMEOUT cfg.tab.h /^ TLS_SEND_TIMEOUT = 354,$/;" e enum:yytokentype
-TLS_SEND_TIMEOUT cfg.tab.h 272;" d
-TLS_VERIFY cfg.tab.c /^ TLS_VERIFY = 359,$/;" e enum:yytokentype file:
-TLS_VERIFY cfg.tab.c 301;" d file:
-TLS_VERIFY cfg.tab.h /^ TLS_VERIFY = 359,$/;" e enum:yytokentype
-TLS_VERIFY cfg.tab.h 277;" d
-TLSv1 cfg.tab.c /^ TLSv1 = 358,$/;" e enum:yytokentype file:
-TLSv1 cfg.tab.c 300;" d file:
-TLSv1 cfg.tab.h /^ TLSv1 = 358,$/;" e enum:yytokentype
-TLSv1 cfg.tab.h 276;" d
-TLocation modules/cpl/jcpli.h /^} TLocation;$/;" t
-TMCB_E2EACK_IN modules/tm/t_hooks.h 48;" d
-TMCB_LOCAL_COMPLETED modules/tm/t_hooks.h 54;" d
-TMCB_MAX modules/tm/t_hooks.h 55;" d
-TMCB_ON_FAILURE modules/tm/t_hooks.h 52;" d
-TMCB_ON_FAILURE_RO modules/tm/t_hooks.h 51;" d
-TMCB_REQUEST_FWDED modules/tm/t_hooks.h 49;" d
-TMCB_REQUEST_IN modules/tm/t_hooks.h 46;" d
-TMCB_RESPONSE_FWDED modules/tm/t_hooks.h 50;" d
-TMCB_RESPONSE_IN modules/tm/t_hooks.h 47;" d
-TMCB_RESPONSE_OUT modules/tm/t_hooks.h 53;" d
-TM_TAG_SEPARATOR modules/tm/config.h 93;" d
-TO modules/tm/t_msgbuilder.h 44;" d
-TO1 parser/obsolete/parse_hname.c /^ TO1,$/;" e file:
-TO1 test/auto.c /^ TO1,$/;" e file:
-TO12 parser/obsolete/strs.h 95;" d
-TO21 parser/obsolete/strs.h 100;" d
-TOTAG modules/tm/t_msgbuilder.h 52;" d
-TOTAG_LEN modules/tm/t_msgbuilder.h 53;" d
-TOTAG_TOKEN config.h 99;" d
-TOTAG_TOKEN_LEN config.h 100;" d
-TOTAG_VALUE_LEN tags.h 53;" d
-TO_ATTR modules/cpl-c/CPL_tree.h 190;" d
-TO_END modules/pa/lpidf.c 40;" d file:
-TO_END_L modules/pa/lpidf.c 41;" d file:
-TO_LEN modules/tm/t_msgbuilder.h 45;" d
-TO_START modules/pa/lpidf.c 37;" d file:
-TO_START_L modules/pa/lpidf.c 38;" d file:
-TO_URI cfg.tab.c /^ TO_URI = 298,$/;" e enum:yytokentype file:
-TO_URI cfg.tab.c 240;" d file:
-TO_URI cfg.tab.h /^ TO_URI = 298,$/;" e enum:yytokentype
-TO_URI cfg.tab.h 216;" d
-TO_URI_O route_struct.h /^enum { METHOD_O=1, URI_O, FROM_URI_O, TO_URI_O, SRCIP_O, SRCPORT_O,$/;" e
-TRANSPORT_PARAM config.h 96;" d
-TRANSPORT_PARAM_LEN config.h 97;" d
-TREE234_H modules/jabber/tree234.h 33;" d
-TRIGGEROID modules/postgres/pg_type.h 93;" d
-TRIM_H trim.h 30;" d
-TRIM_SWITCH trim.h 41;" d
-TRUE db/example/dbexample.c 37;" d file:
-TRUE modules/dbtext/dbtex/dbtex.c 43;" d file:
-TRUE modules/jabber/xsnprintf.c 248;" d file:
-TRUSTED_DUMP modules/permissions/fifo.c 44;" d file:
-TRUSTED_H modules/permissions/trusted.h 30;" d
-TRUSTED_RELOAD modules/permissions/fifo.c 43;" d file:
-TRedirectMessage modules/cpl/jcpli.h /^} TRedirectMessage;$/;" t
-TRejectMessage modules/cpl/jcpli.h /^} TRejectMessage;$/;" t
-TSEND_ERR_CHECK tsend.c 81;" d file:
-TSEND_INIT tsend.c 47;" d file:
-TSEND_POLL tsend.c 53;" d file:
-TSW_RSET modules/cpl-c/cpl_time.h 117;" d
-TSW_TSET modules/cpl-c/cpl_time.h 116;" d
-TTL1 parser/parse_via.c /^ TTL1, TTL2,$/;" e file:
-TTL1 test/via_parse.c /^ TTL1, TTL2,$/;" e file:
-TTL2 parser/parse_via.c /^ TTL1, TTL2,$/;" e file:
-TTL2 test/via_parse.c /^ TTL1, TTL2,$/;" e file:
-TUPLE_END modules/pa/pidf.c 76;" d file:
-TUPLE_END_L modules/pa/pidf.c 77;" d file:
-TUPLE_ETAG modules/pa/pidf.c 55;" d file:
-TUPLE_ETAG_L modules/pa/pidf.c 56;" d file:
-TUPLE_ID_STR_LEN modules/pa/presentity.h 54;" d
-TUPLE_LOCATION_FLOOR_LEN modules/pa/presentity.h 51;" d
-TUPLE_LOCATION_LOC_LEN modules/pa/presentity.h 49;" d
-TUPLE_LOCATION_PACKET_LOSS_LEN modules/pa/presentity.h 53;" d
-TUPLE_LOCATION_ROOM_LEN modules/pa/presentity.h 52;" d
-TUPLE_LOCATION_SITE_LEN modules/pa/presentity.h 50;" d
-TUPLE_START modules/pa/pidf.c 73;" d file:
-TUPLE_START_L modules/pa/pidf.c 74;" d file:
-TUPLE_STATUS_STR_LEN modules/pa/presentity.h 48;" d
-TWRITE_PARAMS modules/tm/t_fifo.c 87;" d file:
-TWRITE_VERSION_LEN modules/tm/t_fifo.c 89;" d file:
-TWRITE_VERSION_S modules/tm/t_fifo.c 88;" d file:
-TYPE_ALL parser/parse_content.h 48;" d
-TYPE_APPLICATION parser/parse_content.h 47;" d
-TYPE_LEN modules/extcmd/extcmd_funcs.c 68;" d file:
-TYPE_LOCAL_CANCEL modules/tm/h_table.h 78;" d
-TYPE_MESSAGE parser/parse_content.h 46;" d
-TYPE_REQUEST modules/tm/h_table.h 79;" d
-TYPE_TEXT parser/parse_content.h 45;" d
-TYPE_UNKNOWN parser/parse_content.h 49;" d
-TZID_ATTR modules/cpl-c/CPL_tree.h 98;" d
-TZURL_ATTR modules/cpl-c/CPL_tree.h 99;" d
-T_ADDBLIND modules/tm/tm_load.h 60;" d
-T_FORWARD_NONACK modules/tm/tm_load.h 62;" d
-T_FORWARD_NONACK_TCP modules/tm/tm_load.h 65;" d
-T_FORWARD_NONACK_TLS modules/tm/tm_load.h 66;" d
-T_FORWARD_NONACK_UDP modules/tm/tm_load.h 64;" d
-T_FORWARD_NONACK_URI modules/tm/tm_load.h 63;" d
-T_GETT modules/tm/tm_load.h 72;" d
-T_GET_TI modules/tm/t_lookup.h 82;" d
-T_GET_TI modules/tm/tm_load.h 67;" d
-T_IS_INVITE_FLAG modules/tm/h_table.h 172;" d
-T_IS_LOCAL modules/tm/t_lookup.h 84;" d
-T_IS_LOCAL modules/tm/tm_load.h 69;" d
-T_IS_LOCAL_FLAG modules/tm/h_table.h 174;" d
-T_LOOKUP_IDENT modules/tm/t_lookup.h 83;" d
-T_LOOKUP_IDENT modules/tm/tm_load.h 68;" d
-T_NOISY_CTIMER_FLAG modules/tm/h_table.h 177;" d
-T_NULL_CELL modules/tm/t_lookup.h 47;" d
-T_RELAY modules/tm/tm_load.h 56;" d
-T_RELAY_TO modules/tm/tm_load.h 52;" d
-T_RELAY_TO_TCP modules/tm/tm_load.h 54;" d
-T_RELAY_TO_TLS modules/tm/tm_load.h 55;" d
-T_RELAY_TO_UDP modules/tm/tm_load.h 53;" d
-T_REPLY modules/tm/tm_load.h 57;" d
-T_REPLY_UNSAFE modules/tm/tm_load.h 59;" d
-T_REPLY_UNSAFE modules/tm/tm_load.h 61;" d
-T_REPLY_WB modules/tm/tm_load.h 58;" d
-T_REQUEST_OUTSIDE modules/tm/tm_load.h 71;" d
-T_REQUEST_WITHIN modules/tm/tm_load.h 70;" d
-T_TABLE_POWER hash_func.h 36;" d
-T_UNDEFINED modules/tm/t_lookup.h 46;" d
-Th12 parser/obsolete/strs.h 330;" d
-Th21 parser/obsolete/strs.h 335;" d
-To12 parser/obsolete/strs.h 94;" d
-To21 parser/obsolete/strs.h 99;" d
-True modules/mediaproxy/mediaproxy.c 83;" d file:
-UAC_FIFO_H modules/tm/uac_fifo.h 32;" d
-UA_DUMMY_LEN modules/registrar/save.c 486;" d file:
-UA_DUMMY_STR modules/registrar/save.c 485;" d file:
-UCONTACT_H modules/usrloc/ucontact.h 36;" d
-UDOMAIN_H modules/usrloc/udomain.h 37;" d
-UDP cfg.tab.c /^ UDP = 307,$/;" e enum:yytokentype file:
-UDP cfg.tab.c 249;" d file:
-UDP cfg.tab.h /^ UDP = 307,$/;" e enum:yytokentype
-UDP cfg.tab.h 225;" d
-UDP1 parser/parse_via.c /^ UDP1, UDP2, FIN_UDP,$/;" e file:
-UDP2 parser/parse_via.c /^ UDP1, UDP2, FIN_UDP,$/;" e file:
-UINT16_MAX lex.yy.c 73;" d file:
-UINT2 md5global.h /^typedef unsigned short int UINT2;$/;" t
-UINT32_MAX lex.yy.c 76;" d file:
-UINT4 md5global.h /^typedef unsigned int UINT4;$/;" t
-UINT8_MAX lex.yy.c 70;" d file:
-ULCB_MAX modules/usrloc/ul_callback.h 43;" d
-UL_ADD modules/usrloc/ul_fifo.h 41;" d
-UL_CONTACT_DELETE modules/usrloc/ul_callback.h 41;" d
-UL_CONTACT_EXPIRE modules/usrloc/ul_callback.h 42;" d
-UL_CONTACT_INSERT modules/usrloc/ul_callback.h 39;" d
-UL_CONTACT_UPDATE modules/usrloc/ul_callback.h 40;" d
-UL_DUMP modules/usrloc/ul_fifo.h 39;" d
-UL_FLUSH modules/usrloc/ul_fifo.h 40;" d
-UL_MOD_H modules/usrloc/ul_mod.h 36;" d
-UL_RM modules/usrloc/ul_fifo.h 37;" d
-UL_RM_CONTACT modules/usrloc/ul_fifo.h 38;" d
-UL_SHOW_CONTACT modules/usrloc/ul_fifo.h 42;" d
-UL_STATS modules/usrloc/ul_fifo.h 36;" d
-UNDEF_CHAR modules/cpl-c/cpl_run.c 66;" d file:
-UNIXSOCK_BUF_SIZE unixsock_server.c 73;" d file:
-UNIXSOCK_CALLID modules/usrloc/ul_unixsock.c 42;" d file:
-UNIXSOCK_CALLID_LEN modules/usrloc/ul_unixsock.c 43;" d file:
-UNIXSOCK_CSEQ modules/usrloc/ul_unixsock.c 44;" d file:
-UNIXSOCK_UA modules/usrloc/ul_unixsock.c 45;" d file:
-UNIXSOCK_UA_LEN modules/usrloc/ul_unixsock.c 46;" d file:
-UNIX_SOCK cfg.tab.c /^ UNIX_SOCK = 331,$/;" e enum:yytokentype file:
-UNIX_SOCK cfg.tab.c 273;" d file:
-UNIX_SOCK cfg.tab.h /^ UNIX_SOCK = 331,$/;" e enum:yytokentype
-UNIX_SOCK cfg.tab.h 249;" d
-UNIX_SOCK_CHILDREN cfg.tab.c /^ UNIX_SOCK_CHILDREN = 332,$/;" e enum:yytokentype file:
-UNIX_SOCK_CHILDREN cfg.tab.c 274;" d file:
-UNIX_SOCK_CHILDREN cfg.tab.h /^ UNIX_SOCK_CHILDREN = 332,$/;" e enum:yytokentype
-UNIX_SOCK_CHILDREN cfg.tab.h 250;" d
-UNIX_TX_TIMEOUT cfg.tab.c /^ UNIX_TX_TIMEOUT = 333,$/;" e enum:yytokentype file:
-UNIX_TX_TIMEOUT cfg.tab.c 275;" d file:
-UNIX_TX_TIMEOUT cfg.tab.h /^ UNIX_TX_TIMEOUT = 333,$/;" e enum:yytokentype
-UNIX_TX_TIMEOUT cfg.tab.h 251;" d
-UNKNOWNOID modules/postgres/pg_type.h 64;" d
-UNKNOWN_HEADER parser/obsolete/parse_hname.c /^ UNKNOWN_HEADER=200,$/;" e file:
-UNKNOWN_HEADER test/auto.c /^ UNKNOWN_HEADER=200,$/;" e file:
-UNKNOWN_PRIO_VAL modules/cpl-c/CPL_tree.h 137;" d
-UNLOCK test/locking/locking_test.c 109;" d file:
-UNLOCK test/locking/locking_test.c 114;" d file:
-UNLOCK test/locking/locking_test.c 119;" d file:
-UNLOCK test/locking/locking_test.c 124;" d file:
-UNLOCK test/locking/locking_test.c 86;" d file:
-UNLOCK test/locking/locking_test.c 97;" d file:
-UNLOCK_HASH modules/tm/h_table.h 69;" d
-UNLOCK_REPLIES modules/tm/t_reply.h 76;" d
-UNREF modules/tm/t_funcs.h 106;" d
-UNREF_UNSAFE modules/tm/t_funcs.h 105;" d
-UNRESERVED_MARK modules/exec/exec_hf.h 54;" d
-UNTIL_ATTR modules/cpl-c/CPL_tree.h 107;" d
-UN_HASH mem/f_malloc.c 77;" d file:
-UN_HASH mem/q_malloc.c 91;" d file:
-UPDATE_CMD db/db_fifo.c 55;" d file:
-UPDATE_STR db/db_fifo.c 65;" d file:
-UPDATE_STR_LEN db/db_fifo.c 66;" d file:
-UPDC16 crc.c 40;" d file:
-UPDC32 crc.c 38;" d file:
-UPDCIT crc.c 39;" d file:
-UPTIME_CMD unixsock_server.c 93;" d file:
-URECORD_H modules/usrloc/urecord.h 36;" d
-URGENT_STR modules/cpl-c/CPL_tree.h 129;" d
-URGENT_STR_LEN modules/cpl-c/CPL_tree.h 130;" d
-URGENT_VAL modules/cpl-c/CPL_tree.h 128;" d
-URI cfg.tab.c /^ URI = 296,$/;" e enum:yytokentype file:
-URI cfg.tab.c 238;" d file:
-URI cfg.tab.h /^ URI = 296,$/;" e enum:yytokentype
-URI cfg.tab.h 214;" d
-URIDB_MOD_H modules/uri_db/uridb_mod.h 36;" d
-URIHOST cfg.tab.c /^ URIHOST = 289,$/;" e enum:yytokentype file:
-URIHOST cfg.tab.c 231;" d file:
-URIHOST cfg.tab.h /^ URIHOST = 289,$/;" e enum:yytokentype
-URIHOST cfg.tab.h 207;" d
-URIHOST_ST route_struct.h /^ EXPR_ST, ACTIONS_ST, CMDF_ST, MODFIXUP_ST, URIHOST_ST, URIPORT_ST,$/;" e
-URIPORT cfg.tab.c /^ URIPORT = 290,$/;" e enum:yytokentype file:
-URIPORT cfg.tab.c 232;" d file:
-URIPORT cfg.tab.h /^ URIPORT = 290,$/;" e enum:yytokentype
-URIPORT cfg.tab.h 208;" d
-URIPORT_ST route_struct.h /^ EXPR_ST, ACTIONS_ST, CMDF_ST, MODFIXUP_ST, URIHOST_ST, URIPORT_ST,$/;" e
-URIRAD_MOD_H modules/uri_radius/urirad_mod.h 35;" d
-URI_ENCLOSED parser/parse_to.c /^ S_URI_ENCLOSED, URI_ENCLOSED, E_URI_ENCLOSED,$/;" e file:
-URI_MOD_H modules/uri/uri_mod.h 36;" d
-URI_O route_struct.h /^enum { METHOD_O=1, URI_O, FROM_URI_O, TO_URI_O, SRCIP_O, SRCPORT_O,$/;" e
-URI_OR_TOKEN parser/parse_to.c /^ URI_OR_TOKEN, MAYBE_URI_END, END, F_CR, F_LF, F_CRLF$/;" e file:
-URI_START modules/pa/watcher.c 565;" d file:
-URI_START_L modules/pa/watcher.c 566;" d file:
-URI_TABLE modules/uri_db/uridb_mod.c 66;" d file:
-URI_TABLE_LEN modules/uri_db/uridb_mod.c 67;" d file:
-URI_TABLE_VERSION modules/uri_db/uridb_mod.c 58;" d file:
-URI_USER_COL modules/uri_db/uridb_mod.c 75;" d file:
-URI_USER_COL_LEN modules/uri_db/uridb_mod.c 76;" d file:
-URL modules/cpl/jcpli.h /^ char *URL;$/;" m struct:_Location
-URL_ATTR modules/cpl-c/CPL_tree.h 140;" d
-URL_MAILTO_LEN modules/cpl-c/CPL_tree.h 198;" d
-URL_MAILTO_STR modules/cpl-c/CPL_tree.h 197;" d
-USED_MEM modules/sms/libsms_sms.h 35;" d
-USER cfg.tab.c /^ USER = 339,$/;" e enum:yytokentype file:
-USER cfg.tab.c 281;" d file:
-USER cfg.tab.h /^ USER = 339,$/;" e enum:yytokentype
-USER cfg.tab.h 257;" d
-USERLIST_ETAG modules/pa/location.c 75;" d file:
-USERLIST_ETAG_L modules/pa/location.c 76;" d file:
-USERLIST_START modules/pa/location.c 73;" d file:
-USERLIST_START_L modules/pa/location.c 74;" d file:
-USER_AGENT config.h 76;" d
-USER_AGENT_COL modules/usrloc/ul_mod.c 70;" d file:
-USER_AGENT_LEN config.h 78;" d
-USER_AGENT_VAL modules/cpl-c/CPL_tree.h 90;" d
-USER_COL modules/auth_db/authdb_mod.c 84;" d file:
-USER_COL modules/group/group_mod.c 80;" d file:
-USER_COL modules/uri_db/uridb_mod.c 69;" d file:
-USER_COL modules/usrloc/ul_mod.c 60;" d file:
-USER_COL_LEN modules/auth_db/authdb_mod.c 85;" d file:
-USER_COL_LEN modules/group/group_mod.c 81;" d file:
-USER_COL_LEN modules/uri_db/uridb_mod.c 70;" d file:
-USER_END modules/pa/location.c 80;" d file:
-USER_END_L modules/pa/location.c 81;" d file:
-USER_ETAG modules/pa/location.c 82;" d file:
-USER_ETAG_L modules/pa/location.c 83;" d file:
-USER_START modules/pa/location.c 78;" d file:
-USER_START_L modules/pa/location.c 79;" d file:
-USER_VAL modules/cpl-c/CPL_tree.h 76;" d
-USE_FUNC_PARAM sr_module.h 62;" d
-USE_GMAKE freebsd/Makefile /^USE_GMAKE= yes$/;" m
-USE_GMAKE netbsd/Makefile /^USE_GMAKE= yes $/;" m
-USE_GMAKE openbsd/Makefile /^USE_GMAKE= yes$/;" m
-USE_IPV6_STR version.h 44;" d
-USE_IPV6_STR version.h 46;" d
-USE_MCAST_STR version.h 69;" d
-USE_MCAST_STR version.h 71;" d
-USE_MEM md5.c 35;" d file:
-USE_POSIX_SEM_STR version.h 172;" d
-USE_POSIX_SEM_STR version.h 174;" d
-USE_PTHREAD_MUTEX_STR version.h 166;" d
-USE_PTHREAD_MUTEX_STR version.h 168;" d
-USE_SHM_MEM_STR version.h 130;" d
-USE_SHM_MEM_STR version.h 132;" d
-USE_SYSV_SEM_STR version.h 178;" d
-USE_SYSV_SEM_STR version.h 180;" d
-USE_TCP_STR version.h 50;" d
-USE_TCP_STR version.h 52;" d
-USE_TLS_STR version.h 56;" d
-USE_TLS_STR version.h 58;" d
-USE_YWEEK_W modules/cpl-c/cpl_time.c 96;" d file:
-USE_YWEEK_W modules/cpl-c/cpl_time.h 51;" d
-USRHOST_ERR modules/cpl-c/cpl_loader.c 249;" d file:
-USRLOC_H modules/usrloc/usrloc.h 32;" d
-UTILS_H modules/mangler/utils.h 35;" d
-UTILS_H modules/mysql/utils.h 32;" d
-UTIME_H modules/usrloc/utime.h 32;" d
-UseMediaProxy modules/mediaproxy/mediaproxy.c /^UseMediaProxy(struct sip_msg* msg, char* str1, char* str2)$/;" f file:
-VALID_CONTACT modules/usrloc/ucontact.h 91;" d
-VALUE_ATTR modules/cpl-c/CPL_tree.h 155;" d
-VAL_BITMAP db/db_val.h 81;" d
-VAL_BLOB db/db_val.h 80;" d
-VAL_DOUBLE db/db_val.h 76;" d
-VAL_H modules/mysql/val.h 29;" d
-VAL_INT db/db_val.h 75;" d
-VAL_NULL db/db_val.h 74;" d
-VAL_STR db/db_val.h 79;" d
-VAL_STRING db/db_val.h 78;" d
-VAL_TIME db/db_val.h 77;" d
-VAL_TYPE db/db_val.h 73;" d
-VARBITOID modules/postgres/pg_type.h 80;" d
-VARCHAR modules/pdt/doc/admin.sql /^ name VARCHAR(20) NOT NULL PRIMARY KEY,$/;" F
-VARCHAR modules/pdt/doc/admin.sql /^ username VARCHAR(50) NOT NULL,$/;" F
-VARCHAROID modules/postgres/pg_type.h 72;" d
-VAR_CALLID modules/exec/exec_hf.h 67;" d
-VAR_CALLID_LEN modules/exec/exec_hf.h 68;" d
-VAR_CLEN modules/exec/exec_hf.h 71;" d
-VAR_CLEN_LEN modules/exec/exec_hf.h 72;" d
-VAR_CONTACT modules/exec/exec_hf.h 73;" d
-VAR_CONTACT_LEN modules/exec/exec_hf.h 74;" d
-VAR_CTYPE modules/exec/exec_hf.h 63;" d
-VAR_CTYPE_LEN modules/exec/exec_hf.h 64;" d
-VAR_EVENT modules/exec/exec_hf.h 77;" d
-VAR_EVENT_LEN modules/exec/exec_hf.h 78;" d
-VAR_FROM modules/exec/exec_hf.h 65;" d
-VAR_FROM_LEN modules/exec/exec_hf.h 66;" d
-VAR_SUPPORTED modules/exec/exec_hf.h 69;" d
-VAR_SUPPORTED_LEN modules/exec/exec_hf.h 70;" d
-VAR_TO modules/exec/exec_hf.h 75;" d
-VAR_TO_LEN modules/exec/exec_hf.h 76;" d
-VAR_VIA modules/exec/exec_hf.h 61;" d
-VAR_VIA_LEN modules/exec/exec_hf.h 62;" d
-VA_END modules/jabber/xode.h 49;" d
-VA_END modules/jabber/xode.h 57;" d
-VA_LOCAL_DECL modules/jabber/xode.h 47;" d
-VA_LOCAL_DECL modules/jabber/xode.h 55;" d
-VA_START modules/jabber/xode.h 48;" d
-VA_START modules/jabber/xode.h 56;" d
-VER1 parser/parse_fline.c /^ VER1, VER2, VER3, VER4, VER5, VER6, FIN_VER,$/;" e file:
-VER1 parser/parse_via.c /^ VER1, VER2, FIN_VER,$/;" e file:
-VER1 test/via_parse.c /^ VER1, VER2, FIN_VER,$/;" e file:
-VER2 parser/parse_fline.c /^ VER1, VER2, VER3, VER4, VER5, VER6, FIN_VER,$/;" e file:
-VER2 parser/parse_via.c /^ VER1, VER2, FIN_VER,$/;" e file:
-VER2 test/via_parse.c /^ VER1, VER2, FIN_VER,$/;" e file:
-VER3 parser/parse_fline.c /^ VER1, VER2, VER3, VER4, VER5, VER6, FIN_VER,$/;" e file:
-VER4 parser/parse_fline.c /^ VER1, VER2, VER3, VER4, VER5, VER6, FIN_VER,$/;" e file:
-VER5 parser/parse_fline.c /^ VER1, VER2, VER3, VER4, VER5, VER6, FIN_VER,$/;" e file:
-VER6 parser/parse_fline.c /^ VER1, VER2, VER3, VER4, VER5, VER6, FIN_VER,$/;" e file:
-VERSION_CMD unixsock_server.c 92;" d file:
-VERSION_COLUMN config.h 197;" d
-VERSION_TABLE config.h 196;" d
-VER_SIZE modules/acc/diam_message.h 40;" d
-VER_SIZE modules/auth_diameter/diameter_msg.h 40;" d
-VIA1 parser/obsolete/parse_hname.c /^ VIA1, VIA2,$/;" e file:
-VIA1 parser/obsolete/strs.h 64;" d
-VIA1 test/auto.c /^ VIA1, VIA2,$/;" e file:
-VIA2 parser/obsolete/parse_hname.c /^ VIA1, VIA2,$/;" e file:
-VIA2 parser/obsolete/strs.h 73;" d
-VIA2 test/auto.c /^ VIA1, VIA2,$/;" e file:
-VIA_BEGIN_STR test/shoot2.c 34;" d file:
-VIA_BEGIN_STR_LEN test/shoot2.c 35;" d file:
-VIa1 parser/obsolete/strs.h 63;" d
-VIa2 parser/obsolete/strs.h 72;" d
-VOIDOID modules/postgres/pg_type.h 92;" d
-VOID_CMD modules/extcmd/extcmd_funcs.c 62;" d file:
-VQM_DEBUG_FRAG mem/vq_malloc.h 67;" d
-VQM_DEBUG_FRAG mem/vq_malloc.h 69;" d
-VQM_OVERHEAD mem/vq_malloc.h 65;" d
-VQM_OVERHEAD mem/vq_malloc.h 70;" d
-VQ_MALLOC_H mem/vq_malloc.h 30;" d
-VQ_MALLOC_STR version.h 118;" d
-VQ_MALLOC_STR version.h 120;" d
-V_CALL_CHECK modules/acc/dict.h 81;" d
-V_EMERGENCY_CALL modules/acc/dict.h 82;" d
-V_GROUP_CHECK modules/acc/dict.h 84;" d
-V_MAX modules/acc/dict.h 87;" d
-V_SIP_CALLEE_AVPS modules/acc/dict.h 86;" d
-V_SIP_CALLER_AVPS modules/acc/dict.h 85;" d
-V_SIP_SESSION modules/acc/dict.h 83;" d
-V_STATUS_FAILED modules/acc/dict.h 80;" d
-V_STATUS_START modules/acc/dict.h 78;" d
-V_STATUS_STOP modules/acc/dict.h 79;" d
-ViA1 parser/obsolete/strs.h 62;" d
-ViA2 parser/obsolete/strs.h 71;" d
-Via1 parser/obsolete/strs.h 61;" d
-Via2 parser/obsolete/strs.h 70;" d
-WARN modules/cpl-c/cpl_log.h 46;" d
-WARNING msg_translator.h 44;" d
-WARNING_LEN msg_translator.h 45;" d
-WARNING_PHRASE msg_translator.h 46;" d
-WARNING_PHRASE_LEN msg_translator.h 47;" d
-WARN_LEN modules/cpl-c/cpl_log.h 47;" d
-WATCHERINFO_ETAG modules/pa/watcher.c 547;" d file:
-WATCHERINFO_ETAG_L modules/pa/watcher.c 548;" d file:
-WATCHERINFO_STAG modules/pa/watcher.c 545;" d file:
-WATCHERINFO_STAG_L modules/pa/watcher.c 546;" d file:
-WATCHERLIST_ETAG modules/pa/watcher.c 552;" d file:
-WATCHERLIST_ETAG_L modules/pa/watcher.c 553;" d file:
-WATCHERLIST_START modules/pa/watcher.c 550;" d file:
-WATCHERLIST_START_L modules/pa/watcher.c 551;" d file:
-WATCHER_ETAG modules/pa/watcher.c 567;" d file:
-WATCHER_ETAG_L modules/pa/watcher.c 568;" d file:
-WATCHER_H modules/pa/watcher.h 31;" d
-WATCHER_START modules/pa/watcher.c 555;" d file:
-WATCHER_START_L modules/pa/watcher.c 556;" d file:
-WDAY_FR modules/cpl-c/cpl_time.h 112;" d
-WDAY_MO modules/cpl-c/cpl_time.h 108;" d
-WDAY_NU modules/cpl-c/cpl_time.h 114;" d
-WDAY_SA modules/cpl-c/cpl_time.h 113;" d
-WDAY_SU modules/cpl-c/cpl_time.h 107;" d
-WDAY_TH modules/cpl-c/cpl_time.h 111;" d
-WDAY_TU modules/cpl-c/cpl_time.h 109;" d
-WDAY_WE modules/cpl-c/cpl_time.h 110;" d
-WDIR cfg.tab.c /^ WDIR = 342,$/;" e enum:yytokentype file:
-WDIR cfg.tab.c 284;" d file:
-WDIR cfg.tab.h /^ WDIR = 342,$/;" e enum:yytokentype
-WDIR cfg.tab.h 260;" d
-WE_APPROVED modules/pa/watcher.h /^ WE_APPROVED = 1,$/;" e enum:watcher_event
-WE_DEACTIVATED modules/pa/watcher.h /^ WE_DEACTIVATED = 2,$/;" e enum:watcher_event
-WE_GIVEUP modules/pa/watcher.h /^ WE_GIVEUP = 6,$/;" e enum:watcher_event
-WE_NORESOURCE modules/pa/watcher.h /^ WE_NORESOURCE = 7$/;" e enum:watcher_event
-WE_PROBATION modules/pa/watcher.h /^ WE_PROBATION = 3,$/;" e enum:watcher_event
-WE_REJECTED modules/pa/watcher.h /^ WE_REJECTED = 4,$/;" e enum:watcher_event
-WE_SUBSCRIBE modules/pa/watcher.h /^ WE_SUBSCRIBE = 0,$/;" e enum:watcher_event
-WE_TIMEOUT modules/pa/watcher.h /^ WE_TIMEOUT = 5,$/;" e enum:watcher_event
-WFLAG_SUBSCRIPTION_CHANGED modules/pa/watcher.h /^ WFLAG_SUBSCRIPTION_CHANGED=1$/;" e enum:wflags
-WHICH_CMD unixsock_server.c 94;" d file:
-WIDE_INT modules/jabber/xsnprintf.c 251;" d file:
-WINFO_TEXT modules/pa/notify.c 59;" d file:
-WINFO_TEXT_L modules/pa/notify.c 60;" d file:
-WKST_ATTR modules/cpl-c/CPL_tree.h 117;" d
-WRITE_BACK modules/usrloc/ul_mod.h 50;" d
-WRITE_THROUGH modules/usrloc/ul_mod.h 49;" d
-WRKSRC freebsd/Makefile /^WRKSRC= ${WRKDIR}\/${PORTNAME}-${PORTVERSION}$/;" m
-WRKSRC netbsd/Makefile /^WRKSRC= ${WRKDIR}\/${PORTNAME}-${PORTVERSION}$/;" m
-WRKSRC openbsd/Makefile /^WRKSRC= ${WRKDIR}\/${PORTNAME}-${PORTVERSION}$/;" m
-WS_ACTIVE modules/pa/watcher.h /^ WS_ACTIVE = 1,$/;" e enum:watcher_status
-WS_PENDING modules/pa/watcher.h /^ WS_PENDING = 0,$/;" e enum:watcher_status
-WS_TERMINATED modules/pa/watcher.h /^ WS_TERMINATED = 3$/;" e enum:watcher_status
-WS_WAITING modules/pa/watcher.h /^ WS_WAITING = 2,$/;" e enum:watcher_status
-WT_TIMER_LIST modules/tm/timer.h /^ WT_TIMER_LIST,$/;" e enum:lists
-WT_TIME_OUT modules/tm/config.h 54;" d
-WWW_AUTH_CASE parser/case_www.h 54;" d
-WWW_AUTH_CHALLENGE modules/auth/challenge.c 57;" d file:
-WWW_AUTH_CHALLENGE modules/auth_diameter/defs.h 32;" d
-WWW_AUTH_CHALLENGE_LEN modules/auth_diameter/defs.h 29;" d
-W_AV modules/exec/exec_hf.h /^enum wrapper_type { W_HF=1, W_AV };$/;" e enum:wrapper_type
-W_HF modules/exec/exec_hf.h /^enum wrapper_type { W_HF=1, W_AV };$/;" e enum:wrapper_type
-XCAP_CHANGE_TEXT modules/pa/notify.c 62;" d file:
-XCAP_CHANGE_TEXT_L modules/pa/notify.c 63;" d file:
-XIDOID modules/postgres/pg_type.h 50;" d
-XJAB_RESOURCE modules/jabber/xjab_worker.c 75;" d file:
-XJ_ADDRTR_CON modules/jabber/xjab_worker.c 80;" d file:
-XJ_ADDRTR_J2S modules/jabber/xjab_worker.c 79;" d file:
-XJ_ADDRTR_NUL modules/jabber/xjab_worker.c 77;" d file:
-XJ_ADDRTR_S2J modules/jabber/xjab_worker.c 78;" d file:
-XJ_AIM_LEN modules/jabber/xjab_jcon.h 50;" d
-XJ_AIM_NAME modules/jabber/xjab_jcon.h 49;" d
-XJ_DEF_JDELIM modules/jabber/xjab_wlist.c 51;" d file:
-XJ_DEL_WATCHER modules/jabber/xjab_base.h 53;" d
-XJ_DMSG_ERR_DISCONNECTED modules/jabber/xjab_dmsg.h 61;" d
-XJ_DMSG_ERR_JAUTH modules/jabber/xjab_dmsg.h 47;" d
-XJ_DMSG_ERR_JCONFNICK modules/jabber/xjab_dmsg.h 65;" d
-XJ_DMSG_ERR_JCONFREFUSED modules/jabber/xjab_dmsg.h 67;" d
-XJ_DMSG_ERR_JGWFORB modules/jabber/xjab_dmsg.h 43;" d
-XJ_DMSG_ERR_JGWFULL modules/jabber/xjab_dmsg.h 49;" d
-XJ_DMSG_ERR_JOINJCONF modules/jabber/xjab_dmsg.h 51;" d
-XJ_DMSG_ERR_NEWJCONF modules/jabber/xjab_dmsg.h 53;" d
-XJ_DMSG_ERR_NOJSRV modules/jabber/xjab_dmsg.h 45;" d
-XJ_DMSG_ERR_NOREGIM modules/jabber/xjab_dmsg.h 59;" d
-XJ_DMSG_ERR_NOTJCONF modules/jabber/xjab_dmsg.h 39;" d
-XJ_DMSG_ERR_SENDIM modules/jabber/xjab_dmsg.h 37;" d
-XJ_DMSG_ERR_SENDJMSG modules/jabber/xjab_dmsg.h 55;" d
-XJ_DMSG_ERR_STOREJMSG modules/jabber/xjab_dmsg.h 57;" d
-XJ_DMSG_INF_DISCONNECTED modules/jabber/xjab_dmsg.h 35;" d
-XJ_DMSG_INF_JCONFEXIT modules/jabber/xjab_dmsg.h 41;" d
-XJ_DMSG_INF_JOFFLINE modules/jabber/xjab_dmsg.h 63;" d
-XJ_EXIT_JCONF modules/jabber/xjab_base.h 49;" d
-XJ_FLAG_CLOSE modules/jabber/xjab_base.h 56;" d
-XJ_FLAG_OPEN modules/jabber/xjab_base.h 55;" d
-XJ_GO_OFFLINE modules/jabber/xjab_base.h 51;" d
-XJ_GO_ONLINE modules/jabber/xjab_base.h 50;" d
-XJ_ICQ_LEN modules/jabber/xjab_jcon.h 52;" d
-XJ_ICQ_NAME modules/jabber/xjab_jcon.h 51;" d
-XJ_JCMD_SUBSCRIBE modules/jabber/xjab_jcon.h 62;" d
-XJ_JCMD_UNSUBSCRIBE modules/jabber/xjab_jcon.h 63;" d
-XJ_JCONF_AUTH modules/jabber/xjab_jconf.h 40;" d
-XJ_JCONF_NULL modules/jabber/xjab_jconf.h 37;" d
-XJ_JCONF_READY modules/jabber/xjab_jconf.h 38;" d
-XJ_JCONF_WAITING modules/jabber/xjab_jconf.h 39;" d
-XJ_JMSG_CHAT modules/jabber/xjab_jcon.h 59;" d
-XJ_JMSG_GROUPCHAT modules/jabber/xjab_jcon.h 60;" d
-XJ_JMSG_NORMAL modules/jabber/xjab_jcon.h 58;" d
-XJ_JOIN_JCONF modules/jabber/xjab_base.h 48;" d
-XJ_MAX_JCONF modules/jabber/xjab_jcon.c 60;" d file:
-XJ_MSG_POOL_SIZE modules/jabber/xjab_worker.c 82;" d file:
-XJ_MSN_LEN modules/jabber/xjab_jcon.h 54;" d
-XJ_MSN_NAME modules/jabber/xjab_jcon.h 53;" d
-XJ_NET_AIM modules/jabber/xjab_jcon.h 44;" d
-XJ_NET_ALL modules/jabber/xjab_jcon.h 42;" d
-XJ_NET_ICQ modules/jabber/xjab_jcon.h 45;" d
-XJ_NET_JAB modules/jabber/xjab_jcon.h 43;" d
-XJ_NET_MSN modules/jabber/xjab_jcon.h 46;" d
-XJ_NET_NUL modules/jabber/xjab_jcon.h 41;" d
-XJ_NET_YAH modules/jabber/xjab_jcon.h 47;" d
-XJ_NO_SCRIPT_F modules/jabber/xjab_load.h 36;" d
-XJ_NULL modules/jabber/xjab_base.h 46;" d
-XJ_PRES_STATUS_NULL modules/jabber/xjab_presence.h 43;" d
-XJ_PRES_STATUS_SUBS modules/jabber/xjab_presence.h 44;" d
-XJ_PRES_STATUS_WAIT modules/jabber/xjab_presence.h 45;" d
-XJ_PS_CHECK modules/jabber/xjab_presence.h 37;" d
-XJ_PS_OFFLINE modules/jabber/xjab_presence.h 38;" d
-XJ_PS_ONLINE modules/jabber/xjab_presence.h 39;" d
-XJ_PS_REFUSED modules/jabber/xjab_presence.h 41;" d
-XJ_PS_TERMINATED modules/jabber/xjab_presence.h 40;" d
-XJ_REG_WATCHER modules/jabber/xjab_base.h 52;" d
-XJ_SEND_MESSAGE modules/jabber/xjab_base.h 47;" d
-XJ_YAH_LEN modules/jabber/xjab_jcon.h 56;" d
-XJ_YAH_NAME modules/jabber/xjab_jcon.h 55;" d
-XML_VERSION modules/pa/location.c 65;" d file:
-XML_VERSION modules/pa/pidf.c 52;" d file:
-XML_VERSION modules/pa/watcher.c 542;" d file:
-XML_VERSION modules/pa/xpidf.c 45;" d file:
-XML_VERSION_L modules/pa/location.c 66;" d file:
-XML_VERSION_L modules/pa/pidf.c 53;" d file:
-XML_VERSION_L modules/pa/watcher.c 543;" d file:
-XML_VERSION_L modules/pa/xpidf.c 46;" d file:
-XODE_STREAM_CLOSE modules/jabber/xode.h 274;" d
-XODE_STREAM_ERROR modules/jabber/xode.h 275;" d
-XODE_STREAM_MAXDEPTH modules/jabber/xode.h 270;" d
-XODE_STREAM_MAXNODE modules/jabber/xode.h 269;" d
-XODE_STREAM_NODE modules/jabber/xode.h 273;" d
-XODE_STREAM_ROOT modules/jabber/xode.h 272;" d
-XODE_TYPE_ATTRIB modules/jabber/xode.h 175;" d
-XODE_TYPE_CDATA modules/jabber/xode.h 176;" d
-XODE_TYPE_LAST modules/jabber/xode.h 178;" d
-XODE_TYPE_TAG modules/jabber/xode.h 174;" d
-XODE_TYPE_UNDEF modules/jabber/xode.h 179;" d
-XPIDF_DTD modules/pa/xpidf.c 60;" d file:
-XPIDF_DTD_L modules/pa/xpidf.c 61;" d file:
-XPIDF_H modules/pa/xpidf.h 31;" d
-XPIDF_ST_CLOSED modules/pa/xpidf.h /^ XPIDF_ST_CLOSED$/;" e enum:xpidf_status
-XPIDF_ST_OPEN modules/pa/xpidf.h /^ XPIDF_ST_OPEN,$/;" e enum:xpidf_status
-X_ETAG modules/pa/pidf.c 139;" d file:
-X_ETAG_L modules/pa/pidf.c 140;" d file:
-X_STAG modules/pa/pidf.c 136;" d file:
-X_STAG_L modules/pa/pidf.c 137;" d file:
-YES modules/jabber/xsnprintf.c /^ NO = 0, YES = 1$/;" e file:
-YES_VAL modules/cpl-c/CPL_tree.h 144;" d
-YYABORT cfg.tab.c 1558;" d file:
-YYACCEPT cfg.tab.c 1557;" d file:
-YYBACKUP cfg.tab.c 1570;" d file:
-YYBISON cfg.tab.c 37;" d file:
-YYCOPY cfg.tab.c 502;" d file:
-YYCOPY cfg.tab.c 505;" d file:
-YYDEBUG cfg.tab.c 405;" d file:
-YYDPRINTF cfg.tab.c 1650;" d file:
-YYDPRINTF cfg.tab.c 1728;" d file:
-YYEMPTY cfg.tab.c 1554;" d file:
-YYEOF cfg.tab.c 1555;" d file:
-YYERRCODE cfg.tab.c 1589;" d file:
-YYERROR cfg.tab.c 1559;" d file:
-YYERROR_VERBOSE cfg.tab.c 410;" d file:
-YYERROR_VERBOSE cfg.tab.c 411;" d file:
-YYERROR_VERBOSE cfg.tab.c 413;" d file:
-YYFAIL cfg.tab.c 1566;" d file:
-YYFINAL cfg.tab.c 541;" d file:
-YYFPRINTF cfg.tab.c 1647;" d file:
-YYFREE cfg.tab.c 446;" d file:
-YYINITDEPTH cfg.tab.c 1737;" d file:
-YYLAST cfg.tab.c 543;" d file:
-YYLEX cfg.tab.c 1637;" d file:
-YYLEX cfg.tab.c 1639;" d file:
-YYLLOC_DEFAULT cfg.tab.c 1598;" d file:
-YYLSP_NEEDED cfg.tab.c 46;" d file:
-YYMALLOC cfg.tab.c 449;" d file:
-YYMAXDEPTH cfg.tab.c 1748;" d file:
-YYMAXUTOK cfg.tab.c 556;" d file:
-YYNNTS cfg.tab.c 548;" d file:
-YYNRULES cfg.tab.c 550;" d file:
-YYNSTATES cfg.tab.c 552;" d file:
-YYNTOKENS cfg.tab.c 546;" d file:
-YYPACT_NINF cfg.tab.c 1101;" d file:
-YYPOPSTACK cfg.tab.c 1957;" d file:
-YYPURE cfg.tab.c 43;" d file:
-YYRECOVERING cfg.tab.c 1568;" d file:
-YYRHSLOC cfg.tab.c 1596;" d file:
-YYSIZE_T cfg.tab.c 1537;" d file:
-YYSIZE_T cfg.tab.c 1540;" d file:
-YYSIZE_T cfg.tab.c 1545;" d file:
-YYSIZE_T cfg.tab.c 1549;" d file:
-YYSIZE_T cfg.tab.c 470;" d file:
-YYSKELETON_NAME cfg.tab.c 40;" d file:
-YYSTACK_ALLOC cfg.tab.c 457;" d file:
-YYSTACK_ALLOC cfg.tab.c 459;" d file:
-YYSTACK_ALLOC cfg.tab.c 472;" d file:
-YYSTACK_BYTES cfg.tab.c 494;" d file:
-YYSTACK_FREE cfg.tab.c 466;" d file:
-YYSTACK_FREE cfg.tab.c 473;" d file:
-YYSTACK_GAP_MAXIMUM cfg.tab.c 490;" d file:
-YYSTACK_RELOCATE cfg.tab.c 2049;" d file:
-YYSTACK_RELOCATE cfg.tab.c 521;" d file:
-YYSTATE lex.yy.c 122;" d file:
-YYSTYPE cfg.tab.c /^typedef union YYSTYPE {$/;" u file:
-YYSTYPE cfg.tab.c /^} YYSTYPE;$/;" t file:
-YYSTYPE cfg.tab.h /^typedef union YYSTYPE {$/;" u
-YYSTYPE cfg.tab.h /^} YYSTYPE;$/;" t
-YYSTYPE_IS_DECLARED cfg.tab.c 431;" d file:
-YYSTYPE_IS_DECLARED cfg.tab.h 337;" d
-YYSTYPE_IS_TRIVIAL cfg.tab.c 432;" d file:
-YYSTYPE_IS_TRIVIAL cfg.tab.h 338;" d
-YYTABLES_NAME lex.yy.c 3369;" d file:
-YYTABLE_NINF cfg.tab.c 1195;" d file:
-YYTERROR cfg.tab.c 1588;" d file:
-YYTOKENTYPE cfg.tab.c 52;" d file:
-YYTOKENTYPE cfg.tab.h 28;" d
-YYTRANSLATE cfg.tab.c 558;" d file:
-YYUNDEFTOK cfg.tab.c 555;" d file:
-YY_AT_BOL lex.yy.c 322;" d file:
-YY_BREAK lex.yy.c 1375;" d file:
-YY_BUFFER_EOF_PENDING lex.yy.c 238;" d file:
-YY_BUFFER_NEW lex.yy.c 226;" d file:
-YY_BUFFER_NORMAL lex.yy.c 227;" d file:
-YY_BUFFER_STATE lex.yy.c /^typedef struct yy_buffer_state *YY_BUFFER_STATE;$/;" t file:
-YY_BUF_SIZE lex.yy.c 134;" d file:
-YY_CHAR lex.yy.c /^typedef unsigned char YY_CHAR;$/;" t file:
-YY_CURRENT_BUFFER lex.yy.c 254;" d file:
-YY_CURRENT_BUFFER_LVALUE lex.yy.c 261;" d file:
-YY_DECL lex.yy.c 1363;" d file:
-YY_DECL lex.yy.c 3381;" d file:
-YY_DECL_IS_OURS lex.yy.c 1359;" d file:
-YY_DECL_IS_OURS lex.yy.c 3380;" d file:
-YY_DO_BEFORE_ACTION lex.yy.c 3377;" d file:
-YY_DO_BEFORE_ACTION lex.yy.c 347;" d file:
-YY_END_OF_BUFFER lex.yy.c 356;" d file:
-YY_END_OF_BUFFER_CHAR lex.yy.c 130;" d file:
-YY_EXIT_FAILURE lex.yy.c 3199;" d file:
-YY_EXTRA_TYPE lex.yy.c 1251;" d file:
-YY_FATAL_ERROR lex.yy.c 1350;" d file:
-YY_FLEX_MAJOR_VERSION lex.yy.c 9;" d file:
-YY_FLEX_MINOR_VERSION lex.yy.c 10;" d file:
-YY_FLEX_SUBMINOR_VERSION lex.yy.c 11;" d file:
-YY_FLUSH_BUFFER lex.yy.c 290;" d file:
-YY_FLUSH_BUFFER lex.yy.c 3372;" d file:
-YY_INPUT lex.yy.c 1303;" d file:
-YY_INT_ALIGNED lex.yy.c 4;" d file:
-YY_LESS_LINENO lex.yy.c 150;" d file:
-YY_LOCATION_PRINT cfg.tab.c 1624;" d file:
-YY_LOCATION_PRINT cfg.tab.c 1629;" d file:
-YY_MORE_ADJ lex.yy.c 1127;" d file:
-YY_NEW_FILE lex.yy.c 128;" d file:
-YY_NEW_FILE lex.yy.c 3371;" d file:
-YY_NULL lex.yy.c 102;" d file:
-YY_NUM_RULES lex.yy.c 355;" d file:
-YY_READ_BUF_SIZE lex.yy.c 1288;" d file:
-YY_REDUCE_PRINT cfg.tab.c 1718;" d file:
-YY_REDUCE_PRINT cfg.tab.c 1731;" d file:
-YY_RESTORE_YY_MORE_OFFSET lex.yy.c 1128;" d file:
-YY_RULE_SETUP lex.yy.c 1378;" d file:
-YY_SC_TO_UI lex.yy.c 109;" d file:
-YY_STACK_PRINT cfg.tab.c 1688;" d file:
-YY_STACK_PRINT cfg.tab.c 1730;" d file:
-YY_START lex.yy.c 121;" d file:
-YY_START_STACK_INCR lex.yy.c 1345;" d file:
-YY_STATE_EOF lex.yy.c 125;" d file:
-YY_STRUCT_YY_BUFFER_STATE lex.yy.c 179;" d file:
-YY_SYMBOL_PRINT cfg.tab.c 1656;" d file:
-YY_SYMBOL_PRINT cfg.tab.c 1729;" d file:
-YY_TYPEDEF_YY_BUFFER_STATE lex.yy.c 138;" d file:
-YY_TYPEDEF_YY_SIZE_T lex.yy.c 174;" d file:
-YY_USER_ACTION lex.yy.c 1370;" d file:
-YY_USE_CONST lex.yy.c 84;" d file:
-YY_USE_CONST lex.yy.c 90;" d file:
-Y_ETAG modules/pa/pidf.c 145;" d file:
-Y_ETAG_L modules/pa/pidf.c 146;" d file:
-Y_STAG modules/pa/pidf.c 142;" d file:
-Y_STAG_L modules/pa/pidf.c 143;" d file:
-ZSW ut.h 62;" d
-_AAA_DIAMETER_MSG_H modules/acc/diam_message.h 28;" d
-_AAA_DIAMETER_MSG_H modules/auth_diameter/diameter_msg.h 28;" d
-_ACC_DEFS_H modules/acc/defs.h 34;" d
-_ACC_H modules/acc/acc.h 35;" d
-_ACC_MOD_H modules/acc/acc_mod.h 38;" d
-_ALLOCA_H cfg.tab.c 383;" d file:
-_AVPOPS_PARSE_H_ modules/avpops/avpops_parse.h 34;" d
-_AVP_OPS_DB_H_ modules/avpops/avpops_db.h 36;" d
-_AVP_OPS_IMPL_H_ modules/avpops/avpops_impl.h 35;" d
-_CANCEL_H modules/tm/t_cancel.h 35;" d
-_COMP_DEFS_H comp_defs.h 38;" d
-_CPL_CPL_SIG_H_ modules/cpl-c/cpl_sig.h 30;" d
-_CPL_C_ENV_H modules/cpl-c/cpl_env.h 32;" d
-_CPL_DB_H modules/cpl-c/cpl_db.h 29;" d
-_CPL_LOADER_H modules/cpl-c/cpl_loader.h 34;" d
-_CPL_LOC_SET_H_ modules/cpl-c/loc_set.h 30;" d
-_CPL_LOG_H_ modules/cpl-c/cpl_log.h 36;" d
-_CPL_NONSIG_H_ modules/cpl-c/cpl_nonsig.h 33;" d
-_CPL_PARSER_H modules/cpl-c/cpl_parser.h 29;" d
-_CPL_RUN_H modules/cpl-c/cpl_run.h 29;" d
-_CPL_SUB_LIST_H modules/cpl-c/sub_list.h 29;" d
-_CPL_TIME_H_ modules/cpl-c/cpl_time.h 35;" d
-_CPL_TREE_DEFINITION_H modules/cpl-c/CPL_tree.h 29;" d
-_CPL_UTILS_H modules/cpl-c/cpl_utils.h 35;" d
-_CRC_H_ crc.h 4;" d
-_CRC_H_ hash_func.c 31;" d file:
-_D modules/cpl-c/cpl_time.c 321;" d file:
-_DBG_WS udp_server.c 75;" d file:
-_DBG_WS_LEN udp_server.c 74;" d file:
-_DBTEXT_H_ modules/dbtext/dbtext.h 39;" d
-_DBT_API_H_ modules/dbtext/dbt_api.h 39;" d
-_DBT_LIB_H_ modules/dbtext/dbt_lib.h 39;" d
-_DBT_RES_H_ modules/dbtext/dbt_res.h 39;" d
-_DBT_UTIL_H_ modules/dbtext/dbt_util.h 39;" d
-_DICT_H modules/acc/dict.h 35;" d
-_DISPATCH_H_ modules/dispatcher/dispatch.h 39;" d
-_DOMAINS_H_ modules/pdt/domains.h 27;" d
-_DSET_H dset.h 29;" d
-_EXEC_CONFIG_H modules/exec/config.h 31;" d
-_EXEC_H modules/exec/exec.h 31;" d
-_EXEC_HF_H modules/exec/exec_hf.h 31;" d
-_FIFO_H modules/domain/fifo.h 32;" d
-_FIFO_SERVER_H fifo_server.h 31;" d
-_FIX_LUMPS_H modules/tm/fix_lumps.h 45;" d
-_FLAGS_H flags.h 31;" d
-_FLATSTORE_H modules/flatstore/flatstore.h 37;" d
-_FLAT_CON_H modules/flatstore/flat_con.h 31;" d
-_FLAT_FIFO_H modules/flatstore/flat_fifo.h 31;" d
-_FLAT_ID_H modules/flatstore/flat_id.h 31;" d
-_FLAT_POOL_H modules/flatstore/flat_pool.h 31;" d
-_GNU_SOURCE modules/postgres/db_utils.c 39;" d file:
-_HASH_H hash_func.h 31;" d
-_HASH_H modules/domain/hash.h 32;" d
-_HOOKS_H modules/tm/t_hooks.h 38;" d
-_H_EXTCMD_CLIENTS modules/extcmd/clients.h 30;" d
-_H_EXTERNAL_COMMANDS modules/extcmd/extcmd_funcs.h 30;" d
-_H_SMS_REPORT_DEF modules/sms/sms_report.h 29;" d
-_H_TABLE_H modules/tm/h_table.h 44;" d
-_ID1 parser/obsolete/strs.h 139;" d
-_ID2 parser/obsolete/strs.h 144;" d
-_ID_CASE parser/case_remo.h 34;" d
-_IP_TREE_H modules/pike/ip_tree.h 37;" d
-_IS_SET modules/cpl-c/cpl_time.c 950;" d file:
-_Id1 parser/obsolete/strs.h 138;" d
-_Id2 parser/obsolete/strs.h 143;" d
-_JCPLI_H modules/cpl/jcpli.h 30;" d
-_KILL_H modules/exec/kill.h 32;" d
-_LIBSMS_MODEM_H modules/sms/libsms_modem.h 16;" d
-_LIBSMS_SMS_H modules/sms/libsms_sms.h 30;" d
-_Location modules/cpl/jcpli.h /^typedef struct _Location$/;" s
-_MD5UTILS_H md5utils.h 31;" d
-_MF_FUNCS_H modules/maxfwd/mf_funcs.h 30;" d
-_MODULES_PA_LOCATION_H_ modules/pa/location.h 2;" d
-_MSFUNCS_H_ modules/msilo/msfuncs.h 29;" d
-_MSGBUILDER_H modules/tm/t_msgbuilder.h 35;" d
-_MSG_TRANSLATOR_H msg_translator.h 38;" d
-_MS_MSG_LIST_H_ modules/msilo/ms_msg_list.h 36;" d
-_MY_POPEN_H modules/ext/my_exec.h 33;" d
-_MY_POPEN_NO_INLINE modules/ext/my_exec.c 39;" d file:
-_M_CALLOC modules/jabber/mdefines.h 43;" d
-_M_FREE modules/jabber/mdefines.h 47;" d
-_M_MALLOC modules/jabber/mdefines.h 46;" d
-_M_PRINTF modules/jabber/mdefines.h 42;" d
-_M_REALLOC modules/jabber/mdefines.h 44;" d
-_M_SHM_FREE modules/jabber/mdefines.h 50;" d
-_M_SHM_MALLOC modules/jabber/mdefines.h 49;" d
-_NHLPR_FUNCS_H modules/nathelper/nhelpr_funcs.h 31;" d
-_PADDR modules/jabber/xjab_worker.c 85;" d file:
-_PARSE_CONTENT_H parser/parse_content.h 30;" d
-_PARSE_DISPOSITION_H_ parser/parse_disposition.h 33;" d
-_PARSE_FROM_H parser/parse_from.h 30;" d
-_PIKE_FIFO_ modules/pike/pike_fifo.h 39;" d
-_PIKE_FUNCS_H modules/pike/pike_funcs.h 31;" d
-_PIKE_TIMER_H modules/pike/timer.h 35;" d
-_PT_H pt.h 39;" d
-_QVALUE_H qvalue.h 35;" d
-_RedirectMessage modules/cpl/jcpli.h /^typedef struct _RedirectMessage$/;" s
-_RejectMessage modules/cpl/jcpli.h /^typedef struct _RejectMessage$/;" s
-_SCRIPT_CB_H_ script_cb.h 29;" d
-_SDLOOKUP_H_ modules/speeddial/sdlookup.h 34;" d
-_SER_AAA_AVPS_H_ modules/auth_db/aaa_avps.h 32;" d
-_SER_URS_AVP_H_ usr_avp.h 34;" d
-_SIP_MSG_H modules/tm/sip_msg.h 31;" d
-_SL_FUNCS_H modules/sl/sl_funcs.h 30;" d
-_SL_STATS_H modules/sl/sl_stats.h 33;" d
-_SMS_FUNCS_H modules/sms/sms_funcs.h 30;" d
-_SPEEDDIAL_H_ modules/speeddial/speeddial.h 34;" d
-_TAGS_H tags.h 45;" d
-_TIMER_H modules/tm/timer.h 36;" d
-_TM_BIND_H modules/tm/tm_load.h 36;" d
-_TM_CONFIG_H modules/tm/config.h 31;" d
-_TM_DEFS_H modules/tm/defs.h 35;" d
-_TM_T_FIFO_H_ modules/tm/t_fifo.h 36;" d
-_TM_UT_H modules/tm/ut.h 42;" d
-_TYPES_H_ types.h 31;" d
-_T_DLG_H modules/tm/t_dlg.h 31;" d
-_T_FUNCS_H modules/tm/t_funcs.h 40;" d
-_T_FWD_H modules/tm/t_fwd.h 36;" d
-_T_LOOKUP_H modules/tm/t_lookup.h 38;" d
-_T_REPLY_H modules/tm/t_reply.h 31;" d
-_T_STATS_H modules/tm/t_stats.h 32;" d
-_UAC_H modules/tm/uac.h 34;" d
-_UAC_UNIXSOCK_H modules/tm/uac_unixsock.h 29;" d
-_UL_CALLBACKS_H modules/usrloc/ul_callback.h 34;" d
-_UL_FIFO_H modules/usrloc/ul_fifo.h 33;" d
-_UL_UNIXSOCK_H modules/usrloc/ul_unixsock.h 30;" d
-_UNIXSOCK_H modules/domain/unixsock.h 31;" d
-_UNIXSOCK_H modules/pa/unixsock.h 32;" d
-_UNIXSOCK_H modules/permissions/unixsock.h 33;" d
-_UNIXSOCK_SERVER_H unixsock_server.h 31;" d
-_XHAB_JCONF_H_ modules/jabber/xjab_jconf.h 33;" d
-_XJAB_BASE_H_ modules/jabber/xjab_base.h 42;" d
-_XJAB_DMSG_H_ modules/jabber/xjab_dmsg.h 33;" d
-_XJAB_JCON_H_ modules/jabber/xjab_jcon.h 33;" d
-_XJAB_LOAD_H_ modules/jabber/xjab_load.h 30;" d
-_XJAB_PRESENCE_H_ modules/jabber/xjab_presence.h 32;" d
-_XJAB_UTIL_H_ modules/jabber/xjab_util.h 33;" d
-_XJAB_WORKER_H_ modules/jabber/xjab_worker.h 40;" d
-_XL_LIB_H_ modules/xlog/xl_lib.h 29;" d
-_XOPEN_SOURCE daemonize.c 40;" d file:
-_XOPEN_SOURCE modules/mysql/utils.c 36;" d file:
-_XOPEN_SOURCE modules/postgres/db_utils.h 44;" d
-_XOPEN_SOURCE_EXTENDED daemonize.c 43;" d file:
-_XOPEN_SOURCE_EXTENDED modules/mysql/utils.c 37;" d file:
-__EXTENSIONS__ daemonize.c 45;" d file:
-__FUNCTION__ mem/mem.h 73;" d
-__FUNCTION__ mem/shm_mem.h 121;" d
-__USE_XOPEN_EXTENDED daemonize.c 44;" d file:
-__age_ parser/keys.h 109;" d
-__buf lock_ops.h /^ struct seminfo *__buf; \/* buffer for IPC_INFO *\/$/;" m union:semun
-__buf test/locking/locking_test.c /^ struct seminfo *__buf; \/* buffer for IPC_INFO *\/$/;" m union:semun file:
-__id1_ parser/keys.h 126;" d
-__id1_ parser/keys.h 51;" d
-__id2_ parser/keys.h 125;" d
-__id2_ parser/keys.h 50;" d
-__lock_h modules/tm/lock.h 39;" d
-__resolve_h resolve.h 38;" d
-__tsend_h tsend.h 34;" d
-_ac_maxval modules/cpl-c/cpl_time.h /^typedef struct _ac_maxval$/;" s
-_ac_tm modules/cpl-c/cpl_time.h /^typedef struct _ac_tm$/;" s
-_acce_ parser/keys.h 44;" d
-_act1_ parser/keys.h 54;" d
-_act2_ parser/keys.h 53;" d
-_age1_ parser/keys.h 99;" d
-_age2_ parser/keys.h 98;" d
-_algo_ parser/digest/digest_keys.h 42;" d
-_allo_ parser/keys.h 45;" d
-_angu_ parser/keys.h 97;" d
-_ards_ parser/keys.h 66;" d
-_arty_ parser/keys.h 124;" d
-_atio_ parser/keys.h 48;" d
-_auth_ parser/keys.h 46;" d
-_avp_list_t modules/acc/diam_message.h /^typedef struct _avp_list_t {$/;" s
-_avp_list_t modules/auth_diameter/diameter_msg.h /^typedef struct _avp_list_t {$/;" s
-_cachedb modules/dbtext/dbt_lib.c /^static dbt_cache_p *_cachedb = NULL;$/;" v file:
-_cachesem modules/dbtext/dbt_lib.c /^static gen_lock_t *_cachesem = NULL;$/;" v file:
-_call_ parser/keys.h 49;" d
-_cate_ parser/keys.h 93;" d
-_cnon_ parser/digest/digest_keys.h 40;" d
-_cont_ parser/keys.h 52;" d
-_content_type modules/msilo/msfuncs.h /^typedef struct _content_type$/;" s
-_cseq_ parser/keys.h 59;" d
-_daemonize_h daemonize.h 35;" d
-_dbt_cache modules/dbtext/dbt_lib.h /^typedef struct _dbt_cache $/;" s
-_dbt_column modules/dbtext/dbt_lib.h /^typedef struct _dbt_column$/;" s
-_dbt_con modules/dbtext/dbt_res.h /^typedef struct _dbt_con$/;" s
-_dbt_database modules/dbtext/dbt_lib.h /^typedef struct _dbt_database$/;" s
-_dbt_result modules/dbtext/dbt_res.h /^typedef struct _dbt_result$/;" s
-_dbt_row modules/dbtext/dbt_lib.h /^typedef struct _dbt_row$/;" s
-_dbt_table modules/dbtext/dbt_lib.h /^typedef struct _dbt_table$/;" s
-_dc modules/pdt/domains.h /^typedef struct _dc {$/;" s
-_disp_ parser/keys.h 110;" d
-_dive_ parser/keys.h 119;" d
-_double_hash modules/pdt/domains.h /^typedef struct _double_hash {$/;" s
-_ds_dest modules/dispatcher/dispatch.c /^typedef struct _ds_dest$/;" s file:
-_ds_index modules/dispatcher/dispatch.c /^ds_setidx_p _ds_index = NULL;$/;" v
-_ds_list modules/dispatcher/dispatch.c /^ds_set_p _ds_list = NULL;$/;" v
-_ds_set modules/dispatcher/dispatch.c /^typedef struct _ds_set$/;" s file:
-_ds_setidx modules/dispatcher/dispatch.c /^typedef struct _ds_setidx$/;" s file:
-_ect1_ parser/keys.h 107;" d
-_ect2_ parser/keys.h 106;" d
-_ent__ parser/keys.h 55;" d
-_enti_ parser/keys.h 92;" d
-_entry modules/pdt/domains.h /^typedef struct _entry {$/;" s
-_even_ parser/keys.h 94;" d
-_expi_ parser/keys.h 60;" d
-_forw_ parser/keys.h 65;" d
-_from_ parser/keys.h 63;" d
-_h_entry modules/pdt/domains.h /^typedef struct _h_entry {$/;" s
-_iD1 parser/obsolete/strs.h 137;" d
-_iD2 parser/obsolete/strs.h 142;" d
-_id1 parser/obsolete/strs.h 136;" d
-_id2 parser/obsolete/strs.h 141;" d
-_ion1_ parser/keys.h 113;" d
-_ion1_ parser/keys.h 72;" d
-_ion2_ parser/keys.h 112;" d
-_ion2_ parser/keys.h 71;" d
-_ire1_ parser/keys.h 80;" d
-_ire2_ parser/keys.h 79;" d
-_ispo_ parser/keys.h 116;" d
-_izat_ parser/keys.h 70;" d
-_leng_ parser/keys.h 56;" d
-_lock modules/tm/lock.h /^static inline void _lock( ser_lock_t* s , char *file, char *function,$/;" f
-_lock_alloc_h lock_alloc.h 53;" d
-_lock_ops_h lock_ops.h 67;" d
-_locking_h locking.h 67;" d
-_max__ parser/keys.h 64;" d
-_mdefines_h_ modules/jabber/mdefines.h 40;" d
-_message_t modules/acc/diam_message.h /^typedef struct _message_t {$/;" s
-_message_t modules/auth_diameter/diameter_msg.h /^typedef struct _message_t {$/;" s
-_modfix_h mod_fix.h 8;" d
-_msg_list modules/msilo/ms_msg_list.h /^typedef struct _msg_list$/;" s
-_msg_list_el modules/msilo/ms_msg_list.h /^typedef struct _msg_list_el$/;" s
-_name_ parser/digest/digest_keys.h 35;" d
-_niza_ parser/keys.h 101;" d
-_nonc_ parser/digest/digest_keys.h 37;" d
-_onse_ parser/digest/digest_keys.h 39;" d
-_opaq_ parser/digest/digest_keys.h 41;" d
-_orga_ parser/keys.h 100;" d
-_oriz_ parser/keys.h 47;" d
-_orte_ parser/keys.h 83;" d
-_osit_ parser/keys.h 111;" d
-_oute_ parser/keys.h 77;" d
-_parse_ruri parser/parse_uri.c /^static inline int _parse_ruri(str *uri,$/;" f file:
-_pass_fd_h pass_fd.h 29;" d
-_ppor_ parser/keys.h 86;" d
-_prio_ parser/keys.h 103;" d
-_private_prog modules/ext/my_exec.c /^struct program _private_prog;$/;" v
-_prox_ parser/keys.h 67;" d
-_pt_d_ parser/keys.h 115;" d
-_pt_l_ parser/keys.h 96;" d
-_quir_ parser/keys.h 74;" d
-_rd_r_ parser/keys.h 76;" d
-_re_h re.h 37;" d
-_real_ parser/digest/digest_keys.h 36;" d
-_reco_ parser/keys.h 75;" d
-_remo_ parser/keys.h 122;" d
-_reply modules/tm/t_reply.c /^static int _reply( struct cell *trans, struct sip_msg* p_msg, $/;" f file:
-_reply_light modules/tm/t_reply.c /^static int _reply_light( struct cell *trans, char* buf, unsigned int len,$/;" f file:
-_requ_ parser/keys.h 78;" d
-_res1_ parser/keys.h 62;" d
-_res2_ parser/keys.h 61;" d
-_resp_ parser/digest/digest_keys.h 38;" d
-_rith_ parser/digest/digest_keys.h 43;" d
-_rity_ parser/keys.h 104;" d
-_rout_ parser/keys.h 81;" d
-_rsio_ parser/keys.h 120;" d
-_set_fr_retr modules/tm/t_funcs.h /^static void inline _set_fr_retr( struct retr_buf *rb, int retr )$/;" f
-_shm_malloc mem/shm_mem.h /^inline static void* _shm_malloc(unsigned int size, $/;" f
-_shm_realloc mem/shm_mem.h /^inline static void* _shm_realloc(void *ptr, unsigned int size, $/;" f
-_shm_resize mem/shm_mem.c /^void* _shm_resize( void* p, unsigned int s, const char* file, const char* func,$/;" f
-_siti_ parser/keys.h 117;" d
-_statusline stats.h 69;" d
-_str str.h /^struct _str{$/;" s
-_subj_ parser/keys.h 105;" d
-_supp_ parser/keys.h 82;" d
-_tbl_cache modules/dbtext/dbt_lib.h /^typedef struct _tbl_cache$/;" s
-_tcp_conn_h tcp_conn.h 38;" d
-_tcpconn_find tcp_main.c /^struct tcp_connection* _tcpconn_find(int id, struct ip_addr* ip, int port)$/;" f
-_tcpconn_rm tcp_main.c /^void _tcpconn_rm(struct tcp_connection* c)$/;" f
-_te_p_ parser/keys.h 123;" d
-_ted1_ parser/keys.h 88;" d
-_ted2_ parser/keys.h 87;" d
-_test modules/pike/pike_funcs.c 71;" d file:
-_test_insert_to_reply modules/tm/test.c /^int _test_insert_to_reply( struct sip_msg *msg, char *str )$/;" f
-_th12_ parser/keys.h 57;" d
-_thor_ parser/keys.h 69;" d
-_tion_ parser/keys.h 102;" d
-_tmrec modules/cpl-c/cpl_time.h /^typedef struct _tmrec$/;" s
-_to12_ parser/keys.h 84;" d
-_tr_byxxx modules/cpl-c/cpl_time.h /^typedef struct _tr_byxxx$/;" s
-_tr_res modules/cpl-c/cpl_time.h /^typedef struct _tr_res$/;" s
-_type_ parser/keys.h 58;" d
-_unlock modules/tm/lock.h /^static inline void _unlock( ser_lock_t* s, char *file, char *function,$/;" f
-_unsu_ parser/keys.h 85;" d
-_update_request stats.h 44;" d
-_update_response stats.h 73;" d
-_user_ parser/digest/digest_keys.h 34;" d
-_user_ parser/keys.h 108;" d
-_via1_ parser/keys.h 90;" d
-_via2_ parser/keys.h 89;" d
-_w_t_forward_nonack modules/tm/tm.c /^inline static int _w_t_forward_nonack(struct sip_msg* msg, char* proxy,$/;" f file:
-_w_t_relay_to modules/tm/tm.c /^inline static int _w_t_relay_to( struct sip_msg *p_msg , $/;" f file:
-_www__ parser/keys.h 91;" d
-_xj_jalias modules/jabber/xjab_worker.h /^typedef struct _xj_jalias$/;" s
-_xj_jcon modules/jabber/xjab_jcon.h /^typedef struct _xj_jcon$/;" s
-_xj_jcon_pool modules/jabber/xjab_util.h /^typedef struct _xj_jcon_pool$/;" s
-_xj_jconf modules/jabber/xjab_jconf.h /^typedef struct _xj_jconf$/;" s
-_xj_jkey modules/jabber/xjab_base.h /^typedef struct _xj_jkey$/;" s
-_xj_jmsg_queue modules/jabber/xjab_util.h /^typedef struct _xj_jmsg_queue$/;" s
-_xj_pid modules/jabber/xjab_worker.c /^int _xj_pid = 0;$/;" v
-_xj_pres_cell modules/jabber/xjab_presence.h /^typedef struct _xj_pres_cell$/;" s
-_xj_pres_list modules/jabber/xjab_presence.h /^typedef struct _xj_pres_list$/;" s
-_xj_sipmsg modules/jabber/xjab_base.h /^typedef struct _xj_sipmsg$/;" s
-_xj_wlist modules/jabber/xjab_worker.h /^typedef struct _xj_wlist$/;" s
-_xj_worker modules/jabber/xjab_worker.h /^typedef struct _xj_worker$/;" s
-_xl_elog modules/xlog/xl_lib.h /^typedef struct _xl_elog$/;" s
-_xode modules/jabber/xode.h /^} _xode, *xode;$/;" t
-_xode_appendsibling modules/jabber/xode.c /^static xode _xode_appendsibling(xode lastsibling, const char* name, unsigned int type)$/;" f file:
-_xode_expat_charData modules/jabber/xode_from.c /^static void _xode_expat_charData(void* userdata, const char* s, int len)$/;" f file:
-_xode_expat_endElement modules/jabber/xode_from.c /^static void _xode_expat_endElement(void* userdata, const char* name)$/;" f file:
-_xode_expat_startElement modules/jabber/xode_from.c /^static void _xode_expat_startElement(void* userdata, const char* name, const char** atts)$/;" f file:
-_xode_hidesibling modules/jabber/xode.c /^static void _xode_hidesibling(xode child)$/;" f file:
-_xode_insert modules/jabber/xode.c /^static xode _xode_insert(xode parent, const char* name, unsigned int type)$/;" f file:
-_xode_merge modules/jabber/xode.c /^static char* _xode_merge(xode_pool p, char* dest, unsigned int destsize, const char* src, unsigned int srcsize)$/;" f file:
-_xode_new modules/jabber/xode.c /^static xode _xode_new(xode_pool p, const char* name, unsigned int type)$/;" f file:
-_xode_pool modules/jabber/xode.h /^} _xode_pool, *xode_pool;$/;" t
-_xode_pool__free modules/jabber/xpool.c 46;" d file:
-_xode_pool__malloc modules/jabber/xpool.c 45;" d file:
-_xode_pool_cleanup_append modules/jabber/xpool.c /^void _xode_pool_cleanup_append(xode_pool p, struct xode_pool_free *pf)$/;" f
-_xode_pool_free modules/jabber/xpool.c /^struct xode_pool_free *_xode_pool_free(xode_pool p, xode_pool_cleaner f, void *arg)$/;" f
-_xode_pool_heap modules/jabber/xpool.c /^struct xode_pool_heap *_xode_pool_heap(xode_pool p, int size)$/;" f
-_xode_pool_heapfree modules/jabber/xpool.c /^void _xode_pool_heapfree(void *arg)$/;" f
-_xode_pool_new modules/jabber/xpool.c /^xode_pool _xode_pool_new(void)$/;" f
-_xode_pool_newheap modules/jabber/xpool.c /^xode_pool _xode_pool_newheap(int bytes)$/;" f
-_xode_put_expatattribs modules/jabber/xode_from.c /^static void _xode_put_expatattribs(xode current, const char **atts)$/;" f file:
-_xode_put_expatattribs modules/jabber/xstream.c /^static void _xode_put_expatattribs(xode owner, const char** atts)$/;" f file:
-_xode_search modules/jabber/xode.c /^static xode _xode_search(xode firstsibling, const char* name, unsigned int type)$/;" f file:
-_xode_strcmp modules/jabber/xode.c /^static int _xode_strcmp(const char *a, const char *b)$/;" f file:
-_xode_stream modules/jabber/xode.h /^} *xode_stream, _xode_stream;$/;" t
-_xode_stream_charData modules/jabber/xstream.c /^static void _xode_stream_charData(xode_stream xs, const char *str, int len)$/;" f file:
-_xode_stream_cleanup modules/jabber/xstream.c /^static void _xode_stream_cleanup(void *arg)$/;" f file:
-_xode_stream_endElement modules/jabber/xstream.c /^static void _xode_stream_endElement(xode_stream xs, const char* name)$/;" f file:
-_xode_stream_startElement modules/jabber/xstream.c /^static void _xode_stream_startElement(xode_stream xs, const char* name, const char** atts)$/;" f file:
-_xode_tag2str modules/jabber/xode.c /^static void _xode_tag2str(xode_spool s, xode node, int flag)$/;" f file:
-_xode_to_prettystr modules/jabber/xode.c /^_xode_to_prettystr( xode_spool s, xode x, int deep )$/;" f
-_xode_tospool modules/jabber/xode.c /^static xode_spool _xode_tospool(xode node)$/;" f file:
-_y_au_ parser/keys.h 68;" d
-_y_re_ parser/keys.h 73;" d
-a modules/avpops/avpops_impl.h /^ struct fis_param a; \/* attribute *\/$/;" m struct:db_param
-a modules/jabber/xjab_worker.h /^ str *a; \/\/ aliases$/;" m struct:_xj_jalias
-aCT1 parser/obsolete/strs.h 166;" d
-aCT2 parser/obsolete/strs.h 175;" d
-aCt1 parser/obsolete/strs.h 165;" d
-aCt2 parser/obsolete/strs.h 174;" d
-aRDS parser/obsolete/strs.h 214;" d
-aRDs parser/obsolete/strs.h 213;" d
-aRdS parser/obsolete/strs.h 212;" d
-aRds parser/obsolete/strs.h 211;" d
-a_rdata resolve.h /^struct a_rdata {$/;" s
-aaa_avps_init modules/auth_db/aaa_avps.h /^aaa_avps_init(str *avps_column_int, str *avps_column_str,$/;" f
-aaaa_rdata resolve.h /^struct aaaa_rdata {$/;" s
-acT1 parser/obsolete/strs.h 164;" d
-acT2 parser/obsolete/strs.h 173;" d
-ac_get_maxval modules/cpl-c/cpl_time.c /^ac_maxval_p ac_get_maxval(ac_tm_p _atp)$/;" f
-ac_get_mweek modules/cpl-c/cpl_time.c /^int ac_get_mweek(struct tm* _tm)$/;" f
-ac_get_wday_mr modules/cpl-c/cpl_time.c 110;" d file:
-ac_get_wday_yr modules/cpl-c/cpl_time.c 109;" d file:
-ac_get_wkst modules/cpl-c/cpl_time.c /^int ac_get_wkst()$/;" f
-ac_get_yweek modules/cpl-c/cpl_time.c /^int ac_get_yweek(struct tm* _tm)$/;" f
-ac_maxval_p modules/cpl-c/cpl_time.h /^} ac_maxval_t, *ac_maxval_p;$/;" t
-ac_maxval_t modules/cpl-c/cpl_time.h /^} ac_maxval_t, *ac_maxval_p;$/;" t
-ac_print modules/cpl-c/cpl_time.c /^int ac_print(ac_tm_p _atp)$/;" f
-ac_tm_fill modules/cpl-c/cpl_time.c /^int ac_tm_fill(ac_tm_p _atp, struct tm* _tm)$/;" f
-ac_tm_free modules/cpl-c/cpl_time.c /^int ac_tm_free(ac_tm_p _atp)$/;" f
-ac_tm_new modules/cpl-c/cpl_time.c /^ac_tm_p ac_tm_new()$/;" f
-ac_tm_p modules/cpl-c/cpl_time.h /^} ac_tm_t, *ac_tm_p;$/;" t
-ac_tm_reset modules/cpl-c/cpl_time.c /^int ac_tm_reset(ac_tm_p _atp)$/;" f
-ac_tm_set modules/cpl-c/cpl_time.c /^int ac_tm_set(ac_tm_p _atp, struct tm* _tm)$/;" f
-ac_tm_set_time modules/cpl-c/cpl_time.c /^int ac_tm_set_time(ac_tm_p _atp, time_t _t)$/;" f
-ac_tm_t modules/cpl-c/cpl_time.h /^} ac_tm_t, *ac_tm_p;$/;" t
-acc modules/pa/subscribe.c /^static doctype_t acc;$/;" v file:
-acc_db_ack modules/acc/acc.c /^void acc_db_ack( struct cell* t , struct sip_msg *ack )$/;" f
-acc_db_bind modules/acc/acc.c /^int acc_db_bind(char* db_url)$/;" f
-acc_db_close modules/acc/acc.c /^void acc_db_close()$/;" f
-acc_db_init modules/acc/acc.c /^int acc_db_init()$/;" f
-acc_db_missed modules/acc/acc.c /^void acc_db_missed( struct cell* t, struct sip_msg *reply,$/;" f
-acc_db_reply modules/acc/acc.c /^void acc_db_reply( struct cell* t , struct sip_msg *reply,$/;" f
-acc_db_request modules/acc/acc.c /^int acc_db_request( struct sip_msg *rq, struct hdr_field *to, $/;" f
-acc_db_url modules/acc/acc.c /^static char* acc_db_url=0;$/;" v file:
-acc_dbf modules/acc/acc.c /^static db_func_t acc_dbf;$/;" v file:
-acc_diam_ack modules/acc/acc.c /^void acc_diam_ack( struct cell* t, struct sip_msg *ack )$/;" f
-acc_diam_missed modules/acc/acc.c /^void acc_diam_missed( struct cell* t, struct sip_msg *reply, unsigned int code )$/;" f
-acc_diam_reply modules/acc/acc.c /^void acc_diam_reply( struct cell* t , struct sip_msg *reply, unsigned int code )$/;" f
-acc_diam_request modules/acc/acc.c /^int acc_diam_request( struct sip_msg *rq, struct hdr_field *to, str *phrase )$/;" f
-acc_domain_col modules/acc/acc_mod.c /^char* acc_domain_col = "domain";$/;" v
-acc_entries modules/tm/h_table.h /^ unsigned long acc_entries;$/;" m struct:entry
-acc_from_uri modules/acc/acc_mod.c /^char* acc_from_uri = "from_uri";$/;" v
-acc_fromtag_col modules/acc/acc_mod.c /^char* acc_fromtag_col = "fromtag";$/;" v
-acc_i_uri_col modules/acc/acc_mod.c /^char* acc_i_uri_col = "i_uri";$/;" v
-acc_log_ack modules/acc/acc.c /^void acc_log_ack( struct cell* t , struct sip_msg *ack )$/;" f
-acc_log_missed modules/acc/acc.c /^void acc_log_missed( struct cell* t, struct sip_msg *reply,$/;" f
-acc_log_reply modules/acc/acc.c /^void acc_log_reply( struct cell* t , struct sip_msg *reply,$/;" f
-acc_log_request modules/acc/acc.c /^int acc_log_request( struct sip_msg *rq, struct hdr_field *to, $/;" f
-acc_o_uri_col modules/acc/acc_mod.c /^char* acc_o_uri_col = "o_uri";$/;" v
-acc_onack modules/acc/acc_mod.c /^static inline void acc_onack( struct cell* t , struct sip_msg *ack,$/;" f file:
-acc_onreply modules/acc/acc_mod.c /^static inline void acc_onreply( struct cell* t, struct sip_msg *reply,$/;" f file:
-acc_onreply_in modules/acc/acc_mod.c /^static inline void acc_onreply_in(struct cell *t, struct sip_msg *reply,$/;" f file:
-acc_onreq modules/acc/acc_mod.c /^static void acc_onreq( struct cell* t, int type, struct tmcb_params *ps )$/;" f file:
-acc_preparse_req modules/acc/acc_mod.c /^static inline void acc_preparse_req(struct sip_msg *rq)$/;" f file:
-acc_rad_ack modules/acc/acc.c /^void acc_rad_ack( struct cell* t , struct sip_msg *ack )$/;" f
-acc_rad_missed modules/acc/acc.c /^void acc_rad_missed( struct cell* t, struct sip_msg *reply,$/;" f
-acc_rad_reply modules/acc/acc.c /^void acc_rad_reply( struct cell* t , struct sip_msg *reply,$/;" f
-acc_rad_request modules/acc/acc.c /^int acc_rad_request( struct sip_msg *rq, struct hdr_field *to, $/;" f
-acc_req_time stats.h /^ acc_req_time,$/;" m struct:stats_s
-acc_res_time stats.h /^ acc_res_time,$/;" m struct:stats_s
-acc_sip_callid_col modules/acc/acc_mod.c /^char* acc_sip_callid_col = "sip_callid";$/;" v
-acc_sip_from_col modules/acc/acc_mod.c /^char* acc_sip_from_col = "sip_from";$/;" v
-acc_sip_method_col modules/acc/acc_mod.c /^char* acc_sip_method_col = "sip_method";$/;" v
-acc_sip_status_col modules/acc/acc_mod.c /^char* acc_sip_status_col = "sip_status";$/;" v
-acc_sip_to_col modules/acc/acc_mod.c /^char* acc_sip_to_col = "sip_to";$/;" v
-acc_time_col modules/acc/acc_mod.c /^char* acc_time_col = "time";$/;" v
-acc_to_uri modules/acc/acc_mod.c /^char* acc_to_uri = "to_uri";$/;" v
-acc_totag_col modules/acc/acc_mod.c /^char* acc_totag_col = "totag";$/;" v
-acc_user_col modules/acc/acc_mod.c /^char* acc_user_col = "username";$/;" v
-acce_CASE parser/case_acce.h 105;" d
-accept modules/pa/watcher.h /^ doctype_t accept; \/* Type of document accepted by the watcher *\/$/;" m struct:watcher
-accept parser/msg_parser.h /^ struct hdr_field* accept;$/;" m struct:sip_msg
-accept_disposition parser/msg_parser.h /^ struct hdr_field* accept_disposition;$/;" m struct:sip_msg
-accept_language modules/cpl-c/cpl_run.h /^ str *accept_language;$/;" m struct:cpl_interpreter
-accept_language parser/msg_parser.h /^ struct hdr_field* accept_language;$/;" m struct:sip_msg
-accepts_to_event_package modules/pa/subscribe.c /^static int accepts_to_event_package[N_DOCTYPES] = {$/;" v file:
-ack_matching modules/tm/t_lookup.c /^static inline int ack_matching(struct cell *p_cell, struct sip_msg *p_msg) $/;" f file:
-acked modules/tm/h_table.h /^ short acked;$/;" m struct:totag_elem
-acl modules/postgres/serpgctl /^acl() {$/;" f
-acl scripts/sc /^acl() {$/;" f
-acl scripts/sc_unixsock /^acl() {$/;" f
-acpt_c modules/options/mod_options.c /^char *acpt_c, *acpt_enc_c, *acpt_lan_c, *supt_c;$/;" v
-acpt_enc_c modules/options/mod_options.c /^char *acpt_c, *acpt_enc_c, *acpt_lan_c, *supt_c;$/;" v
-acpt_enc_s modules/options/mod_options.c /^str acpt_s, acpt_enc_s, acpt_lan_s, supt_s;$/;" v
-acpt_lan_c modules/options/mod_options.c /^char *acpt_c, *acpt_enc_c, *acpt_lan_c, *supt_c;$/;" v
-acpt_lan_s modules/options/mod_options.c /^str acpt_s, acpt_enc_s, acpt_lan_s, supt_s;$/;" v
-acpt_s modules/options/mod_options.c /^str acpt_s, acpt_enc_s, acpt_lan_s, supt_s;$/;" v
-act1 parser/obsolete/strs.h 163;" d
-act2 parser/obsolete/strs.h 172;" d
-act_contact modules/registrar/sip_msg.c /^static struct hdr_field* act_contact;$/;" v file:
-act_time modules/pa/ptime.c /^time_t act_time;$/;" v
-act_time modules/registrar/regtime.c /^time_t act_time;$/;" v
-act_time modules/usrloc/utime.c /^time_t act_time;$/;" v
-action cfg.tab.c /^ struct action* action;$/;" m union:YYSTYPE file:
-action cfg.tab.h /^ struct action* action;$/;" m union:YYSTYPE
-action cfg.y /^action: cmd SEMICOLON {$$=$1;}$/;" l
-action modules/tm/t_fifo.c /^ str action;$/;" m struct:tw_info file:
-action route_struct.h /^struct action{$/;" s
-action_h action.h 31;" d
-actions cfg.y /^actions: actions action {$$=append_action($1, $2); }$/;" l
-activ_type modules/tm/h_table.h /^ int activ_type;$/;" m struct:retr_buf
-ad_free modules/acc/diam_message.h 34;" d
-ad_free modules/auth_diameter/diameter_msg.h 34;" d
-ad_malloc modules/acc/diam_message.h 33;" d
-ad_malloc modules/auth_diameter/diameter_msg.h 33;" d
-add234 modules/jabber/tree234.c /^void *add234(tree234 *t, void *e) {$/;" f
-add234_internal modules/jabber/tree234.c /^static void *add234_internal(tree234 *t, void *e, int index) {$/;" f file:
-add2buf modules/tm/t_fifo.c /^static inline char* add2buf(char *buf, char *end, char *title, int title_len,$/;" f file:
-add_actions route.c /^int add_actions(struct action* a, struct action** head)$/;" f
-add_alias name_alias.h /^static inline int add_alias(char* name, int len, unsigned short port, $/;" f
-add_avp usr_avp.c /^int add_avp(unsigned short flags, int_str name, int_str val)$/;" f
-add_avp_galias usr_avp.c /^int add_avp_galias(str *alias, int type, int_str avp_name)$/;" f
-add_avp_galias_str usr_avp.c /^int add_avp_galias_str(char *alias_definition)$/;" f
-add_blind_uac modules/tm/t_fwd.c /^int add_blind_uac( \/*struct cell *t*\/ )$/;" f
-add_body modules/tm/t_fifo.c /^ int add_body;$/;" m struct:tw_append file:
-add_client modules/extcmd/clients.h /^inline int add_client( int fd )$/;" f
-add_cont_type_hf modules/pa/notify.c /^static inline int add_cont_type_hf(str* _h, int _l, doctype_t _d)$/;" f file:
-add_contact modules/usrloc/ul_fifo.c /^static inline int add_contact(udomain_t* _d, str* _u, str* _c, time_t _e, qvalue_t _q, int _f)$/;" f file:
-add_contact modules/usrloc/ul_unixsock.c /^static inline int add_contact(udomain_t* _d, str* _u, str* _c, time_t _e, qvalue_t _q, int _f)$/;" f file:
-add_contacts_to_loc_set modules/cpl-c/cpl_proxy.h /^static inline int add_contacts_to_loc_set(struct sip_msg* msg,$/;" f
-add_diversion modules/diversion/diversion.c /^int add_diversion(struct sip_msg* msg, char* r, char* s)$/;" f
-add_diversion_helper modules/diversion/diversion.c /^static inline int add_diversion_helper(struct sip_msg* msg, str* s)$/;" f file:
-add_event_hf modules/pa/notify.c /^static inline int add_event_hf(str* _h, int _l, int accept)$/;" f file:
-add_interfaces socket_info.c /^int add_interfaces(char* if_name, int family, unsigned short port,$/;" f
-add_listen_iface socket_info.c /^int add_listen_iface(char* name, unsigned short port, unsigned short proto,$/;" f
-add_location modules/cpl-c/loc_set.h /^static inline int add_location(struct location **loc_set, str *uri,$/;" f
-add_lump_rpl data_lump_rpl.c /^struct lump_rpl* add_lump_rpl(struct sip_msg *msg, char *s, int len, int flags)$/;" f
-add_maxfwd_header modules/maxfwd/mf_funcs.c /^int add_maxfwd_header( struct sip_msg* msg , unsigned int val )$/;" f
-add_param parser/parse_to.c 56;" d file:
-add_presence_tuple modules/pa/presentity.c /^void add_presence_tuple(presentity_t *_p, presence_tuple_t *_t)$/;" f
-add_presentity modules/pa/pdomain.c /^void add_presentity(pdomain_t* _d, struct presentity* _p)$/;" f
-add_proxy proxy.c /^struct proxy_l* add_proxy(str* name, unsigned short port, int proto)$/;" f
-add_pstr modules/pa/location.c 87;" d file:
-add_pstr modules/pa/watcher.c 599;" d file:
-add_rcv_param_f modules/nathelper/nathelper.c /^add_rcv_param_f(struct sip_msg* msg, char* str1, char* str2)$/;" f file:
-add_retry_after modules/registrar/reply.c /^static int add_retry_after(struct sip_msg* _m)$/;" f file:
-add_rm parser/msg_parser.h /^ struct lump* add_rm; \/* used for all the forwarded requests\/replies *\/$/;" m struct:sip_msg
-add_sl_stats modules/sl/sl_stats.c /^static void add_sl_stats( struct sl_stats *t, struct sl_stats *i)$/;" f file:
-add_sms_into_report_queue modules/sms/sms_report.c /^void add_sms_into_report_queue(int id, struct sms_msg *sms, char *p, int l)$/;" f
-add_str modules/pa/location.c 86;" d file:
-add_str modules/pa/watcher.c 598;" d file:
-add_string modules/pa/location.c 85;" d file:
-add_string modules/pa/watcher.c 597;" d file:
-add_subs_state_hf modules/pa/notify.c /^static inline int add_subs_state_hf(str* _h, int _l, subs_state_t _s, ss_reason_t _r, time_t _e)$/;" f file:
-add_timer_unsafe modules/tm/timer.c /^static void add_timer_unsafe( struct timer *timer_list, struct timer_link *tl,$/;" f file:
-add_to_branch_len parser/msg_parser.h /^ int add_to_branch_len;$/;" m struct:sip_msg
-add_to_branch_s parser/msg_parser.h /^ char add_to_branch_s[MAX_BRANCH_PARAM_LEN];$/;" m struct:sip_msg
-add_to_double_hash modules/pdt/domains.c /^int add_to_double_hash(double_hash_t* hash, dc_t* cell)$/;" f
-add_to_hash modules/pdt/domains.c /^int add_to_hash(h_entry_t* hash, unsigned int hash_size, dc_t* cell, int type)$/;" f
-add_uac modules/tm/t_fwd.c /^int add_uac( struct cell *t, struct sip_msg *request, str *uri, str* next_hop,$/;" f
-add_uri_param modules/enum/enum.c /^int add_uri_param(str *uri, str *param, str *new_uri)$/;" f
-add_uri_param modules/uri/checks.c /^int add_uri_param(struct sip_msg* _msg, char* _param, char* _s2)$/;" f
-add_username modules/rr/rr_mod.c /^int add_username = 0; \/* Do not add username by default *\/$/;" v
-add_via test/shoot2.c /^add_via(char *mes)$/;" f
-add_watcher modules/pa/presentity.c /^int add_watcher(presentity_t* _p, str* _uri, time_t _e, int event_package, doctype_t _a, dlg_t* _dlg, $/;" f
-add_watcher modules/usrloc/notify.c /^int add_watcher(struct urecord* _r, notcb_t _c, void* _d)$/;" f
-add_winfo_watcher modules/pa/presentity.c /^int add_winfo_watcher(presentity_t* _p, str* _uri, time_t _e, int event_package, doctype_t _a, dlg_t* _dlg, $/;" f
-addchar lex.yy.c /^static char* addchar(struct str_buf* dst, char c)$/;" f file:
-addpos234 modules/jabber/tree234.c /^void *addpos234(tree234 *t, void *e, int index) {$/;" f
-addpostest modules/jabber/tree234.c /^void addpostest(void *elem, int i) {$/;" f
-addr ip_addr.h /^ unsigned char addr[16];$/;" m union:ip_addr::<anonymous>
-addr modules/cpl-c/loc_set.h /^ }addr;$/;" m struct:location
-addr16 ip_addr.h /^ unsigned short addr16[8];$/;" m union:ip_addr::<anonymous>
-addr2re scripts/serconf.sh /^function addr2re()$/;" f
-addr32 ip_addr.h /^ unsigned int addr32[4];$/;" m union:ip_addr::<anonymous>
-addr_idx proxy.h /^ int addr_idx; \/* crt. addr. idx. *\/$/;" m struct:proxy_l
-address ip_addr.h /^ struct ip_addr address; \/* ip address *\/$/;" m struct:socket_info
-address modules/cpl-c/loc_set.h /^ struct address {$/;" s struct:location
-address modules/mediaproxy/mediaproxy.c /^ uint32_t address;$/;" m file:
-address_str ip_addr.h /^ str address_str; \/* ip address converted to string -- optimization*\/$/;" m struct:socket_info
-addrl ip_addr.h /^ unsigned long addrl[16\/sizeof(long)]; \/* long format*\/$/;" m union:ip_addr::<anonymous>
-addstr lex.yy.c /^static char* addstr(struct str_buf* dst_b, char* src, int len)$/;" f file:
-addtest modules/jabber/tree234.c /^void addtest(void *elem) {$/;" f
-adjust_clen msg_translator.c /^static inline int adjust_clen(struct sip_msg* msg, int body_delta, int proto)$/;" f file:
-admin modules/pdt/doc/admin.sql /^CREATE TABLE admin($/;" t
-advance modules/nathelper/nhelpr_funcs.c 55;" d file:
-af ip_addr.h /^ unsigned int af; \/* address family: AF_INET6 or AF_INET *\/$/;" m struct:ip_addr
-after lump_struct.h /^ struct lump* after; \/* list of headers to be inserted immediately after$/;" m struct:lump
-after_loose modules/rr/loose.c /^static inline int after_loose(struct sip_msg* _m, int preloaded)$/;" f file:
-after_strict modules/rr/loose.c /^static inline int after_strict(struct sip_msg* _m)$/;" f file:
-age_CASE parser/case_acce.h 34;" d
-aim modules/jabber/doc/xjab.sql /^CREATE TABLE aim($/;" t
-aim_id modules/jabber/doc/xjab.sql /^ aim_id VARCHAR(128) NOT NULL,$/;" F
-alg parser/digest/digest_parser.h /^ struct algorithm alg; \/* Type of algorithm used *\/$/;" m struct:dig_cred
-alg parser/digest/digest_parser.h /^typedef enum alg {$/;" g
-alg_parsed parser/digest/digest_parser.h /^ alg_t alg_parsed; \/* Parsed value *\/$/;" m struct:algorithm
-alg_str parser/digest/digest_parser.h /^ str alg_str; \/* The original string representation *\/$/;" m struct:algorithm
-alg_t parser/digest/digest_parser.h /^} alg_t;$/;" t
-algo_CASE parser/digest/param_parser.c 172;" d file:
-algorithm parser/digest/digest_parser.h /^struct algorithm {$/;" s
-alias name_alias.h /^ str alias;$/;" m struct:host_alias
-alias parser/parse_via.h /^ struct via_param* alias; \/* alias see draft-ietf-sip-connect-reuse-00 *\/$/;" m struct:via_body
-alias usr_avp.c /^ str alias;$/;" m struct:avp_galias file:
-aliases main.c /^struct host_alias* aliases=0; \/* name aliases list *\/$/;" v
-aliases modules/jabber/xjab_worker.h /^ xj_jalias aliases; \/\/ added aliases$/;" m struct:_xj_wlist
-aliases tcp_conn.h /^ int aliases; \/* aliases number, at least 1 *\/$/;" m struct:tcp_connection
-align modules/postgres/aug_alloc.c /^ MemAlign align[1];$/;" m union:MemHead file:
-allo_CASE parser/case_allo.h 34;" d
-alloc_ops modules/postgres/aug_alloc.h /^ unsigned long alloc_ops; \/* Total allocs since epoch *\/$/;" m
-allow modules/permissions/permissions.c /^static rule_file_t allow[MAX_RULE_FILES]; \/* Parsed allow files *\/$/;" v file:
-allow parser/msg_parser.h /^ struct hdr_field* allow;$/;" m struct:sip_msg
-allow_register_1 modules/permissions/permissions.c /^int allow_register_1(struct sip_msg* msg, char* basename, char* s)$/;" f
-allow_register_2 modules/permissions/permissions.c /^int allow_register_2(struct sip_msg* msg, char* allow_file, char* deny_file)$/;" f
-allow_routing_0 modules/permissions/permissions.c /^int allow_routing_0(struct sip_msg* msg, char* str1, char* str2)$/;" f
-allow_routing_1 modules/permissions/permissions.c /^int allow_routing_1(struct sip_msg* msg, char* basename, char* s)$/;" f
-allow_routing_2 modules/permissions/permissions.c /^int allow_routing_2(struct sip_msg* msg, char* allow_file, char* deny_file)$/;" f
-allow_suffix modules/permissions/permissions.c /^static char* allow_suffix = ".allow";$/;" v file:
-allow_trusted modules/permissions/trusted.c /^int allow_trusted(struct sip_msg* _msg, char* str1, char* str2) $/;" f
-allowed modules/jabber/xjab_jcon.h /^ int allowed; \/\/ allowed IM networks$/;" m struct:_xj_jcon
-alter_mediaip modules/nathelper/nathelper.c /^alter_mediaip(struct sip_msg *msg, str *body, str *oldip, int oldpf,$/;" f file:
-alter_mediaport modules/nathelper/nathelper.c /^alter_mediaport(struct sip_msg *msg, str *body, str *oldport, str *newport,$/;" f file:
-anchor_lump data_lump.c /^struct lump* anchor_lump(struct sip_msg* msg, int offset, int len, int type)$/;" f
-anchor_struct modules/extcmd/extcmd_funcs.c /^typedef struct anchor_struct$/;" s file:
-anchor_t modules/extcmd/extcmd_funcs.c /^} anchor_t;$/;" t file:
-angu_CASE parser/case_acce.h 48;" d
-aor modules/usrloc/ucontact.h /^ str* aor; \/* Pointer to the address of record string in record structure*\/$/;" m struct:ucontact
-aor modules/usrloc/urecord.h /^ str aor; \/* Address of record *\/$/;" m struct:urecord
-ap_cvt modules/jabber/xsnprintf.c /^ap_cvt(double arg, int ndigits, int *decpt, int *sign, int eflag)$/;" f file:
-ap_ecvt modules/jabber/xsnprintf.c /^ap_ecvt(double arg, int ndigits, int *decpt, int *sign)$/;" f file:
-ap_ecvt modules/jabber/xsnprintf.c 73;" d file:
-ap_fcvt modules/jabber/xsnprintf.c /^ap_fcvt(double arg, int ndigits, int *decpt, int *sign)$/;" f file:
-ap_fcvt modules/jabber/xsnprintf.c 74;" d file:
-ap_gcvt modules/jabber/xsnprintf.c /^ap_gcvt(double number, int ndigit, char *buf)$/;" f file:
-ap_gcvt modules/jabber/xsnprintf.c 75;" d file:
-ap_snprintf modules/jabber/xsnprintf.c /^int ap_snprintf(char *buf, size_t len, const char *format,...)$/;" f
-ap_vsnprintf modules/jabber/xsnprintf.c /^int ap_vsnprintf(char *buf, size_t len, const char *format, va_list ap)$/;" f
-append modules/tm/t_fifo.c /^ struct tw_append *append;$/;" m struct:tw_info file:
-append2buf modules/tm/t_fifo.c /^static inline char* append2buf( char *buf, int len, struct sip_msg *req, $/;" f file:
-append_0 modules/avpops/avpops_impl.c /^inline static int append_0(str *in, str *out)$/;" f file:
-append_action route_struct.c /^struct action* append_action(struct action* a, struct action* b)$/;" f
-append_branch dset.c /^int append_branch(struct sip_msg* msg, char* uri, int uri_len, char* dst_uri, int dst_uri_len, qvalue_t q)$/;" f
-append_branches modules/registrar/reg_mod.c /^int append_branches = 1; \/* If set to 1, lookup will put all contacts found in msg structure *\/$/;" v
-append_chr modules/tm/t_fifo.c 108;" d file:
-append_double_str_attr modules/cpl-c/cpl_parser.c 105;" d file:
-append_fixed_vars modules/exec/exec_hf.c /^static int append_fixed_vars(struct sip_msg *msg, struct hf_wrapper **list)$/;" f file:
-append_fromtag modules/rr/rr_mod.c /^int append_fromtag = 1;$/;" v
-append_hf modules/textops/textops.c /^static int append_hf(struct sip_msg *msg, char *str1, char *str2 )$/;" f file:
-append_hf_helper modules/textops/textops.c /^static int append_hf_helper(struct sip_msg* msg, str *str1, str *str2)$/;" f file:
-append_log modules/cpl-c/cpl_log.c /^void append_log( int nr, ...)$/;" f
-append_mem_block modules/tm/t_msgbuilder.c 66;" d file:
-append_mem_block modules/tm/t_msgbuilder.h 63;" d
-append_new_lump data_lump.c /^struct lump* append_new_lump(struct lump** list, char* new_hdr,$/;" f
-append_rpid_helper modules/auth/rpid.c /^static inline int append_rpid_helper(struct sip_msg* _m, str *_s)$/;" f file:
-append_rpid_hf modules/auth/rpid.c /^int append_rpid_hf(struct sip_msg* _m, char* _s1, char* _s2)$/;" f
-append_rpid_hf_p modules/auth/rpid.c /^int append_rpid_hf_p(struct sip_msg* _m, char* _prefix, char* _suffix)$/;" f
-append_short_attr modules/cpl-c/cpl_parser.c 88;" d file:
-append_str modules/extcmd/extcmd.c 59;" d file:
-append_str modules/extcmd/extcmd_funcs.c 71;" d file:
-append_str modules/sms/sms_funcs.c 101;" d file:
-append_str modules/tm/t_fifo.c 102;" d file:
-append_str modules/tm/t_msgbuilder.c 72;" d file:
-append_str msg_translator.c 134;" d file:
-append_str_attr modules/cpl-c/cpl_parser.c 95;" d file:
-append_str_trans msg_translator.c 140;" d file:
-append_time_f modules/textops/textops.c /^static int append_time_f(struct sip_msg* msg, char* p1, char *p2)$/;" f file:
-append_to_list modules/cpl-c/sub_list.c /^struct node* append_to_list(struct node *head, char *offset, char *name)$/;" f
-append_to_reply_f modules/textops/textops.c /^static int append_to_reply_f(struct sip_msg* msg, char* key, char* str)$/;" f file:
-append_to_timer modules/pike/timer.c /^inline void append_to_timer(struct list_link *head, struct list_link *new_ll )$/;" f
-append_urihf modules/textops/textops.c /^static int append_urihf(struct sip_msg *msg, char *str1, char *str2 )$/;" f file:
-append_var modules/exec/exec_hf.c /^static int append_var(char *name, char *value, int len, struct hf_wrapper **list)$/;" f file:
-applicationId modules/acc/diam_message.h /^ AAAApplicationId applicationId;$/;" m struct:_message_t
-applicationId modules/auth_diameter/diameter_msg.h /^ AAAApplicationId applicationId;$/;" m struct:_message_t
-apply_correction modules/pdt/pdt.c /^code_t apply_correction(code_t code)$/;" f
-arDS parser/obsolete/strs.h 210;" d
-arDs parser/obsolete/strs.h 209;" d
-ardS parser/obsolete/strs.h 208;" d
-ards parser/obsolete/strs.h 207;" d
-arg modules/jabber/xode.h /^ void *arg;$/;" m struct:xode_stream_struct
-arg modules/jabber/xpool.c /^ void *arg;$/;" m struct:xode_pool_free file:
-arg_cmd fifo_server.c /^static int arg_cmd( FILE *stream, char *response_file )$/;" f file:
-arg_cmd unixsock_server.c /^static int arg_cmd(str* msg)$/;" f file:
-array lock_ops.h /^ unsigned short int *array; \/* array for GETALL, SETALL *\/$/;" m union:semun
-array modules/jabber/tree234.c /^void **array;$/;" v
-array test/locking/locking_test.c /^ unsigned short int *array; \/* array for GETALL, SETALL *\/$/;" m union:semun file:
-arraylen modules/jabber/tree234.c /^int arraylen, arraysize;$/;" v
-arraysize modules/jabber/tree234.c /^int arraylen, arraysize;$/;" v
-ascii modules/sms/sms_funcs.h /^ char ascii[500];$/;" m struct:incame_sms
-ascii2pdu modules/sms/libsms_putsms.c /^int ascii2pdu(char* ascii, int asciiLength, char* pdu, int cs_convert)$/;" f
-ascii2sms modules/sms/libsms_charset.c /^char ascii2sms(const char c)$/;" f
-asedir Makefile /^ $(MAKE) install basedir=tmp\/ser prefix=\/usr\/local $/;" m
-asedir Makefile /^ $(MAKE) install basedir=tmp\/ser prefix=\/usr\/local$/;" m
-assemble_msg modules/tm/t_fifo.c /^static int assemble_msg(struct sip_msg* msg, struct tw_info *twi)$/;" f file:
-assemble_via modules/tm/t_msgbuilder.c /^static inline int assemble_via(str* dest, struct cell* t, struct socket_info* sock, int branch)$/;" f file:
-assign_stm cfg.y /^assign_stm: DEBUG EQUAL NUMBER { debug=$3; }$/;" l
-atch_CASE parser/case_sip.h 4;" d
-attr modules/acc/dict.h /^struct attr {$/;" s
-attr modules/exec/exec_hf.h /^ str attr;$/;" m struct:attrval
-attr2uri modules/avp/avp.c /^static int attr2uri(struct sip_msg* msg, char* attr, char* foo)$/;" f file:
-attr_column modules/avp_db/avp_db.c /^static char* attr_column = "attribute";$/;" v file:
-attr_name_value modules/avp_radius/avp_radius.c /^static inline void attr_name_value(VALUE_PAIR* vp, str* name, str* value)$/;" f file:
-attrs modules/acc/acc_mod.c /^struct attr attrs[A_MAX];$/;" v
-attrs modules/auth_radius/authrad_mod.c /^struct attr attrs[A_MAX];$/;" v
-attrs modules/avp_radius/avp_radius.c /^struct attr attrs[A_MAX];$/;" v
-attrs modules/group_radius/grouprad_mod.c /^struct attr attrs[A_MAX];$/;" v
-attrs modules/uri_radius/urirad_mod.c /^struct attr attrs[A_MAX];$/;" v
-attrval modules/exec/exec_hf.h /^struct attrval {$/;" s
-augAllocStats modules/postgres/aug_alloc.h /^} augAllocStats;$/;" t
-augBool modules/postgres/aug_std.h 77;" d
-augDAB_DEBUG modules/postgres/aug_debug.h 65;" d
-augDAB_DEBUG modules/postgres/aug_debug.h 80;" d
-augDAB__FILE__ modules/postgres/aug_debug.h 68;" d
-augDAB__FILE__ modules/postgres/aug_debug.h 70;" d
-augDAB__FILE__ modules/postgres/aug_debug.h 81;" d
-augDAB__LINE__ modules/postgres/aug_debug.h 73;" d
-augDAB__LINE__ modules/postgres/aug_debug.h 75;" d
-augDAB__LINE__ modules/postgres/aug_debug.h 82;" d
-augEXIT_ABORT modules/postgres/aug_std.h 96;" d
-augEXIT_ERROR modules/postgres/aug_std.h 98;" d
-augEXIT_FATAL modules/postgres/aug_std.h 97;" d
-augEXIT_NO modules/postgres/aug_std.h 94;" d
-augEXIT_NOMEM modules/postgres/aug_std.h 95;" d
-augEXIT_USAGE modules/postgres/aug_std.h 100;" d
-augEXIT_WARN modules/postgres/aug_std.h 99;" d
-augEXIT_YES modules/postgres/aug_std.h 93;" d
-augExport modules/postgres/aug_std.h 106;" d
-augFALSE modules/postgres/aug_std.h 79;" d
-augNoMemFunc modules/postgres/aug_alloc.h /^typedef void augNoMemFunc(size_t size, char *func, char *file, int line);$/;" t
-augTRUE modules/postgres/aug_std.h 80;" d
-augUInt32 modules/postgres/aug_sysdep.h /^typedef unsigned int augUInt32;$/;" t
-aug_abort modules/postgres/aug_util.c /^augExport void aug_abort(char *file, int line, char *fmt, ...)$/;" f
-aug_abort_va modules/postgres/aug_util.c /^augExport void aug_abort_va(char *file, int line, char *fmt, va_list ap)$/;" f
-aug_alloc modules/postgres/aug_alloc.h 75;" d
-aug_alloc_loc modules/postgres/aug_alloc.c /^augExport void *aug_alloc_loc(size_t size, void *parent, char *file, int line)$/;" f
-aug_alloc_stats modules/postgres/aug_alloc.c /^augExport augAllocStats *aug_alloc_stats(void)$/;" f
-aug_exit modules/postgres/aug_util.c /^augExport void aug_exit(int exit_code)$/;" f
-aug_foster modules/postgres/aug_alloc.h 80;" d
-aug_foster_loc modules/postgres/aug_alloc.c /^augExport void aug_foster_loc(void *alloc, void *parent, char *file, int line)$/;" f
-aug_free modules/postgres/aug_alloc.h 79;" d
-aug_free_loc modules/postgres/aug_alloc.c /^augExport void aug_free_loc(const void *alloc, char *file, int line)$/;" f
-aug_module modules/postgres/aug_util.c /^augExport char *aug_module(void)$/;" f
-aug_module_name modules/postgres/aug_util.c /^static char *aug_module_name = 0;$/;" v file:
-aug_realloc modules/postgres/aug_alloc.h 76;" d
-aug_realloc_loc modules/postgres/aug_alloc.c /^augExport void *aug_realloc_loc(size_t size, void *prev, char *file, int line)$/;" f
-aug_set_nomem_func modules/postgres/aug_alloc.c /^augExport augNoMemFunc *aug_set_nomem_func(augNoMemFunc *new_func)$/;" f
-aug_setmodule modules/postgres/aug_util.c /^augExport void aug_setmodule(char *name)$/;" f
-aug_strdup modules/postgres/aug_alloc.h 77;" d
-aug_strdup_loc modules/postgres/aug_alloc.c /^augExport char *aug_strdup_loc(const char *str, void *parent, char *file,$/;" f
-aug_vecdup modules/postgres/aug_alloc.h 78;" d
-aug_vecdup_loc modules/postgres/aug_alloc.c /^augExport char **aug_vecdup_loc(char **vec, void *parent, char *file, int line)$/;" f
-auth_CASE parser/case_auth.h 57;" d
-auth_body parser/digest/digest.h /^typedef struct auth_body {$/;" s
-auth_body_cloner modules/tm/sip_msg.c /^static inline struct auth_body* auth_body_cloner(char* new_buf, char *org_buf, struct auth_body *auth, char **p)$/;" f file:
-auth_body_t parser/digest/digest.h /^} auth_body_t;$/;" t
-auth_db_bind modules/auth_db/authorize.c /^int auth_db_bind(char* db_url)$/;" f
-auth_db_close modules/auth_db/authorize.c /^void auth_db_close()$/;" f
-auth_db_init modules/auth_db/authorize.c /^int auth_db_init(char* db_url)$/;" f
-auth_db_ver modules/auth_db/authorize.c /^int auth_db_ver(char* db_url, str* name)$/;" f
-auth_dbf modules/auth_db/authorize.c /^static db_func_t auth_dbf;$/;" v file:
-auth_result modules/auth/api.h /^typedef enum auth_result {$/;" g
-auth_result modules/auth_diameter/defs.h /^typedef enum auth_result {$/;" g
-auth_result_t modules/auth/api.h /^} auth_result_t;$/;" t
-auth_result_t modules/auth_diameter/defs.h /^} auth_result_t;$/;" t
-auth_ses_state modules/acc/diam_message.h /^ AAA_AVP *auth_ses_state;$/;" m struct:_message_t
-auth_ses_state modules/auth_diameter/diameter_msg.h /^ AAA_AVP *auth_ses_state;$/;" m struct:_message_t
-authentication modules/pdt/doc/admin.sql /^CREATE TABLE authentication ($/;" t
-authorization parser/msg_parser.h /^ struct hdr_field* authorization;$/;" m struct:sip_msg
-authorize modules/auth_db/authorize.c /^static inline int authorize(struct sip_msg* _m, str* _realm, char* _table, int _hftype)$/;" f file:
-authorize modules/auth_diameter/authorize.c /^int authorize(struct sip_msg* msg, str* realm, int hftype)$/;" f
-authorize modules/auth_radius/authorize.c /^static inline int authorize(struct sip_msg* _msg, str* _realm, int _hftype)$/;" f file:
-authorized modules/pdt/doc/web/request.php /^ $authorized="1";$/;" v
-authorized modules/pdt/doc/web/request.php /^ $authorized = "0";$/;" v
-authorized modules/pdt/doc/web/request.php /^ $authorized="0";$/;" v
-authorized parser/digest/digest.h /^ struct hdr_field* authorized;$/;" m struct:auth_body
-auto_col modules/dbtext/dbt_lib.h /^ int auto_col;$/;" m struct:_dbt_table
-auto_gen Makefile /^auto_gen=lex.yy.c cfg.tab.c #lexx, yacc etc$/;" m
-auto_gen db/example/Makefile /^auto_gen=$/;" m
-auto_gen modules/acc/Makefile /^auto_gen=$/;" m
-auto_gen modules/auth/Makefile /^auto_gen=$/;" m
-auto_gen modules/auth_db/Makefile /^auto_gen=$/;" m
-auto_gen modules/auth_diameter/Makefile /^auto_gen=$/;" m
-auto_gen modules/auth_radius/Makefile /^auto_gen=$/;" m
-auto_gen modules/avp/Makefile /^auto_gen=$/;" m
-auto_gen modules/avp_db/Makefile /^auto_gen=$/;" m
-auto_gen modules/avp_radius/Makefile /^auto_gen=$/;" m
-auto_gen modules/avpops/Makefile /^auto_gen=$/;" m
-auto_gen modules/cpl-c/Makefile /^auto_gen=$/;" m
-auto_gen modules/cpl/Makefile /^auto_gen=$/;" m
-auto_gen modules/dbtext/Makefile /^auto_gen=$/;" m
-auto_gen modules/dbtext/dbtex/Makefile /^auto_gen=$/;" m
-auto_gen modules/dispatcher/Makefile /^auto_gen=$/;" m
-auto_gen modules/diversion/Makefile /^auto_gen=$/;" m
-auto_gen modules/domain/Makefile /^auto_gen=$/;" m
-auto_gen modules/enum/Makefile /^auto_gen=$/;" m
-auto_gen modules/exec/Makefile /^auto_gen=$/;" m
-auto_gen modules/ext/Makefile /^auto_gen=$/;" m
-auto_gen modules/extcmd/Makefile /^auto_gen=$/;" m
-auto_gen modules/flatstore/Makefile /^auto_gen=$/;" m
-auto_gen modules/gflags/Makefile /^auto_gen=$/;" m
-auto_gen modules/group/Makefile /^auto_gen=$/;" m
-auto_gen modules/group_radius/Makefile /^auto_gen=$/;" m
-auto_gen modules/jabber/Makefile /^auto_gen=$/;" m
-auto_gen modules/mangler/Makefile /^auto_gen=$/;" m
-auto_gen modules/maxfwd/Makefile /^auto_gen=$/;" m
-auto_gen modules/mediaproxy/Makefile /^auto_gen=$/;" m
-auto_gen modules/msilo/Makefile /^auto_gen=$/;" m
-auto_gen modules/mysql/Makefile /^auto_gen=$/;" m
-auto_gen modules/nathelper/Makefile /^auto_gen=$/;" m
-auto_gen modules/options/Makefile /^auto_gen=$/;" m
-auto_gen modules/pa/Makefile /^auto_gen=$/;" m
-auto_gen modules/pdt/Makefile /^auto_gen=$/;" m
-auto_gen modules/permissions/Makefile /^auto_gen=$/;" m
-auto_gen modules/pike/Makefile /^auto_gen=$/;" m
-auto_gen modules/postgres/Makefile /^auto_gen=$/;" m
-auto_gen modules/print/Makefile /^auto_gen=$/;" m
-auto_gen modules/registrar/Makefile /^auto_gen=$/;" m
-auto_gen modules/rr/Makefile /^auto_gen=$/;" m
-auto_gen modules/sl/Makefile /^auto_gen=$/;" m
-auto_gen modules/sms/Makefile /^auto_gen=$/;" m
-auto_gen modules/speeddial/Makefile /^auto_gen=$/;" m
-auto_gen modules/textops/Makefile /^auto_gen=$/;" m
-auto_gen modules/tm/Makefile /^auto_gen=$/;" m
-auto_gen modules/uri/Makefile /^auto_gen=$/;" m
-auto_gen modules/uri_db/Makefile /^auto_gen=$/;" m
-auto_gen modules/uri_radius/Makefile /^auto_gen=$/;" m
-auto_gen modules/usrloc/Makefile /^auto_gen=$/;" m
-auto_gen modules/xlog/Makefile /^auto_gen=$/;" m
-auto_gen utils/gen_ha1/Makefile /^auto_gen=$/;" m
-auto_gen utils/serunix/Makefile /^auto_gen=$/;" m
-auto_gen_others Makefile /^auto_gen_others=cfg.tab.h # auto generated, non-c$/;" m
-auto_reconnect modules/mysql/db_mod.c /^int auto_reconnect = 1; \/* Default is enabled *\/$/;" v
-auto_val modules/dbtext/dbt_lib.h /^ int auto_val;$/;" m struct:_dbt_table
-aux_process modules/cpl-c/cpl.c /^static pid_t aux_process = 0; \/* pid of the private aux. process *\/$/;" v file:
-av modules/exec/exec_hf.h /^ struct attrval av;$/;" m union:hf_wrapper::<anonymous>
-avp modules/acc/diam_message.h /^typedef struct avp {$/;" s
-avp modules/auth_diameter/diameter_msg.h /^typedef struct avp {$/;" s
-avp usr_avp.c /^ struct avp_spec avp;$/;" m struct:avp_galias file:
-avp2timer modules/tm/t_funcs.c /^static inline int avp2timer(unsigned int* timer, int type, int_str name)$/;" f file:
-avpList modules/acc/diam_message.h /^ AAA_AVP_LIST avpList;$/;" m struct:_message_t
-avpList modules/auth_diameter/diameter_msg.h /^ AAA_AVP_LIST avpList;$/;" m struct:_message_t
-avp_add_db_scheme modules/avpops/avpops_db.c /^int avp_add_db_scheme( modparam_t type, void* val)$/;" f
-avp_exists modules/avp/avp.c /^static int avp_exists(struct sip_msg* msg, char* key, char* value)$/;" f file:
-avp_galias usr_avp.c /^struct avp_galias {$/;" s file:
-avp_get_db_scheme modules/avpops/avpops_db.c /^struct db_scheme *avp_get_db_scheme (char *name)$/;" f
-avp_spec usr_avp.c /^struct avp_spec {$/;" s file:
-avpops_child_init modules/avpops/avpops.c /^static int avpops_child_init(int rank)$/;" f file:
-avpops_db_bind modules/avpops/avpops_db.c /^int avpops_db_bind(char* db_url)$/;" f
-avpops_db_init modules/avpops/avpops_db.c /^int avpops_db_init(char* db_url, char* db_table, char **db_cols)$/;" f
-avpops_dbf modules/avpops/avpops_db.c /^static db_func_t avpops_dbf; \/* DB functions *\/$/;" v file:
-avpops_init modules/avpops/avpops.c /^static int avpops_init(void)$/;" f file:
-avps_column_int modules/auth_db/authdb_mod.c /^static str avps_column_int = {AVPS_COL_INT, AVPS_COL_INT_LEN};$/;" v file:
-avps_column_str modules/auth_db/authdb_mod.c /^static str avps_column_str = {AVPS_COL_STR, AVPS_COL_STR_LEN};$/;" v file:
-avps_int modules/auth_db/authdb_mod.c /^str *avps_int = NULL;$/;" v
-avps_int_n modules/auth_db/authdb_mod.c /^int avps_int_n = 0;$/;" v
-avps_str modules/auth_db/authdb_mod.c /^str *avps_str = NULL;$/;" v
-avps_str_n modules/auth_db/authdb_mod.c /^int avps_str_n = 0;$/;" v
-bad_cpl modules/cpl-c/cpl.c /^static struct cpl_error bad_cpl = {400,"Bad CPL script"};$/;" v file:
-bad_req modules/cpl-c/cpl.c /^static struct cpl_error bad_req = {400,"Bad request"};$/;" v file:
-basic2status modules/pa/presentity.c /^int basic2status(str basic)$/;" f
-baudrate modules/sms/sms_funcs.h /^ int baudrate;$/;" m struct:modem
-before lump_struct.h /^ struct lump* before; \/* list of headers to be inserted in front of the$/;" m struct:lump
-begin_transaction modules/postgres/dbase.c /^static int begin_transaction(db_con_t * _h, char *_s)$/;" f file:
-big_chunks mem/vq_malloc.h /^ char *big_chunks;$/;" m struct:vqm_block
-big_hash_idx mem/f_malloc.c /^inline static unsigned long big_hash_idx(unsigned long s)$/;" f file:
-big_hash_idx mem/q_malloc.c /^inline static unsigned long big_hash_idx(unsigned long s)$/;" f file:
-binary2pdu modules/sms/libsms_putsms.c /^int binary2pdu(char* binary, int length, char* pdu)$/;" f
-bind_address ip_addr.h /^ struct socket_info* bind_address; \/* sock_info structure on which $/;" m struct:receive_info
-bind_address main.c /^struct socket_info* bind_address=0; \/* pointer to the crt. proc.$/;" v
-bind_dbmod db/db.c /^int bind_dbmod(char* mod, db_func_t* mydbf)$/;" f
-bind_usrloc modules/usrloc/usrloc.c /^int bind_usrloc(usrloc_api_t* api)$/;" f
-bind_usrloc_t modules/usrloc/usrloc.h /^typedef int (*bind_usrloc_t)(usrloc_api_t* api);$/;" t
-bitmap_val db/db_val.h /^ unsigned int bitmap_val; \/* Bitmap data type, 32 flags, should be enough *\/ $/;" m
-blob_val db/db_val.h /^ str blob_val; \/* Blob data *\/$/;" m
-block modules/jabber/xode.h /^ void *block;$/;" m struct:xode_pool_heap
-body modules/pa/notify.c /^static str body = {buffer, 0};$/;" v file:
-body parser/hf.h /^ str body; \/* Header field body (may not include CRLF) *\/$/;" m struct:hdr_field
-body parser/parse_disposition.h /^ str body;$/;" m struct:disposition_param
-body parser/parse_param.h /^ str body; \/* Parameter body *\/$/;" m struct:param
-body parser/parse_to.h /^ str body; \/* The whole header field body *\/$/;" m struct:to_body
-body tcp_conn.h /^ char* body; \/* body position *\/$/;" m struct:tcp_req
-body_lumps parser/msg_parser.h /^ struct lump* body_lumps; \/* Lumps that update Content-Length *\/$/;" m struct:sip_msg
-bookmark msg_translator.h /^struct bookmark {$/;" s
-bool_int modules/jabber/xsnprintf.c /^typedef int bool_int;$/;" t file:
-boolean_e modules/jabber/xsnprintf.c /^} boolean_e;$/;" t file:
-branch dset.c /^struct branch$/;" s file:
-branch modules/pike/ip_tree.h /^ unsigned char branch;$/;" m struct:ip_node
-branch modules/tm/h_table.h /^ unsigned int branch;$/;" m struct:retr_buf
-branch parser/parse_via.h /^ struct via_param* branch;$/;" m struct:via_body
-branch_bm_t modules/tm/t_reply.h /^typedef unsigned int branch_bm_t;$/;" t
-branch_builder msg_translator.c /^int branch_builder( unsigned int hash_index,$/;" f
-branch_iterator dset.c /^static int branch_iterator = 0;$/;" v file:
-branches dset.c /^static struct branch branches[MAX_BRANCHES - 1];$/;" v file:
-bsize parser/parse_via.h /^ int bsize; \/* body size, not including hdr *\/$/;" m struct:via_body
-btostr ut.h /^static inline int btostr( char *p, unsigned char val)$/;" f
-bucket mem/vq_malloc.h /^ unsigned char bucket;$/;" m struct:vqm_frag::<anonymous>::<anonymous>
-buf db/db_fifo.c /^static char buf[MAX_SIZE_LINE];$/;" v file:
-buf lock_ops.h /^ struct semid_ds *buf; \/* buffer for IPC_STAT, IPC_SET *\/$/;" m union:semun
-buf modules/acc/defs.h /^ unsigned char *buf;$/;" m struct:rd_buf
-buf modules/acc/diam_message.h /^ str buf;$/;" m struct:_message_t
-buf modules/auth_diameter/defs.h /^ unsigned char *buf;$/;" m struct:rd_buf
-buf modules/auth_diameter/diameter_msg.h /^ str buf;$/;" m struct:_message_t
-buf modules/registrar/reply.c /^ char* buf;$/;" m file:
-buf parser/msg_parser.h /^ char* buf; \/* scratch pad, holds a modified message,$/;" m struct:sip_msg
-buf tcp_conn.h /^ char buf[TCP_BUF_SIZE+1]; \/* bytes read so far (+0-terminator)*\/$/;" m struct:tcp_req
-buf test/locking/locking_test.c /^ struct semid_ds *buf; \/* buffer for IPC_STAT, IPC_SET *\/$/;" m union:semun file:
-buf test/test.c /^static char buf[BUF_SIZE];$/;" v file:
-buf test/udp_test_proxy.c /^static char buf[BUF_SIZE];$/;" v file:
-buf_agents modules/jabber/doc/web/subscribe.php /^ $buf_agents = fread($fd, 4096);$/;" v
-buf_agents modules/jabber/doc/web/subscribe.php /^ $buf_agents = fread($fd, 4096);$/;" v
-buf_area modules/jabber/xsnprintf.c /^struct buf_area {$/;" s file:
-buf_end modules/jabber/xsnprintf.c /^ char *buf_end;$/;" m struct:buf_area file:
-buf_len modules/acc/defs.h /^ unsigned int buf_len;$/;" m struct:rd_buf
-buf_len modules/auth_diameter/defs.h /^ unsigned int buf_len;$/;" m struct:rd_buf
-buf_len modules/registrar/reply.c /^ int buf_len;$/;" m file:
-buf_recv modules/jabber/doc/web/subscribe.php /^ $buf_recv = fread($fd, 2048);$/;" v
-buf_recv modules/jabber/doc/web/subscribe.php /^ $buf_recv = fread($fd, 2048);$/;" v
-buf_recv modules/jabber/doc/web/subscribe.php /^ $buf_recv = fread($fd, 2048);$/;" v
-buf_recv modules/jabber/doc/web/subscribe.php /^ $buf_recv = fread($fd, 2048);$/;" v
-buf_size modules/xlog/xlog.c /^int buf_size=4096;$/;" v
-buff resolve.h /^ unsigned char buff[MAX_QUERY_SIZE];$/;" m union:dns_query
-buffer md5.h /^ unsigned char buffer[64]; \/* input buffer *\/$/;" m
-buffer modules/pa/notify.c /^static char buffer[BUF_LEN];$/;" v file:
-buffer modules/tm/h_table.h /^ char *buffer;$/;" m struct:retr_buf
-buffer_len modules/tm/h_table.h /^ int buffer_len;$/;" m struct:retr_buf
-buffy modules/jabber/xsnprintf.c /^typedef struct buf_area buffy;$/;" t file:
-build_ack modules/tm/t_reply.c /^static char *build_ack(struct sip_msg* rpl,struct cell *trans,int branch,$/;" f file:
-build_auth_hf modules/auth/challenge.c /^static inline char *build_auth_hf(int _retries, int _stale, str* _realm, $/;" f file:
-build_cancel modules/tm/t_cancel.c /^char *build_cancel(struct cell *Trans,unsigned int branch,$/;" f
-build_cell modules/tm/h_table.c /^struct cell* build_cell( struct sip_msg* p_msg )$/;" f
-build_contact modules/registrar/reply.c /^int build_contact(ucontact_t* c)$/;" f
-build_dlg_ack modules/tm/t_msgbuilder.c /^char *build_dlg_ack(struct sip_msg* rpl, struct cell *Trans, unsigned int branch,$/;" f
-build_hf_struct modules/exec/exec_hf.c /^static int build_hf_struct(struct sip_msg *msg, struct hf_wrapper **list)$/;" f file:
-build_local modules/tm/t_msgbuilder.c /^char *build_local(struct cell *Trans,unsigned int branch,$/;" f
-build_local_ack modules/tm/t_reply.c /^static char *build_local_ack(struct sip_msg* rpl, struct cell *trans, int branch,$/;" f file:
-build_req_buf_from_sip_req msg_translator.c /^char * build_req_buf_from_sip_req( struct sip_msg* msg,$/;" f
-build_res_buf_from_sip_req msg_translator.c /^char * build_res_buf_from_sip_req( unsigned int code, char *text ,str *new_tag,$/;" f
-build_res_buf_from_sip_res msg_translator.c /^char * build_res_buf_from_sip_res( struct sip_msg* msg,$/;" f
-build_rr modules/rr/record.c /^static inline int build_rr(struct lump* _l, struct lump* _l2, int _lr, str* user, str* tag, int _inbound)$/;" f file:
-build_uac_req modules/tm/t_msgbuilder.c /^char* build_uac_req(str* method, str* headers, str* body, dlg_t* dialog, int branch, $/;" f
-build_userhost modules/cpl-c/cpl.c /^static inline int build_userhost(struct sip_uri *uri, str *uh, int flg)$/;" f file:
-busy modules/cpl-c/cpl_run.h /^ char *busy;$/;" m struct:cpl_interpreter::proxy_st
-busy tcp_main.c /^ int busy;$/;" m struct:tcp_child file:
-byday modules/cpl-c/cpl_time.h /^ tr_byxxx_p byday;$/;" m struct:_tmrec
-bymday modules/cpl-c/cpl_time.h /^ tr_byxxx_p bymday;$/;" m struct:_tmrec
-bymonth modules/cpl-c/cpl_time.h /^ tr_byxxx_p bymonth;$/;" m struct:_tmrec
-byte modules/pike/ip_tree.h /^ unsigned char byte;$/;" m struct:ip_node
-bytes_to_go tcp_conn.h /^ int bytes_to_go; \/* how many bytes we have still to read from the body*\/$/;" m struct:tcp_req
-byweekno modules/cpl-c/cpl_time.h /^ tr_byxxx_p byweekno;$/;" m struct:_tmrec
-byyday modules/cpl-c/cpl_time.h /^ tr_byxxx_p byyday;$/;" m struct:_tmrec
-c modules/jabber/xode.h /^ char *c;$/;" m struct:xode_spool_node
-c modules/usrloc/ucontact.h /^ str c; \/* Contact address *\/$/;" m struct:ucontact
-c parser/parse_content.c /^ char c; \/* char contained by this node *\/$/;" m struct:type_node_s file:
-c re.h /^ char c;$/;" m union:replace_with::<anonymous>
-cALL parser/obsolete/strs.h 126;" d
-cALl parser/obsolete/strs.h 125;" d
-cAlL parser/obsolete/strs.h 124;" d
-cAll parser/obsolete/strs.h 123;" d
-cONT parser/obsolete/strs.h 153;" d
-cONt parser/obsolete/strs.h 152;" d
-cOnT parser/obsolete/strs.h 151;" d
-cOnt parser/obsolete/strs.h 150;" d
-cSEQ parser/obsolete/strs.h 109;" d
-cSEq parser/obsolete/strs.h 108;" d
-cSeQ parser/obsolete/strs.h 107;" d
-cSeq parser/obsolete/strs.h 106;" d
-c_next tcp_conn.h /^ struct tcp_connection* c_next; \/* child next prev (use locally) *\/$/;" m struct:tcp_connection
-c_prev tcp_conn.h /^ struct tcp_connection* c_prev;$/;" m struct:tcp_connection
-caLL parser/obsolete/strs.h 122;" d
-caLl parser/obsolete/strs.h 121;" d
-cache modules/jabber/xjab_util.h /^ int cache; \/\/ cache time (seconds)$/;" m struct:_xj_jmsg_queue
-cache_time modules/jabber/jabber.c /^int cache_time = 600;$/;" v
-cachet modules/jabber/xjab_worker.h /^ int cachet;$/;" m struct:_xj_wlist
-calL parser/obsolete/strs.h 120;" d
-calc_HA1 modules/auth_db/rfc2617.c /^void calc_HA1(ha_alg_t _alg, str* _username, str* _realm, str* _password,$/;" f
-calc_buf_len modules/registrar/reply.c /^static inline unsigned int calc_buf_len(ucontact_t* c)$/;" f file:
-calc_contact_expires modules/registrar/sip_msg.c /^int calc_contact_expires(struct sip_msg* _m, param_t* _ep, int* _e)$/;" f
-calc_contact_q modules/registrar/sip_msg.c /^int calc_contact_q(param_t* _q, qvalue_t* _r)$/;" f
-calc_crc_suffix modules/sl/sl_funcs.c /^static void calc_crc_suffix( struct sip_msg *msg )$/;" f file:
-calc_crc_suffix tags.h /^static inline void calc_crc_suffix( struct sip_msg *msg, char *tag_suffix)$/;" f
-calc_ha1 modules/auth_db/authdb_mod.c /^int calc_ha1 = 0;$/;" v
-calc_nonce modules/auth/nonce.c /^void calc_nonce(char* _nonce, int _expires, str* _secret)$/;" f
-calc_response modules/auth_db/rfc2617.c /^void calc_response(HASHHEX _ha1, \/* H(A1) *\/$/;" f
-calc_routeset_len modules/tm/t_msgbuilder.c /^static inline int calc_routeset_len(struct rte* list, str* contact)$/;" f file:
-calculate_hooks modules/tm/dlg.c /^static inline int calculate_hooks(dlg_t* _d)$/;" f file:
-calculate_routeset_length modules/tm/dlg.c /^int calculate_routeset_length(dlg_t* _d)$/;" f
-call parser/obsolete/strs.h 119;" d
-call_CASE parser/case_call.h 55;" d
-call_id modules/tm/dlg.h /^ str call_id; \/* Call-ID *\/$/;" m struct:dlg_id
-callback modules/pa/subscribe.c /^void callback(str* _user, str *_contact, int state, void* data)$/;" f
-callback modules/tm/t_hooks.h /^ transaction_cb* callback; \/* callback function *\/$/;" m struct:tm_callback
-callback modules/tm/uac_unixsock.c /^static void callback(struct cell *t, int type, struct tmcb_params *ps)$/;" f file:
-callback modules/usrloc/ul_callback.h /^ ul_cb* callback; \/* callback function *\/$/;" m struct:ul_callback
-callback_lock_pdomain modules/pa/pa_mod.c /^int callback_lock_pdomain = 1;$/;" v
-callback_t script_cb.h /^} callback_t; \/* Allowed types of callbacks *\/$/;" t
-callback_update_db modules/pa/pa_mod.c /^int callback_update_db = 1;$/;" v
-callee_prefix modules/avp_db/avp_db.c /^static str callee_prefix = {CALLEE_PREFIX, CALLEE_PREFIX_LEN};$/;" v file:
-callee_prefix modules/avp_radius/avp_radius.c /^static str callee_prefix = {CALLEE_PREFIX, CALLEE_PREFIX_LEN};$/;" v file:
-callee_service_type modules/avp_radius/avp_radius.c /^static int callee_service_type = -1;$/;" v file:
-callee_uuid_avp modules/avp_db/avp_db.c /^static int callee_uuid_avp = 2;$/;" v file:
-caller_prefix modules/avp_db/avp_db.c /^static str caller_prefix = {CALLER_PREFIX, CALLER_PREFIX_LEN};$/;" v file:
-caller_prefix modules/avp_radius/avp_radius.c /^static str caller_prefix = {CALLER_PREFIX, CALLER_PREFIX_LEN};$/;" v file:
-caller_service_type modules/avp_radius/avp_radius.c /^static int caller_service_type = -1;$/;" v file:
-caller_uuid_avp modules/avp_db/avp_db.c /^static int caller_uuid_avp = 1;$/;" v file:
-callid modules/tm/h_table.h /^ str from, callid, cseq_n, to;$/;" m struct:cell
-callid modules/usrloc/ucontact.h /^ str callid; \/* Call-ID header field *\/$/;" m struct:ucontact
-callid parser/msg_parser.h /^ struct hdr_field* callid;$/;" m struct:sip_msg
-callid_buf modules/tm/callid.c /^static char callid_buf[CALLID_NR_LEN + CALLID_SUFFIX_LEN];$/;" v file:
-callid_col modules/usrloc/ul_mod.c /^str callid_col = {CALLID_COL, sizeof(CALLID_COL) - 1}; \/* Name of column containing callid string *\/$/;" v
-callid_nr modules/tm/callid.c /^static unsigned long callid_nr;$/;" v file:
-callid_prefix modules/tm/callid.c /^str callid_prefix;$/;" v
-callid_suffix modules/tm/callid.c /^str callid_suffix;$/;" v
-cancel_branch modules/tm/t_cancel.c /^void cancel_branch( struct cell *t, int branch )$/;" f
-cancel_uacs modules/tm/t_cancel.c /^void cancel_uacs( struct cell *t, branch_bm_t cancel_bm )$/;" f
-canonize_headername modules/exec/exec_hf.c /^static int canonize_headername(str *orig, char **hname, int *hlen )$/;" f file:
-cap db/db.h /^ unsigned int cap; \/* Capability vector of the database transport *\/$/;" m struct:db_func
-case_port parser/parse_uri.c 100;" d file:
-case_port test/p_uri.c 82;" d file:
-case_sensitive modules/cpl-c/cpl_env.h /^ int case_sensitive; \/* is user part case sensitive ? *\/$/;" m struct:cpl_enviroment
-case_sensitive modules/registrar/reg_mod.c /^int case_sensitive = 0; \/* If set to 1, username in aor will be case sensitive *\/$/;" v
-cb modules/usrloc/notify.h /^ notcb_t cb;$/;" m struct:notify_cb
-cb_data modules/tm/uac_fifo.c /^struct cb_data {$/;" s file:
-cb_function script_cb.h /^typedef int (cb_function)( struct sip_msg *msg, void *param );$/;" t
-cb_id script_cb.c /^static unsigned int cb_id=0;$/;" v file:
-cbf modules/jabber/xjab_base.h /^ pa_callback_f cbf; \/\/ callback function$/;" m struct:_xj_sipmsg
-cbf modules/jabber/xjab_presence.h /^ pa_callback_f cbf;$/;" m struct:_xj_pres_cell
-cbf script_cb.h /^ cb_function *cbf;$/;" m struct:script_cb
-cblen modules/nathelper/nathelper.c /^static int cblen = 0;$/;" v file:
-cbp modules/jabber/xjab_presence.h /^ void *cbp;$/;" m struct:_xj_pres_cell
-ccitt_tab crc.c /^unsigned short int ccitt_tab[] = { \/* CRC polynomial 0x8408 *\/$/;" v
-cdata modules/jabber/xode.h /^ char *cdata;$/;" m struct:xode_stream_struct
-cdata_len modules/jabber/xode.h /^ int cdata_len;$/;" m struct:xode_stream_struct
-cds2sms modules/sms/libsms_getsms.c /^int cds2sms(struct incame_sms *sms, struct modem *mdm, char *s, int s_len)$/;" f
-cds_report modules/sms/libsms_modem.h /^typedef int(*cds_report)( struct modem* , char* , int );$/;" t
-cds_report_func modules/sms/libsms_modem.c /^cds_report cds_report_func;$/;" v
-cell modules/tm/h_table.h /^typedef struct cell$/;" s
-cell_type modules/tm/h_table.h /^}cell_type;$/;" t
-cfg cfg.y /^cfg: statements$/;" l
-cfg_errors main.c /^int cfg_errors=0;$/;" v
-cfg_file main.c /^char* cfg_file = 0;$/;" v
-chall modules/auth_diameter/defs.h /^ unsigned char *chall;$/;" m struct:rd_buf
-chall_len modules/auth_diameter/defs.h /^ unsigned int chall_len; $/;" m struct:rd_buf
-challenge modules/auth/challenge.c /^static inline int challenge(struct sip_msg* _msg, str* _realm, int _qop, $/;" f file:
-challenge_fixup modules/auth/auth_mod.c /^static int challenge_fixup(void** param, int param_no)$/;" f file:
-change_state tcp_read.c 153;" d file:
-change_state_case tcp_read.c 161;" d file:
-char_msg_val parser/msg_parser.h /^inline static int char_msg_val( struct sip_msg *msg, char *cv )$/;" f
-charset modules/msilo/msfuncs.h /^ str charset;$/;" m struct:_content_type
-charset modules/sms/libsms_charset.c /^unsigned char charset[128] ={$/;" v
-chash modules/pdt/domains.h /^ h_entry_t* chash;$/;" m struct:_double_hash
-check mem/f_malloc.h /^ unsigned long check;$/;" m struct:fm_frag
-check mem/q_malloc.h /^ unsigned long check;$/;" m struct:qm_frag
-check mem/vq_malloc.h /^ unsigned long check;$/;" m struct:vqm_frag
-check1 mem/q_malloc.h /^ unsigned long check1;$/;" m struct:qm_frag_end
-check2 mem/q_malloc.h /^ unsigned long check2;$/;" m struct:qm_frag_end
-checkAsymmetricFile modules/mediaproxy/mediaproxy.c /^checkAsymmetricFile(AsymmetricClients *aptr)$/;" f file:
-checkContentType modules/mediaproxy/mediaproxy.c /^checkContentType(struct sip_msg *msg)$/;" f file:
-check_alias scripts/sc /^check_alias() {$/;" f
-check_alias scripts/sc_unixsock /^check_alias() {$/;" f
-check_all_branches modules/permissions/permissions.c /^static int check_all_branches = 1;$/;" v file:
-check_and_split_time_list modules/tm/timer.c /^static struct timer_link *check_and_split_time_list( struct timer *timer_list,$/;" f file:
-check_and_split_timer modules/pike/timer.c /^void check_and_split_timer(struct list_link *head, int time,$/;" f
-check_avp_galias usr_avp.c /^static inline int check_avp_galias(str *alias, int type, int_str avp_name)$/;" f file:
-check_byxxx modules/cpl-c/cpl_time.c /^int check_byxxx(tmrec_p _trp, ac_tm_p _atp)$/;" f
-check_cds_report modules/sms/sms_funcs.c /^int check_cds_report( struct modem *mdm, char *cds, int cds_len)$/;" f
-check_contacts modules/registrar/sip_msg.c /^int check_contacts(struct sip_msg* _m, int* _s)$/;" f
-check_content_type modules/nathelper/nhelpr_funcs.c /^int check_content_type(struct sip_msg *msg)$/;" f
-check_dig_cred parser/digest/digest.c /^dig_err_t check_dig_cred(dig_cred_t* _c)$/;" f
-check_freq_interval modules/cpl-c/cpl_time.c /^int check_freq_interval(tmrec_p _trp, ac_tm_p _atp)$/;" f
-check_from modules/uri_db/checks.c /^int check_from(struct sip_msg* _m, char* _s1, char* _s2)$/;" f
-check_host_end parser/parse_uri.c 126;" d file:
-check_host_end test/p_uri.c 108;" d file:
-check_memory modules/sms/libsms_getsms.c /^int check_memory(struct modem *mdm, int flag)$/;" f
-check_message modules/pa/subscribe.c /^int check_message(struct sip_msg* _m)$/;" f
-check_min_unit modules/cpl-c/cpl_time.c /^int check_min_unit(tmrec_p _trp, ac_tm_p _atp, tr_res_p _tsw)$/;" f
-check_msg modules/tm/uac_unixsock.c /^static int check_msg(struct sip_msg* msg, str* method, str* body, $/;" f file:
-check_new_uri modules/ext/ext.c /^static int check_new_uri = 1;$/;" v file:
-check_nonce modules/auth/nonce.c /^int check_nonce(str* _nonce, str* _secret)$/;" f
-check_overflow modules/cpl-c/cpl_parser.c 72;" d file:
-check_overflow_by_offset modules/cpl-c/cpl_run.c 79;" d file:
-check_overflow_by_ptr modules/cpl-c/cpl_run.c 70;" d file:
-check_params modules/tm/uac.c /^static inline int check_params(str* method, str* to, str* from, dlg_t** dialog)$/;" f file:
-check_register modules/permissions/permissions.c /^static int check_register(struct sip_msg* msg, int idx)$/;" f file:
-check_response modules/auth_db/authorize.c /^static inline int check_response(dig_cred_t* _cred, str* _method, char* _ha1)$/;" f file:
-check_routing modules/permissions/permissions.c /^static int check_routing(struct sip_msg* msg, int idx) $/;" f file:
-check_run etc/imgwd /^check_run() {$/;" f
-check_run etc/obsoleted/sip2jabd /^check_run() {$/;" f
-check_self forward.c /^int check_self(str* host, unsigned short port, unsigned short proto)$/;" f
-check_self_op route.c /^inline static int check_self_op(int op, str* s, unsigned short p)$/;" f file:
-check_sms_report modules/sms/sms_funcs.c /^int check_sms_report( struct incame_sms *sms )$/;" f
-check_time modules/jabber/jabber.c /^int check_time = 20;$/;" v
-check_timeout_in_report_queue modules/sms/sms_report.c /^void check_timeout_in_report_queue()$/;" f
-check_tmrec modules/cpl-c/cpl_time.c /^int check_tmrec(tmrec_p _trp, ac_tm_p _atp, tr_res_p _tsw)$/;" f
-check_to modules/uri_db/checks.c /^int check_to(struct sip_msg* _m, char* _s1, char* _s2)$/;" f
-check_transaction_quadruple parser/msg_parser.c /^int check_transaction_quadruple( struct sip_msg* msg )$/;" f
-check_uri modules/postgres/serpgctl /^check_uri() {$/;" f
-check_uri scripts/sc /^check_uri() {$/;" f
-check_uri scripts/sc_unixsock /^check_uri() {$/;" f
-check_userhost modules/cpl-c/cpl_loader.c /^static inline int check_userhost( char *p, char *end)$/;" f file:
-check_username modules/uri_db/checks.c /^static inline int check_username(struct sip_msg* _m, str* _uri)$/;" f file:
-check_via main.c /^int check_via = 0; $/;" v
-check_via_address msg_translator.c /^static int check_via_address(struct ip_addr* ip, str *name, $/;" f file:
-checkmodem modules/sms/libsms_modem.c /^int checkmodem(struct modem *mdm)$/;" f
-child modules/postgres/aug_alloc.c /^ MemHead *parent, *sibling, *child;$/;" m struct:MemHeadStruct file:
-child_init modules/acc/acc_mod.c /^static int child_init(int rank)$/;" f file:
-child_init modules/auth_db/authdb_mod.c /^static int child_init(int rank)$/;" f file:
-child_init modules/avp_db/avp_db.c /^static int child_init(int rank)$/;" f file:
-child_init modules/dispatcher/dispatcher.c /^static int child_init(int rank)$/;" f file:
-child_init modules/domain/domain_mod.c /^static int child_init(int rank)$/;" f file:
-child_init modules/flatstore/flatstore_mod.c /^static int child_init(int rank)$/;" f file:
-child_init modules/group/group_mod.c /^static int child_init(int rank)$/;" f file:
-child_init modules/jabber/jabber.c /^static int child_init(int rank)$/;" f file:
-child_init modules/msilo/msilo.c /^static int child_init(int rank)$/;" f file:
-child_init modules/nathelper/nathelper.c /^child_init(int rank)$/;" f file:
-child_init modules/permissions/permissions.c /^static int child_init(int rank)$/;" f file:
-child_init modules/speeddial/speeddial.c /^static int child_init(int rank)$/;" f file:
-child_init modules/tm/tm.c /^static int child_init(int rank) {$/;" f file:
-child_init modules/uri_db/uridb_mod.c /^static int child_init(int rank)$/;" f file:
-child_init modules/usrloc/ul_mod.c /^static int child_init(int _rank)$/;" f file:
-child_init modules/xlog/xlog.c /^static int child_init(int rank)$/;" f file:
-child_init_callid modules/tm/callid.c /^int child_init_callid(int rank) $/;" f
-child_init_function sr_module.h /^typedef int (*child_init_function)(int rank);$/;" t
-children_no main.c /^int children_no = 0; \/* number of children processing requests *\/$/;" v
-chkctx modules/jabber/tree234.c /^} chkctx;$/;" t file:
-chknode modules/jabber/tree234.c /^int chknode(chkctx *ctx, int level, node234 *node,$/;" f
-chroot_dir main.c /^char* chroot_dir = 0;$/;" v
-cld_pid modules/xlog/xl_lib.c /^int cld_pid = 0;$/;" v
-clean_hdr_field parser/hf.c /^void clean_hdr_field(struct hdr_field* hf)$/;" f
-clean_routine modules/pike/pike_funcs.c /^void clean_routine(unsigned int ticks , void *param)$/;" f
-clean_trusted modules/permissions/trusted.c /^void clean_trusted(void)$/;" f
-cleanup main.c /^void cleanup(show_status)$/;" f
-cleanup modules/jabber/xode.h /^ struct xode_pool_free *cleanup;$/;" m struct:xode_pool_struct
-cleanup_localcancel_timers modules/tm/timer.c /^void cleanup_localcancel_timers( struct cell *t )$/;" f
-cleanup_uac_timers modules/tm/t_reply.c /^void cleanup_uac_timers( struct cell *t )$/;" f
-clear_branches dset.c /^void clear_branches(void)$/;" f
-clen_builder msg_translator.c /^char* clen_builder(struct sip_msg* msg, int *clen_len, int diff)$/;" f
-client utils/fifo_relay/fifo_server.php /^ $client = ip2long(fgets($fd, 4096));$/;" v
-client_struct modules/extcmd/clients.h /^typedef struct client_struct$/;" s
-client_t modules/extcmd/clients.h /^}client_t;$/;" t
-clients modules/extcmd/clients.h /^client_t clients[MAX_CLIENTS];$/;" v
-clients modules/mediaproxy/mediaproxy.c /^ regex_t **clients; \/\/ the asymmetric clients regular expressions$/;" m file:
-clients utils/fifo_relay/fifo_server.php /^ $clients = array();$/;" v
-clients_is_full modules/extcmd/clients.h /^inline int clients_is_full()$/;" f
-clist modules/jabber/xjab_presence.h /^ xj_pres_cell clist;$/;" m struct:_xj_pres_list
-clone_authorized_hooks modules/tm/sip_msg.c /^static inline int clone_authorized_hooks(struct sip_msg* new,$/;" f file:
-close db/db.h /^ db_close_f close; \/* Close database connection *\/$/;" m struct:db_func
-close_prog_input modules/ext/my_exec.h /^inline void close_prog_input()$/;" f
-close_prog_output modules/ext/my_exec.h /^inline void close_prog_output()$/;" f
-close_tcp_connection modules/acc/diam_tcp.c /^void close_tcp_connection(int sfd)$/;" f
-close_tcp_connection modules/auth_diameter/tcp_comm.c /^void close_tcp_connection(int sfd)$/;" f
-close_unixsock_server unixsock_server.c /^void close_unixsock_server(void)$/;" f
-closemodem modules/sms/libsms_modem.c /^int closemodem(struct modem *mdm)$/;" f
-cmd cfg.y /^cmd: FORWARD LPAREN host RPAREN { $$=mk_action( FORWARD_T,$/;" l
-cmd modules/extcmd/extcmd_funcs.c /^ str cmd;$/;" m struct:anchor_struct file:
-cmd_export_ sr_module.h /^struct cmd_export_ {$/;" s
-cmd_export_t sr_module.h /^typedef struct cmd_export_ cmd_export_t;$/;" t
-cmd_function sr_module.h /^typedef int (*cmd_function)(struct sip_msg*, char*, char*);$/;" t
-cmd_list fifo_server.c /^static struct fifo_command *cmd_list=0;$/;" v file:
-cmd_list unixsock_server.c /^static struct unixsock_cmd* cmd_list = 0;$/;" v file:
-cmd_pipe modules/cpl-c/cpl_env.h /^ int cmd_pipe[2]; \/* communication pipe with aux. process *\/$/;" m struct:cpl_enviroment
-cmds modules/acc/acc_mod.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/auth/auth_mod.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/auth_db/authdb_mod.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/auth_diameter/auth_diameter.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/auth_radius/authrad_mod.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/avp/avp.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/avp_db/avp_db.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/avp_radius/avp_radius.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/avpops/avpops.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/cpl-c/cpl.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/cpl/cpl.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/dbtext/dbtext.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/dispatcher/dispatcher.c /^static cmd_export_t cmds[]={$/;" v file:
-cmds modules/diversion/diversion.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/domain/domain_mod.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/enum/enum_mod.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/exec/exec_mod.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/ext/ext.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/extcmd/extcmd.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/flatstore/flatstore_mod.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/gflags/gflags.c /^static cmd_export_t cmds[]={$/;" v file:
-cmds modules/group/group_mod.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/group_radius/grouprad_mod.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/jabber/jabber.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/mangler/mangler.c /^static cmd_export_t cmds[] = $/;" v file:
-cmds modules/maxfwd/maxfwd.c /^static cmd_export_t cmds[]={$/;" v file:
-cmds modules/msilo/msilo.c /^static cmd_export_t cmds[]={$/;" v file:
-cmds modules/mysql/db_mod.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/nathelper/nathelper.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/options/mod_options.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/pa/pa_mod.c /^static cmd_export_t cmds[]={$/;" v file:
-cmds modules/pdt/pdt.c /^static cmd_export_t cmds[]={$/;" v file:
-cmds modules/permissions/permissions.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/pike/pike.c /^static cmd_export_t cmds[]={$/;" v file:
-cmds modules/postgres/db_mod.c /^static cmd_export_t cmds[]={$/;" v file:
-cmds modules/print/print.c /^static cmd_export_t cmds[]={$/;" v file:
-cmds modules/registrar/reg_mod.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/rr/rr_mod.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/sl/sl.c /^static cmd_export_t cmds[]={$/;" v file:
-cmds modules/sms/sms.c /^static cmd_export_t cmds[]={$/;" v file:
-cmds modules/speeddial/speeddial.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/textops/textops.c /^static cmd_export_t cmds[]={$/;" v file:
-cmds modules/tm/tm.c /^static cmd_export_t cmds[]={$/;" v file:
-cmds modules/uri/uri_mod.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/uri_db/uridb_mod.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/uri_radius/urirad_mod.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/usrloc/ul_mod.c /^static cmd_export_t cmds[] = {$/;" v file:
-cmds modules/xlog/xlog.c /^static cmd_export_t cmds[]={$/;" v file:
-cmds sr_module.h /^ cmd_export_t* cmds; \/* null terminated array of the exported$/;" m struct:module_exports
-cmp modules/jabber/tree234.c /^ cmpfn234 cmp;$/;" m struct:tree234_Tag file:
-cmp modules/jabber/tree234.c /^cmpfn234 cmp;$/;" v
-cmp_flat_id modules/flatstore/flat_id.c /^unsigned char cmp_flat_id(struct flat_id* id1, struct flat_id* id2)$/;" f
-cmp_my_id modules/mysql/my_id.c /^unsigned char cmp_my_id(struct my_id* id1, struct my_id* id2)$/;" f
-cmpfn234 modules/jabber/tree234.h /^typedef int (*cmpfn234)(void *, void *);$/;" t
-cname_rdata resolve.h /^struct cname_rdata {$/;" s
-cnetaddr modules/nathelper/nathelper.c /^ const char *cnetaddr;$/;" m file:
-cnon_CASE parser/digest/param_parser.c 133;" d file:
-cnonce parser/digest/digest_parser.h /^ str cnonce; \/* Cnonce value *\/$/;" m struct:dig_cred
-coNT parser/obsolete/strs.h 149;" d
-coNt parser/obsolete/strs.h 148;" d
-code modules/acc/diam_message.h /^ AAA_AVPCode code;$/;" m struct:avp
-code modules/auth_diameter/diameter_msg.h /^ AAA_AVPCode code;$/;" m struct:avp
-code modules/cpl-c/cpl_nonsig.h /^ unsigned int code;$/;" m struct:cpl_cmd
-code modules/pdt/domains.h /^ code_t code;$/;" m struct:_dc
-code modules/tm/t_hooks.h /^ int code;$/;" m struct:tmcb_params
-code_t modules/pdt/domains.h /^typedef int code_t;$/;" t
-code_terminator modules/pdt/pdt.c /^code_t code_terminator = 0;$/;" v
-code_valid modules/pdt/pdt.c /^inline code_t code_valid(code_t code)$/;" f
-codes modules/pa/reply.c /^int codes[] = {$/;" v
-codes modules/registrar/reply.c /^int codes[] = {$/;" v
-col db/db_res.h /^ } col;$/;" m struct:db_res
-collect_InReqs stats.c /^static int collect_InReqs(struct sip_snmp_obj *o, enum handler_op op)$/;" f file:
-collect_InResp stats.c /^static int collect_InResp(struct sip_snmp_obj *o, enum handler_op op)$/;" f file:
-collect_OutReqs stats.c /^static int collect_OutReqs(struct sip_snmp_obj *o, enum handler_op op)$/;" f file:
-collect_OutResp stats.c /^static int collect_OutResp(struct sip_snmp_obj *o, enum handler_op op)$/;" f file:
-collect_stats stats.c /^static int collect_stats(struct stats_s *s)$/;" f file:
-collect_this_stat stats.c 696;" d file:
-colon_case parser/parse_uri.c 176;" d file:
-colon_case test/p_uri.c 158;" d file:
-cols modules/dbtext/dbt_lib.h /^ dbt_column_p cols;$/;" m struct:_dbt_table
-column lex.yy.c /^ int column=1;$/;" v
-colv modules/dbtext/dbt_lib.h /^ dbt_column_p *colv;$/;" m struct:_dbt_table
-colv modules/dbtext/dbt_res.h /^ dbt_column_p colv;$/;" m struct:_dbt_result
-commandCode modules/acc/diam_message.h /^ AAACommandCode commandCode;$/;" m struct:_message_t
-commandCode modules/auth_diameter/diameter_msg.h /^ AAACommandCode commandCode;$/;" m struct:_message_t
-commands modules/mediaproxy/mediaproxy.c /^static cmd_export_t commands[] = {$/;" v file:
-comment parser/parse_via.h /^ str comment;$/;" m struct:via_body
-comment_nest lex.yy.c /^ static int comment_nest=0;$/;" v file:
-commit_transaction modules/postgres/dbase.c /^static int commit_transaction(db_con_t * _h)$/;" f file:
-comp_ip route.c /^inline static int comp_ip(struct ip_addr* ip, void* param, int op, int subtype)$/;" f file:
-comp_no route.c /^inline static int comp_no( int port, void *param, int op, int subtype )$/;" f file:
-comp_str route.c /^inline static int comp_str(char* str, void* param, int op, int subtype)$/;" f file:
-comp_strstr route.c /^inline static int comp_strstr(str* str, void* param, int op, int subtype)$/;" f file:
-compacthdr_type2str modules/exec/exec_hf.c /^static int compacthdr_type2str(int type, char **hname, int *hlen )$/;" f file:
-compare_location_placeid_rows modules/pa/location.c /^static int compare_location_placeid_rows(const void *v1, const void *v2)$/;" f file:
-compile_expresions modules/mangler/sdp_mangler.c /^int compile_expresions(char *port,char *ip)$/;" f
-compile_logs modules/cpl-c/cpl_log.c /^void compile_logs( str *log)$/;" f
-compiled main.c /^char compiled[]= __TIME__ " " __DATE__ ;$/;" v
-complete modules/jabber/xode.h /^ int complete;$/;" m struct:xode_struct
-complete tcp_conn.h /^ int complete; \/* 1 if one req has been fully read, 0 otherwise*\/$/;" m struct:tcp_req
-complete_uri modules/ext/ext.c /^static int complete_uri( str *user ,str *uri, struct sip_uri* puri )$/;" f file:
-completed_2xx modules/tm/t_stats.h /^ completed_6xx, completed_2xx;$/;" m struct:t_stats
-completed_3xx modules/tm/t_stats.h /^ stat_counter completed_3xx, completed_4xx, completed_5xx, $/;" m struct:t_stats
-completed_4xx modules/tm/t_stats.h /^ stat_counter completed_3xx, completed_4xx, completed_5xx, $/;" m struct:t_stats
-completed_5xx modules/tm/t_stats.h /^ stat_counter completed_3xx, completed_4xx, completed_5xx, $/;" m struct:t_stats
-completed_6xx modules/tm/t_stats.h /^ completed_6xx, completed_2xx;$/;" m struct:t_stats
-compose_hdr modules/avpops/avpops_impl.c /^inline static int compose_hdr(str *name, str *val, str *hdr, int new)$/;" f file:
-compute_ID usr_avp.c /^inline static unsigned short compute_ID( str *name )$/;" f file:
-compute_hash modules/pa/watcher.c /^unsigned int compute_hash(unsigned int _h, char* s, int len)$/;" f
-compute_hash modules/pdt/domains.c /^unsigned int compute_hash(char* s)$/;" f
-con modules/dbtext/dbt_res.h /^ dbt_cache_p con;$/;" m struct:_dbt_con
-con modules/mysql/my_con.h /^ MYSQL* con; \/* Connection representation *\/$/;" m struct:my_con
-con modules/postgres/con_postgres.h /^ PGconn *con; \/* this is the postgres connection *\/$/;" m struct:con_postgres
-conT parser/obsolete/strs.h 147;" d
-con_aliases tcp_conn.h /^ struct tcp_conn_alias con_aliases[TCP_CON_MAX_ALIASES];$/;" m struct:tcp_connection
-con_postgres modules/postgres/con_postgres.h /^struct con_postgres {$/;" s
-cond lump_struct.h /^ enum lump_conditions cond; \/* condition for LUMP_ADD_OPT *\/$/;" m union:lump::<anonymous>
-condition cfg.y /^condition: exp {$$=$1;}$/;" l
-config_check main.c /^int config_check = 0;$/;" v
-config_h config.h 38;" d
-conn_cmds tcp_conn.h /^enum conn_cmds { CONN_DESTROY=-3, CONN_ERROR=-2, CONN_EOF=-1, CONN_RELEASE, $/;" g
-connect_db modules/postgres/dbase.c /^static int connect_db(db_con_t* _h, const char* _db_url)$/;" f file:
-connected modules/postgres/con_postgres.h /^ int connected;$/;" m struct:con_postgres
-connection_id tcp_main.c /^static int* connection_id=0; \/* unique for each connection, used for $/;" v file:
-consume_credentials modules/auth/challenge.c /^int consume_credentials(struct sip_msg* _m, char* _s1, char* _s2)$/;" f
-consume_credentials scripts/serconf.sh /^ consume_credentials();$/;" f
-consume_request fifo_server.c /^static void consume_request( FILE *stream )$/;" f file:
-cont parser/obsolete/strs.h 146;" d
-cont_CASE parser/case_cont.h 124;" d
-contact modules/pa/presentity.h /^ str contact;$/;" m struct:presence_tuple
-contact modules/registrar/reply.c /^} contact = {0, 0, 0};$/;" v file:
-contact parser/contact/contact.h /^typedef struct contact {$/;" s
-contact parser/msg_parser.h /^ struct hdr_field* contact;$/;" m struct:sip_msg
-contact parser/parse_param.h /^ struct contact_hooks contact; \/* Contact hooks *\/$/;" m union:param_hooks
-contact_1918 modules/nathelper/nathelper.c /^contact_1918(struct sip_msg* msg)$/;" f file:
-contact_body parser/contact/parse_contact.h /^typedef struct contact_body {$/;" s
-contact_body_t parser/contact/parse_contact.h /^} contact_body_t;$/;" t
-contact_col modules/usrloc/ul_mod.c /^str contact_col = {CONTACT_COL, sizeof(CONTACT_COL) - 1}; \/* Name of column containing contact addresses *\/$/;" v
-contact_fields_t modules/mangler/contact_ops.h /^typedef struct uri_format contact_fields_t;$/;" t
-contact_flds_separator modules/mangler/contact_ops.h /^char *contact_flds_separator;$/;" v
-contact_flds_separator modules/mangler/mangler.c /^char *contact_flds_separator = DEFAULT_SEPARATOR;$/;" v
-contact_hooks parser/parse_param.h /^struct contact_hooks {$/;" s
-contact_iterator parser/contact/parse_contact.c /^int contact_iterator(contact_t** c, struct sip_msg* msg, contact_t* prev)$/;" f
-contact_parser parser/contact/parse_contact.c /^static inline int contact_parser(char* _s, int _l, contact_body_t* _c)$/;" f file:
-contact_t parser/contact/contact.h /^} contact_t;$/;" t
-contacts modules/registrar/save.c /^static inline int contacts(struct sip_msg* _m, contact_t* _c, udomain_t* _d, str* _a, str* _ua)$/;" f file:
-contacts modules/usrloc/urecord.h /^ ucontact_t* contacts; \/* One or more contact fields *\/$/;" m struct:urecord
-contacts parser/contact/parse_contact.h /^ contact_t* contacts; \/* List of contacts *\/$/;" m struct:contact_body
-content_disposition parser/msg_parser.h /^ struct hdr_field* content_disposition;$/;" m struct:sip_msg
-content_len tcp_conn.h /^ int content_len;$/;" m struct:tcp_req
-content_len_beg_case tcp_read.c 134;" d file:
-content_length parser/msg_parser.h /^ struct hdr_field* content_length;$/;" m struct:sip_msg
-content_type parser/msg_parser.h /^ struct hdr_field* content_type;$/;" m struct:sip_msg
-controlfd modules/nathelper/nathelper.c /^static int controlfd;$/;" v file:
-conv_10 modules/jabber/xsnprintf.c /^conv_10(register wide_int num, register bool_int is_unsigned,$/;" f file:
-conv_fp modules/jabber/xsnprintf.c /^conv_fp(register char format, register double num,$/;" f file:
-conv_p2 modules/jabber/xsnprintf.c /^conv_p2(register u_wide_int num, register int nbits,$/;" f file:
-convert_result modules/mysql/res.c /^int convert_result(db_con_t* _h, db_res_t* _r)$/;" f
-convert_result modules/postgres/db_res.c /^int convert_result(db_con_t* _h, db_res_t* _r)$/;" f
-convert_row modules/mysql/row.c /^int convert_row(db_con_t* _h, db_res_t* _res, db_row_t* _r)$/;" f
-convert_row_pg modules/postgres/db_res.c /^int convert_row_pg(db_con_t* _h, db_res_t* _res, db_row_t* _r, char **row_buf,$/;" f
-convert_rows modules/mysql/res.c /^static inline int convert_rows(db_con_t* _h, db_res_t* _r)$/;" f file:
-convert_rows modules/postgres/db_res.c /^static inline int convert_rows(db_con_t* _h, db_res_t* _r)$/;" f file:
-copy_route modules/tm/t_fifo.c 111;" d file:
-core mem/vq_malloc.h /^ char *core, *init_core, *core_end;$/;" m struct:vqm_block
-core_end mem/vq_malloc.h /^ char *core, *init_core, *core_end;$/;" m struct:vqm_block
-count lex.yy.c /^static void count()$/;" f file:
-count md5.h /^ UINT4 count[2]; \/* number of bits, modulo 2^64 (lsb first) *\/$/;" m
-count modules/mediaproxy/mediaproxy.c /^ int count; \/\/ how many clients are in array above$/;" m file:
-count modules/pdt/doc/web/request.php /^ $count = 1000;$/;" v
-count234 modules/jabber/tree234.c /^int count234(tree234 *t) {$/;" f
-countnode234 modules/jabber/tree234.c /^static int countnode234(node234 *n) {$/;" f file:
-counts modules/jabber/tree234.c /^ int counts[4];$/;" m struct:node234_Tag file:
-cpl_aux_process modules/cpl-c/cpl_nonsig.c /^void cpl_aux_process( int cmd_out, char *log_dir)$/;" f
-cpl_child_init modules/cpl-c/cpl.c /^static int cpl_child_init(int rank)$/;" f file:
-cpl_cmd modules/cpl-c/cpl_nonsig.h /^struct cpl_cmd {$/;" s
-cpl_db_bind modules/cpl-c/cpl_db.c /^int cpl_db_bind(char* db_url)$/;" f
-cpl_db_close modules/cpl-c/cpl_db.c /^void cpl_db_close()$/;" f
-cpl_db_init modules/cpl-c/cpl_db.c /^int cpl_db_init(char* db_url, char* db_table)$/;" f
-cpl_dbf modules/cpl-c/cpl_db.c /^static db_func_t cpl_dbf;$/;" v file:
-cpl_env modules/cpl-c/cpl.c /^struct cpl_enviroment cpl_env = {$/;" v
-cpl_enviroment modules/cpl-c/cpl_env.h /^struct cpl_enviroment {$/;" s
-cpl_err modules/cpl-c/cpl.c /^static struct cpl_error *cpl_err = &bad_req;$/;" v file:
-cpl_error modules/cpl-c/cpl.c /^struct cpl_error {$/;" s file:
-cpl_exit modules/cpl-c/cpl.c /^static int cpl_exit(void)$/;" f file:
-cpl_fct modules/cpl-c/cpl.c /^struct cpl_functions cpl_fct;$/;" v
-cpl_functions modules/cpl-c/cpl_env.h /^struct cpl_functions {$/;" s
-cpl_get modules/cpl-c/cpl_loader.c /^int cpl_get( FILE *fifo_stream, char *response_file )$/;" f
-cpl_init modules/cpl-c/cpl.c /^static int cpl_init(void)$/;" f file:
-cpl_interpreter modules/cpl-c/cpl_run.h /^struct cpl_interpreter {$/;" s
-cpl_invoke_script modules/cpl-c/cpl.c /^static int cpl_invoke_script(struct sip_msg* msg, char* str1, char* str2)$/;" f file:
-cpl_is_response_accept modules/cpl/cpl.c /^static int cpl_is_response_accept(struct sip_msg* msg, char* str1, char* str2)$/;" f file:
-cpl_is_response_redirect modules/cpl/cpl.c /^static int cpl_is_response_redirect(struct sip_msg* msg, char* str1, char* str2)$/;" f file:
-cpl_is_response_reject modules/cpl/cpl.c /^static int cpl_is_response_reject(struct sip_msg* msg, char* str1, char* str2)$/;" f file:
-cpl_load modules/cpl-c/cpl_loader.c /^int cpl_load( FILE *fifo_stream, char *response_file )$/;" f
-cpl_logs modules/cpl-c/cpl_log.c /^static str cpl_logs[MAX_LOG_NR];$/;" v file:
-cpl_port modules/cpl/cpl.c /^unsigned int cpl_port = 18011;$/;" v
-cpl_process_register modules/cpl-c/cpl.c /^static int cpl_process_register(struct sip_msg* msg, int no_rpl)$/;" f file:
-cpl_proxy_to_loc_set modules/cpl-c/cpl_sig.c /^int cpl_proxy_to_loc_set( struct sip_msg *msg, struct location **locs,$/;" f
-cpl_remove modules/cpl-c/cpl_loader.c /^int cpl_remove( FILE *fifo_stream, char *response_file )$/;" f
-cpl_run_script modules/cpl-c/cpl_run.c /^int cpl_run_script( struct cpl_interpreter *intr )$/;" f
-cpl_run_script modules/cpl/cpl.c /^static int cpl_run_script(struct sip_msg* msg, char* str1, char* str2)$/;" f file:
-cpl_server modules/cpl/cpl.c /^char *cpl_server = "127.0.0.1";$/;" v
-cpl_update_contact modules/cpl/cpl.c /^static int cpl_update_contact(struct sip_msg* msg, char* str1, char* str2)$/;" f file:
-crc32file crc.c /^int crc32file (char *name)$/;" f
-crc_16_tab crc.c /^unsigned short int crc_16_tab[] = { \/* CRC polynomial 0xA001 *\/$/;" v
-crc_32_tab crc.c /^unsigned long int crc_32_tab[] = { \/* CRC polynomial 0xedb88320 *\/$/;" v
-crcitt_string crc.c /^unsigned short crcitt_string( char *s, int len )$/;" f
-crcitt_string_array crc.c /^void crcitt_string_array( char *dst, str src[], int size )$/;" f
-create_headers modules/pa/notify.c /^static inline int create_headers(struct watcher* _w)$/;" f file:
-create_presentity modules/pa/subscribe.c /^int create_presentity(struct sip_msg* _m, struct pdomain* _d, str* _puri, $/;" f
-create_presentity_only modules/pa/presentity.c /^int create_presentity_only(struct sip_msg* _m, struct pdomain* _d, str* _puri, $/;" f
-create_rcv_uri modules/nathelper/nathelper.c /^create_rcv_uri(str* uri, struct sip_msg* m)$/;" f file:
-create_vars modules/exec/exec_hf.c /^static int create_vars(struct hf_wrapper *list, int offset)$/;" f file:
-cred_realm modules/acc/acc.c /^static inline str *cred_realm(struct sip_msg *rq)$/;" f file:
-cred_user modules/acc/acc.c /^static inline str *cred_user(struct sip_msg *rq)$/;" f file:
-credentials modules/postgres/serpgctl /^credentials()$/;" f
-credentials scripts/sc /^credentials()$/;" f
-credentials scripts/sc_unixsock /^credentials()$/;" f
-credentials scripts/ser_mysql.sh /^credentials()$/;" f
-crlf_default_skip_case tcp_read.c 127;" d file:
-crt lex.yy.c /^ char* crt;$/;" m struct:str_buf file:
-crt_avps usr_avp.c /^static struct usr_avp **crt_avps = &global_avps;$/;" v file:
-csEQ parser/obsolete/strs.h 105;" d
-csEq parser/obsolete/strs.h 104;" d
-cseQ parser/obsolete/strs.h 103;" d
-cseq modules/usrloc/ucontact.h /^ int cseq; \/* CSeq value *\/$/;" m struct:ucontact
-cseq parser/msg_parser.h /^ struct hdr_field* cseq;$/;" m struct:sip_msg
-cseq parser/obsolete/strs.h 102;" d
-cseq_CASE parser/case_cseq.h 35;" d
-cseq_body parser/parse_cseq.h /^struct cseq_body{$/;" s
-cseq_col modules/usrloc/ul_mod.c /^str cseq_col = {CSEQ_COL, sizeof(CSEQ_COL) - 1}; \/* Name of column containing cseq values *\/$/;" v
-cseq_n modules/tm/h_table.h /^ str from, callid, cseq_n, to;$/;" m struct:cell
-cstate modules/usrloc/ucontact.h /^typedef enum cstate {$/;" g
-cstate_t modules/usrloc/ucontact.h /^} cstate_t;$/;" t
-cur_entries modules/tm/h_table.h /^ unsigned long cur_entries;$/;" m struct:entry
-cur_mtime utils/fifo_relay/fifo_server.php /^ $cur_mtime = filemtime($fifo_clients);$/;" v
-current_bytes_allocated modules/postgres/aug_alloc.h /^ unsigned long current_bytes_allocated; \/* Running allocation total *\/$/;" m
-cvp modules/cpl-c/cpl_parser.c /^static xmlValidCtxt cvp; \/* validating context *\/$/;" v file:
-cvt_hex modules/auth_db/rfc2617.c /^inline void cvt_hex(HASH _b, HASHHEX _h)$/;" f
-d modules/jabber/xjab_worker.h /^ char *d; \/\/ user part delimiter for aliases$/;" m struct:_xj_jalias
-d modules/pa/dlist.h /^ pdomain_t* d; \/* Payload *\/$/;" m struct:dlist
-d modules/pa/hslot.h /^ struct pdomain* d; \/* Domain we belong to *\/$/;" m struct:hslot
-d modules/usrloc/dlist.h /^ udomain_t* d; \/* Payload *\/$/;" m struct:dlist
-d modules/usrloc/hslot.h /^ struct udomain* d; \/* Domain we belong to *\/$/;" m struct:hslot
-d_ll modules/usrloc/udomain.h /^ } d_ll;$/;" m struct:udomain
-d_ll modules/usrloc/urecord.h /^ } d_ll;$/;" m struct:urecord
-daemonize daemonize.c /^int daemonize(char* name)$/;" f
-damocles modules/tm/h_table.h /^ short damocles;$/;" m struct:cell
-data modules/acc/diam_message.h /^ str data;$/;" m struct:avp
-data modules/auth_diameter/diameter_msg.h /^ str data;$/;" m struct:avp
-data modules/jabber/xode.h /^ char* data;$/;" m struct:xode_struct
-data modules/usrloc/notify.h /^ void* data;$/;" m struct:notify_cb
-data route_struct.h /^ void* data;$/;" m union:action::<anonymous>
-data usr_avp.h /^ void *data;$/;" m struct:usr_avp
-data_len modules/registrar/reply.c /^ int data_len;$/;" m file:
-data_lump_h data_lump.h 41;" d
-data_lump_rpl_h data_lump_rpl.h 38;" d
-data_sz modules/jabber/xode.h /^ int data_sz;$/;" m struct:xode_struct
-database modules/mysql/my_id.h /^ str database; \/* Database, case sensitive *\/$/;" m struct:my_id
-database modules/pdt/doc/web/request.php /^$database="pdt";$/;" v
-date modules/sms/sms_funcs.h /^ char date[DATE_LEN];$/;" m struct:incame_sms
-db_cap db/db_cap.h /^typedef enum db_cap {$/;" g
-db_cap_t db/db_cap.h /^} db_cap_t;$/;" t
-db_close modules/mysql/dbase.c /^void db_close(db_con_t* _h)$/;" f
-db_close modules/postgres/dbase.c /^void db_close(db_con_t* _h)$/;" f
-db_close_f db/db.h /^typedef void (*db_close_f) (db_con_t* _h); $/;" t
-db_close_query modules/avpops/avpops_db.c /^void db_close_query( db_res_t *res )$/;" f
-db_columns modules/avpops/avpops.c /^static char *db_columns[6] = {"uuid","attribute","value",$/;" v file:
-db_columns modules/avpops/avpops_db.c /^static char **db_columns; \/* array with names of DB columns *\/$/;" v file:
-db_con modules/jabber/jabber.c /^static db_con_t** db_con;$/;" v file:
-db_con modules/msilo/msilo.c /^static db_con_t *db_con = NULL;$/;" v file:
-db_con modules/pdt/pdt.c /^static db_con_t *db_con = NULL;$/;" v file:
-db_con_t db/db_con.h /^} db_con_t;$/;" t
-db_delete modules/mysql/dbase.c /^int db_delete(db_con_t* _h, db_key_t* _k, db_op_t* _o, db_val_t* _v, int _n)$/;" f
-db_delete modules/postgres/dbase.c /^int db_delete(db_con_t* _h, db_key_t* _k, db_op_t* _o, db_val_t* _v, int _n)$/;" f
-db_delete_avp modules/avpops/avpops_db.c /^int db_delete_avp( str *uuid, str *username, str *domain, char *attr,$/;" f
-db_delete_f db/db.h /^typedef int (*db_delete_f) (db_con_t* _h, db_key_t* _k, db_op_t* _o, db_val_t* _v, int _n);$/;" t
-db_delete_ucontact modules/usrloc/ucontact.c /^int db_delete_ucontact(ucontact_t* _c)$/;" f
-db_delete_urecord modules/usrloc/urecord.c /^int db_delete_urecord(urecord_t* _r)$/;" f
-db_fifo db/db_fifo.c /^int db_fifo( FILE *fifo, char *response_file )$/;" f
-db_fifo_cmd db/db_fifo.h 35;" d
-db_flag modules/acc/acc_mod.c /^int db_flag = 0;$/;" v
-db_flags modules/avpops/avpops_db.h /^ int db_flags;$/;" m struct:db_scheme
-db_free_query modules/postgres/dbase.c /^int db_free_query(db_con_t* _h, db_res_t* _r)$/;" f
-db_free_result modules/mysql/dbase.c /^int db_free_result(db_con_t* _h, db_res_t* _r)$/;" f
-db_free_result_f db/db.h /^typedef int (*db_free_result_f) (db_con_t* _h, db_res_t* _r);$/;" t
-db_func db/db.h /^typedef struct db_func {$/;" s
-db_func_t db/db.h /^} db_func_t;$/;" t
-db_funcs modules/speeddial/speeddial.c /^db_func_t db_funcs; \/* Database functions *\/$/;" v
-db_handle modules/acc/acc.c /^static db_con_t* db_handle=0;$/;" v file:
-db_handle modules/auth_db/authorize.c /^static db_con_t* db_handle=0; \/* database connection handle *\/$/;" v file:
-db_handle modules/avp_db/avp_db.c /^static db_con_t* db_handle;$/;" v file:
-db_handle modules/domain/domain.c /^static db_con_t* db_handle=0;$/;" v file:
-db_handle modules/group/group.c /^static db_con_t* db_handle = 0; \/* Database connection handle *\/$/;" v file:
-db_handle modules/permissions/trusted.c /^static db_con_t* db_handle = 0;$/;" v file:
-db_handle modules/speeddial/speeddial.c /^db_con_t* db_handle=0; \/* Database connection handle *\/$/;" v
-db_handle modules/uri_db/checks.c /^static db_con_t* db_handle = 0; \/* Database connection handle *\/$/;" v file:
-db_hdl modules/avpops/avpops_db.c /^static db_con_t *db_hdl=0; \/* DB handler *\/$/;" v file:
-db_hdl modules/cpl-c/cpl_db.c /^static db_con_t* db_hdl=0;$/;" v file:
-db_init modules/mysql/dbase.c /^db_con_t* db_init(const char* _url)$/;" f
-db_init modules/postgres/dbase.c /^db_con_t *db_init(const char* _sqlurl)$/;" f
-db_init_f db/db.h /^typedef db_con_t* (*db_init_f) (const char* _sqlurl);$/;" t
-db_insert modules/mysql/dbase.c /^int db_insert(db_con_t* _h, db_key_t* _k, db_val_t* _v, int _n)$/;" f
-db_insert modules/postgres/dbase.c /^int db_insert(db_con_t* _h, db_key_t* _k, db_val_t* _v, int _n)$/;" f
-db_insert_f db/db.h /^typedef int (*db_insert_f) (db_con_t* _h, db_key_t* _k, db_val_t* _v, int _n);$/;" t
-db_insert_ucontact modules/usrloc/ucontact.c /^int db_insert_ucontact(ucontact_t* _c)$/;" f
-db_key_t db/db_key.h /^typedef const char* db_key_t;$/;" t
-db_load_avp modules/avpops/avpops_db.c /^db_res_t *db_load_avp( str *uuid, str *username, str *domain,$/;" f
-db_localtime modules/acc/acc_mod.c /^int db_localtime = 0;$/;" v
-db_missed_flag modules/acc/acc_mod.c /^int db_missed_flag = 0;$/;" v
-db_mode modules/domain/domain_mod.c /^int db_mode = 0; \/* Database usage mode: 0 = no cache, 1 = cache *\/$/;" v
-db_mode modules/permissions/permissions.c /^int db_mode = DISABLE_CACHE; \/* Database usage mode: 0=no cache, 1=cache *\/$/;" v
-db_mode modules/usrloc/ul_mod.c /^int db_mode = 0; \/* Database sync scheme: 0-no db, 1-write through, 2-write back *\/$/;" v
-db_op_t db/db_op.h /^typedef const char* db_op_t;$/;" t
-db_param modules/avpops/avpops_impl.h /^struct db_param$/;" s
-db_query modules/mysql/dbase.c /^int db_query(db_con_t* _h, db_key_t* _k, db_op_t* _op,$/;" f
-db_query modules/postgres/dbase.c /^int db_query(db_con_t* _h, db_key_t* _k, db_op_t* _op,$/;" f
-db_query_f db/db.h /^typedef int (*db_query_f) (db_con_t* _h, db_key_t* _k, $/;" t
-db_raw_query modules/mysql/dbase.c /^int db_raw_query(db_con_t* _h, char* _s, db_res_t** _r)$/;" f
-db_raw_query modules/postgres/dbase.c /^int db_raw_query(db_con_t* _h, char* _s, db_res_t** _r)$/;" f
-db_raw_query_f db/db.h /^typedef int (*db_raw_query_f) (db_con_t* _h, char* _s, db_res_t** _r);$/;" t
-db_read_watcherinfo modules/pa/watcher.c /^int db_read_watcherinfo(presentity_t *_p)$/;" f
-db_res db/db_res.h /^typedef struct db_res {$/;" s
-db_res_t db/db_res.h /^} db_res_t;$/;" t
-db_row db/db_row.h /^typedef struct db_row {$/;" s
-db_row_t db/db_row.h /^} db_row_t;$/;" t
-db_scheme modules/avpops/avpops_db.h /^struct db_scheme$/;" s
-db_scheme_list modules/avpops/avpops_db.c /^static struct db_scheme *db_scheme_list=0;$/;" v file:
-db_store_avp modules/avpops/avpops_db.c /^int db_store_avp( db_key_t *keys, db_val_t *vals, int n, char *table)$/;" f
-db_table modules/avp_db/avp_db.c /^static char* db_table = "usr_preferences";$/;" v file:
-db_table modules/jabber/jabber.c /^char *db_table = "jusers";$/;" v
-db_table modules/pdt/pdt.c /^char *db_table = "domains";$/;" v
-db_table_acc modules/acc/acc_mod.c /^char *db_table_acc="acc"; \/* name of database table> *\/$/;" v
-db_table_mc modules/acc/acc_mod.c /^char *db_table_mc="missed_calls";$/;" v
-db_type_t db/db_val.h /^} db_type_t;$/;" t
-db_update modules/mysql/dbase.c /^int db_update(db_con_t* _h, db_key_t* _k, db_op_t* _o, db_val_t* _v,$/;" f
-db_update modules/postgres/dbase.c /^int db_update(db_con_t* _h, db_key_t* _k, db_op_t* _o, db_val_t* _v,$/;" f
-db_update_f db/db.h /^typedef int (*db_update_f) (db_con_t* _h, db_key_t* _k, db_op_t* _o, db_val_t* _v,$/;" t
-db_update_presentity modules/pa/presentity.c /^int db_update_presentity(presentity_t* _p)$/;" f
-db_update_ucontact modules/usrloc/ucontact.c /^int db_update_ucontact(ucontact_t* _c)$/;" f
-db_url modules/acc/acc_mod.c /^static char *db_url=DEFAULT_DB_URL; \/* Database url *\/$/;" v file:
-db_url modules/auth_db/authdb_mod.c /^static str db_url = {DEFAULT_RODB_URL, DEFAULT_RODB_URL_LEN};$/;" v file:
-db_url modules/avp_db/avp_db.c /^static char* db_url = DEFAULT_RODB_URL; \/* Database URL *\/$/;" v file:
-db_url modules/domain/domain_mod.c /^static str db_url = {DEFAULT_RODB_URL, DEFAULT_RODB_URL_LEN};$/;" v file:
-db_url modules/group/group_mod.c /^static str db_url = {DEFAULT_RODB_URL, DEFAULT_RODB_URL_LEN};$/;" v file:
-db_url modules/jabber/jabber.c /^static char *db_url = "mysql:\/\/root at 127.0.0.1\/sip_jab";$/;" v file:
-db_url modules/pa/pa_mod.c /^str db_url;$/;" v
-db_url modules/pdt/pdt.c /^static char *db_url = "mysql:\/\/root at 127.0.0.1\/pdt";$/;" v file:
-db_url modules/permissions/permissions.c /^char* db_url = 0; \/* Don't connect to the database by default *\/$/;" v
-db_url modules/speeddial/speeddial.c /^char* db_url = DEFAULT_RODB_URL;$/;" v
-db_url modules/uri_db/uridb_mod.c /^static str db_url = {DEFAULT_RODB_URL, DEFAULT_RODB_URL_LEN};$/;" v file:
-db_url modules/usrloc/ul_mod.c /^str db_url = {DEFAULT_DB_URL, sizeof(DEFAULT_DB_URL) - 1}; \/* Database URL *\/$/;" v
-db_use_table_f db/db.h /^typedef int (*db_use_table_f)(db_con_t* _h, const char* _t);$/;" t
-db_val_t db/db_val.h /^} db_val_t;$/;" t
-dbex_exports db/example/dbexample.c /^static struct module_exports dbex_exports= { $/;" v file:
-dbf modules/avp_db/avp_db.c /^static db_func_t dbf;$/;" v file:
-dbg_msg modules/jabber/doc/web/subscribe.php /^function dbg_msg($message)$/;" f
-dbg_msg_qa udp_server.c /^static int dbg_msg_qa(char *buf, int len)$/;" f file:
-dblink modules/jabber/doc/web/subscribe.php /^ $dblink = mysql_connect($jab_db_srv, $jab_db_usr, $jab_db_pas) or html_die("Could not connect to Jabber database");$/;" v
-dblink modules/jabber/doc/web/subscribe.php /^ $dblink = mysql_connect($sip_db_srv, $sip_db_usr, $sip_db_pas) or$/;" v
-dbp modules/dbtext/dbt_lib.h /^ dbt_db_p dbp;$/;" m struct:_dbt_cache
-dbrow2avp modules/avpops/avpops_impl.c /^static int dbrow2avp(struct db_row *row, int flags, int_str attr,$/;" f file:
-dbt_cache_check_db modules/dbtext/dbt_lib.c /^int dbt_cache_check_db(str *_s)$/;" f
-dbt_cache_del_db modules/dbtext/dbt_lib.c /^int dbt_cache_del_db(str *_s)$/;" f
-dbt_cache_destroy modules/dbtext/dbt_lib.c /^int dbt_cache_destroy()$/;" f
-dbt_cache_free modules/dbtext/dbt_lib.c /^int dbt_cache_free(dbt_cache_p _dc)$/;" f
-dbt_cache_get_db modules/dbtext/dbt_lib.c /^dbt_cache_p dbt_cache_get_db(str *_s)$/;" f
-dbt_cache_p modules/dbtext/dbt_lib.h /^} dbt_cache_t, *dbt_cache_p;$/;" t
-dbt_cache_print modules/dbtext/dbt_lib.c /^int dbt_cache_print(int _f)$/;" f
-dbt_cache_t modules/dbtext/dbt_lib.h /^} dbt_cache_t, *dbt_cache_p;$/;" t
-dbt_close modules/dbtext/dbt_base.c /^void dbt_close(db_con_t* _h)$/;" f
-dbt_cmp_val modules/dbtext/dbt_res.c /^int dbt_cmp_val(dbt_val_p _vp, db_val_t* _v)$/;" f
-dbt_column_free modules/dbtext/dbt_tb.c /^int dbt_column_free(dbt_column_p dcp)$/;" f
-dbt_column_new modules/dbtext/dbt_tb.c /^dbt_column_p dbt_column_new(char *_s, int _l)$/;" f
-dbt_column_p modules/dbtext/dbt_lib.h /^} dbt_column_t, *dbt_column_p;$/;" t
-dbt_column_t modules/dbtext/dbt_lib.h /^} dbt_column_t, *dbt_column_p;$/;" t
-dbt_con_p modules/dbtext/dbt_res.h /^} dbt_con_t, *dbt_con_p;$/;" t
-dbt_con_t modules/dbtext/dbt_res.h /^} dbt_con_t, *dbt_con_p;$/;" t
-dbt_convert_result modules/dbtext/dbt_api.c /^int dbt_convert_result(db_con_t* _h, db_res_t* _r)$/;" f
-dbt_convert_row modules/dbtext/dbt_api.c /^int dbt_convert_row(db_con_t* _h, db_res_t* _res, db_row_t* _r)$/;" f
-dbt_convert_rows modules/dbtext/dbt_api.c /^int dbt_convert_rows(db_con_t* _h, db_res_t* _r)$/;" f
-dbt_db_del_table modules/dbtext/dbt_lib.c /^int dbt_db_del_table(dbt_cache_p _dc, str *_s)$/;" f
-dbt_db_free modules/dbtext/dbt_lib.c /^int dbt_db_free(dbt_db_p _dbp)$/;" f
-dbt_db_get_table modules/dbtext/dbt_lib.c /^tbl_cache_p dbt_db_get_table(dbt_cache_p _dc, str *_s)$/;" f
-dbt_db_p modules/dbtext/dbt_lib.h /^} dbt_db_t, *dbt_db_p;$/;" t
-dbt_db_t modules/dbtext/dbt_lib.h /^} dbt_db_t, *dbt_db_p;$/;" t
-dbt_delete modules/dbtext/dbt_base.c /^int dbt_delete(db_con_t* _h, db_key_t* _k, db_op_t* _o, db_val_t* _v, int _n)$/;" f
-dbt_free_columns modules/dbtext/dbt_api.c /^int dbt_free_columns(db_res_t* _r)$/;" f
-dbt_free_query modules/dbtext/dbt_base.c /^int dbt_free_query(db_con_t* _h, db_res_t* _r)$/;" f
-dbt_free_result modules/dbtext/dbt_api.c /^int dbt_free_result(db_res_t* _r)$/;" f
-dbt_free_row modules/dbtext/dbt_api.c /^int dbt_free_row(db_row_t* _r)$/;" f
-dbt_free_rows modules/dbtext/dbt_api.c /^int dbt_free_rows(db_res_t* _r)$/;" f
-dbt_get_columns modules/dbtext/dbt_api.c /^int dbt_get_columns(db_con_t* _h, db_res_t* _r)$/;" f
-dbt_get_refs modules/dbtext/dbt_res.c /^int* dbt_get_refs(dbt_table_p _dtp, db_key_t* _k, int _n)$/;" f
-dbt_get_result modules/dbtext/dbt_api.c /^int dbt_get_result(db_con_t* _h, db_res_t** _r)$/;" f
-dbt_init modules/dbtext/dbt_base.c /^db_con_t* dbt_init(const char* _sqlurl)$/;" f
-dbt_init_cache modules/dbtext/dbt_lib.c /^int dbt_init_cache()$/;" f
-dbt_insert modules/dbtext/dbt_base.c /^int dbt_insert(db_con_t* _h, db_key_t* _k, db_val_t* _v, int _n)$/;" f
-dbt_is_database modules/dbtext/dbt_util.c /^int dbt_is_database(str *_s)$/;" f
-dbt_is_neq_type modules/dbtext/dbt_res.c /^int dbt_is_neq_type(db_type_t _t0, db_type_t _t1)$/;" f
-dbt_load_file modules/dbtext/dbt_file.c /^dbt_table_p dbt_load_file(str *tbn, str *dbn)$/;" f
-dbt_new_result modules/dbtext/dbt_api.c /^db_res_t* dbt_new_result(void)$/;" f
-dbt_print_table modules/dbtext/dbt_file.c /^int dbt_print_table(dbt_table_p _dtp, str *_dbn)$/;" f
-dbt_query modules/dbtext/dbt_base.c /^int dbt_query(db_con_t* _h, db_key_t* _k, db_op_t* _op, db_val_t* _v, $/;" f
-dbt_raw_query modules/dbtext/dbt_base.c /^int dbt_raw_query(db_con_t* _h, char* _s, db_res_t** _r)$/;" f
-dbt_result_add_row modules/dbtext/dbt_res.c /^int dbt_result_add_row(dbt_result_p _dres, dbt_row_p _drp)$/;" f
-dbt_result_extract_fields modules/dbtext/dbt_res.c /^int dbt_result_extract_fields(dbt_table_p _dtp, dbt_row_p _drp,$/;" f
-dbt_result_free modules/dbtext/dbt_res.c /^int dbt_result_free(dbt_result_p _dres)$/;" f
-dbt_result_new modules/dbtext/dbt_res.c /^dbt_result_p dbt_result_new(dbt_table_p _dtp, int *_lres, int _sz)$/;" f
-dbt_result_new_row modules/dbtext/dbt_res.c /^dbt_row_p dbt_result_new_row(dbt_result_p _dres)$/;" f
-dbt_result_p modules/dbtext/dbt_res.h /^} dbt_result_t, *dbt_result_p;$/;" t
-dbt_result_print modules/dbtext/dbt_res.c /^int dbt_result_print(dbt_result_p _dres)$/;" f
-dbt_result_t modules/dbtext/dbt_res.h /^} dbt_result_t, *dbt_result_p;$/;" t
-dbt_row_free modules/dbtext/dbt_tb.c /^int dbt_row_free(dbt_table_p _dtp, dbt_row_p _drp)$/;" f
-dbt_row_match modules/dbtext/dbt_res.c /^int dbt_row_match(dbt_table_p _dtp, dbt_row_p _drp, int* _lkey,$/;" f
-dbt_row_new modules/dbtext/dbt_tb.c /^dbt_row_p dbt_row_new(int _nf)$/;" f
-dbt_row_p modules/dbtext/dbt_lib.h /^} dbt_row_t, *dbt_row_p;$/;" t
-dbt_row_set_val modules/dbtext/dbt_tb.c /^int dbt_row_set_val(dbt_row_p _drp, dbt_val_p _vp, int _t, int _idx)$/;" f
-dbt_row_t modules/dbtext/dbt_lib.h /^} dbt_row_t, *dbt_row_p;$/;" t
-dbt_row_update_val modules/dbtext/dbt_tb.c /^int dbt_row_update_val(dbt_row_p _drp, dbt_val_p _vp, int _t, int _idx)$/;" f
-dbt_table_add_row modules/dbtext/dbt_tb.c /^int dbt_table_add_row(dbt_table_p _dtp, dbt_row_p _drp)$/;" f
-dbt_table_check_row modules/dbtext/dbt_tb.c /^int dbt_table_check_row(dbt_table_p _dtp, dbt_row_p _drp)$/;" f
-dbt_table_free modules/dbtext/dbt_tb.c /^int dbt_table_free(dbt_table_p _dtp)$/;" f
-dbt_table_free_rows modules/dbtext/dbt_tb.c /^int dbt_table_free_rows(dbt_table_p _dtp)$/;" f
-dbt_table_new modules/dbtext/dbt_tb.c /^dbt_table_p dbt_table_new(char *_s, int _l)$/;" f
-dbt_table_p modules/dbtext/dbt_lib.h /^} dbt_table_t, *dbt_table_p;$/;" t
-dbt_table_t modules/dbtext/dbt_lib.h /^} dbt_table_t, *dbt_table_p;$/;" t
-dbt_table_update_flags modules/dbtext/dbt_tb.c /^int dbt_table_update_flags(dbt_table_p _dtp, int _f, int _o, int _m)$/;" f
-dbt_update modules/dbtext/dbt_base.c /^int dbt_update(db_con_t* _h, db_key_t* _k, db_op_t* _o, db_val_t* _v,$/;" f
-dbt_use_table modules/dbtext/dbt_api.c /^int dbt_use_table(db_con_t* _h, const char* _t)$/;" f
-dbt_val_p modules/dbtext/dbt_lib.h /^typedef db_val_t dbt_val_t, *dbt_val_p;$/;" t
-dbt_val_t modules/dbtext/dbt_lib.h /^typedef db_val_t dbt_val_t, *dbt_val_p;$/;" t
-dc modules/pdt/domains.h /^ dc_t *dc;$/;" m struct:_entry
-dc_t modules/pdt/domains.h /^} dc_t;$/;" t
-debug main.c /^int debug = L_NOTICE;$/;" v
-debug test/dns_query.c /^int debug=0;$/;" v
-decode2format modules/mangler/contact_ops.c /^decode2format (str uri, char separator, struct uri_format *format)$/;" f
-decode_contact modules/mangler/contact_ops.c /^decode_contact (struct sip_msg *msg,char *unused1,char *unused2)$/;" f
-decode_contact_header modules/mangler/contact_ops.c /^decode_contact_header (struct sip_msg *msg,char *unused1,char *unused2)$/;" f
-decode_mail_url modules/cpl-c/cpl_parser.c /^static inline char *decode_mail_url(char *p, char *p_end, char *url,$/;" f file:
-decode_mime_type parser/parse_content.c /^char* decode_mime_type(char *start, char *end, unsigned int *mime_type)$/;" f
-decode_pdu modules/sms/libsms_getsms.c /^inline int decode_pdu( struct modem *mdm, char *pdu, struct incame_sms *sms)$/;" f
-decode_uri modules/mangler/contact_ops.c /^decode_uri (str uri, char separator, str * result)$/;" f
-decrement_maxfwd modules/maxfwd/mf_funcs.c /^int decrement_maxfwd( struct sip_msg* msg , int x, str *s)$/;" f
-def_qv modules/ext/ext.c /^static qvalue_t def_qv = 1000;$/;" v file:
-def_table modules/avpops/avpops_db.c /^static char *def_table; \/* default DB table *\/$/;" v file:
-default_ modules/cpl-c/cpl_run.h /^ char *default_;$/;" m struct:cpl_interpreter::proxy_st
-default_allow_file modules/permissions/permissions.c /^static char* default_allow_file = DEFAULT_ALLOW_FILE;$/;" v file:
-default_deny_file modules/permissions/permissions.c /^static char* default_deny_file = DEFAULT_DENY_FILE;$/;" v file:
-default_expires modules/pa/pa_mod.c /^int default_expires = 3600; \/* Default expires value if not present in the message *\/$/;" v
-default_expires modules/registrar/reg_mod.c /^int default_expires = 3600; \/* Default expires value in seconds *\/$/;" v
-default_global_address receive.c /^str default_global_address={0,0};$/;" v
-default_global_port receive.c /^str default_global_port={0,0};$/;" v
-default_net modules/sms/sms.c /^int default_net = 0;$/;" v
-default_net_str modules/sms/sms.c /^char *default_net_str = 0;$/;" v
-default_priority modules/pa/pa_mod.c /^double default_priority = 0.5; \/* Default priority of presence tuple *\/$/;" v
-default_priority_percentage modules/pa/pa_mod.c /^static int default_priority_percentage = 50; \/* expressed as percentage because config file grammar does not support floats *\/$/;" v file:
-default_q modules/registrar/reg_mod.c /^qvalue_t default_q = Q_UNSPECIFIED; \/* Default q value multiplied by 1000 *\/$/;" v
-default_via_address receive.c /^str default_via_address={0,0};$/;" v
-default_via_port receive.c /^str default_via_port={0,0};$/;" v
-deinit_slot modules/pa/hslot.c /^void deinit_slot(hslot_t* _s)$/;" f
-deinit_slot modules/usrloc/hslot.c /^void deinit_slot(hslot_t* _s)$/;" f
-del234 modules/jabber/tree234.c /^void *del234(tree234 *t, void *e) {$/;" f
-del_client modules/extcmd/clients.h /^inline int del_client( int index )$/;" f
-del_lump data_lump.c /^struct lump* del_lump(struct sip_msg* msg, int offset, int len, int type)$/;" f
-del_nonshm_lump data_lump.c /^void del_nonshm_lump( struct lump** lump_list )$/;" f
-del_nonshm_lump_rpl data_lump_rpl.c /^void del_nonshm_lump_rpl(struct lump_rpl** list)$/;" f
-delay_time modules/jabber/jabber.c /^int delay_time = 90;$/;" v
-delayt modules/jabber/xjab_worker.h /^ int delayt;$/;" m struct:_xj_wlist
-dele_tl modules/tm/h_table.h /^ struct timer_link dele_tl;$/;" m struct:cell
-delete db/db.h /^ db_delete_f delete; \/* Delete from table *\/ $/;" m struct:db_func
-delete_cell modules/tm/timer.c /^static void delete_cell( struct cell *p_cell, int unlock )$/;" f file:
-delete_handler modules/tm/timer.c /^inline static void delete_handler( struct timer_link *dele_tl )$/;" f file:
-delete_list modules/cpl-c/sub_list.c /^void delete_list(struct node* head)$/;" f
-delete_ucontact modules/usrloc/urecord.c /^int delete_ucontact(urecord_t* _r, struct ucontact* _c)$/;" f
-delete_ucontact modules/usrloc/usrloc.h /^ delete_ucontact_t delete_ucontact;$/;" m struct:usrloc_api
-delete_ucontact_t modules/usrloc/urecord.h /^typedef int (*delete_ucontact_t)(urecord_t* _r, struct ucontact* _c);$/;" t
-delete_urecord modules/usrloc/udomain.c /^int delete_urecord(udomain_t* _d, str* _aor)$/;" f
-delete_urecord modules/usrloc/usrloc.h /^ delete_urecord_t delete_urecord;$/;" m struct:usrloc_api
-delete_urecord_t modules/usrloc/udomain.h /^typedef int (*delete_urecord_t)(udomain_t* _d, str* _a);$/;" t
-deleted modules/tm/t_stats.h /^ stat_counter deleted;$/;" m struct:t_stats
-deletesms modules/sms/libsms_getsms.c /^void deletesms(struct modem *mdm, int sim) {$/;" f
-delpos234 modules/jabber/tree234.c /^void *delpos234(tree234 *t, int index) {$/;" f
-delpos234_internal modules/jabber/tree234.c /^static void *delpos234_internal(tree234 *t, int index) {$/;" f file:
-delpostest modules/jabber/tree234.c /^void delpostest(int i) {$/;" f
-deltest modules/jabber/tree234.c /^void deltest(void *elem) {$/;" f
-demanded_size mem/vq_malloc.h /^ unsigned long demanded_size;$/;" m struct:vqm_frag
-deny modules/permissions/permissions.c /^static rule_file_t deny[MAX_RULE_FILES]; \/* Parsed deny files *\/$/;" v file:
-deny_suffix modules/permissions/permissions.c /^static char* deny_suffix = ".deny";$/;" v file:
-depth modules/jabber/xode.h /^ int depth;$/;" m struct:xode_stream_struct
-desc pt.h /^ char desc[MAX_PT_DESC];$/;" m struct:process_table
-desc_time_order modules/registrar/reg_mod.c /^int desc_time_order = 0; \/* By default do not order according to the descending modification time *\/$/;" v
-desc_time_order modules/usrloc/ul_mod.c /^int desc_time_order = 0; \/* By default do not enable timestamp ordering *\/ $/;" v
-dest_host modules/acc/diam_message.h /^ AAA_AVP *dest_host;$/;" m struct:_message_t
-dest_host modules/auth_diameter/diameter_msg.h /^ AAA_AVP *dest_host;$/;" m struct:_message_t
-dest_info ip_addr.h /^struct dest_info{$/;" s
-dest_realm modules/acc/diam_message.h /^ AAA_AVP *dest_realm;$/;" m struct:_message_t
-dest_realm modules/auth_diameter/diameter_msg.h /^ AAA_AVP *dest_realm;$/;" m struct:_message_t
-destroy modules/acc/acc_mod.c /^static void destroy(void)$/;" f file:
-destroy modules/auth/auth_mod.c /^static void destroy(void)$/;" f file:
-destroy modules/auth_db/authdb_mod.c /^static void destroy(void)$/;" f file:
-destroy modules/dbtext/dbtext.c /^static void destroy(void)$/;" f file:
-destroy modules/dispatcher/dispatcher.c /^void destroy(void)$/;" f
-destroy modules/domain/domain_mod.c /^static void destroy(void)$/;" f file:
-destroy modules/group/group_mod.c /^static void destroy(void)$/;" f file:
-destroy modules/jabber/jabber.c /^void destroy(void)$/;" f
-destroy modules/mangler/mangler.c /^destroy (void)$/;" f file:
-destroy modules/msilo/msilo.c /^void destroy(void)$/;" f
-destroy modules/speeddial/speeddial.c /^static void destroy(void)$/;" f file:
-destroy modules/uri_db/uridb_mod.c /^static void destroy(void)$/;" f file:
-destroy modules/usrloc/ul_mod.c /^static void destroy(void)$/;" f file:
-destroy modules/xlog/xlog.c /^void destroy(void)$/;" f
-destroy_avp usr_avp.c /^void destroy_avp( struct usr_avp *avp_del)$/;" f
-destroy_avp_list usr_avp.c /^inline void destroy_avp_list( struct usr_avp **list )$/;" f
-destroy_avp_list_unsafe usr_avp.c /^void destroy_avp_list_unsafe( struct usr_avp **list )$/;" f
-destroy_f sr_module.h /^ destroy_function destroy_f; \/* function called when the module should$/;" m struct:module_exports
-destroy_fifo fifo_server.c /^void destroy_fifo()$/;" f
-destroy_function sr_module.h /^typedef void (*destroy_function)();$/;" t
-destroy_ip_node modules/pike/ip_tree.c /^static inline void destroy_ip_node(struct ip_node *node)$/;" f file:
-destroy_ip_tree modules/pike/ip_tree.c /^void destroy_ip_tree()$/;" f
-destroy_kill modules/exec/kill.c /^void destroy_kill()$/;" f
-destroy_modules sr_module.c /^void destroy_modules()$/;" f
-destroy_report_queue modules/sms/sms_report.c /^void destroy_report_queue()$/;" f
-destroy_script_cb script_cb.c /^void destroy_script_cb()$/;" f
-destroy_tcp tcp_main.c /^void destroy_tcp()$/;" f
-destroy_timer timer.c /^void destroy_timer()$/;" f
-destroy_tmcb_lists modules/tm/t_hooks.c /^void destroy_tmcb_lists()$/;" f
-destroy_ulcb_list modules/usrloc/ul_callback.c /^void destroy_ulcb_list()$/;" f
-destructor_list modules/postgres/aug_alloc.c /^ MemDestructor *destructor_list;$/;" m struct:MemOpt file:
-detached_timer modules/tm/timer.c /^static struct timer detached_timer; \/* just to have a value to compare with*\/$/;" v file:
-device modules/sms/sms_funcs.h /^ char device[MAX_CHAR_BUF+1];$/;" m struct:modem
-dhash modules/pdt/domains.h /^ h_entry_t* dhash;$/;" m struct:_double_hash
-dhash modules/pdt/domains.h /^ unsigned int dhash;$/;" m struct:_dc
-dialog modules/pa/watcher.h /^ dlg_t* dialog; \/* Dialog handle *\/$/;" m struct:watcher
-dialog modules/tm/t_dlg.h /^struct dialog {$/;" s
-dialog modules/tm/uac_fifo.c /^ dlg_t* dialog;$/;" m struct:cb_data file:
-diam_attr modules/acc/acc.c /^static int diam_attr[] = { AVP_SIP_FROM_URI, AVP_SIP_TO_URI, AVP_SIP_OURI, $/;" v file:
-diam_status modules/acc/acc.c /^inline unsigned long diam_status(struct sip_msg *rq, str *phrase)$/;" f
-diameter_authorize modules/auth_diameter/authorize.c /^int diameter_authorize(struct hdr_field* hdr, str* p_method, struct sip_uri uri,$/;" f
-diameter_client_host modules/acc/acc_mod.c /^char* diameter_client_host="localhost";$/;" v
-diameter_client_host modules/auth_diameter/auth_diameter.c /^char* diameter_client_host = "localhost";$/;" v
-diameter_client_port modules/acc/acc_mod.c /^int diameter_client_port=3000;$/;" v
-diameter_client_port modules/auth_diameter/auth_diameter.c /^int diameter_client_port = 3000;$/;" v
-diameter_flag modules/acc/acc_mod.c /^int diameter_flag = 1;$/;" v
-diameter_is_user_in modules/auth_diameter/user_in.c /^int diameter_is_user_in(struct sip_msg* _m, char* _hf, char* _group)$/;" f
-diameter_missed_flag modules/acc/acc_mod.c /^int diameter_missed_flag = 2;$/;" v
-diameter_proxy_authorize modules/auth_diameter/auth_diameter.c /^int diameter_proxy_authorize(struct sip_msg* _msg, char* _realm, char* _s2)$/;" f
-diameter_www_authorize modules/auth_diameter/auth_diameter.c /^int diameter_www_authorize(struct sip_msg* _msg, char* _realm, char* _s2)$/;" f
-dig_cred parser/digest/digest_parser.h /^typedef struct dig_cred {$/;" s
-dig_cred_t parser/digest/digest_parser.h /^} dig_cred_t;$/;" t
-dig_err parser/digest/digest.h /^typedef enum dig_err {$/;" g
-dig_err_t parser/digest/digest.h /^} dig_err_t;$/;" t
-dig_par parser/digest/param_parser.h /^typedef enum dig_par {$/;" g
-dig_par_t parser/digest/param_parser.h /^} dig_par_t;$/;" t
-digest parser/digest/digest.h /^ dig_cred_t digest; \/* Parsed digest credentials *\/$/;" m struct:auth_body
-dir modules/flatstore/flat_id.h /^ str dir; \/* Database directory *\/ $/;" m struct:flat_id
-disable_core_dump main.c /^int disable_core_dump=0; \/* by default enabled *\/$/;" v
-disconnect_db modules/postgres/dbase.c /^static int disconnect_db(db_con_t* _h)$/;" f file:
-display parser/parse_to.h /^ str display; \/* Display Name *\/$/;" m struct:to_body
-display_name modules/pa/watcher.h /^ str display_name; \/* Display Name of watcher *\/$/;" m struct:watcher
-disposition parser/parse_disposition.h /^struct disposition {$/;" s
-disposition_param parser/parse_disposition.h /^struct disposition_param {$/;" s
-dive_CASE parser/case_dive.h 48;" d
-diversion parser/msg_parser.h /^ struct hdr_field* diversion;$/;" m struct:sip_msg
-dlg modules/tm/dlg.h /^typedef struct dlg {$/;" s
-dlg modules/tm/t_dlg.c /^dlg_t dlg=0;$/;" v
-dlg2hash modules/tm/uac.c /^static inline unsigned int dlg2hash( dlg_t* dlg )$/;" f file:
-dlg_confirmed_resp_uac modules/tm/dlg.c /^static inline int dlg_confirmed_resp_uac(dlg_t* _d, struct sip_msg* _m)$/;" f file:
-dlg_early_resp_uac modules/tm/dlg.c /^static inline int dlg_early_resp_uac(dlg_t* _d, struct sip_msg* _m)$/;" f file:
-dlg_hooks modules/tm/dlg.h /^typedef struct dlg_hooks {$/;" s
-dlg_hooks_t modules/tm/dlg.h /^} dlg_hooks_t;$/;" t
-dlg_id modules/tm/dlg.h /^typedef struct dlg_id {$/;" s
-dlg_id_t modules/tm/dlg.h /^} dlg_id_t;$/;" t
-dlg_matching modules/tm/t_lookup.c /^static inline int dlg_matching(struct cell *p_cell, struct sip_msg *ack )$/;" f file:
-dlg_new_resp_uac modules/tm/dlg.c /^static inline int dlg_new_resp_uac(dlg_t* _d, struct sip_msg* _m)$/;" f file:
-dlg_request_uas modules/tm/dlg.c /^int dlg_request_uas(dlg_t* _d, struct sip_msg* _m)$/;" f
-dlg_request_uas modules/tm/tm_load.h /^ dlg_request_uas_f dlg_request_uas;$/;" m struct:tm_binds
-dlg_request_uas_f modules/tm/dlg.h /^typedef int (*dlg_request_uas_f)(dlg_t* _d, struct sip_msg* _m);$/;" t
-dlg_response_uac modules/tm/dlg.c /^int dlg_response_uac(dlg_t* _d, struct sip_msg* _m)$/;" f
-dlg_response_uac modules/tm/tm_load.h /^ dlg_response_uac_f dlg_response_uac;$/;" m struct:tm_binds
-dlg_response_uac_f modules/tm/dlg.h /^typedef int (*dlg_response_uac_f)(dlg_t* _d, struct sip_msg* _m);$/;" t
-dlg_seq modules/tm/dlg.h /^typedef struct dlg_seq {$/;" s
-dlg_seq_t modules/tm/dlg.h /^} dlg_seq_t;$/;" t
-dlg_state modules/tm/dlg.h /^typedef enum dlg_state {$/;" g
-dlg_state_t modules/tm/dlg.h /^} dlg_state_t;$/;" t
-dlg_t modules/tm/dlg.h /^} dlg_t;$/;" t
-dlg_t modules/tm/t_dlg.h /^typedef struct dialog *dlg_t;$/;" t
-dlist modules/dispatcher/dispatch.c /^ ds_dest_p dlist;$/;" m struct:_ds_set file:
-dlist modules/pa/dlist.h /^typedef struct dlist {$/;" s
-dlist modules/usrloc/dlist.h /^typedef struct dlist {$/;" s
-dlist_t modules/pa/dlist.h /^} dlist_t;$/;" t
-dlist_t modules/usrloc/dlist.h /^} dlist_t;$/;" t
-dlm modules/jabber/xjab_worker.h /^ char dlm; \/\/ user part delimiter$/;" m struct:_xj_jalias
-dns_a_parser resolve.c /^struct a_rdata* dns_a_parser(unsigned char* rdata, unsigned char* end)$/;" f
-dns_aaaa_parser resolve.c /^struct aaaa_rdata* dns_aaaa_parser(unsigned char* rdata, unsigned char* end)$/;" f
-dns_cname_parser resolve.c /^struct cname_rdata* dns_cname_parser( unsigned char* msg, unsigned char* end,$/;" f
-dns_naptr_parser resolve.c /^struct naptr_rdata* dns_naptr_parser( unsigned char* msg, unsigned char* end,$/;" f
-dns_query resolve.h /^union dns_query{$/;" u
-dns_skipname resolve.c /^unsigned char* dns_skipname(unsigned char* p, unsigned char* end)$/;" f
-dns_srv_parser resolve.c /^struct srv_rdata* dns_srv_parser( unsigned char* msg, unsigned char* end,$/;" f
-do_RR modules/rr/record.c /^static inline int do_RR(struct sip_msg* _m, int _lr)$/;" f file:
-do_action action.c /^int do_action(struct action* a, struct sip_msg* msg)$/;" f
-do_duplicate_params parser/parse_param.c /^static inline int do_duplicate_params(param_t** _n, param_t* _p, int _shm)$/;" f file:
-do_duplicate_rr parser/parse_rr.c /^static inline int do_duplicate_rr(rr_t** _new, rr_t* _r, int _shm)$/;" f file:
-do_free_params parser/parse_param.c /^static inline void do_free_params(param_t* _p, int _shm)$/;" f file:
-do_free_rr parser/parse_rr.c /^static inline void do_free_rr(rr_t** _r, int _shm)$/;" f file:
-do_parse_rr_body parser/parse_rr.c /^static inline int do_parse_rr_body(char *buf, int len, rr_t **head)$/;" f file:
-do_read modules/acc/diam_tcp.c /^int do_read( int socket, rd_buf_t *p)$/;" f
-do_read modules/auth_diameter/tcp_comm.c /^int do_read( int socket, rd_buf_t *p)$/;" f
-do_script_action modules/cpl-c/cpl.c /^static inline int do_script_action(struct sip_msg *msg, int action)$/;" f file:
-do_script_download modules/cpl-c/cpl.c /^static inline int do_script_download(struct sip_msg *msg)$/;" f file:
-do_suid daemonize.c /^int do_suid()$/;" f
-doctype modules/pa/watcher.h /^typedef enum doctype {$/;" g
-doctype_name modules/pa/watcher.c /^char *doctype_name[] = {$/;" v
-doctype_t modules/pa/watcher.h /^} doctype_t;$/;" t
-does_uri_exist modules/uri_db/checks.c /^int does_uri_exist(struct sip_msg* _msg, char* _s1, char* _s2)$/;" f
-dom modules/usrloc/notify.c /^str dom = {"location", 8};$/;" v
-domain modules/domain/domain_mod.h /^ str domain;$/;" m struct:domain_list
-domain modules/pdt/doc/pdt.sql /^ domain VARCHAR(255) NOT NULL DEFAULT ""$/;" F
-domain modules/pdt/domains.h /^ char* domain;$/;" m struct:_dc
-domain modules/sms/sms.c /^str domain;$/;" v
-domain modules/usrloc/ucontact.h /^ str* domain; \/* Pointer to domain name *\/$/;" m struct:ucontact
-domain modules/usrloc/urecord.h /^ str* domain; \/* Pointer to domain we belong to *\/$/;" m struct:urecord
-domain parser/digest/digest_parser.h /^ str domain; \/* Domain part only *\/$/;" m struct:username
-domain scripts/sc /^domain() {$/;" f
-domain scripts/sc_unixsock /^domain() {$/;" f
-domain_code modules/pdt/doc/web/request.php /^ $domain_code = "not registered";$/;" v
-domain_code modules/pdt/doc/web/request.php /^ $domain_code = "registration failed"; $/;" v
-domain_code modules/pdt/doc/web/request.php /^ $domain_code = "";$/;" v
-domain_col modules/avpops/avpops_db.h /^ char *domain_col;$/;" m struct:db_scheme
-domain_col modules/domain/domain_mod.c /^str domain_col = {DOMAIN_COL, DOMAIN_COL_LEN}; \/* Name of domain column *\/$/;" v
-domain_col modules/usrloc/ul_mod.c /^str domain_col = {DOMAIN_COL, sizeof(DOMAIN_COL) - 1}; \/* Name of column containing domains *\/$/;" v
-domain_column modules/auth_db/authdb_mod.c /^str domain_column = {DOMAIN_COL, DOMAIN_COL_LEN};$/;" v
-domain_column modules/avp_db/avp_db.c /^static char* domain_column = "domain";$/;" v file:
-domain_column modules/group/group_mod.c /^str domain_column = {DOMAIN_COL, DOMAIN_COL_LEN};$/;" v
-domain_column modules/speeddial/speeddial.c /^char* domain_column = "domain";$/;" v
-domain_db_bind modules/domain/domain.c /^int domain_db_bind(char* db_url)$/;" f
-domain_db_close modules/domain/domain.c /^void domain_db_close()$/;" f
-domain_db_init modules/domain/domain.c /^int domain_db_init(char* db_url)$/;" f
-domain_db_ver modules/domain/domain.c /^int domain_db_ver(str* name)$/;" f
-domain_dbf modules/domain/domain.c /^static db_func_t domain_dbf;$/;" v file:
-domain_dump modules/domain/fifo.c /^static int domain_dump ( FILE* pipe, char* response_file )$/;" f file:
-domain_dump modules/domain/unixsock.c /^static int domain_dump(str* msg)$/;" f file:
-domain_fixup modules/registrar/reg_mod.c /^static int domain_fixup(void** param, int param_no)$/;" f file:
-domain_list modules/domain/domain_mod.h /^struct domain_list {$/;" s
-domain_prefix modules/speeddial/speeddial.c /^char* domain_prefix = NULL;$/;" v
-domain_reload modules/domain/fifo.c /^static int domain_reload ( FILE* pipe, char* response_file )$/;" f file:
-domain_reload modules/domain/unixsock.c /^static int domain_reload(str* msg)$/;" f file:
-domain_str modules/sms/sms.c /^char *domain_str = 0;$/;" v
-domain_suffix modules/enum/enum_mod.c /^char* domain_suffix = "e164.arpa.";$/;" v
-domain_table modules/domain/domain_mod.c /^str domain_table = {DOMAIN_TABLE, DOMAIN_TABLE_LEN}; \/* Name of domain table *\/$/;" v
-domains modules/pdt/doc/pdt.sql /^CREATE TABLE domains($/;" t
-dont_fork main.c /^int dont_fork = 0;$/;" v
-double2q qvalue.h /^static inline qvalue_t double2q(double q)$/;" f
-double2str modules/mysql/val.c /^static inline int double2str(double _v, char* _s, int* _l)$/;" f file:
-double2str modules/postgres/db_val.c /^static inline int double2str(double _v, char* _s, int* _l)$/;" f file:
-double_hash_t modules/pdt/domains.h /^} double_hash_t;$/;" t
-double_log db/db_fifo.c 96;" d file:
-double_val db/db_val.h /^ double double_val; \/* double value *\/$/;" m
-dprint dprint.c /^void dprint(char * format, ...)$/;" f
-dprint_h dprint.h 31;" d
-ds_dest_p modules/dispatcher/dispatch.c /^} ds_dest_t, *ds_dest_p;$/;" t file:
-ds_dest_t modules/dispatcher/dispatch.c /^} ds_dest_t, *ds_dest_p;$/;" t file:
-ds_destroy_list modules/dispatcher/dispatch.c /^int ds_destroy_list()$/;" f
-ds_fixup modules/dispatcher/dispatcher.c /^static int ds_fixup(void** param, int param_no)$/;" f file:
-ds_get_hash modules/dispatcher/dispatch.c /^unsigned int ds_get_hash(str *x, str *y)$/;" f
-ds_hash_callid modules/dispatcher/dispatch.c /^int ds_hash_callid(struct sip_msg *msg, unsigned int *hash)$/;" f
-ds_hash_fromuri modules/dispatcher/dispatch.c /^int ds_hash_fromuri(struct sip_msg *msg, unsigned int *hash)$/;" f
-ds_load_list modules/dispatcher/dispatch.c /^int ds_load_list(char *lfile)$/;" f
-ds_select_dst modules/dispatcher/dispatch.c /^int ds_select_dst(struct sip_msg *msg, char *set, char *alg)$/;" f
-ds_set_p modules/dispatcher/dispatch.c /^} ds_set_t, *ds_set_p;$/;" t file:
-ds_set_t modules/dispatcher/dispatch.c /^} ds_set_t, *ds_set_p;$/;" t file:
-ds_setidx_p modules/dispatcher/dispatch.c /^} ds_setidx_t, *ds_setidx_p;$/;" t file:
-ds_setidx_t modules/dispatcher/dispatch.c /^} ds_setidx_t, *ds_setidx_p;$/;" t file:
-dslistfile modules/dispatcher/dispatcher.c /^char *dslistfile = CFG_DIR"dispatcher.list";$/;" v
-dst modules/tm/h_table.h /^ struct dest_info dst;$/;" m struct:retr_buf
-dst_ip ip_addr.h /^ struct ip_addr dst_ip;$/;" m struct:receive_info
-dst_port ip_addr.h /^ unsigned short dst_port; \/* host byte order *\/$/;" m struct:receive_info
-dst_uri dset.c /^ char dst_uri[MAX_URI_SIZE];$/;" m struct:branch file:
-dst_uri parser/msg_parser.h /^ str dst_uri; \/* Destination URI, must be forwarded to this URI if len != 0 *\/$/;" m struct:sip_msg
-dst_uri_len dset.c /^ unsigned int dst_uri_len;$/;" m struct:branch file:
-dstrip_s modules/speeddial/speeddial.c /^str dstrip_s;$/;" v
-dtd modules/cpl-c/cpl_parser.c /^static xmlDtdPtr dtd; \/* DTD file *\/$/;" v file:
-dtd_file modules/cpl-c/cpl.c /^static char *dtd_file = 0; \/* name of the DTD file for CPL parser *\/$/;" v file:
-dtend modules/cpl-c/cpl_time.h /^ time_t dtend;$/;" m struct:_tmrec
-dtp modules/dbtext/dbt_lib.h /^ dbt_table_p dtp;$/;" m struct:_tbl_cache
-dtstart modules/cpl-c/cpl_time.h /^ time_t dtstart;$/;" m struct:_tmrec
-dump_all_statistic stats.c /^int dump_all_statistic()$/;" f
-dump_frag mem/vq_malloc.c /^void dump_frag( struct vqm_frag* f, int i )$/;" f
-dump_hdr_field parser/hf.c /^void dump_hdr_field( struct hdr_field* hf )$/;" f
-dump_request modules/extcmd/extcmd_funcs.c /^int dump_request(struct sip_msg *msg, char *para1, char *para2)$/;" f
-dump_statistic stats.c /^int dump_statistic(FILE *fp, struct stats_s *istats, int printheader)$/;" f
-dup_lump_list data_lump.c /^struct lump* dup_lump_list( struct lump *l )$/;" f
-dup_lump_list_r data_lump.c /^static struct lump *dup_lump_list_r( struct lump *l, $/;" f file:
-duplicate_addr modules/tm/uac_unixsock.c /^static int duplicate_addr(struct sockaddr_un** dest, struct sockaddr_un* addr)$/;" f file:
-duplicate_params parser/parse_param.c /^int duplicate_params(param_t** _n, param_t* _p)$/;" f
-duplicate_rr parser/parse_rr.c /^int duplicate_rr(rr_t** _new, rr_t* _r)$/;" f
-duplicate_str modules/avpops/avpops_parse.c 451;" d file:
-duplicate_str modules/cpl-c/cpl_proxy.h 38;" d
-duration modules/cpl-c/cpl_time.h /^ time_t duration;$/;" m struct:_tmrec
-e modules/pdt/domains.h /^ entry_t * e;$/;" m struct:_h_entry
-e2e_cancel modules/tm/t_fwd.c /^void e2e_cancel( struct sip_msg *cancel_msg, $/;" f
-e2e_cancel_branch modules/tm/t_fwd.c /^int e2e_cancel_branch( struct sip_msg *cancel_msg, struct cell *t_cancel, $/;" f
-eNT_ parser/obsolete/strs.h 288;" d
-eNt_ parser/obsolete/strs.h 287;" d
-early_media modules/acc/acc_mod.c /^int early_media = 0;$/;" v
-eat_line parser/parser_f.c /^char* eat_line(char* buffer, unsigned int len)$/;" f
-eat_lws_end parser/parser_f.h /^inline static char* eat_lws_end(char* p, char* pend)$/;" f
-eat_space_end parser/parser_f.h /^inline static char* eat_space_end(char* p, char* pend)$/;" f
-eat_spaces modules/sms/sms.c 151;" d file:
-eat_token2_end parser/parser_f.h /^inline static char* eat_token2_end(char* p, char* pend, char delim)$/;" f
-eat_token_end parser/parser_f.h /^inline static char* eat_token_end(char* p, char* pend)$/;" f
-ect_CASE parser/case_subj.h 35;" d
-elemcount modules/jabber/tree234.c /^ int elemcount;$/;" m file:
-elems modules/jabber/tree234.c /^ void *elems[3];$/;" m struct:node234_Tag file:
-elems modules/tm/t_fifo.c /^ struct hdr_avp *elems;$/;" m struct:tw_append file:
-empty modules/avpops/avpops_impl.c /^static str empty={"",0};$/;" v file:
-empty_hash_table modules/permissions/hash.c /^void empty_hash_table(struct trusted_list **hash_table)$/;" f
-empty_location_set modules/cpl-c/loc_set.h /^static inline void empty_location_set(struct location **loc_set)$/;" f
-enT_ parser/obsolete/strs.h 286;" d
-enable_double_rr modules/rr/rr_mod.c /^int enable_double_rr = 1; \/* Enable using of 2 RR by default *\/$/;" v
-enable_full_lr modules/rr/rr_mod.c /^int enable_full_lr = 0; \/* Disabled by default *\/$/;" v
-encode2format modules/mangler/contact_ops.c /^encode2format (str uri, struct uri_format *format)$/;" f
-encodeCPL modules/cpl-c/cpl_parser.c /^int encodeCPL( str *xml, str *bin, str *log)$/;" f
-encodeQuopri modules/mediaproxy/mediaproxy.c /^encodeQuopri(str buf)$/;" f file:
-encode_address_attr modules/cpl-c/cpl_parser.c /^static inline int encode_address_attr(xmlNodePtr node, char *node_ptr, char *buf_end)$/;" f file:
-encode_address_switch_attr modules/cpl-c/cpl_parser.c /^static inline int encode_address_switch_attr(xmlNodePtr node, char *node_ptr,$/;" f file:
-encode_contact modules/mangler/contact_ops.c /^encode_contact (struct sip_msg *msg, char *encoding_prefix,char *public_ip)$/;" f
-encode_lang_attr modules/cpl-c/cpl_parser.c /^static inline int encode_lang_attr(xmlNodePtr node, char *node_ptr, char *buf_end)$/;" f file:
-encode_location_attr modules/cpl-c/cpl_parser.c /^static inline int encode_location_attr(xmlNodePtr node, char *node_ptr,$/;" f file:
-encode_log_attr modules/cpl-c/cpl_parser.c /^static inline int encode_log_attr(xmlNodePtr node, char *node_ptr, char *buf_end)$/;" f file:
-encode_lookup_attr modules/cpl-c/cpl_parser.c /^static inline int encode_lookup_attr(xmlNodePtr node, char *node_ptr,$/;" f file:
-encode_mail_attr modules/cpl-c/cpl_parser.c /^static inline int encode_mail_attr(xmlNodePtr node, char *node_ptr, char *buf_end)$/;" f file:
-encode_node modules/cpl-c/cpl_parser.c /^int encode_node( xmlNodePtr node, char *p, char *p_end)$/;" f
-encode_priority_attr modules/cpl-c/cpl_parser.c /^static inline int encode_priority_attr(xmlNodePtr node, char *node_ptr, char *buf_end)$/;" f file:
-encode_proxy_attr modules/cpl-c/cpl_parser.c /^static inline int encode_proxy_attr(xmlNodePtr node, char *node_ptr,$/;" f file:
-encode_redirect_attr modules/cpl-c/cpl_parser.c /^static inline int encode_redirect_attr(xmlNodePtr node, char *node_ptr, char *buf_end)$/;" f file:
-encode_reject_attr modules/cpl-c/cpl_parser.c /^static inline int encode_reject_attr(xmlNodePtr node, char *node_ptr, char *buf_end)$/;" f file:
-encode_rmvloc_attr modules/cpl-c/cpl_parser.c /^static inline int encode_rmvloc_attr(xmlNodePtr node, char *node_ptr, char *buf_end)$/;" f file:
-encode_string_attr modules/cpl-c/cpl_parser.c /^static inline int encode_string_attr(xmlNodePtr node, char *node_ptr, char *buf_end)$/;" f file:
-encode_string_switch_attr modules/cpl-c/cpl_parser.c /^static inline int encode_string_switch_attr(xmlNodePtr node, char *node_ptr,$/;" f file:
-encode_sub_attr modules/cpl-c/cpl_parser.c /^static inline int encode_sub_attr(xmlNodePtr node, char *node_ptr, char *buf_end)$/;" f file:
-encode_subaction_attr modules/cpl-c/cpl_parser.c /^static inline int encode_subaction_attr(xmlNodePtr node, char *node_ptr,$/;" f file:
-encode_time_attr modules/cpl-c/cpl_parser.c /^static inline int encode_time_attr(xmlNodePtr node, char *node_ptr,$/;" f file:
-encode_time_switch_attr modules/cpl-c/cpl_parser.c /^static inline int encode_time_switch_attr(xmlNodePtr node, char *node_ptr,$/;" f file:
-encode_uri modules/mangler/contact_ops.c /^encode_uri (str uri, char *encoding_prefix, char *public_ip,char separator, str * result)$/;" f
-end modules/postgres/aug_alloc.c /^ char *end;$/;" m struct:MemHeadStruct file:
-end_check mem/vq_malloc.h /^ char *end_check;$/;" m struct:vqm_frag
-end_pidf_doc modules/pa/pidf.c /^int end_pidf_doc(str* _b, int _l)$/;" f
-end_request modules/tm/h_table.h /^ char *end_request;$/;" m struct:ua_server
-end_winfo_doc modules/pa/watcher.c /^int end_winfo_doc(str* _b, int _l)$/;" f
-end_xpidf_doc modules/pa/xpidf.c /^int end_xpidf_doc(str* _b, int _l)$/;" f
-endtoendId modules/acc/diam_message.h /^ AAAMsgIdentifier endtoendId;$/;" m struct:_message_t
-endtoendId modules/auth_diameter/diameter_msg.h /^ AAAMsgIdentifier endtoendId;$/;" m struct:_message_t
-ent_ parser/obsolete/strs.h 285;" d
-entries modules/pike/ip_tree.h /^ } entries[MAX_IP_BRANCHES];$/;" m struct:ip_tree
-entry modules/pike/ip_tree.h /^ struct entry {$/;" s struct:ip_tree
-entry modules/tm/h_table.h /^typedef struct entry$/;" s
-entry_lock_set modules/pike/ip_tree.h /^ gen_lock_set_t *entry_lock_set;$/;" m struct:ip_tree
-entry_semaphore modules/tm/lock.c /^gen_lock_set_t* entry_semaphore=0;$/;" v
-entry_t modules/pdt/domains.h /^} entry_t;$/;" t
-entry_type modules/tm/h_table.h /^}entry_type;$/;" t
-entrys modules/tm/h_table.h /^ struct entry entrys[ TABLE_ENTRIES ];$/;" m struct:s_table
-enum_fixup modules/enum/enum_mod.c /^static int enum_fixup(void** param, int param_no)$/;" f file:
-enum_query_0 modules/enum/enum.c /^int enum_query_0(struct sip_msg* _msg, char* _str1, char* _str2)$/;" f
-enum_query_1 modules/enum/enum.c /^int enum_query_1(struct sip_msg* _msg, char* _suffix, char* _str2)$/;" f
-enum_query_2 modules/enum/enum.c /^int enum_query_2(struct sip_msg* _msg, char* _suffix, char* _service)$/;" f
-env modules/exec/exec_hf.h /^ char** env;$/;" m struct:env
-env modules/exec/exec_hf.h /^typedef struct env {$/;" s
-environment_t modules/exec/exec_hf.h /^} environment_t;$/;" t
-envvar modules/exec/exec_hf.h /^ char *envvar;$/;" m struct:hf_wrapper
-eoh parser/msg_parser.h /^ char* eoh; \/* pointer to the end of header (if found) or null *\/$/;" m struct:sip_msg
-eol modules/tm/t_fifo.c /^static struct iovec eol={"\\n",1};$/;" v file:
-eol_line modules/tm/t_fifo.c 94;" d file:
-eol_line_len modules/tm/t_fifo.c 92;" d file:
-eol_line_s modules/tm/t_fifo.c 91;" d file:
-equalop cfg.y /^equalop: EQUAL_T {$$=EQUAL_OP; }$/;" l
-err modules/jabber/doc/web/subscribe.php /^ $err = substr($err1, 0, strlen($err1)-strlen($err2));$/;" v
-err modules/sl/sl_stats.h /^ unsigned long err[RT_END];$/;" m struct:sl_stats
-err1 modules/jabber/doc/web/subscribe.php /^ $err1 = stristr($buf_recv, "<error ");$/;" v
-err1 modules/jabber/doc/web/subscribe.php /^ $err1 = strstr($err1, ">");$/;" v
-err1 modules/jabber/doc/web/subscribe.php /^ $err1 = substr($err1, 1);$/;" v
-err1 modules/jabber/doc/web/subscribe.php /^ $err1 = substr($err1, 7);$/;" v
-err2 modules/jabber/doc/web/subscribe.php /^ $err2 = strstr($err1, "<\/error>");$/;" v
-err2reason_phrase error.c /^int err2reason_phrase( $/;" f
-err_code modules/cpl-c/cpl.c /^ int err_code;$/;" m struct:cpl_error file:
-err_msg modules/cpl-c/cpl.c /^ char *err_msg;$/;" m struct:cpl_error file:
-errfile modules/jabber/doc/web/libjab.php /^ $errfile = "\/tmp\/php_error.log";$/;" v
-errmsg modules/jabber/doc/web/libjab.php /^ $errmsg = "Error: $errno - $errstr\\n";$/;" v
-error modules/jabber/tree234.c /^void error(char *fmt, ...) {$/;" f
-error parser/parse_cseq.h /^ int error; \/* Error code *\/$/;" m struct:cseq_body
-error parser/parse_to.h /^ int error; \/* Error code *\/$/;" m struct:to_body
-error parser/parse_via.h /^ int error;$/;" m struct:via_body
-error tcp_conn.h /^ enum tcp_req_errors error;$/;" m struct:tcp_req
-error_h error.h 30;" d
-error_info modules/pa/reply.c /^str error_info[] = {$/;" v
-error_info modules/registrar/reply.c /^str error_info[] = {$/;" v
-error_text error.c /^char *error_text( int code )$/;" f
-errors proxy.h /^ int errors;$/;" m struct:proxy_l
-escape_str modules/pa/watcher.c /^void escape_str(str *unescaped)$/;" f
-estimated_overhead_per_alloc modules/postgres/aug_alloc.h /^ int estimated_overhead_per_alloc; \/* assumes malloc overhead$/;" m
-etag parser/parse_sipifmatch.h /^typedef struct etag {$/;" s
-etag_parser parser/parse_sipifmatch.c /^etag_parser(char *_s, int _l, str *_e)$/;" f
-etag_t parser/parse_sipifmatch.h /^} etag_t;$/;" t
-eval_elem route.c /^static int eval_elem(struct expr* e, struct sip_msg* msg)$/;" f file:
-eval_expr route.c /^int eval_expr(struct expr* e, struct sip_msg* msg)$/;" f
-even_CASE parser/case_even.h 35;" d
-event modules/pa/watcher.h /^ watcher_event_t event;$/;" m struct:watcher
-event parser/msg_parser.h /^ struct hdr_field* event;$/;" m struct:sip_msg
-event parser/parse_event.h /^typedef struct event {$/;" s
-event_body_parse modules/pa/pidf.c /^xmlDocPtr event_body_parse(char *event_body)$/;" f
-event_package modules/pa/watcher.h /^ int event_package; \/* event package being watched *\/$/;" m struct:watcher
-event_package_from_string modules/pa/watcher.c /^int event_package_from_string(str *epname) $/;" f
-event_package_name modules/pa/watcher.c /^char *event_package_name[] = {$/;" v
-event_parser parser/parse_event.c /^static inline int event_parser(char* _s, int _l, event_t* _e)$/;" f file:
-event_t parser/parse_event.h /^} event_t;$/;" t
-eventlist modules/pa/pa.sql /^create table eventlist ($/;" t
-eventlistitem modules/pa/pa.sql /^create table eventlistitem ($/;" t
-exec_exports modules/exec/exec_mod.c /^struct module_exports exec_exports = {$/;" v
-exec_msg modules/exec/exec.c /^int exec_msg(struct sip_msg *msg, char *cmd )$/;" f
-exec_post_cb script_cb.c /^void exec_post_cb( struct sip_msg *msg)$/;" f
-exec_pre_cb script_cb.c /^int exec_pre_cb( struct sip_msg *msg)$/;" f
-exec_shutdown modules/exec/exec_mod.c /^void exec_shutdown()$/;" f
-exec_str modules/exec/exec.c /^int exec_str(struct sip_msg *msg, char *cmd, char *param, int param_len) {$/;" f
-executeCPLForSIPMessage modules/cpl/jcpli.c /^int executeCPLForSIPMessage(char *msgContent, int msgLength, char *serverAddress, int serverPort, char **pRespBuff, int *pRespLen)$/;" f
-existing_subscription modules/pa/subscribe.c /^int existing_subscription(struct sip_msg* _m, char* _domain, char* _s2)$/;" f
-exists_ulcb_type modules/usrloc/ul_callback.h 68;" d
-exp cfg.y /^exp: exp AND exp { $$=mk_exp(AND_OP, $1, $3); }$/;" l
-exp_body parser/parse_expires.h /^typedef struct exp_body {$/;" s
-exp_body_t parser/parse_expires.h /^} exp_body_t;$/;" t
-exp_elem cfg.y /^exp_elem: METHOD strop STRING {$$= mk_elem( $2, STRING_ST, $/;" l
-exp_stm cfg.y /^exp_stm: cmd { $$=$1; }$/;" l
-expi_CASE parser/case_expi.h 55;" d
-expire modules/jabber/xjab_jcon.h /^ int expire; \/\/ time when the open connection is expired$/;" m struct:_xj_jcon
-expire modules/jabber/xjab_util.h /^ int *expire; \/\/ expire time of the queued message$/;" m struct:_xj_jmsg_queue
-expired modules/pa/pdomain.h /^ int expired; \/* Number of expired presentities *\/$/;" m struct:pdomain
-expired modules/usrloc/udomain.h /^ int expired; \/* Number of expired contacts *\/$/;" m struct:udomain
-expires modules/pa/presentity.h /^ time_t expires;$/;" m struct:presence_tuple
-expires modules/pa/watcher.h /^ time_t expires; \/* Absolute of the expiration *\/$/;" m struct:watcher
-expires modules/pike/ip_tree.h /^ unsigned int expires;$/;" m struct:ip_node
-expires modules/usrloc/ucontact.h /^ time_t expires; \/* expires parameter *\/$/;" m struct:ucontact
-expires parser/contact/contact.h /^ param_t* expires; \/* expires parameter hook *\/$/;" m struct:contact
-expires parser/msg_parser.h /^ struct hdr_field* expires;$/;" m struct:sip_msg
-expires parser/parse_param.h /^ struct param* expires; \/* expires parameter *\/$/;" m struct:contact_hooks
-expires timer.h /^ unsigned int expires;$/;" m struct:sr_timer
-expires_col modules/usrloc/ul_mod.c /^str expires_col = {EXPIRES_COL, sizeof(EXPIRES_COL) - 1}; \/* Name of column containing expires values *\/$/;" v
-expires_parser parser/parse_expires.c /^static inline int expires_parser(char* _s, int _l, exp_body_t* _e)$/;" f file:
-exports modules/acc/acc_mod.c /^struct module_exports exports= {$/;" v
-exports modules/auth/auth_mod.c /^struct module_exports exports = {$/;" v
-exports modules/auth_db/authdb_mod.c /^struct module_exports exports = {$/;" v
-exports modules/auth_diameter/auth_diameter.c /^struct module_exports exports = {$/;" v
-exports modules/auth_radius/authrad_mod.c /^struct module_exports exports = {$/;" v
-exports modules/avp/avp.c /^struct module_exports exports = {$/;" v
-exports modules/avp_db/avp_db.c /^struct module_exports exports = {$/;" v
-exports modules/avp_radius/avp_radius.c /^struct module_exports exports = {$/;" v
-exports modules/avpops/avpops.c /^struct module_exports exports = {$/;" v
-exports modules/cpl-c/cpl.c /^struct module_exports exports = {$/;" v
-exports modules/cpl/cpl.c /^struct module_exports exports = {$/;" v
-exports modules/dbtext/dbtex/dbtex.c /^struct module_exports exports= { $/;" v
-exports modules/dbtext/dbtext.c /^struct module_exports exports = { $/;" v
-exports modules/dispatcher/dispatcher.c /^struct module_exports exports= {$/;" v
-exports modules/diversion/diversion.c /^struct module_exports exports = {$/;" v
-exports modules/domain/domain_mod.c /^struct module_exports exports = {$/;" v
-exports modules/enum/enum_mod.c /^struct module_exports exports = {$/;" v
-exports modules/ext/ext.c /^struct module_exports exports = {$/;" v
-exports modules/extcmd/extcmd.c /^struct module_exports exports= {$/;" v
-exports modules/flatstore/flatstore_mod.c /^struct module_exports exports = { $/;" v
-exports modules/gflags/gflags.c /^struct module_exports exports = {$/;" v
-exports modules/group/group_mod.c /^struct module_exports exports = {$/;" v
-exports modules/group_radius/grouprad_mod.c /^struct module_exports exports = {$/;" v
-exports modules/jabber/jabber.c /^struct module_exports exports= {$/;" v
-exports modules/mangler/mangler.c /^struct module_exports exports = {$/;" v
-exports modules/mediaproxy/mediaproxy.c /^struct module_exports exports = {$/;" v
-exports modules/msilo/msilo.c /^struct module_exports exports= {$/;" v
-exports modules/mysql/db_mod.c /^struct module_exports exports = { $/;" v
-exports modules/nathelper/nathelper.c /^struct module_exports exports = {$/;" v
-exports modules/options/mod_options.c /^struct module_exports exports = {$/;" v
-exports modules/pa/pa_mod.c /^struct module_exports exports = {$/;" v
-exports modules/pdt/pdt.c /^struct module_exports exports = {$/;" v
-exports modules/permissions/permissions.c /^struct module_exports exports = {$/;" v
-exports modules/pike/pike.c /^struct module_exports exports= {$/;" v
-exports modules/postgres/db_mod.c /^struct module_exports exports = { $/;" v
-exports modules/print/print.c /^struct module_exports exports = {$/;" v
-exports modules/registrar/reg_mod.c /^struct module_exports exports = {$/;" v
-exports modules/rr/rr_mod.c /^struct module_exports exports = {$/;" v
-exports modules/sms/sms.c /^struct module_exports exports= {$/;" v
-exports modules/speeddial/speeddial.c /^struct module_exports exports = {$/;" v
-exports modules/textops/textops.c /^struct module_exports exports= {$/;" v
-exports modules/uri/uri_mod.c /^struct module_exports exports = {$/;" v
-exports modules/uri_db/uridb_mod.c /^struct module_exports exports = {$/;" v
-exports modules/uri_radius/urirad_mod.c /^struct module_exports exports = {$/;" v
-exports modules/usrloc/ul_mod.c /^struct module_exports exports = {$/;" v
-exports modules/xlog/xlog.c /^struct module_exports exports= {$/;" v
-exports sr_module.h /^ struct module_exports* exports;$/;" m struct:sr_module
-expr cfg.tab.c /^ struct expr* expr;$/;" m union:YYSTYPE file:
-expr cfg.tab.h /^ struct expr* expr;$/;" m union:YYSTYPE
-expr route_struct.h /^ struct expr* expr;$/;" m union:expr::<anonymous>
-expr route_struct.h /^struct expr{$/;" s
-expression modules/permissions/rule.h /^typedef struct expression_struct expression;$/;" t
-expression_struct modules/permissions/rule.h /^struct expression_struct {$/;" s
-ext_child_init modules/ext/ext.c /^static int ext_child_init(int child)$/;" f file:
-ext_rewrite modules/ext/ext.c /^static int ext_rewrite(struct sip_msg *msg, char *cmd, int type )$/;" f file:
-ext_rewriteuri modules/ext/ext.c /^static int ext_rewriteuri(struct sip_msg *msg, char *cmd, char *foo_str )$/;" f file:
-ext_rewriteuser modules/ext/ext.c /^static int ext_rewriteuser(struct sip_msg *msg, char *cmd, char *foo_str )$/;" f file:
-extcmd_child_init modules/extcmd/extcmd.c /^int extcmd_child_init(int rank)$/;" f
-extcmd_init modules/extcmd/extcmd.c /^static int extcmd_init(void)$/;" f file:
-extcmd_server_process modules/extcmd/extcmd_funcs.c /^void extcmd_server_process( int server_sock )$/;" f
-extra_data tcp_conn.h /^ void* extra_data; \/* extra data associated to the connection, 0 for tcp*\/$/;" m struct:tcp_connection
-extra_objs Makefile /^extra_objs=$(extra_sources:.c=.o)$/;" m
-extra_sources Makefile /^extra_sources=$(wildcard $(addsuffix \/*.c, $(static_modules_path)))$/;" m
-extract_aor modules/registrar/common.c /^int extract_aor(str* _uri, str* _a)$/;" f
-extract_body modules/nathelper/nhelpr_funcs.c /^int extract_body(struct sip_msg *msg, str *body )$/;" f
-extract_mediaip modules/nathelper/nathelper.c /^extract_mediaip(str *body, str *mediaip, int *pf)$/;" f file:
-extract_mediaport modules/nathelper/nathelper.c /^extract_mediaport(str *body, str *mediaport)$/;" f file:
-extract_plain_uri modules/pa/subscribe.c /^static int extract_plain_uri(str* _uri)$/;" f file:
-f fifo_server.h /^ fifo_cmd *f;$/;" m struct:fifo_command
-f modules/jabber/xode.h /^ xode_stream_onNode f;$/;" m struct:xode_stream_struct
-f modules/jabber/xpool.c /^ xode_pool_cleaner f;$/;" m struct:xode_pool_free file:
-f unixsock_server.h /^ unixsock_f* f; \/* Function to be called *\/$/;" m struct:unixsock_cmd
-f1 modules/jabber/sha.c 83;" d file:
-f2 modules/jabber/sha.c 84;" d file:
-f3 modules/jabber/sha.c 85;" d file:
-fORW parser/obsolete/strs.h 197;" d
-fORw parser/obsolete/strs.h 196;" d
-fOrW parser/obsolete/strs.h 195;" d
-fOrw parser/obsolete/strs.h 194;" d
-fROM parser/obsolete/strs.h 82;" d
-fROm parser/obsolete/strs.h 81;" d
-fRoM parser/obsolete/strs.h 80;" d
-fRom parser/obsolete/strs.h 79;" d
-f_malloc_h mem/f_malloc.h 40;" d
-f_tmp cfg.tab.c /^static void* f_tmp;$/;" v file:
-failed_on_send stats.h /^ failed_on_send; $/;" m struct:stats_s
-failed_transactions modules/acc/acc_mod.c /^int failed_transactions = 0;$/;" v
-failure modules/cpl-c/cpl_run.h /^ char *failure;$/;" m struct:cpl_interpreter::proxy_st
-failure_rlist route.c /^struct action* failure_rlist[FAILURE_RT_NO];$/;" v
-failure_route_stm cfg.y /^failure_route_stm: ROUTE_FAILURE LBRACK NUMBER RBRACK LBRACE actions RBRACE {$/;" l
-failures modules/sl/sl_stats.h /^ unsigned long failures;$/;" m struct:sl_stats
-fake_reply modules/tm/timer.c /^static void fake_reply(struct cell *t, int branch, int code )$/;" f file:
-fake_req modules/tm/t_reply.c /^static inline int fake_req(struct sip_msg *faked_req, $/;" f file:
-faked_env modules/tm/t_reply.c /^static inline void faked_env( struct cell *t,struct sip_msg *msg)$/;" f file:
-fastlock_h fastlock.h 49;" d
-fd modules/extcmd/clients.h /^ int fd;$/;" m struct:client_struct
-fd modules/extcmd/extcmd_funcs.c /^ int fd;$/;" m struct:anchor_struct file:
-fd modules/jabber/doc/web/libjab.php /^ $fd = fsockopen($server, $port, $errno, $errstr, 30);$/;" v
-fd modules/jabber/doc/web/subscribe.php /^ $fd = jab_connect($jserver, $jport);$/;" v
-fd modules/jabber/doc/web/subscribe.php /^ $fd = jab_connect($jserver, $jport);$/;" v
-fd modules/sms/sms_funcs.h /^ int fd;$/;" m struct:modem
-fd tcp_conn.h /^ int fd; \/* used only by "children", don't modify it! private data! *\/$/;" m struct:tcp_connection
-fd utils/fifo_relay/fifo_server.php /^ $fd = fopen($fifo_clients, "r");$/;" v
-fd_in modules/ext/my_exec.h /^ int fd_in;$/;" m struct:program
-fd_out modules/ext/my_exec.h /^ int fd_out;$/;" m struct:program
-fdp modules/jabber/doc/web/libjab.php /^ $fdp = socket_set_blocking($fd, 0);$/;" v
-fetch_sms_id modules/sms/libsms_putsms.c /^inline int fetch_sms_id(char *answer)$/;" f
-fetchsms modules/sms/libsms_getsms.c /^int fetchsms(struct modem *mdm, int sim, char* pdu)$/;" f
-fields modules/dbtext/dbt_lib.h /^ dbt_val_p fields;$/;" m struct:_dbt_row
-fifo examples/web_im/click_to_dial.php /^$fifo="\/tmp\/ser_fifo";$/;" v
-fifo examples/web_im/send_im.php /^$fifo="\/tmp\/ser_fifo";$/;" v
-fifo fifo_server.c /^char *fifo=0; \/* FIFO name *\/$/;" v
-fifo_allow utils/fifo_relay/fifo_server.php /^function fifo_allow($fifo_clients, $addr) {$/;" f
-fifo_callback modules/tm/uac_fifo.c /^static void fifo_callback( struct cell *t, int type, struct tmcb_params *ps )$/;" f file:
-fifo_cbp modules/tm/uac_fifo.c /^static inline int fifo_cbp(char** shm_file, char* response_file)$/;" f file:
-fifo_check fifo_server.c /^static int fifo_check(int fd, char* fname)$/;" f file:
-fifo_check_msg modules/tm/uac_fifo.c /^static inline int fifo_check_msg(struct sip_msg* msg, str* method, char* resp, str* body, $/;" f file:
-fifo_clients utils/fifo_relay/fifo_server.php /^$fifo_clients = "\/etc\/ser\/fifo_server.clients";$/;" v
-fifo_cmd examples/web_im/click_to_dial.php /^$fifo_cmd=":t_uac:".$myfilename."\\n".$/;" v
-fifo_cmd examples/web_im/send_im.php /^$fifo_cmd=":t_uac_dlg:".$myfilename."\\n".$/;" v
-fifo_cmd fifo_server.h /^typedef int (fifo_cmd)( FILE *fifo_stream, char *response_file );$/;" t
-fifo_cmd modules/postgres/serpgctl /^fifo_cmd()$/;" f
-fifo_cmd scripts/sc /^fifo_cmd()$/;" f
-fifo_cmd utils/fifo_relay/fifo_server.php /^ $fifo_cmd = str_replace("REPLY_FILE_NAME", $fifo_reply_file_name, $fifo_cmd);$/;" v
-fifo_cmd utils/fifo_relay/fifo_server.php /^ $fifo_cmd=$fifo_cmd."\\n";$/;" v
-fifo_command fifo_server.h /^struct fifo_command{$/;" s
-fifo_command modules/pdt/doc/web/request.php /^ $fifo_command = $fifo_command.":".$domain_port;$/;" v
-fifo_command modules/pdt/doc/web/request.php /^ $fifo_command = ":get_domainprefix:"; $/;" v
-fifo_command modules/pdt/doc/web/request.php /^ $fifo_command = $fifo_command.$authorized.$new_line.$new_line;$/;" v
-fifo_command modules/pdt/doc/web/request.php /^ $fifo_command = $fifo_command.$domain_name;$/;" v
-fifo_command modules/pdt/doc/web/request.php /^ $fifo_command = $fifo_command.$new_line;$/;" v
-fifo_command modules/pdt/doc/web/request.php /^ $fifo_command = $fifo_command.$response_file.$new_line;$/;" v
-fifo_db_con db/db_fifo.c /^static db_con_t* fifo_db_con=0;$/;" v file:
-fifo_db_url fifo_server.c /^char *fifo_db_url = 0;$/;" v
-fifo_dbf db/db_fifo.c /^static db_func_t fifo_dbf;$/;" v file:
-fifo_dir fifo_server.c /^char* fifo_dir=DEFAULT_FIFO_DIR; \/* dir where reply fifos are allowed *\/$/;" v
-fifo_find_domain modules/usrloc/ul_fifo.c /^static inline void fifo_find_domain(str* _name, udomain_t** _d)$/;" f file:
-fifo_get_body modules/tm/uac_fifo.c /^static inline int fifo_get_body(FILE* stream, char* response_file, str* body)$/;" f file:
-fifo_get_headers modules/tm/uac_fifo.c /^static inline int fifo_get_headers(FILE* stream, char* response_file, str* headers)$/;" f file:
-fifo_get_method modules/tm/uac_fifo.c /^static inline int fifo_get_method(FILE* stream, char* response_file, str* method)$/;" f file:
-fifo_get_nexthop modules/tm/uac_fifo.c /^static inline int fifo_get_nexthop(FILE* stream, char* response_file, str* nexthop, struct sip_uri* pnexthop)$/;" f file:
-fifo_get_ruri modules/tm/uac_fifo.c /^static inline int fifo_get_ruri(FILE* stream, char* response_file, str* ruri, struct sip_uri* puri)$/;" f file:
-fifo_handle examples/web_im/click_to_dial.php /^$fifo_handle=fopen( $fifo, "w" );$/;" v
-fifo_handle examples/web_im/send_im.php /^$fifo_handle=fopen( $fifo, "w" );$/;" v
-fifo_handle utils/fifo_relay/fifo_server.php /^ $fifo_handle=fopen( "\/tmp\/ser_fifo", "w" );$/;" v
-fifo_hash modules/tm/h_table.c /^int fifo_hash( FILE *stream, char *response_file )$/;" f
-fifo_is_gflag modules/gflags/gflags.c /^static int fifo_is_gflag( FILE* pipe, char* response_file )$/;" f file:
-fifo_pa_location modules/pa/publish.c /^int fifo_pa_location(FILE *fifo, char *response_file)$/;" f
-fifo_pa_location_contact modules/pa/publish.c /^int fifo_pa_location_contact(FILE *fifo, char *response_file)$/;" f
-fifo_pa_presence modules/pa/publish.c /^int fifo_pa_presence(FILE *fifo, char *response_file)$/;" f
-fifo_pa_presence_contact modules/pa/publish.c /^int fifo_pa_presence_contact(FILE *fifo, char *response_file)$/;" f
-fifo_pa_publish modules/pa/publish.c /^int fifo_pa_publish(FILE *stream, char *response_file)$/;" f
-fifo_pa_watcherinfo modules/pa/publish.c /^int fifo_pa_watcherinfo(FILE *fifo, char *response_file)$/;" f
-fifo_pid fifo_server.c /^pid_t fifo_pid;$/;" v
-fifo_print_ip_tree modules/pike/pike_fifo.c /^int fifo_print_ip_tree( FILE *fifo_stream, char *response_file )$/;" f
-fifo_print_timer_list modules/pike/pike_fifo.c /^int fifo_print_timer_list( FILE *fifo_stream, char *response_file )$/;" f
-fifo_read fifo_server.c /^static int fifo_read=0;$/;" v file:
-fifo_reply fifo_server.c /^void fifo_reply( char *reply_fifo, char *reply_fmt, ... )$/;" f
-fifo_reply_file utils/fifo_relay/fifo_server.php /^ $fifo_reply_file = "\/tmp\/".$fifo_reply_file_name;$/;" v
-fifo_reply_file_name utils/fifo_relay/fifo_server.php /^ $fifo_reply_file_name = "ser_fifo_reply_".rand();$/;" v
-fifo_reset_gflag modules/gflags/gflags.c /^static int fifo_reset_gflag( FILE* pipe, char* response_file )$/;" f file:
-fifo_server fifo_server.c /^static void fifo_server(FILE *fifo_stream)$/;" f file:
-fifo_set_gflag modules/gflags/gflags.c /^static int fifo_set_gflag( FILE* pipe, char* response_file )$/;" f file:
-fifo_stats modules/tm/t_stats.c /^int static fifo_stats( FILE *pipe, char *response_file )$/;" f file:
-fifo_stream fifo_server.c /^static FILE *fifo_stream=0;$/;" v file:
-fifo_t_reply modules/tm/t_reply.c /^int fifo_t_reply( FILE *stream, char *response_file )$/;" f
-fifo_uac modules/tm/uac_fifo.c /^int fifo_uac(FILE *stream, char *response_file)$/;" f
-fifo_uac_cancel modules/tm/t_cancel.c /^int fifo_uac_cancel( FILE* stream, char *response_file )$/;" f
-fifo_uac_error modules/tm/uac_fifo.c /^static inline void fifo_uac_error(char *reply_fifo, int code, char *msg)$/;" f file:
-fifo_write fifo_server.c /^static int fifo_write=0;$/;" v file:
-file mem/f_malloc.h /^ const char* file;$/;" m struct:fm_frag
-file mem/q_malloc.h /^ const char* file;$/;" m struct:qm_frag
-file mem/vq_malloc.h /^ char* file;$/;" m struct:vqm_frag
-file modules/cpl-c/cpl_nonsig.c /^static char file[MAX_LOG_DIR_SIZE+1+MAX_LOG_FILE_NAME+FILE_NAME_SUFIX_LEN+1];$/;" v file:
-file modules/flatstore/flat_con.h /^ FILE* file; \/* File descriptor structure *\/$/;" m struct:flat_con
-file modules/mediaproxy/mediaproxy.c /^ char *file; \/\/ the file which lists the asymmetric clients$/;" m file:
-file modules/postgres/aug_alloc.c /^ char *file;$/;" m struct:MemHeadStruct file:
-file_ptr modules/cpl-c/cpl_nonsig.c /^static char *file_ptr;$/;" v file:
-filename modules/permissions/permissions.h /^ char* filename; \/* The name of the file *\/$/;" m struct:rule_file
-filename modules/tm/uac_fifo.c /^ char filename[1];$/;" m struct:cb_data file:
-filter_fl examples/ctd.sh /^filter_fl()$/;" f
-filter_fl modules/postgres/serpgctl /^filter_fl()$/;" f
-filter_fl scripts/sc /^filter_fl()$/;" f
-filter_fl scripts/sc_unixsock /^filter_fl()$/;" f
-final parser/parse_content.c /^ unsigned char final; \/* says what mime type\/subtype was detected$/;" m struct:type_node_s file:
-final_response_handler modules/tm/timer.c /^inline static void final_response_handler( struct timer_link *fr_tl )$/;" f file:
-find234 modules/jabber/tree234.c /^void *find234(tree234 *t, void *e, cmpfn234 cmp) {$/;" f
-findLineStartingWith modules/mediaproxy/mediaproxy.c /^findLineStartingWith(str *block, char *start, int ignoreCase)$/;" f file:
-find_credentials modules/auth/api.c /^static inline int find_credentials(struct sip_msg* _m, str* _realm, int _hftype, struct hdr_field** _h)$/;" f file:
-find_credentials modules/auth_diameter/authorize.c /^int find_credentials(struct sip_msg* _m, str* _realm, int _hftype, $/;" f
-find_dlist modules/pa/dlist.c /^static inline int find_dlist(str* _n, dlist_t** _d)$/;" f file:
-find_dlist modules/usrloc/dlist.c /^static inline int find_dlist(str* _n, dlist_t** _d)$/;" f file:
-find_domain modules/usrloc/dlist.c /^int find_domain(str* _d, udomain_t** _p)$/;" f
-find_export sr_module.c /^cmd_function find_export(char* name, int param_no, int flags)$/;" f
-find_first_route modules/rr/loose.c /^static inline int find_first_route(struct sip_msg* _m)$/;" f file:
-find_index modules/permissions/permissions.c /^static int find_index(rule_file_t* array, char* pathname)$/;" f file:
-find_mod_export sr_module.c /^cmd_function find_mod_export(char* mod, char* name, int param_no, int flags)$/;" f
-find_module sr_module.c /^struct sr_module* find_module(void* f, cmd_export_t **c)$/;" f
-find_next_route modules/rr/loose.c /^static inline int find_next_route(struct sip_msg* _m, struct hdr_field** _hdr)$/;" f file:
-find_not_quoted parser/parser_f.h /^inline static char* find_not_quoted(str* _s, char _c)$/;" f
-find_param_export sr_module.c /^void* find_param_export(char* mod, char* name, modparam_t type)$/;" f
-find_presence_tuple modules/pa/presentity.c /^int find_presence_tuple(str* _contact, presentity_t *_p, presence_tuple_t ** _t)$/;" f
-find_presentity modules/pa/pdomain.c /^int find_presentity(pdomain_t* _d, str* _uri, struct presentity** _p)$/;" f
-find_proxy proxy.c /^static struct proxy_l* find_proxy(str *name, unsigned short port, int proto)$/;" f file:
-find_rem_target modules/rr/loose.c /^static inline int find_rem_target(struct sip_msg* _m, struct hdr_field** _h, rr_t** _l, rr_t** _p)$/;" f file:
-find_si socket_info.c /^struct socket_info* find_si(struct ip_addr* ip, unsigned short port,$/;" f
-find_watcher modules/pa/presentity.c /^int find_watcher(struct presentity* _p, str* _uri, int _et, watcher_t** _w)$/;" f
-findendline modules/mediaproxy/mediaproxy.c /^findendline(char *string, int len)$/;" f file:
-findpos234 modules/jabber/tree234.c /^void *findpos234(tree234 *t, void *e, cmpfn234 cmp, int *index) {$/;" f
-findrel234 modules/jabber/tree234.c /^void *findrel234(tree234 *t, void *e, cmpfn234 cmp, int relation) {$/;" f
-findrelpos234 modules/jabber/tree234.c /^void *findrelpos234(tree234 *t, void *e, cmpfn234 cmp,$/;" f
-findtest modules/jabber/tree234.c /^int findtest(void) {$/;" f
-first mem/f_malloc.h /^ struct fm_frag* first;$/;" m struct:fm_frag_lnk
-first modules/jabber/xode.h /^ struct xode_spool_node *first;$/;" m struct:xode_spool_struct
-first modules/mangler/contact_ops.h /^ int first;$/;" m struct:uri_format
-first modules/pa/hslot.h /^ struct presentity* first; \/* First element in the list *\/$/;" m struct:hslot
-first modules/pa/pdomain.h /^ struct presentity* first; \/* First presentity in the domain *\/$/;" m struct:pdomain
-first modules/tm/t_hooks.h /^ struct tm_callback *first;$/;" m struct:tmcb_head_list
-first modules/usrloc/hslot.h /^ struct urecord* first; \/* First element in the list *\/$/;" m struct:hslot
-first modules/usrloc/udomain.h /^ struct urecord* first; \/* First element in the list *\/$/;" m struct:udomain::<anonymous>
-first modules/usrloc/ul_callback.h /^ struct ul_callback *first;$/;" m struct:ulcb_head_list
-first_4bytes modules/acc/defs.h /^ unsigned int first_4bytes;$/;" m struct:rd_buf
-first_4bytes modules/auth_diameter/defs.h /^ unsigned int first_4bytes;$/;" m struct:rd_buf
-first_cell modules/tm/h_table.h /^ struct cell* first_cell;$/;" m struct:entry
-first_frag mem/f_malloc.h /^ struct fm_frag* first_frag;$/;" m struct:fm_block
-first_frag mem/q_malloc.h /^ struct qm_frag* first_frag;$/;" m struct:qm_block
-first_line parser/msg_parser.h /^ struct msg_start first_line; \/* Message first line *\/$/;" m struct:sip_msg
-first_route modules/tm/dlg.h /^ rr_t* first_route; \/* First route to be printed into the message *\/$/;" m struct:dlg_hooks
-first_tl modules/exec/kill.h /^ struct timer_link first_tl;$/;" m struct:timer_list
-first_tl modules/tm/timer.h /^ struct timer_link first_tl;$/;" m struct:timer
-firstattrib modules/jabber/xode.h /^ struct xode_struct* firstattrib;$/;" m struct:xode_struct
-firstchild modules/jabber/xode.h /^ struct xode_struct* firstchild; $/;" m struct:xode_struct
-firstseen modules/pa/pa.sql /^create table firstseen ($/;" t
-fis_param modules/avpops/avpops_impl.h /^struct fis_param$/;" s
-fix_actions route.c /^static int fix_actions(struct action* a)$/;" f file:
-fix_all_socket_lists socket_info.c /^int fix_all_socket_lists()$/;" f
-fix_expr route.c /^static int fix_expr(struct expr* exp)$/;" f file:
-fix_nated_contact_f modules/nathelper/nathelper.c /^fix_nated_contact_f(struct sip_msg* msg, char* str1, char* str2)$/;" f file:
-fix_nated_register_f modules/nathelper/nathelper.c /^fix_nated_register_f(struct sip_msg* msg, char* str1, char* str2)$/;" f file:
-fix_nated_sdp_f modules/nathelper/nathelper.c /^fix_nated_sdp_f(struct sip_msg* msg, char* str1, char* str2)$/;" f file:
-fix_rls route.c /^int fix_rls()$/;" f
-fix_socket_list socket_info.c /^static int fix_socket_list(struct socket_info **list)$/;" f file:
-fixstring2int modules/mediaproxy/mediaproxy.c /^fixstring2int(void **param, int param_count)$/;" f file:
-fixup sr_module.h /^ fixup_function fixup; \/* pointer to the function called to "fix" the$/;" m struct:cmd_export_
-fixup_char2int modules/mangler/mangler.c /^static int fixup_char2int (void **param, int param_no)$/;" f file:
-fixup_char2str modules/mangler/mangler.c /^static int fixup_char2str(void** param, int param_no)$/;" f file:
-fixup_char2uint modules/mangler/mangler.c /^static int fixup_char2uint (void **param, int param_no)$/;" f file:
-fixup_check_avp modules/avpops/avpops.c /^static int fixup_check_avp(void** param, int param_no)$/;" f file:
-fixup_cpl_run_script modules/cpl-c/cpl.c /^static int fixup_cpl_run_script(void** param, int param_no)$/;" f file:
-fixup_db_avp modules/avpops/avpops.c /^static int fixup_db_avp(void** param, int param_no, int allow_scheme)$/;" f file:
-fixup_db_delete_avp modules/avpops/avpops.c /^static int fixup_db_delete_avp(void** param, int param_no)$/;" f file:
-fixup_db_load_avp modules/avpops/avpops.c /^static int fixup_db_load_avp(void** param, int param_no)$/;" f file:
-fixup_db_store_avp modules/avpops/avpops.c /^static int fixup_db_store_avp(void** param, int param_no)$/;" f file:
-fixup_delete_avp modules/avpops/avpops.c /^static int fixup_delete_avp(void** param, int param_no)$/;" f file:
-fixup_ext_rewrite modules/ext/ext.c /^static int fixup_ext_rewrite(void** param, int param_no)$/;" f file:
-fixup_function sr_module.h /^typedef int (*fixup_function)(void** param, int param_no);$/;" t
-fixup_hostport2proxy modules/tm/tm.c /^static int fixup_hostport2proxy(void** param, int param_no)$/;" f file:
-fixup_maxfwd_header modules/maxfwd/maxfwd.c /^static int fixup_maxfwd_header(void** param, int param_no)$/;" f file:
-fixup_pushto_avp modules/avpops/avpops.c /^static int fixup_pushto_avp(void** param, int param_no)$/;" f file:
-fixup_regex modules/textops/textops.c /^static int fixup_regex(void** param, int param_no)$/;" f file:
-fixup_sl_send_reply modules/sl/sl.c /^static int fixup_sl_send_reply(void** param, int param_no)$/;" f file:
-fixup_sms_send_msg_to_net modules/sms/sms.c /^static int fixup_sms_send_msg_to_net(void** param, int param_no)$/;" f file:
-fixup_str2int modules/gflags/gflags.c /^static int fixup_str2int( void** param, int param_no)$/;" f file:
-fixup_str2int modules/nathelper/nathelper.c /^fixup_str2int( void** param, int param_no)$/;" f file:
-fixup_str2int modules/tm/tm.c /^static int fixup_str2int( void** param, int param_no)$/;" f file:
-fixup_str2regexp modules/tm/tm.c /^static int fixup_str2regexp(void** param, int param_no)$/;" f file:
-fixup_substre modules/textops/textops.c /^static int fixup_substre(void** param, int param_no)$/;" f file:
-fixup_t_flag flags.c /^static int fixup_t_flag(void** param, int param_no)$/;" f file:
-fixup_t_send_reply modules/tm/tm.c /^static int fixup_t_send_reply(void** param, int param_no)$/;" f file:
-fixup_t_write modules/tm/t_fifo.c /^int fixup_t_write( void** param, int param_no)$/;" f
-fixup_write_avp modules/avpops/avpops.c /^static int fixup_write_avp(void** param, int param_no)$/;" f file:
-fl_lock_t fastlock.h /^typedef volatile int fl_lock_t;$/;" t
-fl_lock_t test/mips_lock.c /^typedef volatile int fl_lock_t;$/;" t file:
-flag modules/cpl-c/cpl_time.h /^ int flag;$/;" m struct:_tr_res
-flag modules/dbtext/dbt_lib.h /^ int flag;$/;" m struct:_dbt_column
-flag modules/dbtext/dbt_lib.h /^ int flag;$/;" m struct:_dbt_table
-flag modules/jabber/xjab_base.h /^ int flag;$/;" m struct:_xj_jkey
-flag modules/msilo/ms_msg_list.h /^ int flag;$/;" m struct:_msg_list_el
-flag_in_range flags.c /^int flag_in_range( flag_t flag ) {$/;" f
-flag_t flags.h /^typedef unsigned int flag_t;$/;" t
-flags data_lump_rpl.h /^ int flags;$/;" m struct:lump_rpl
-flags ip_addr.h /^ enum si_flags flags; \/* SI_IS_IP | SI_IS_LO | SI_IS_MCAST *\/$/;" m struct:socket_info
-flags lump_struct.h /^ enum lump_flag flags; \/* additional hints for use from TM's shmem *\/$/;" m struct:lump
-flags main.c /^static char* flags=SER_COMPILE_FLAGS;$/;" v file:
-flags modules/acc/diam_message.h /^ AAAMsgFlag flags;$/;" m struct:_message_t
-flags modules/acc/diam_message.h /^ AAA_AVPFlag flags;$/;" m struct:avp
-flags modules/auth_diameter/diameter_msg.h /^ AAAMsgFlag flags;$/;" m struct:_message_t
-flags modules/auth_diameter/diameter_msg.h /^ AAA_AVPFlag flags;$/;" m struct:avp
-flags modules/avpops/avpops_impl.h /^ int flags; \/* flags *\/$/;" m struct:fis_param
-flags modules/cpl-c/cpl_run.h /^ unsigned int flags;$/;" m struct:cpl_interpreter
-flags modules/cpl-c/loc_set.h /^ int flags;$/;" m struct:location
-flags modules/pa/presentity.h /^ pflag_t flags;$/;" m struct:presentity
-flags modules/pa/watcher.h /^ wflags_t flags;$/;" m struct:watcher
-flags modules/tm/h_table.h /^ unsigned int flags;$/;" m struct:cell
-flags modules/usrloc/ucontact.h /^ unsigned int flags; \/* Various flags (NAT, supported methods etc) *\/$/;" m struct:ucontact
-flags modules/usrloc/ucontact.h /^typedef enum flags {$/;" g
-flags parser/msg_parser.h /^ flag_t flags; $/;" m struct:sip_msg
-flags resolve.h /^ char flags[MAX_DNS_STRING];$/;" m struct:naptr_rdata
-flags sr_module.h /^ int flags; \/* Function flags *\/$/;" m struct:cmd_export_
-flags tcp_conn.h /^ int flags; \/* connection related flags *\/$/;" m struct:tcp_connection
-flags usr_avp.h /^ unsigned short flags;$/;" m struct:usr_avp
-flags2attr modules/avp/avp.c /^static int flags2attr(struct sip_msg* msg, char* foo, char* bar)$/;" f file:
-flags_col modules/usrloc/ul_mod.c /^str flags_col = {FLAGS_COL, sizeof(FLAGS_COL) - 1}; \/* Name of column containing flags *\/$/;" v
-flags_len resolve.h /^ unsigned int flags_len;$/;" m struct:naptr_rdata
-flags_t modules/usrloc/ucontact.h /^} flags_t;$/;" t
-flat_con modules/flatstore/flat_con.h /^struct flat_con {$/;" s
-flat_db_close modules/flatstore/flatstore.c /^void flat_db_close(db_con_t* h)$/;" f
-flat_db_init modules/flatstore/flatstore.c /^db_con_t* flat_db_init(const char* url)$/;" f
-flat_db_insert modules/flatstore/flatstore.c /^int flat_db_insert(db_con_t* h, db_key_t* k, db_val_t* v, int n)$/;" f
-flat_delimiter modules/flatstore/flatstore_mod.c /^char* flat_delimiter = "|";$/;" v
-flat_flush modules/flatstore/flatstore_mod.c /^int flat_flush = 1;$/;" v
-flat_free_connection modules/flatstore/flat_con.c /^void flat_free_connection(struct flat_con* con)$/;" f
-flat_get_connection modules/flatstore/flat_pool.c /^struct flat_con* flat_get_connection(char* dir, char* table)$/;" f
-flat_id modules/flatstore/flat_id.h /^struct flat_id {$/;" s
-flat_new_connection modules/flatstore/flat_con.c /^struct flat_con* flat_new_connection(struct flat_id* id)$/;" f
-flat_pid modules/flatstore/flatstore_mod.c /^int flat_pid;$/;" v
-flat_release_connection modules/flatstore/flat_pool.c /^void flat_release_connection(struct flat_con* con)$/;" f
-flat_reopen_connection modules/flatstore/flat_con.c /^int flat_reopen_connection(struct flat_con* con)$/;" f
-flat_rotate modules/flatstore/flatstore_mod.c /^time_t* flat_rotate; $/;" v
-flat_rotate_cmd modules/flatstore/flat_fifo.c /^static int flat_rotate_cmd(FILE* pipe, char* response_file)$/;" f file:
-flat_rotate_logs modules/flatstore/flat_pool.c /^int flat_rotate_logs(void)$/;" f
-flat_use_table modules/flatstore/flatstore.c /^int flat_use_table(db_con_t* h, const char* t)$/;" f
-flex_int16_t lex.yy.c /^typedef int16_t flex_int16_t;$/;" t file:
-flex_int16_t lex.yy.c /^typedef short int flex_int16_t;$/;" t file:
-flex_int32_t lex.yy.c /^typedef int flex_int32_t;$/;" t file:
-flex_int32_t lex.yy.c /^typedef int32_t flex_int32_t;$/;" t file:
-flex_int8_t lex.yy.c /^typedef int8_t flex_int8_t;$/;" t file:
-flex_int8_t lex.yy.c /^typedef signed char flex_int8_t;$/;" t file:
-flex_uint16_t lex.yy.c /^typedef uint16_t flex_uint16_t;$/;" t file:
-flex_uint16_t lex.yy.c /^typedef unsigned short int flex_uint16_t;$/;" t file:
-flex_uint32_t lex.yy.c /^typedef uint32_t flex_uint32_t;$/;" t file:
-flex_uint32_t lex.yy.c /^typedef unsigned int flex_uint32_t;$/;" t file:
-flex_uint8_t lex.yy.c /^typedef uint8_t flex_uint8_t;$/;" t file:
-flex_uint8_t lex.yy.c /^typedef unsigned char flex_uint8_t; $/;" t file:
-floor modules/pa/presentity.h /^ str floor;$/;" m struct:location
-floor_buf modules/pa/presentity.h /^ char floor_buf[TUPLE_LOCATION_FLOOR_LEN];$/;" m struct:location
-fm_block mem/f_malloc.h /^struct fm_block{$/;" s
-fm_frag mem/f_malloc.h /^struct fm_frag{$/;" s
-fm_frag_lnk mem/f_malloc.h /^struct fm_frag_lnk{$/;" s
-fm_free mem/f_malloc.c /^void fm_free(struct fm_block* qm, void* p, const char* file, const char* func, $/;" f
-fm_insert_free mem/f_malloc.c /^static inline void fm_insert_free(struct fm_block* qm, struct fm_frag* frag)$/;" f file:
-fm_malloc mem/f_malloc.c /^void* fm_malloc(struct fm_block* qm, unsigned long size,$/;" f
-fm_malloc_init mem/f_malloc.c /^struct fm_block* fm_malloc_init(char* address, unsigned long size)$/;" f
-fm_realloc mem/f_malloc.c /^void* fm_realloc(struct fm_block* qm, void* p, unsigned long size,$/;" f
-fm_split_frag mem/f_malloc.c /^void fm_split_frag(struct fm_block* qm, struct fm_frag* frag,$/;" f file:
-fm_status mem/f_malloc.c /^void fm_status(struct fm_block* qm)$/;" f
-fmt2strar modules/acc/acc.c /^static int fmt2strar( char *fmt, \/* what would you like to account ? *\/$/;" f file:
-foRW parser/obsolete/strs.h 193;" d
-foRw parser/obsolete/strs.h 192;" d
-forW parser/obsolete/strs.h 191;" d
-force_dst modules/dispatcher/dispatcher.c /^int force_dst = 0;$/;" v
-force_retr modules/tm/t_funcs.h /^static void inline force_retr(struct retr_buf *rb)$/;" f
-force_rtp_proxy0_f modules/nathelper/nathelper.c /^force_rtp_proxy0_f(struct sip_msg* msg, char* str1, char* str2)$/;" f file:
-force_rtp_proxy1_f modules/nathelper/nathelper.c /^force_rtp_proxy1_f(struct sip_msg* msg, char* str1, char* str2)$/;" f file:
-force_rtp_proxy2_f modules/nathelper/nathelper.c /^force_rtp_proxy2_f(struct sip_msg* msg, char* str1, char* str2)$/;" f file:
-force_send_socket parser/msg_parser.h /^ struct socket_info* force_send_socket; \/* force sending on this socket,$/;" m struct:sip_msg
-force_socket modules/nathelper/nathelper.c /^struct socket_info* force_socket = 0;$/;" v
-force_socket_str modules/nathelper/nathelper.c /^static char *force_socket_str = 0;$/;" v file:
-format_converter modules/jabber/xsnprintf.c /^static int format_converter(register buffy * odp, const char *fmt,$/;" f file:
-forw parser/obsolete/strs.h 190;" d
-forward_h forward.h 41;" d
-forward_reply forward.c /^int forward_reply(struct sip_msg* msg)$/;" f
-forward_reply_to_client modules/extcmd/extcmd_funcs.c /^inline int forward_reply_to_client(int pipe_fd)$/;" f
-forward_request forward.c /^int forward_request( struct sip_msg* msg, struct proxy_l * p, int proto)$/;" f
-forward_request_to_all_clients modules/extcmd/extcmd_funcs.c /^static int forward_request_to_all_clients(int pipe_fd)$/;" f file:
-fourbits2char ut.h /^static char fourbits2char[16] = { '0', '1', '2', '3', '4', '5',$/;" v
-fp modules/pdt/doc/web/request.php /^ $fp = fopen($input_file, "w");$/;" v
-fp modules/postgres/con_postgres.h /^ FILE *fp; \/* debug file output *\/$/;" m struct:con_postgres
-fr modules/pdt/doc/web/request.php /^ $fr = fopen($reply, "r");$/;" v
-frOM parser/obsolete/strs.h 78;" d
-frOm parser/obsolete/strs.h 77;" d
-fr_avp2timer modules/tm/t_funcs.c /^int fr_avp2timer(unsigned int* timer)$/;" f
-fr_inv_avp2timer modules/tm/t_funcs.c /^int fr_inv_avp2timer(unsigned int* timer)$/;" f
-fr_inv_timer_avp modules/tm/t_funcs.c /^static int_str fr_inv_timer_avp = \/*(int_str)*\/{ 0 };$/;" v file:
-fr_inv_timer_avp_type modules/tm/t_funcs.c /^static int fr_inv_timer_avp_type = 0;$/;" v file:
-fr_inv_timer_param modules/tm/tm.c /^static char *fr_inv_timer_param = FR_INV_TIMER_AVP;$/;" v file:
-fr_inv_timer_str modules/tm/t_funcs.c /^static str fr_inv_timer_str;$/;" v file:
-fr_timer modules/tm/h_table.h /^ struct timer_link fr_timer;$/;" m struct:retr_buf
-fr_timer_avp modules/tm/t_funcs.c /^static int_str fr_timer_avp = \/*(int_str)*\/{ 0 };$/;" v file:
-fr_timer_avp_type modules/tm/t_funcs.c /^static int fr_timer_avp_type = 0;$/;" v file:
-fr_timer_param modules/tm/tm.c /^static char *fr_timer_param = FR_TIMER_AVP;$/;" v file:
-fr_timer_str modules/tm/t_funcs.c /^static str fr_timer_str;$/;" v file:
-free2node234 modules/jabber/tree234.c /^static void free2node234(node234 *n, freefn fn )$/;" f file:
-free2tree234 modules/jabber/tree234.c /^void free2tree234(tree234 *t, freefn fn)$/;" f
-freeRedirectMessage modules/cpl/jcpli.c /^void freeRedirectMessage(TRedirectMessage *redMessage)$/;" f
-freeRejectMessage modules/cpl/jcpli.c /^void freeRejectMessage(TRejectMessage *rejMessage)$/;" f
-free_all_pdomains modules/pa/dlist.c /^void free_all_pdomains(void)$/;" f
-free_all_udomains modules/usrloc/dlist.c /^void free_all_udomains(void)$/;" f
-free_allow parser/parse_allow.c /^void free_allow(unsigned int** _methods)$/;" f
-free_cell modules/pdt/domains.c /^void free_cell(dc_t* cell)$/;" f
-free_cell modules/tm/h_table.c /^void free_cell( struct cell* dead_cell )$/;" f
-free_columns modules/mysql/res.c /^static inline int free_columns(db_res_t* _r)$/;" f file:
-free_compiled_expresions modules/mangler/sdp_mangler.c /^int free_compiled_expresions()$/;" f
-free_connection modules/mysql/my_con.c /^void free_connection(struct my_con* con)$/;" f
-free_contact parser/contact/parse_contact.c /^void free_contact(contact_body_t** _c)$/;" f
-free_contact_buf modules/registrar/reply.c /^void free_contact_buf(void)$/;" f
-free_contacts parser/contact/contact.c /^void free_contacts(contact_t** _c)$/;" f
-free_core mem/vq_malloc.h /^ unsigned long free_core;$/;" m struct:vqm_block
-free_cpl_interpreter modules/cpl-c/cpl_run.c /^void free_cpl_interpreter(struct cpl_interpreter *intr)$/;" f
-free_credentials parser/digest/digest.c /^void free_credentials(auth_body_t** _b)$/;" f
-free_cseq parser/parse_cseq.c /^void free_cseq(struct cseq_body* cb)$/;" f
-free_disposition parser/parse_disposition.c /^void free_disposition( struct disposition **disp)$/;" f
-free_dlg modules/tm/dlg.c /^void free_dlg(dlg_t* _d)$/;" f
-free_dlg modules/tm/tm_load.h /^ free_dlg_f free_dlg;$/;" m struct:tm_binds
-free_dlg_f modules/tm/dlg.h /^typedef void (*free_dlg_f)(dlg_t* _d);$/;" t
-free_double_hash modules/pdt/domains.c /^void free_double_hash(double_hash_t* hash)$/;" f
-free_duped_lump_list data_lump.c /^void free_duped_lump_list(struct lump* l)$/;" f
-free_entry modules/pdt/domains.c /^void free_entry(entry_t *e, int erase_cell)$/;" f
-free_event parser/parse_event.c /^void free_event(event_t** _e)$/;" f
-free_expires parser/parse_expires.c /^void free_expires(exp_body_t** _e)$/;" f
-free_expression modules/permissions/rule.c /^void free_expression(expression *e) $/;" f
-free_faked_req modules/tm/t_reply.c /^void inline static free_faked_req(struct sip_msg *faked_req, struct cell *t)$/;" f file:
-free_flat_id modules/flatstore/flat_id.c /^void free_flat_id(struct flat_id* id)$/;" f
-free_from parser/parse_from.h 38;" d
-free_func stats.c /^ void (*free_func)(struct sip_snmp_handler*);$/;" m struct:stats_funcs file:
-free_hash mem/f_malloc.h /^ struct fm_frag_lnk free_hash[F_HASH_SIZE];$/;" m struct:fm_block
-free_hash mem/q_malloc.h /^ struct qm_frag_lnk free_hash[QM_HASH_SIZE];$/;" m struct:qm_block
-free_hash modules/pdt/domains.c /^void free_hash(h_entry_t* hash, unsigned int hash_size, int do_cell)$/;" f
-free_hash_table modules/permissions/hash.c /^void free_hash_table(struct trusted_list** table)$/;" f
-free_hash_table modules/tm/h_table.c /^void free_hash_table( )$/;" f
-free_hdr_field_lst parser/hf.c /^void free_hdr_field_lst(struct hdr_field* hf)$/;" f
-free_hostent proxy.c /^void free_hostent(struct hostent *dst)$/;" f
-free_it modules/acc/diam_message.h /^ unsigned char free_it;$/;" m struct:avp
-free_it modules/auth_diameter/diameter_msg.h /^ unsigned char free_it;$/;" m struct:avp
-free_location modules/cpl-c/loc_set.h /^static inline void free_location( struct location *loc)$/;" f
-free_lump data_lump.c /^void free_lump(struct lump* lmp)$/;" f
-free_lump_list data_lump.c /^void free_lump_list(struct lump* l)$/;" f
-free_lump_rpl data_lump_rpl.c /^void free_lump_rpl(struct lump_rpl* lump)$/;" f
-free_my_id modules/mysql/my_id.c /^void free_my_id(struct my_id* id)$/;" f
-free_ops modules/postgres/aug_alloc.h /^ unsigned long free_ops; \/* Total frees since epoch *\/$/;" m
-free_params parser/parse_param.c /^void free_params(param_t* _p)$/;" f
-free_pdomain modules/pa/pdomain.c /^void free_pdomain(pdomain_t* _d)$/;" f
-free_presence_tuple modules/pa/presentity.c /^void free_presence_tuple(presence_tuple_t * _t)$/;" f
-free_presentity modules/pa/presentity.c /^void free_presentity(presentity_t* _p)$/;" f
-free_proxy proxy.c /^void free_proxy(struct proxy_l* p)$/;" f
-free_query modules/postgres/dbase.c /^static int free_query(db_con_t* _h)$/;" f file:
-free_rdata_list resolve.c /^void free_rdata_list(struct rdata* head)$/;" f
-free_reply_lump parser/msg_parser.c /^void free_reply_lump( struct lump_rpl *lump)$/;" f
-free_report_cell modules/sms/sms_report.c /^inline void free_report_cell(struct report_cell *cell)$/;" f
-free_result db/db.h /^ db_free_result_f free_result; \/* Free a query result *\/$/;" m struct:db_func
-free_result modules/mysql/res.c /^int free_result(db_res_t* _r)$/;" f
-free_result modules/postgres/db_res.c /^int free_result(db_res_t* _r)$/;" f
-free_row modules/mysql/row.c /^int free_row(db_row_t* _r)$/;" f
-free_rows modules/mysql/res.c /^static inline int free_rows(db_res_t* _r)$/;" f file:
-free_rr parser/parse_rr.c /^void free_rr(rr_t** _r)$/;" f
-free_rte_list modules/tm/t_msgbuilder.c /^static inline void free_rte_list(struct rte* list)$/;" f file:
-free_rule modules/permissions/rule.c /^void free_rule(rule *r) $/;" f
-free_shallow_lump data_lump.c /^static void free_shallow_lump( struct lump *l )$/;" f file:
-free_sip_msg parser/msg_parser.c /^void free_sip_msg(struct sip_msg* msg)$/;" f
-free_sipifmatch parser/parse_sipifmatch.c /^void free_sipifmatch(str** _e)$/;" f
-free_sock_info socket_info.c /^static void free_sock_info(struct socket_info* si)$/;" f file:
-free_timer_table modules/tm/timer.c /^void free_timer_table()$/;" f
-free_tm_stats modules/tm/t_stats.c /^void free_tm_stats()$/;" f
-free_to parser/parse_to.c /^void free_to(struct to_body* tb)$/;" f
-free_ucontact modules/usrloc/ucontact.c /^void free_ucontact(ucontact_t* _c)$/;" f
-free_udomain modules/usrloc/udomain.c /^void free_udomain(udomain_t* _d)$/;" f
-free_urecord modules/usrloc/urecord.c /^void free_urecord(urecord_t* _r)$/;" f
-free_via_clen_lump modules/tm/fix_lumps.h /^inline static void free_via_clen_lump( struct lump **list )$/;" f
-free_via_list parser/parse_via.c /^void free_via_list(struct via_body* vb)$/;" f
-free_via_param_list parser/parse_via.c /^static inline void free_via_param_list(struct via_param* vp)$/;" f file:
-free_watcher modules/pa/watcher.c /^void free_watcher(watcher_t* _w)$/;" f
-freefn modules/jabber/tree234.h /^typedef void (*freefn)(void *);$/;" t
-freenode234 modules/jabber/tree234.c /^static void freenode234(node234 *n) {$/;" f file:
-freetree234 modules/jabber/tree234.c /^void freetree234(tree234 *t)$/;" f
-freq modules/cpl-c/cpl_time.h /^ int freq;$/;" m struct:_tmrec
-froM parser/obsolete/strs.h 76;" d
-from modules/cpl-c/cpl_run.h /^ str *from;$/;" m struct:cpl_interpreter
-from modules/sms/sms_funcs.h /^ str from;$/;" m struct:sms_msg
-from modules/tm/h_table.h /^ str from, callid, cseq_n, to;$/;" m struct:cell
-from parser/msg_parser.h /^ struct hdr_field* from;$/;" m struct:sip_msg
-from parser/obsolete/strs.h 75;" d
-from_CASE parser/case_from.h 35;" d
-from_col modules/permissions/permissions.c /^char* from_col = "from_pattern"; \/* Name of from pattern column *\/$/;" v
-from_tag modules/tm/uac.c /^static char from_tag[FROM_TAG_LEN + 1];$/;" v file:
-func mem/f_malloc.h /^ const char* func;$/;" m struct:fm_frag
-func mem/q_malloc.h /^ const char* func;$/;" m struct:qm_frag
-func mem/vq_malloc.h /^ char* func;$/;" m struct:vqm_frag
-func_invite modules/mangler/mangler.c /^static void func_invite(struct cell *t,struct sip_msg *msg,int code,void *param)$/;" f file:
-function sr_module.h /^ cmd_function function; \/* pointer to the corresponding function *\/$/;" m struct:cmd_export_
-fwded_totags modules/tm/h_table.h /^ struct totag_elem *fwded_totags;$/;" m struct:cell
-galiases usr_avp.c /^static struct avp_galias *galiases = 0;$/;" v file:
-gen_lock_set_t lock_ops.h /^typedef struct gen_lock_set_t_ gen_lock_set_t;$/;" t
-gen_lock_set_t_ lock_ops.h /^struct gen_lock_set_t_ {$/;" s
-gen_lock_t lock_ops.h /^typedef fl_lock_t gen_lock_t;$/;" t
-gen_lock_t lock_ops.h /^typedef int gen_lock_t;$/;" t
-gen_lock_t lock_ops.h /^typedef pthread_mutex_t gen_lock_t;$/;" t
-gen_lock_t lock_ops.h /^typedef sem_t gen_lock_t;$/;" t
-gencookie modules/nathelper/nathelper.c /^gencookie()$/;" f file:
-generate_callid modules/tm/callid.c /^void generate_callid(str* callid)$/;" f
-generate_fromtag modules/tm/uac.c /^void generate_fromtag(str* tag, str* callid)$/;" f
-generate_random_secret modules/auth/auth_mod.c /^static inline int generate_random_secret(void)$/;" f file:
-getCallId modules/mediaproxy/mediaproxy.c /^getCallId(struct sip_msg* msg, str *cid)$/;" f file:
-getContactURI modules/mediaproxy/mediaproxy.c /^getContactURI(struct sip_msg* msg, struct sip_uri *uri, contact_t** _c)$/;" f file:
-getDestinationDomain modules/mediaproxy/mediaproxy.c /^getDestinationDomain(struct sip_msg* msg)$/;" f file:
-getFromAddress modules/mediaproxy/mediaproxy.c /^getFromAddress(struct sip_msg *msg)$/;" f file:
-getFromDomain modules/mediaproxy/mediaproxy.c /^getFromDomain(struct sip_msg* msg)$/;" f file:
-getFromTag modules/mediaproxy/mediaproxy.c /^getFromTag(struct sip_msg *msg)$/;" f file:
-getMediaIPFromBlock modules/mediaproxy/mediaproxy.c /^getMediaIPFromBlock(str *block, str *mediaip)$/;" f file:
-getMediaStreams modules/mediaproxy/mediaproxy.c /^getMediaStreams(str *sdp, str *sessionIP, StreamInfo *streams, int limit)$/;" f file:
-getSDPMessage modules/mediaproxy/mediaproxy.c /^getSDPMessage(struct sip_msg *msg, str *sdp)$/;" f file:
-getSessionLevelMediaIP modules/mediaproxy/mediaproxy.c /^getSessionLevelMediaIP(str *sdp, str *mediaip)$/;" f file:
-getStrTokens modules/mediaproxy/mediaproxy.c /^getStrTokens(str *string, str *tokens, int limit)$/;" f file:
-getToAddress modules/mediaproxy/mediaproxy.c /^getToAddress(struct sip_msg *msg)$/;" f file:
-getToDomain modules/mediaproxy/mediaproxy.c /^getToDomain(struct sip_msg* msg)$/;" f file:
-getToTag modules/mediaproxy/mediaproxy.c /^getToTag(struct sip_msg *msg)$/;" f file:
-getTokens modules/mediaproxy/mediaproxy.c /^getTokens(char *string, str *tokens, int limit)$/;" f file:
-getUserAgent modules/mediaproxy/mediaproxy.c /^getUserAgent(struct sip_msg* msg)$/;" f file:
-get_3bytes modules/acc/diam_message.c 36;" d file:
-get_3bytes modules/auth_diameter/message.c 36;" d file:
-get_4bytes modules/acc/diam_message.c 40;" d file:
-get_4bytes modules/auth_diameter/message.c 40;" d file:
-get_T_from_cancel_rb modules/tm/h_table.h 302;" d
-get_T_from_reply_rb modules/tm/h_table.h 296;" d
-get_T_from_request_rb modules/tm/h_table.h 299;" d
-get_accept parser/parse_content.h 80;" d
-get_act_time modules/pa/ptime.c /^void get_act_time(void)$/;" f
-get_act_time modules/registrar/regtime.c /^void get_act_time(void)$/;" f
-get_act_time modules/usrloc/utime.c /^void get_act_time(void)$/;" f
-get_all_ucontacts modules/usrloc/dlist.c /^int get_all_ucontacts(void *buf, int len, unsigned int flags)$/;" f
-get_all_ucontacts modules/usrloc/usrloc.h /^ get_all_ucontacts_t get_all_ucontacts;$/;" m struct:usrloc_api
-get_all_ucontacts_t modules/usrloc/dlist.h /^typedef int (*get_all_ucontacts_t) (void* buf, int len, unsigned int flags);$/;" t
-get_allow_methods parser/parse_allow.h 37;" d
-get_attr_or_alias modules/avpops/avpops.c /^static struct fis_param *get_attr_or_alias(char *s)$/;" f file:
-get_attr_val modules/cpl-c/cpl_parser.c 117;" d file:
-get_authorized_cred parser/digest/digest.c /^int get_authorized_cred(struct hdr_field* _f, struct hdr_field** _h)$/;" f
-get_avp_as_str modules/avpops/avpops_impl.c /^static int get_avp_as_str(struct fis_param *ap ,str *val)$/;" f file:
-get_avp_list usr_avp.c /^struct usr_avp** get_avp_list( )$/;" f
-get_avp_name usr_avp.c /^inline str* get_avp_name(struct usr_avp *avp)$/;" f
-get_avp_val usr_avp.c /^inline void get_avp_val(struct usr_avp *avp, int_str *val)$/;" f
-get_avps db/db_fifo.c /^static inline int get_avps( FILE *fifo , db_key_t *keys, db_op_t *ops,$/;" f file:
-get_basic_attr modules/cpl-c/cpl_run.c 92;" d file:
-get_body parser/msg_parser.h /^inline static char* get_body(struct sip_msg *msg)$/;" f
-get_body_lines modules/tm/uac_unixsock.c /^static int get_body_lines(str* body, str* msg)$/;" f file:
-get_callid modules/nathelper/nathelper.c /^get_callid(struct sip_msg* _m, str* _cid)$/;" f file:
-get_callid modules/tm/dlg.c /^static inline int get_callid(struct sip_msg* _m, str* _cid)$/;" f file:
-get_client modules/extcmd/clients.h /^inline client_t* get_client( int index )$/;" f
-get_cmd modules/extcmd/extcmd_funcs.c /^static int get_cmd( int fd, str *cmd)$/;" f file:
-get_code_from_hash modules/pdt/domains.c /^dc_t* get_code_from_hash(h_entry_t* hash, unsigned int hash_size, char* domain)$/;" f
-get_columns modules/mysql/res.c /^static inline int get_columns(db_con_t* _h, db_res_t* _r)$/;" f file:
-get_columns modules/postgres/db_res.c /^static inline int get_columns(db_con_t* _h, db_res_t* _r)$/;" f file:
-get_connection modules/mysql/my_pool.c /^struct my_con* get_connection(const char* url)$/;" f
-get_contact_uri modules/nathelper/nathelper.c /^get_contact_uri(struct sip_msg* _m, struct sip_uri *uri, contact_t** _c)$/;" f file:
-get_contact_uri modules/tm/dlg.c /^static inline int get_contact_uri(struct sip_msg* _m, str* _uri)$/;" f file:
-get_contact_uri modules/tm/t_msgbuilder.c /^static inline int get_contact_uri(struct sip_msg* msg, str* uri)$/;" f file:
-get_content_disposition parser/parse_disposition.h 39;" d
-get_content_length parser/parse_content.h 67;" d
-get_content_type parser/parse_content.h 73;" d
-get_cseq parser/parse_cseq.h 43;" d
-get_cseq_method modules/tm/dlg.c /^static inline int get_cseq_method(struct sip_msg* _m, str* _method)$/;" f file:
-get_cseq_value modules/tm/dlg.c /^static inline int get_cseq_value(struct sip_msg* _m, unsigned int* _cs)$/;" f file:
-get_dele_timer_payload modules/tm/h_table.h 293;" d
-get_dest_user modules/cpl-c/cpl.c /^static inline int get_dest_user(struct sip_msg *msg, str *uh, int flg)$/;" f file:
-get_diversion parser/parse_diversion.h 35;" d
-get_dlg_uri modules/tm/dlg.c /^static inline int get_dlg_uri(struct hdr_field* _h, str* _s)$/;" f file:
-get_domain_from_hash modules/pdt/domains.c /^char* get_domain_from_hash(h_entry_t* hash, unsigned int hash_size, code_t code)$/;" f
-get_domainprefix modules/pdt/pdt.c /^int get_domainprefix(FILE *stream, char *response_file)$/;" f
-get_domainprefix_unixsock modules/pdt/pdt.c /^static int get_domainprefix_unixsock(str* msg)$/;" f file:
-get_error_str modules/sms/sms_report.c /^str* get_error_str(int status)$/;" f
-get_expires_hf modules/registrar/sip_msg.c /^static inline int get_expires_hf(struct sip_msg* _m)$/;" f file:
-get_first_child modules/cpl-c/cpl_run.c 89;" d file:
-get_first_contact modules/registrar/sip_msg.c /^contact_t* get_first_contact(struct sip_msg* _m)$/;" f
-get_first_socket socket_info.h /^inline static struct socket_info* get_first_socket()$/;" f
-get_fr_timer_payload modules/tm/h_table.h 289;" d
-get_from parser/parse_from.h 36;" d
-get_from_tag modules/nathelper/nathelper.c /^get_from_tag(struct sip_msg* _m, str* _tag)$/;" f file:
-get_from_tag modules/tm/dlg.c /^static inline int get_from_tag(struct sip_msg* _m, str* _tag)$/;" f file:
-get_from_uri modules/auth_diameter/user_in.c /^static inline int get_from_uri(struct sip_msg* m, str* u)$/;" f file:
-get_from_uri modules/group/group.c /^static inline int get_from_uri(struct sip_msg* _m, str* _u)$/;" f file:
-get_from_uri modules/group_radius/group.c /^static inline int get_from_uri(struct sip_msg* _m, str* _u)$/;" f file:
-get_ha1 modules/auth_db/authorize.c /^static inline int get_ha1(struct username* _username, str* _domain,$/;" f file:
-get_hash_entry modules/pdt/domains.c 45;" d file:
-get_hdr_field parser/msg_parser.c /^char* get_hdr_field(char* buf, char* end, struct hdr_field* hdr)$/;" f
-get_header modules/textops/textops.c /^static char *get_header(struct sip_msg *msg)$/;" f file:
-get_headers modules/tm/uac_unixsock.c /^static int get_headers(str* headers, str* msg)$/;" f file:
-get_hfblock modules/tm/uac_fifo.c /^static char *get_hfblock(str *uri, struct hdr_field *hf, int *l, int proto) $/;" f file:
-get_hfblock modules/tm/uac_unixsock.c /^static char *get_hfblock(str *uri, struct hdr_field *hf, int *l, int proto) $/;" f file:
-get_int db/db_fifo.c 108;" d file:
-get_int_n2h modules/extcmd/extcmd_funcs.c /^inline int get_int_n2h( char *b, int l)$/;" f
-get_ip_port_proto msg_translator.c 445;" d file:
-get_keys db/db_fifo.c /^static inline int get_keys( FILE *fifo , db_key_t *keys, int *nr, int max_nr)$/;" f file:
-get_kr modules/tm/h_table.c /^enum kill_reason get_kr() {$/;" f
-get_lock fastlock.h /^inline static void get_lock(fl_lock_t* lock)$/;" f
-get_method modules/tm/uac_unixsock.c /^static int get_method(str* method, str* msg)$/;" f file:
-get_min_interval modules/cpl-c/cpl_time.c /^int get_min_interval(tmrec_p _trp)$/;" f
-get_my_host scripts/sc /^get_my_host() {$/;" f
-get_my_host scripts/sc_unixsock /^get_my_host() {$/;" f
-get_name modules/flatstore/flat_con.c /^static char* get_name(struct flat_id* id)$/;" f file:
-get_next_contact modules/registrar/sip_msg.c /^contact_t* get_next_contact(contact_t* _c)$/;" f
-get_nexthop modules/tm/uac_unixsock.c /^static int get_nexthop(str* nexthop, struct sip_uri* pnexthop, str* msg)$/;" f file:
-get_nonce_expires modules/auth/nonce.c /^time_t get_nonce_expires(str* _n)$/;" f
-get_nr_clients modules/extcmd/clients.h /^inline int get_nr_clients()$/;" f
-get_on_negative modules/tm/t_reply.c /^unsigned int get_on_negative()$/;" f
-get_on_reply modules/tm/t_reply.c /^unsigned int get_on_reply()$/;" f
-get_orig_user modules/cpl-c/cpl.c /^static inline int get_orig_user(struct sip_msg *msg, str *uh, int flg)$/;" f file:
-get_out_socket forward.c /^struct socket_info* get_out_socket(union sockaddr_union* to, int proto)$/;" f
-get_parsed_from_body modules/enum/enum.c /^static inline struct to_body *get_parsed_from_body(struct sip_msg *_msg)$/;" f file:
-get_path modules/permissions/permissions.c /^static int get_path(char* pathname)$/;" f file:
-get_pathname modules/permissions/permissions.c /^static char* get_pathname(char* name)$/;" f file:
-get_plain_uri modules/permissions/permissions.c /^static char* get_plain_uri(const str* uri)$/;" f file:
-get_pres_uri modules/pa/subscribe.c /^int get_pres_uri(struct sip_msg* _m, str* _puri)$/;" f
-get_proto modules/tm/ut.h /^inline static enum sip_protos get_proto(enum sip_protos force_proto,$/;" f
-get_proto_name socket_info.c /^static char* get_proto_name(unsigned short proto)$/;" f file:
-get_raw_uri modules/tm/dlg.c /^void get_raw_uri(str* _s)$/;" f
-get_realm modules/auth/common.c /^int get_realm(struct sip_msg* _m, int _hftype, struct sip_uri* _u)$/;" f
-get_realm modules/auth_diameter/authorize.c /^int get_realm(struct sip_msg* m, int hftype, struct sip_uri* u)$/;" f
-get_record resolve.c /^struct rdata* get_record(char* name, int type)$/;" f
-get_reply_status error.c /^void get_reply_status( str *status, struct sip_msg *reply, int code )$/;" f
-get_request_uri dset.c /^int get_request_uri(struct sip_msg* _m, str* _u)$/;" f
-get_request_uri modules/auth_diameter/user_in.c /^static inline int get_request_uri(struct sip_msg* m, str* u)$/;" f file:
-get_request_uri modules/group/group.c /^static inline int get_request_uri(struct sip_msg* _m, str* _u)$/;" f file:
-get_request_uri modules/group_radius/group.c /^static inline int get_request_uri(struct sip_msg* _m, str* _u)$/;" f file:
-get_result modules/postgres/dbase.c /^int get_result(db_con_t* _h, db_res_t** _r)$/;" f
-get_retr_timer_payload modules/tm/h_table.h 287;" d
-get_route_set modules/tm/dlg.c /^static inline int get_route_set(struct sip_msg* _m, rr_t** _rs, unsigned char _order)$/;" f file:
-get_rpid parser/parse_rpid.h 34;" d
-get_ruri modules/tm/uac_unixsock.c /^static int get_ruri(str* ruri, struct sip_uri* puri, str* msg)$/;" f file:
-get_ruri_q dset.c /^qvalue_t get_ruri_q(void)$/;" f
-get_send_socket forward.c /^struct socket_info* get_send_socket(struct sip_msg *msg, $/;" f
-get_sms_from_report_queue modules/sms/sms_report.c /^struct sms_msg* get_sms_from_report_queue(int id)$/;" f
-get_sock_info_list socket_info.c /^static struct socket_info** get_sock_info_list(unsigned short proto)$/;" f file:
-get_source_uri modules/avpops/avpops_impl.c /^inline static str* get_source_uri(struct sip_msg* msg,int source)$/;" f file:
-get_str_attr modules/cpl-c/cpl_run.c 100;" d file:
-get_t modules/tm/t_lookup.c /^struct cell *get_t() { return T; }$/;" f
-get_text_from_report_queue modules/sms/sms_report.c /^str* get_text_from_report_queue(int id)$/;" f
-get_ticks timer.c /^unsigned int get_ticks()$/;" f
-get_time modules/sms/sms_report.c /^get_time_func *get_time;$/;" v
-get_time_func modules/sms/sms_report.c /^typedef time_t (get_time_func)(void);$/;" t file:
-get_time_ser modules/sms/sms_report.c /^static time_t get_time_ser(void)$/;" f file:
-get_time_sys modules/sms/sms_report.c /^static time_t get_time_sys(void)$/;" f file:
-get_timertable modules/tm/timer.c /^struct timer_table *get_timertable()$/;" f
-get_tm_table modules/tm/h_table.c /^struct s_table* get_tm_table()$/;" f
-get_to parser/parse_to.h 58;" d
-get_to_tag modules/nathelper/nathelper.c /^get_to_tag(struct sip_msg* _m, str* _tag)$/;" f file:
-get_to_tag modules/tm/dlg.c /^static inline int get_to_tag(struct sip_msg* _m, str* _tag)$/;" f file:
-get_to_uri modules/auth_diameter/user_in.c /^static inline int get_to_uri(struct sip_msg* m, str* u)$/;" f file:
-get_to_uri modules/group/group.c /^static inline int get_to_uri(struct sip_msg* _m, str* _u)$/;" f file:
-get_to_uri modules/group_radius/group.c /^static inline int get_to_uri(struct sip_msg* _m, str* _u)$/;" f file:
-get_tree_branch modules/pike/ip_tree.c /^struct ip_node* get_tree_branch(unsigned char b)$/;" f
-get_ucontact modules/usrloc/urecord.c /^int get_ucontact(urecord_t* _r, str* _c, struct ucontact** _co)$/;" f
-get_ucontact modules/usrloc/usrloc.h /^ get_ucontact_t get_ucontact;$/;" m struct:usrloc_api
-get_ucontact_t modules/usrloc/urecord.h /^typedef int (*get_ucontact_t)(urecord_t* _r, str* _c, struct ucontact** _co);$/;" t
-get_uptime unixsock_server.c /^static int get_uptime(void)$/;" f file:
-get_urecord modules/usrloc/udomain.c /^int get_urecord(udomain_t* _d, str* _aor, struct urecord** _r)$/;" f
-get_urecord modules/usrloc/usrloc.h /^ get_urecord_t get_urecord;$/;" m struct:usrloc_api
-get_urecord_t modules/usrloc/udomain.h /^typedef int (*get_urecord_t)(udomain_t* _d, str* _a, struct urecord** _r);$/;" t
-get_uri modules/acc/diam_tcp.c /^int get_uri(struct sip_msg* m, str** uri)$/;" f
-get_uri modules/auth_diameter/authorize.c /^int get_uri(struct sip_msg* m, str** uri)$/;" f
-get_uri modules/auth_radius/authorize.c /^static inline int get_uri(struct sip_msg* _m, str** _uri)$/;" f file:
-get_user_script modules/cpl-c/cpl_db.c /^int get_user_script(str *user, str *script, const char* key)$/;" f
-get_username modules/rr/record.c /^static inline int get_username(struct sip_msg* _m, str* _user)$/;" f file:
-get_wait_timer_payload modules/tm/h_table.h 291;" d
-get_watch_uri modules/pa/subscribe.c /^static int get_watch_uri(struct sip_msg* _m, str* _wuri, str *_dn)$/;" f file:
-getaddress test/shoot.c /^long getaddress(char *host)$/;" f
-getaddress test/shoot2.c /^long getaddress(char *host)$/;" f
-getsms modules/sms/libsms_getsms.c /^int getsms( struct incame_sms *sms, struct modem *mdm, int sim)$/;" f
-gflags modules/gflags/gflags.c /^static unsigned int *gflags; $/;" v file:
-gid main.c /^int gid = 0;$/;" v
-global_avps usr_avp.c /^static struct usr_avp *global_avps = 0;$/;" v file:
-global_init modules/sms/sms.c /^int global_init()$/;" f
-global_msg_id modules/tm/t_lookup.c /^unsigned int global_msg_id;$/;" v
-global_stats stats.c /^static struct stats_s *global_stats=NULL;$/;" v file:
-globals_h globals.h 34;" d
-go_to_pstn scripts/serconf.sh /^function go_to_pstn()$/;" f
-goto_on_negative modules/tm/t_reply.c /^static int goto_on_negative=0;$/;" v file:
-goto_on_reply modules/tm/t_reply.c /^static int goto_on_reply=0;$/;" v file:
-grep_aliases name_alias.h /^static inline int grep_aliases(char* name, int len, unsigned short port,$/;" f
-grep_sock_info socket_info.c /^struct socket_info* grep_sock_info(str* host, unsigned short port,$/;" f
-group main.c /^char* group=0;$/;" v
-group2gid main.c /^static int group2gid(int* gid, char* group)$/;" f file:
-group_column modules/group/group_mod.c /^str group_column = {GROUP_COL, GROUP_COL_LEN};$/;" v
-group_db_bind modules/group/group.c /^int group_db_bind(char* db_url)$/;" f
-group_db_close modules/group/group.c /^void group_db_close()$/;" f
-group_db_init modules/group/group.c /^int group_db_init(char* db_url)$/;" f
-group_db_ver modules/group/group.c /^int group_db_ver(char* db_url, str* name)$/;" f
-group_dbf modules/group/group.c /^static db_func_t group_dbf;$/;" v file:
-group_fixup modules/auth_diameter/auth_diameter.c /^static int group_fixup(void** param, int param_no)$/;" f file:
-gw_check scripts/serconf.sh /^function gw_check()$/;" f
-gw_m_check scripts/serconf.sh /^function gw_m_check()$/;" f
-h_entry_t modules/pdt/domains.h /^} h_entry_t;$/;" t
-h_inc hash_func.c 102;" d file:
-h_inc modules/pa/watcher.c 120;" d file:
-h_inc modules/pdt/domains.c 475;" d file:
-h_via1 parser/msg_parser.h /^ struct hdr_field* h_via1;$/;" m struct:sip_msg
-h_via2 parser/msg_parser.h /^ struct hdr_field* h_via2;$/;" m struct:sip_msg
-ha_alg_t modules/auth_db/rfc2617.h /^} ha_alg_t;$/;" t
-handle sr_module.h /^ void* handle;$/;" m struct:sr_module
-handle_new_connect tcp_main.c /^static inline void handle_new_connect(struct socket_info* si,$/;" f file:
-handle_publish modules/pa/publish.c /^int handle_publish(struct sip_msg* _m, char* _domain, char* _s2)$/;" f
-handle_sigs main.c /^void handle_sigs()$/;" f
-handle_sr modules/rr/loose.c /^static inline int handle_sr(struct sip_msg* _m, struct hdr_field* _hdr, rr_t* _r)$/;" f file:
-handle_subscription modules/pa/subscribe.c /^int handle_subscription(struct sip_msg* _m, char* _domain, char* _s2)$/;" f
-has_content_len tcp_conn.h /^ int has_content_len; \/* 1 if content_length was parsed ok*\/$/;" m struct:tcp_req
-has_noisy_ctimer modules/tm/h_table.h 308;" d
-has_reqin_tmcbs modules/tm/t_hooks.h 197;" d
-has_timer_set modules/pike/timer.h 44;" d
-has_totag modules/uri/checks.c /^int has_totag(struct sip_msg* _m, char* _foo, char* _bar)$/;" f
-has_tran_tmcbs modules/tm/t_hooks.h 195;" d
-hash hash_func.h 43;" d
-hash modules/domain/hash.c /^unsigned int hash (str *domain)$/;" f
-hash modules/jabber/xjab_base.h /^ int hash;$/;" m struct:_xj_jkey
-hash modules/pdt/pdt.c /^double_hash_t *hash = NULL;$/;" v
-hash modules/permissions/hash.c /^static unsigned int hash(str* src_ip)$/;" f file:
-hash tcp_conn.h /^ unsigned short hash; \/* hash index in the address hash *\/$/;" m struct:tcp_conn_alias
-hash_func modules/pa/pdomain.c /^static inline int hash_func(pdomain_t* _d, char* _s, int _l)$/;" f file:
-hash_func modules/usrloc/udomain.c /^static inline int hash_func(udomain_t* _d, unsigned char* _s, int _l)$/;" f file:
-hash_index modules/tm/h_table.h /^ unsigned int hash_index;$/;" m struct:cell
-hash_index parser/msg_parser.h /^ unsigned int hash_index;$/;" m struct:sip_msg
-hash_size modules/pdt/domains.h /^ unsigned int hash_size;$/;" m struct:_double_hash
-hash_table modules/domain/domain_mod.c /^struct domain_list ***hash_table; \/* Pointer to current hash table pointer *\/$/;" v
-hash_table modules/permissions/trusted.c /^struct trusted_list ***hash_table; \/* Pointer to current hash table pointer *\/$/;" v
-hash_table_1 modules/domain/domain_mod.c /^struct domain_list **hash_table_1; \/* Pointer to hash table 1 *\/$/;" v
-hash_table_1 modules/permissions/trusted.c /^struct trusted_list **hash_table_1; \/* Pointer to hash table 1 *\/$/;" v
-hash_table_2 modules/domain/domain_mod.c /^struct domain_list **hash_table_2; \/* Pointer to hash table 2 *\/$/;" v
-hash_table_2 modules/permissions/trusted.c /^struct trusted_list **hash_table_2; \/* Pointer to hash table 2 *\/$/;" v
-hash_table_free modules/domain/hash.c /^void hash_table_free (struct domain_list **hash_table)$/;" f
-hash_table_insert modules/permissions/hash.c /^int hash_table_insert(struct trusted_list** hash_table, char* src_ip, char* proto, char* pattern)$/;" f
-hash_table_install modules/domain/hash.c /^int hash_table_install (struct domain_list **hash_table, char *domain)$/;" f
-hash_table_lookup modules/domain/hash.c /^int hash_table_lookup (str *domain)$/;" f
-hash_table_print modules/domain/hash.c /^void hash_table_print (struct domain_list **hash_table, FILE *reply_file)$/;" f
-hash_table_print modules/permissions/hash.c /^void hash_table_print(struct trusted_list** hash_table, FILE* reply_file)$/;" f
-hash_table_print_unixsock modules/domain/unixsock.c /^static int hash_table_print_unixsock(struct domain_list **hash_table)$/;" f file:
-hash_table_print_unixsock modules/permissions/unixsock.c /^static int hash_table_print_unixsock(struct trusted_list** hash_table)$/;" f file:
-hashtest hash_func.c /^void hashtest()$/;" f
-hashtest_cycle hash_func.c /^void hashtest_cycle( int hits[TABLE_ENTRIES+5], char *ip )$/;" f
-hbuf modules/pa/watcher.c /^static char hbuf[2048];$/;" v file:
-hdr parser/parse_via.h /^ str hdr; \/* Contains "Via" or "v" *\/$/;" m struct:via_body
-hdr resolve.h /^ HEADER hdr;$/;" m union:dns_query
-hdr_allocs_parse parser/hf.h 80;" d
-hdr_avp modules/tm/t_fifo.c /^struct hdr_avp {$/;" s file:
-hdr_field parser/hf.h /^struct hdr_field { $/;" s
-head mem/q_malloc.h /^ struct qm_frag head;$/;" m struct:qm_frag_lnk
-head modules/acc/diam_message.h /^ AAA_AVP *head;$/;" m struct:_avp_list_t
-head modules/auth_diameter/diameter_msg.h /^ AAA_AVP *head;$/;" m struct:_avp_list_t
-headers modules/pa/notify.c /^static str headers = {headers_buf, 0};$/;" v file:
-headers parser/msg_parser.h /^ str headers; $/;" m struct:sip_uri
-headers parser/msg_parser.h /^ struct hdr_field* headers; \/* All the parsed headers*\/$/;" m struct:sip_msg
-headers test/p_uri.c /^ str headers; $/;" m struct:sip_uri file:
-headers_buf modules/pa/notify.c /^static char headers_buf[BUF_LEN];$/;" v file:
-heap modules/jabber/xode.h /^ struct xode_pool_heap *heap;$/;" m struct:xode_pool_struct
-heap modules/jabber/xpool.c /^ struct xode_pool_heap *heap;$/;" m struct:xode_pool_free file:
-help scripts/serconf.sh /^function help()$/;" f
-help_msg main.c /^static char help_msg[]= "\\$/;" v file:
-help_msg test/dns_query.c /^static char* help_msg="\\$/;" v file:
-help_msg test/gethostbyaddr.c /^static char* help_msg="\\$/;" v file:
-help_msg test/gethostbyname.c /^static char* help_msg="\\$/;" v file:
-help_msg test/ifls.c /^static char* help_msg="\\$/;" v file:
-help_msg test/locking/locking_test.c /^static char* help_msg="\\$/;" v file:
-help_msg test/re_test.c /^static char* help_msg="\\$/;" v file:
-help_msg test/resolver_test.c /^static char* help_msg="\\$/;" v file:
-help_msg test/udp_flood.c /^static char* help_msg="\\$/;" v file:
-help_msg test/udp_flood_disc.c /^static char* help_msg="\\$/;" v file:
-help_msg test/udp_test_proxy.c /^static char* help_msg="\\$/;" v file:
-hex2int ut.h /^inline static int hex2int(char hex_digit)$/;" f
-hex2integer modules/auth/nonce.c /^static inline int hex2integer(char* _s)$/;" f file:
-hexa modules/sms/libsms_putsms.c /^static char hexa[16] = {$/;" v file:
-hf modules/exec/exec_hf.h /^ struct hdr_field *hf;$/;" m union:hf_wrapper::<anonymous>
-hf_fixup modules/group/group_mod.c /^static int hf_fixup(void** param, int param_no)$/;" f file:
-hf_fixup modules/group_radius/grouprad_mod.c /^static int hf_fixup(void** param, int param_no)$/;" f file:
-hf_wrapper modules/exec/exec_hf.h /^struct hf_wrapper {$/;" s
-hindex modules/xlog/xl_lib.h /^ int hindex;$/;" m struct:_xl_elog
-hits modules/pike/ip_tree.h /^ unsigned short hits[2];$/;" m struct:ip_node
-hooks modules/tm/dlg.h /^ dlg_hooks_t hooks; \/* Various hooks used to store information that$/;" m struct:dlg
-hopbyhopId modules/acc/diam_message.h /^ AAAMsgIdentifier hopbyhopId;$/;" m struct:_message_t
-hopbyhopId modules/auth_diameter/diameter_msg.h /^ AAAMsgIdentifier hopbyhopId;$/;" m struct:_message_t
-host cfg.y /^host: ID { $$=$1; }$/;" l
-host modules/mysql/my_id.h /^ str host; \/* Host or IP, case insensitive *\/$/;" m struct:my_id
-host modules/pdt/doc/web/request.php /^$host="127.0.0.1";$/;" v
-host msg_translator.h /^ str* host;$/;" m struct:hostport
-host parser/msg_parser.h /^ str host; \/* Host name *\/$/;" m struct:sip_uri
-host parser/parse_via.h /^ str host;$/;" m struct:via_body
-host proxy.h /^ struct hostent host; \/* addresses *\/$/;" m struct:proxy_l
-host test/p_uri.c /^ str host; \/* Host name *\/$/;" m struct:sip_uri file:
-host_alias name_alias.h /^struct host_alias{$/;" s
-host_sep cfg.y /^host_sep: DOT {$$=".";}$/;" l
-hostent2ip_addr ip_addr.h 147;" d
-hostent2su ip_addr.h /^static inline int hostent2su( union sockaddr_union* su,$/;" f
-hostent_cpy proxy.c /^static int hostent_cpy(struct hostent *dst, struct hostent* src)$/;" f file:
-hostname modules/jabber/xjab_jcon.h /^ char *hostname; \/\/ hostname of the Jabber server$/;" m struct:_xj_jcon
-hostport msg_translator.h /^struct hostport {$/;" s
-hparam modules/xlog/xl_lib.h /^ str hparam;$/;" m struct:_xl_elog
-hs_two_pow modules/pdt/pdt.c /^int hs_two_pow = 1;$/;" v
-hslot modules/pa/hslot.h /^typedef struct hslot {$/;" s
-hslot modules/usrloc/hslot.h /^typedef struct hslot {$/;" s
-hslot_t modules/pa/hslot.h /^} hslot_t;$/;" t
-hslot_t modules/usrloc/hslot.h /^} hslot_t;$/;" t
-html_die modules/jabber/doc/web/subscribe.php /^function html_die($message)$/;" f
-i parser/parse_via.h /^ struct via_param* i;$/;" m struct:via_body
-i_tmp cfg.tab.c /^static int i_tmp;$/;" v file:
-i_user modules/rr/rr_mod.c /^str i_user;$/;" v
-iattr_fixup modules/avp/avp.c /^static int iattr_fixup(void** param, int param_no)$/;" f file:
-ic_parse_byday modules/cpl-c/cpl_time.c /^tr_byxxx_p ic_parse_byday(char *_in)$/;" f
-ic_parse_byxxx modules/cpl-c/cpl_time.c /^tr_byxxx_p ic_parse_byxxx(char *_in)$/;" f
-ic_parse_datetime modules/cpl-c/cpl_time.c /^time_t ic_parse_datetime(char *_in, struct tm *_tm)$/;" f
-ic_parse_duration modules/cpl-c/cpl_time.c /^time_t ic_parse_duration(char *_in)$/;" f
-ic_parse_wkst modules/cpl-c/cpl_time.c /^int ic_parse_wkst(char *_in)$/;" f
-icq modules/jabber/doc/xjab.sql /^CREATE TABLE icq($/;" t
-icq_id modules/jabber/doc/xjab.sql /^ icq_id INT NOT NULL,$/;" F
-icq_passwd modules/jabber/doc/xjab.sql /^ icq_passwd VARCHAR(50),$/;" F
-id main.c /^static char id[]="@(#) $Id: main.c,v 1.197.2.1 2005\/07\/25 16:56:24 andrei Exp $";$/;" v file:
-id modules/dispatcher/dispatch.c /^ int id;$/;" m struct:_ds_set file:
-id modules/dispatcher/dispatch.c /^ int id;$/;" m struct:_ds_setidx file:
-id modules/flatstore/flat_con.h /^ struct flat_id* id; \/* Connection identifier *\/$/;" m struct:flat_con
-id modules/jabber/xjab_base.h /^ str *id;$/;" m struct:_xj_jkey
-id modules/mysql/my_con.h /^ struct my_id* id; \/* Connection identifier *\/$/;" m struct:my_con
-id modules/pa/presentity.h /^ str id;$/;" m struct:presence_tuple
-id modules/tm/dlg.h /^ dlg_id_t id; \/* Dialog identifier *\/$/;" m struct:dlg
-id modules/tm/t_hooks.h /^ int id; \/* id of this callback - useless *\/$/;" m struct:tm_callback
-id modules/tm/timer.h /^ enum lists id;$/;" m struct:timer
-id modules/usrloc/ul_callback.h /^ int id; \/* id of this callback - useless *\/$/;" m struct:ul_callback
-id parser/msg_parser.h /^ unsigned int id; \/* message id, unique\/process*\/$/;" m struct:sip_msg
-id script_cb.h /^ unsigned int id;$/;" m struct:script_cb
-id tcp_conn.h /^ int id; \/* id (unique!) used to retrieve a specific connection when$/;" m struct:tcp_connection
-id test/dns_query.c /^static char* id="$Id: dns_query.c,v 1.6 2004\/11\/10 21:51:24 andrei Exp $";$/;" v file:
-id test/gethostbyaddr.c /^static char* id="$Id: gethostbyaddr.c,v 1.3 2004\/08\/24 09:01:29 janakj Exp $";$/;" v file:
-id test/gethostbyname.c /^static char* id="$Id: gethostbyname.c,v 1.3 2004\/08\/24 09:01:29 janakj Exp $";$/;" v file:
-id test/ifls.c /^static char* id="$Id: ifls.c,v 1.7 2004\/08\/24 09:01:29 janakj Exp $";$/;" v file:
-id test/locking/locking_test.c /^static char *id="$Id: locking_test.c,v 1.8 2004\/08\/24 09:01:30 janakj Exp $";$/;" v file:
-id test/re_test.c /^static char *id="$Id: re_test.c,v 1.3 2004\/08\/24 09:01:29 janakj Exp $";$/;" v file:
-id test/resolver_test.c /^static char *id="$Id: resolver_test.c,v 1.3 2004\/08\/24 09:01:29 janakj Exp $";$/;" v file:
-id test/udp_flood.c /^static char *id="$Id: udp_flood.c,v 1.6 2004\/08\/24 09:01:29 janakj Exp $";$/;" v file:
-id test/udp_flood_disc.c /^static char *id="$Id: udp_flood_disc.c,v 1.4 2004\/08\/24 09:01:29 janakj Exp $";$/;" v file:
-id test/udp_test_proxy.c /^static char *id="$Id: udp_test_proxy.c,v 1.4 2004\/08\/24 09:01:29 janakj Exp $";$/;" v file:
-id timer.h /^ int id;$/;" m struct:sr_timer
-id usr_avp.h /^ unsigned short id;$/;" m struct:usr_avp
-id_buf modules/pa/presentity.h /^ char id_buf[TUPLE_ID_STR_LEN];$/;" m struct:presence_tuple
-id_builder msg_translator.c /^char* id_builder(struct sip_msg* msg, unsigned int *id_len)$/;" f
-id_hash tcp_conn.h /^ unsigned id_hash; \/* hash index in the id_hash *\/$/;" m struct:tcp_connection
-id_lst cfg.y /^id_lst: phostport { $$=$1 ; }$/;" l
-id_next tcp_conn.h /^ struct tcp_connection* id_next; \/* next, prev in id hash table *\/$/;" m struct:tcp_connection
-id_prev tcp_conn.h /^ struct tcp_connection* id_prev;$/;" m struct:tcp_connection
-idx pt.h /^ int idx; \/* tcp child index, -1 for other processes *\/$/;" m struct:process_table
-if_cmd cfg.y /^if_cmd: IF exp stm { $$=mk_action3( IF_T,$/;" l
-ifm_CASE parser/case_sip.h 14;" d
-ignore_user modules/rr/rr_mod.c /^char *ignore_user = NULL;$/;" v
-ihb modules/jabber/jabber.c /^struct ih_binds ihb;$/;" v
-imag modules/jabber/doc/web/subscribe.php /^ $imag = substr($imag1, 0, strlen($imag1)-strlen($imag2));$/;" v
-imag1 modules/jabber/doc/web/subscribe.php /^ $imag1 = stristr($buf_agents, "<agent jid='".$imtype.".");$/;" v
-imag1 modules/jabber/doc/web/subscribe.php /^ $imag1 = substr($imag1, strlen("<agent jid='"));$/;" v
-imag2 modules/jabber/doc/web/subscribe.php /^ $imag2 = strstr($imag1, "'");$/;" v
-imkey modules/jabber/doc/web/subscribe.php /^ $imkey = substr($imkey1, 0, strlen($imkey1)-strlen($imkey2));$/;" v
-imkey1 modules/jabber/doc/web/subscribe.php /^ $imkey1 = stristr($buf_recv, "<key>");$/;" v
-imkey1 modules/jabber/doc/web/subscribe.php /^ $imkey1 = substr($imkey1, 5);$/;" v
-imkey2 modules/jabber/doc/web/subscribe.php /^ $imkey2 = strstr($imkey1, "<\/key>");$/;" v
-in_pdomain modules/pa/pdomain.c /^static int in_pdomain = 0; \/* this only works with single or multiprocess execution model, but not multi-threaded *\/$/;" v file:
-in_peer modules/acc/diam_message.h /^ void *in_peer;$/;" m struct:_message_t
-in_peer modules/auth_diameter/diameter_msg.h /^ void *in_peer;$/;" m struct:_message_t
-inc_hexchar modules/tm/callid.c /^static inline int inc_hexchar(char* _c)$/;" f file:
-incame_sms modules/sms/sms_funcs.h /^struct incame_sms {$/;" s
-include_modules freebsd/Makefile /^MAKE_ENV= include_modules="mysql jabber cpl-c pa"$/;" m
-include_modules netbsd/Makefile /^MAKE_ENV= include_modules="mysql jabber cpl-c pa"$/;" m
-include_modules openbsd/Makefile /^MAKE_ENV= include_modules="mysql jabber cpl-c pa"$/;" m
-increase_open_fds daemonize.c /^int increase_open_fds(int target)$/;" f
-index modules/dispatcher/dispatch.c /^ int index;$/;" m struct:_ds_set file:
-index modules/dispatcher/dispatch.c /^ int index;$/;" m struct:_ds_setidx file:
-index234 modules/jabber/tree234.c /^void *index234(tree234 *t, int index) {$/;" f
-init db/db.h /^ db_init_f init; \/* Initialize database connection *\/$/;" m struct:db_func
-init_CPL_parser modules/cpl-c/cpl_parser.c /^int init_CPL_parser( char* DTD_filename )$/;" f
-init_avp_params modules/tm/t_funcs.c /^int init_avp_params(char *fr_timer_param, char *fr_inv_timer_param)$/;" f
-init_branch_iterator dset.c /^void init_branch_iterator(void)$/;" f
-init_branches modules/tm/h_table.c /^static void inline init_branches(struct cell *t)$/;" f file:
-init_callid modules/tm/callid.c /^int init_callid(void)$/;" f
-init_cell_lock modules/tm/lock.c /^int init_cell_lock( struct cell *cell )$/;" f
-init_child sr_module.c /^int init_child(int rank)$/;" f
-init_child_f sr_module.h /^ child_init_function init_child_f; \/* function called by all processes$/;" m struct:module_exports
-init_child_trusted modules/permissions/trusted.c /^int init_child_trusted(int rank)$/;" f
-init_core mem/vq_malloc.h /^ char *core, *init_core, *core_end;$/;" m struct:vqm_block
-init_db_fifo db/db_fifo.c /^int init_db_fifo(char* fifo_db_url)$/;" f
-init_dig_cred parser/digest/digest_parser.c /^void init_dig_cred(dig_cred_t* _c)$/;" f
-init_domain_fifo modules/domain/fifo.c /^int init_domain_fifo( void ) $/;" f
-init_domain_unixsock modules/domain/unixsock.c /^int init_domain_unixsock(void) $/;" f
-init_double_hash modules/pdt/domains.c /^double_hash_t* init_double_hash(int hs_two_pow)$/;" f
-init_entry_lock modules/tm/lock.c /^int init_entry_lock( struct s_table* ht, struct entry *entry )$/;" f
-init_ext modules/ext/my_exec.c /^int init_ext(int rank)$/;" f
-init_f sr_module.h /^ init_function init_f; \/* Initialization function *\/$/;" m struct:module_exports
-init_fifo_server fifo_server.c /^int init_fifo_server()$/;" f
-init_flat_fifo modules/flatstore/flat_fifo.c /^int init_flat_fifo(void)$/;" f
-init_function sr_module.h /^typedef int (*init_function)(void);$/;" t
-init_hash modules/pdt/domains.c /^h_entry_t* init_hash(unsigned int hash_size)$/;" f
-init_hash_table modules/tm/h_table.c /^struct s_table* init_hash_table()$/;" f
-init_ip_tree modules/pike/ip_tree.c /^int init_ip_tree(int maximum_hits)$/;" f
-init_lock fastlock.h 64;" d
-init_lock_set modules/pike/ip_tree.c /^static gen_lock_set_t* init_lock_set(int *size)$/;" f file:
-init_mod sr_module.c /^static int init_mod( struct sr_module* m )$/;" f file:
-init_mod_child sr_module.c /^static int init_mod_child( struct sr_module* m, int rank )$/;" f file:
-init_modules sr_module.c /^int init_modules(void)$/;" f
-init_mytcp modules/acc/diam_tcp.c /^int init_mytcp(char* host, int port)$/;" f
-init_mytcp modules/auth_diameter/tcp_comm.c /^int init_mytcp(char* host, int port)$/;" f
-init_new_t modules/tm/t_lookup.c /^static inline void init_new_t(struct cell *new_cell, struct sip_msg *p_msg)$/;" f file:
-init_pkg_mallocs mem/mem.c /^int init_pkg_mallocs()$/;" f
-init_rb modules/tm/t_lookup.c /^int init_rb( struct retr_buf *rb, struct sip_msg *msg)$/;" f
-init_report_queue modules/sms/sms_report.c /^int init_report_queue()$/;" f
-init_shm_mallocs mem/mem.c /^int init_shm_mallocs()$/;" f
-init_sl_stats modules/sl/sl_stats.c /^int init_sl_stats( void ) $/;" f
-init_slot modules/pa/hslot.c /^void init_slot(struct pdomain* _d, hslot_t* _s)$/;" f
-init_slot modules/usrloc/hslot.c /^int init_slot(struct udomain* _d, hslot_t* _s)$/;" f
-init_sock_opt tcp_main.c /^static int init_sock_opt(int s)$/;" f file:
-init_stats stats.c /^int init_stats(int nr_of_processes)$/;" f
-init_store_avps modules/avpops/avpops_impl.c /^void init_store_avps( char **db_columns)$/;" f
-init_su ip_addr.h /^static inline int init_su( union sockaddr_union* su,$/;" f
-init_synonym_id modules/tm/h_table.c /^static inline void init_synonym_id( struct cell *t )$/;" f file:
-init_t modules/tm/t_lookup.c /^void init_t() {global_msg_id=0; set_t(T_UNDEFINED);}$/;" f
-init_tags tags.h /^static void inline init_tags( char *tag, char **suffix, $/;" f
-init_tcp tcp_main.c /^int init_tcp()$/;" f
-init_tcp_req tcp_conn.h 143;" d
-init_timer timer.c /^int init_timer()$/;" f
-init_timer_list modules/tm/timer.c /^void init_timer_list( \/* struct s_table* ht, *\/ enum lists list_id)$/;" f
-init_timerlist_lock modules/tm/lock.c /^int init_timerlist_lock( enum lists timerlist_id)$/;" f
-init_tm_stats modules/tm/t_stats.c /^int init_tm_stats(void)$/;" f
-init_tmcb_lists modules/tm/t_hooks.c /^int init_tmcb_lists()$/;" f
-init_trusted modules/permissions/trusted.c /^int init_trusted(void)$/;" f
-init_trusted_fifo modules/permissions/fifo.c /^int init_trusted_fifo(void) $/;" f
-init_trusted_unixsock modules/permissions/unixsock.c /^int init_trusted_unixsock(void) $/;" f
-init_twrite_lines modules/tm/t_fifo.c /^int init_twrite_lines()$/;" f
-init_twrite_sock modules/tm/t_fifo.c /^int init_twrite_sock(void)$/;" f
-init_ul_fifo modules/usrloc/ul_fifo.c /^int init_ul_fifo( void ) $/;" f
-init_ul_unixsock modules/usrloc/ul_unixsock.c /^int init_ul_unixsock(void) $/;" f
-init_ulcb_list modules/usrloc/ul_callback.c /^int init_ulcb_list()$/;" f
-init_unixsock_children unixsock_server.c /^int init_unixsock_children(void)$/;" f
-init_unixsock_iface modules/pa/unixsock.c /^int init_unixsock_iface(void)$/;" f
-init_unixsock_socket unixsock_server.c /^int init_unixsock_socket(void)$/;" f
-initial modules/gflags/gflags.c /^static int initial=0;$/;" v file:
-initialize_kill modules/exec/kill.c /^int initialize_kill()$/;" f
-initmodem modules/sms/libsms_modem.c /^int initmodem(struct modem *mdm, cds_report cds_report_f)$/;" f
-input_file modules/pdt/doc/web/request.php /^$input_file = "\/tmp\/ser_fifo";$/;" v
-insert db/db.h /^ db_insert_f insert; \/* Insert into table *\/$/;" m struct:db_func
-insert modules/registrar/save.c /^static inline int insert(struct sip_msg* _m, contact_t* _c, udomain_t* _d, str* _a, str *ua)$/;" f file:
-insert_RR modules/rr/record.c /^static inline int insert_RR(struct sip_msg* _m, int _lr)$/;" f file:
-insert_cond_lump_after data_lump.c /^struct lump* insert_cond_lump_after( struct lump* after, enum lump_conditions c,$/;" f
-insert_cond_lump_before data_lump.c /^struct lump* insert_cond_lump_before( struct lump* before, $/;" f
-insert_hf modules/exec/exec_hf.c /^static int insert_hf( struct hf_wrapper **list, struct hdr_field *hf )$/;" f file:
-insert_into_hash_table modules/tm/h_table.c /^void insert_into_hash_table( struct cell * p_cell)$/;" f
-insert_into_hash_table_unsafe modules/tm/h_table.c /^void insert_into_hash_table_unsafe( struct cell * p_cell, unsigned int _hash )$/;" f
-insert_new_lump data_lump.c /^struct lump* insert_new_lump(struct lump** list, char* new_hdr,$/;" f
-insert_new_lump_after data_lump.c /^struct lump* insert_new_lump_after( struct lump* after, char* new_hdr,$/;" f
-insert_new_lump_before data_lump.c /^struct lump* insert_new_lump_before( struct lump* before, char* new_hdr,$/;" f
-insert_subst_lump_after data_lump.c /^struct lump* insert_subst_lump_after( struct lump* after, enum lump_subst subst,$/;" f
-insert_subst_lump_before data_lump.c /^struct lump* insert_subst_lump_before( struct lump* before, $/;" f
-insert_timer_unsafe modules/tm/timer.c /^static void insert_timer_unsafe( struct timer *timer_list, struct timer_link *tl,$/;" f file:
-insert_timer_unsafe modules/tm/timer.c 705;" d file:
-insert_tmcb modules/tm/t_hooks.c /^int insert_tmcb(struct tmcb_head_list *cb_list, int types,$/;" f
-insert_ucontact modules/usrloc/urecord.c /^int insert_ucontact(urecord_t* _r, str* _c, time_t _e, qvalue_t _q, str* _cid, $/;" f
-insert_ucontact modules/usrloc/usrloc.h /^ insert_ucontact_t insert_ucontact;$/;" m struct:usrloc_api
-insert_ucontact_t modules/usrloc/urecord.h /^typedef int (*insert_ucontact_t)(urecord_t* _r, str* _c, time_t _e, qvalue_t _q, str* _cid, int _cs, $/;" t
-insert_urecord modules/usrloc/udomain.c /^int insert_urecord(udomain_t* _d, str* _aor, struct urecord** _r)$/;" f
-insert_urecord modules/usrloc/usrloc.h /^ insert_urecord_t insert_urecord;$/;" m struct:usrloc_api
-insert_urecord_t modules/usrloc/udomain.h /^typedef int (*insert_urecord_t)(udomain_t* _d, str* _aor, struct urecord** _r);$/;" t
-install_sigs main.c /^int install_sigs()$/;" f
-int modules/pa/pa.sql /^ elid int(10) unsigned NOT NULL auto_increment,$/;" F
-int modules/pa/pa.sql /^ itemid int(10) unsigned NOT NULL auto_increment,$/;" F
-int modules/pa/pa.sql /^ placeid int(10) unsigned NOT NULL auto_increment,$/;" F
-int modules/pa/pa.sql /^ contactid int(10) unsigned NOT NULL auto_increment,$/;" F
-int modules/pa/pa.sql /^ presid int(10) unsigned NOT NULL auto_increment,$/;" F
-int2reverse_hex ut.h /^inline static int int2reverse_hex( char **c, int *size, unsigned int nr )$/;" f
-int2str modules/mysql/val.c /^static inline int int2str(int _v, char* _s, int* _l)$/;" f file:
-int2str modules/postgres/db_val.c /^static inline int int2str(int _v, char* _s, int* _l)$/;" f file:
-int2str ut.h /^static inline char* int2str(unsigned long l, int* len)$/;" f
-int_fac dprint.c /^static int int_fac[]={LOG_AUTH , LOG_CRON , LOG_DAEMON ,$/;" v file:
-int_param modules/print/print.c /^int int_param;$/;" v
-int_str usr_avp.h /^} int_str;$/;" t
-int_str2db_val modules/avpops/avpops_impl.c /^static inline void int_str2db_val( int_str is_val, str *val, int is_s)$/;" f file:
-int_val db/db_val.h /^ int int_val; \/* integer value *\/$/;" m
-integer2hex modules/auth/nonce.c /^static inline void integer2hex(char* _d, int _s)$/;" f file:
-intern_err modules/cpl-c/cpl.c /^static struct cpl_error intern_err = {500,"Internal server error"};$/;" v file:
-internal_addtest modules/jabber/tree234.c /^void internal_addtest(void *elem, int index, void *realret) {$/;" f
-internal_search_ID_avp usr_avp.c /^inline static struct usr_avp *internal_search_ID_avp( struct usr_avp *avp,$/;" f file:
-internal_search_name_avp usr_avp.c /^inline static struct usr_avp *internal_search_name_avp( struct usr_avp *avp,$/;" f file:
-interval modules/cpl-c/cpl_time.h /^ int interval;$/;" m struct:_tmrec
-interval timer.h /^ unsigned int interval;$/;" m struct:sr_timer
-intop cfg.y /^intop: equalop {$$=$1; }$/;" l
-intval cfg.tab.c /^ long intval;$/;" m union:YYSTYPE file:
-intval cfg.tab.h /^ long intval;$/;" m union:YYSTYPE
-intval route_struct.h /^ int intval;$/;" m union:expr::<anonymous>
-inuse mem/vq_malloc.h /^ } inuse;$/;" m union:vqm_frag::<anonymous>
-ion_CASE parser/case_cont.h 60;" d
-iov_lines_eol modules/tm/t_fifo.c /^static struct iovec iov_lines_eol[2*TWRITE_PARAMS];$/;" v file:
-ip cfg.y /^ip: ipv4 { $$=$1; }$/;" l
-ip ip_addr.h /^ struct ip_addr ip;$/;" m struct:net
-ip modules/cpl-c/cpl_run.h /^ char *ip; \/* instruction pointer *\/$/;" m struct:cpl_interpreter
-ip modules/mangler/contact_ops.h /^ str ip;$/;" m struct:uri_format
-ip modules/mediaproxy/mediaproxy.c /^ str ip;$/;" m file:
-ip resolve.h /^ unsigned char ip[4];$/;" m struct:a_rdata
-ip2str modules/mangler/ip_helper.c /^ip2str (unsigned int address, char **rr)$/;" f
-ip6 resolve.h /^ unsigned char ip6[16];$/;" m struct:aaaa_rdata
-ipExpression modules/mangler/sdp_mangler.h /^regex_t *ipExpression;$/;" v
-ip_addr ip_addr.h /^struct ip_addr{$/;" s
-ip_addr2a ip_addr.h /^static inline char* ip_addr2a(struct ip_addr* ip)$/;" f
-ip_addr2he ip_addr.h /^static inline struct hostent* ip_addr2he(str* name, struct ip_addr* ip)$/;" f
-ip_addr2su ip_addr.h 321;" d
-ip_addr_cmp ip_addr.h 230;" d
-ip_addr_h ip_addr.h 36;" d
-ip_node modules/pike/ip_tree.h /^struct ip_node$/;" s
-ip_tmp cfg.tab.c /^static struct ip_addr* ip_tmp;$/;" v file:
-ip_tree modules/pike/ip_tree.h /^struct ip_tree$/;" s
-ipaddr cfg.tab.c /^ struct ip_addr* ipaddr;$/;" m union:YYSTYPE file:
-ipaddr cfg.tab.h /^ struct ip_addr* ipaddr;$/;" m union:YYSTYPE
-ipnet cfg.tab.c /^ struct net* ipnet;$/;" m union:YYSTYPE file:
-ipnet cfg.tab.h /^ struct net* ipnet;$/;" m union:YYSTYPE
-ipnet cfg.y /^ipnet: ip SLASH ip { $$=mk_net($1, $3); } $/;" l
-ipv4 cfg.y /^ipv4: NUMBER DOT NUMBER DOT NUMBER DOT NUMBER { $/;" l
-ipv6 cfg.y /^ipv6: ipv6addr { $$=$1; }$/;" l
-ipv6addr cfg.y /^ipv6addr: IPV6ADDR {$/;" l
-is1918addr modules/nathelper/nathelper.c /^is1918addr(str *saddr)$/;" f file:
-isAnyAddress modules/mediaproxy/mediaproxy.c 79;" d file:
-isDestinationLocal modules/mediaproxy/mediaproxy.c /^static CheckLocalPartyProc isDestinationLocal;$/;" v file:
-isFromLocal modules/mediaproxy/mediaproxy.c /^static CheckLocalPartyProc isFromLocal;$/;" v file:
-isPrivateAddress modules/mediaproxy/mediaproxy.c 1051;" d file:
-isRTPAsymmetric modules/mediaproxy/mediaproxy.c /^isRTPAsymmetric(str userAgent)$/;" f file:
-isSIPAsymmetric modules/mediaproxy/mediaproxy.c /^isSIPAsymmetric(str userAgent)$/;" f file:
-is_2rr modules/rr/loose.c /^static inline int is_2rr(str* _params)$/;" f file:
-is_acc_on modules/acc/acc_mod.h /^static inline int is_acc_on(struct sip_msg *rq)$/;" f
-is_char_equal parser/parse_content.c 49;" d file:
-is_db_acc_on modules/acc/acc_mod.h /^static inline int is_db_acc_on(struct sip_msg *rq)$/;" f
-is_db_mc_on modules/acc/acc_mod.h /^static inline int is_db_mc_on(struct sip_msg *rq)$/;" f
-is_diam_acc_on modules/acc/acc_mod.h /^static inline int is_diam_acc_on(struct sip_msg *rq)$/;" f
-is_diam_mc_on modules/acc/acc_mod.h /^static inline int is_diam_mc_on(struct sip_msg *rq)$/;" f
-is_domain_local modules/domain/domain.c /^int is_domain_local(str* _host)$/;" f
-is_e164 modules/auth/rpid.c /^static inline int is_e164(str* _user)$/;" f file:
-is_e164 modules/enum/enum.c /^static inline int is_e164(str* _user)$/;" f file:
-is_empty_end parser/parser_f.h /^inline static int is_empty_end(char* p, char* pend )$/;" f
-is_finished modules/ext/my_exec.h /^inline int is_finished()$/;" f
-is_free mem/q_malloc.h /^ long is_free;$/;" m union:qm_frag::<anonymous>
-is_from_local modules/domain/domain.c /^int is_from_local(struct sip_msg* _msg, char* _s1, char* _s2)$/;" f
-is_from_user_e164 modules/enum/enum.c /^int is_from_user_e164(struct sip_msg* _msg, char* _s1, char* _s2)$/;" f
-is_gflag modules/gflags/gflags.c /^static int is_gflag(struct sip_msg *bar, char *flag_par, char *foo)$/;" f file:
-is_hot_leaf modules/pike/ip_tree.c 256;" d file:
-is_hot_non_leaf modules/pike/ip_tree.c 250;" d file:
-is_in_sip_addr modules/sms/sms_funcs.c 105;" d file:
-is_in_timer_list2 modules/tm/timer.c 129;" d file:
-is_invite modules/tm/h_table.h 306;" d
-is_lang_tag_matching modules/cpl-c/cpl_switches.h /^inline static int is_lang_tag_matching(str *range,str *cpl_tag,str *cpl_subtag)$/;" f
-is_leap_year modules/cpl-c/cpl_time.h 56;" d
-is_list_empty modules/pike/timer.h 47;" d
-is_local modules/tm/h_table.h 307;" d
-is_log_acc_on modules/acc/acc_mod.h /^static inline int is_log_acc_on(struct sip_msg *rq)$/;" f
-is_log_mc_on modules/acc/acc_mod.h /^static inline int is_log_mc_on(struct sip_msg *rq)$/;" f
-is_main main.c /^int is_main=1; \/* flag = is this the "main" process? *\/$/;" v
-is_maxfwd_present modules/maxfwd/mf_funcs.c /^int is_maxfwd_present( struct sip_msg* msg , str *foo)$/;" f
-is_mc_on modules/acc/acc_mod.h /^static inline int is_mc_on(struct sip_msg *rq)$/;" f
-is_mcast ip_addr.c /^int is_mcast(struct ip_addr* ip)$/;" f
-is_mime_char parser/parse_content.c 47;" d file:
-is_myself modules/rr/loose.c /^static inline int is_myself(str *_user, str* _host, unsigned short _port)$/;" f file:
-is_nonce_stale modules/auth/nonce.c /^int is_nonce_stale(str* _n) $/;" f
-is_positive_number modules/mangler/ip_helper.c /^is_positive_number (char *str)$/;" f
-is_preloaded modules/rr/loose.c /^static int is_preloaded(struct sip_msg* msg)$/;" f file:
-is_present_hf_f modules/textops/textops.c /^static int is_present_hf_f(struct sip_msg* msg, char* str_hf, char* foo)$/;" f file:
-is_quoted parser/parse_disposition.h /^ int is_quoted;$/;" m struct:disposition_param
-is_rad_acc_on modules/acc/acc_mod.h /^static inline int is_rad_acc_on(struct sip_msg *rq)$/;" f
-is_rad_mc_on modules/acc/acc_mod.h /^static inline int is_rad_mc_on(struct sip_msg *rq)$/;" f
-is_req modules/acc/diam_message.h 308;" d
-is_req modules/auth_diameter/diameter_msg.h 312;" d
-is_rpid_user_e164 modules/auth/rpid.c /^int is_rpid_user_e164(struct sip_msg* _m, char* _s1, char* _s2)$/;" f
-is_sattr_set modules/avp/avp.c /^static int is_sattr_set(struct sip_msg* msg, char* attr, char* foo)$/;" f file:
-is_set modules/tm/dlg.h /^ unsigned char is_set; \/* is_set flag *\/$/;" m struct:dlg_seq
-is_space modules/ext/ext.c /^static inline int is_space(char c)$/;" f file:
-is_statusreport modules/sms/sms_funcs.h /^ int is_statusreport;$/;" m struct:incame_sms
-is_strict modules/rr/loose.c /^static inline int is_strict(str* _params)$/;" f file:
-is_uri_host_local modules/domain/domain.c /^int is_uri_host_local(struct sip_msg* _msg, char* _s1, char* _s2)$/;" f
-is_user modules/postgres/serpgctl /^is_user() {$/;" f
-is_user modules/uri/checks.c /^int is_user(struct sip_msg* _m, char* _user, char* _str2)$/;" f
-is_user scripts/sc /^is_user() {$/;" f
-is_user scripts/sc_unixsock /^is_user() {$/;" f
-is_user_in modules/group/group.c /^int is_user_in(struct sip_msg* _msg, char* _hf, char* _grp)$/;" f
-is_warm_leaf modules/pike/ip_tree.c 262;" d file:
-isflagset flags.c /^int isflagset( struct sip_msg* msg, flag_t flag ) {$/;" f
-isnulladdr modules/nathelper/nathelper.c /^isnulladdr(str *sx, int pf)$/;" f file:
-ispo_CASE parser/case_acce.h 79;" d
-item_func_t modules/xlog/xl_lib.h /^typedef int (*item_func_t) (struct sip_msg*, str*, str*, int);$/;" t
-itf modules/xlog/xl_lib.h /^ item_func_t itf;$/;" m struct:_xl_elog
-ival modules/tm/t_fifo.c /^ int ival;$/;" m struct:hdr_avp file:
-jab_connect modules/jabber/doc/web/libjab.php /^function jab_connect($server, $port)$/;" f
-jab_db_db modules/jabber/doc/web/subscribe.php /^$jab_db_db="sip_jab"; # database name$/;" v
-jab_db_pas modules/jabber/doc/web/subscribe.php /^$jab_db_pas="***"; # database user's password$/;" v
-jab_db_srv modules/jabber/doc/web/subscribe.php /^$jab_db_srv="127.0.0.1"; # database server$/;" v
-jab_db_usr modules/jabber/doc/web/subscribe.php /^$jab_db_usr="ser"; # database user$/;" v
-jab_disconnect modules/jabber/doc/web/libjab.php /^function jab_disconnect($fd)$/;" f
-jab_get_agents modules/jabber/doc/web/libjab.php /^function jab_get_agents($fd, $id, $server)$/;" f
-jab_get_auth modules/jabber/doc/web/libjab.php /^function jab_get_auth($fd, $id, $user)$/;" f
-jab_get_reg modules/jabber/doc/web/libjab.php /^function jab_get_reg($fd, $id, $server)$/;" f
-jab_gw_name modules/jabber/xjab_worker.c /^static str jab_gw_name = {"jabber_gateway at 127.0.0.1", 24};$/;" v file:
-jab_id modules/jabber/doc/web/subscribe.php /^ $jab_id = $row[1];$/;" v
-jab_id modules/jabber/doc/xjab.sql /^ jab_id VARCHAR(128) NOT NULL,$/;" F
-jab_passwd modules/jabber/doc/web/subscribe.php /^ $jab_passwd = $row[2];$/;" v
-jab_send_presence modules/jabber/doc/web/libjab.php /^function jab_send_presence($fd, $to, $presence)$/;" f
-jab_set_auth modules/jabber/doc/web/libjab.php /^function jab_set_auth($fd, $id, $user, $passwd)$/;" f
-jab_set_reg modules/jabber/doc/web/libjab.php /^function jab_set_reg($fd, $id, $server, $username, $password)$/;" f
-jab_set_regk modules/jabber/doc/web/libjab.php /^function jab_set_regk($fd, $id, $server, $username, $password, $nick, $key)$/;" f
-jab_set_unreg modules/jabber/doc/web/libjab.php /^function jab_set_unreg($fd, $id, $server)$/;" f
-jab_type modules/jabber/doc/web/subscribe.php /^ $jab_type = $row[3];$/;" v
-jabber_dbf modules/jabber/jabber.c /^static db_func_t jabber_dbf;$/;" v file:
-jaddress modules/jabber/jabber.c /^char *jaddress = "127.0.0.1";$/;" v
-jaliases modules/jabber/jabber.c /^char *jaliases = NULL;$/;" v
-jcid modules/jabber/doc/web/subscribe.php /^ $jcid = $jcid + 1;$/;" v
-jcid modules/jabber/doc/web/subscribe.php /^ $jcid = $jcid + 1;$/;" v
-jcid modules/jabber/doc/web/subscribe.php /^ $jcid = $jcid + 1;$/;" v
-jcid modules/jabber/doc/web/subscribe.php /^$jcid = 0; # Jabber communication ID$/;" v
-jcid modules/jabber/xjab_jconf.h /^ int jcid;$/;" m struct:_xj_jconf
-jconf modules/jabber/xjab_jcon.h /^ tree234 *jconf; \/\/ open conferences$/;" m struct:_xj_jcon
-jdm modules/jabber/xjab_worker.h /^ str *jdm; \/\/ Jabber domain$/;" m struct:_xj_jalias
-jdomain modules/jabber/jabber.c /^char *jdomain = NULL;$/;" v
-jid modules/jabber/doc/web/subscribe.php /^ $jid = substr($jid1, 0, strlen($jid1)-strlen($jid2));$/;" v
-jid modules/jabber/doc/web/subscribe.php /^ $jid = substr($jid1, 0, strlen($jid1)-strlen($jid2));$/;" v
-jid1 modules/jabber/doc/web/subscribe.php /^ $jid1 = stristr($buf_recv, "id='");$/;" v
-jid1 modules/jabber/doc/web/subscribe.php /^ $jid1 = substr($jid1, 4);$/;" v
-jid1 modules/jabber/doc/web/subscribe.php /^ $jid1 = stristr($buf_recv, "id='");$/;" v
-jid1 modules/jabber/doc/web/subscribe.php /^ $jid1 = substr($jid1, 4);$/;" v
-jid2 modules/jabber/doc/web/subscribe.php /^ $jid2 = strstr($jid1, "'");$/;" v
-jid2 modules/jabber/doc/web/subscribe.php /^ $jid2 = strstr($jid1, "'");$/;" v
-jiffies timer.c /^static int* jiffies=0;$/;" v file:
-jkey modules/jabber/xjab_base.h /^ xj_jkey jkey; \/\/ pointer to FROM$/;" m struct:_xj_sipmsg
-jkey modules/jabber/xjab_jcon.h /^ xj_jkey jkey; \/\/ id of connection$/;" m struct:_xj_jcon
-jmqueue modules/jabber/xjab_util.h /^ t_xj_jmsg_queue jmqueue; \/\/ messages queue$/;" m struct:_xj_jcon_pool
-jport modules/jabber/doc/web/subscribe.php /^$jport = "5222"; # Jabber server port$/;" v
-jport modules/jabber/jabber.c /^int jport = 5222;$/;" v
-jserver modules/jabber/doc/web/subscribe.php /^$jserver = "127.0.0.1"; # Jabber server address$/;" v
-jsm modules/jabber/xjab_util.h /^ xj_sipmsg *jsm; \/\/ pointer to the message$/;" m struct:_xj_jmsg_queue
-juid modules/jabber/doc/web/subscribe.php /^ $juid = $row[0];$/;" v
-juid modules/jabber/xjab_jcon.h /^ int juid; \/\/ internal id of the Jabber user$/;" m struct:_xj_jcon
-jusers modules/jabber/doc/xjab.sql /^CREATE TABLE jusers($/;" t
-jwl modules/jabber/jabber.c /^xj_wlist jwl = NULL;$/;" v
-key modules/jabber/xjab_presence.h /^ int key;$/;" m struct:_xj_pres_cell
-keys_cmp modules/avpops/avpops_db.c /^static db_key_t keys_cmp[3]; \/* array of keys and values used in selection *\/$/;" v file:
-kids modules/jabber/tree234.c /^ node234 *kids[4];$/;" m struct:node234_Tag file:
-kids modules/pike/ip_tree.h /^ struct ip_node *kids;$/;" m struct:ip_node
-kill_all_children main.c /^static void kill_all_children(int signum)$/;" f file:
-kill_cmd unixsock_server.c /^static int kill_cmd(str* msg)$/;" f file:
-kill_fifo_cmd fifo_server.c /^static int kill_fifo_cmd( FILE *stream, char *response_file )$/;" f file:
-kill_list modules/exec/kill.c /^static struct timer_list kill_list;$/;" v file:
-kill_lock modules/exec/kill.c /^static gen_lock_t *kill_lock;$/;" v file:
-kill_prog modules/ext/my_exec.c /^int kill_prog()$/;" f
-kill_reason modules/tm/h_table.h /^enum kill_reason { REQ_FWDED=1, REQ_RPLD=2, REQ_RLSD=4, REQ_EXIST=8 };$/;" g
-kill_transaction modules/tm/t_funcs.c /^static int kill_transaction( struct cell *trans )$/;" f file:
-kr modules/tm/h_table.c /^static enum kill_reason kr;$/;" v file:
-l modules/pdt/pdt.c /^gen_lock_t l;$/;" v
-l route_struct.h /^ }l;$/;" m struct:expr
-lENG parser/obsolete/strs.h 318;" d
-lENg parser/obsolete/strs.h 317;" d
-lEnG parser/obsolete/strs.h 316;" d
-lEng parser/obsolete/strs.h 315;" d
-label modules/tm/h_table.h /^ unsigned int label;$/;" m struct:cell
-last modules/jabber/xode.h /^ struct xode_spool_node *last;$/;" m struct:xode_spool_struct
-last modules/pa/pdomain.h /^ struct presentity* last; \/* Last presentity in the domain *\/$/;" m struct:pdomain
-last modules/usrloc/hslot.h /^ struct urecord* last; \/* Last element in the list *\/$/;" m struct:hslot
-last modules/usrloc/udomain.h /^ struct urecord* last; \/* Last element in the list *\/$/;" m struct:udomain::<anonymous>
-last_cell modules/tm/h_table.h /^ struct cell* last_cell;$/;" m struct:entry
-last_frag mem/f_malloc.h /^ struct fm_frag* last_frag;$/;" m struct:fm_block
-last_frag_end mem/q_malloc.h /^ struct qm_frag_end* last_frag_end;$/;" m struct:qm_block
-last_header parser/msg_parser.h /^ struct hdr_field* last_header; \/* Pointer to the last parsed header*\/$/;" m struct:sip_msg
-last_param parser/parse_to.h /^ struct to_param *last_param; \/* Last parameter in the list *\/$/;" m struct:to_body
-last_param parser/parse_via.h /^ struct via_param* last_param; \/*last via parameter, internal use*\/$/;" m struct:via_body
-last_received modules/tm/h_table.h /^ int last_received;$/;" m struct:ua_client
-last_route modules/tm/dlg.h /^ str* last_route; \/* If not zero add this as the last route *\/$/;" m struct:dlg_hooks
-last_tl modules/exec/kill.h /^ struct timer_link last_tl;$/;" m struct:timer_list
-last_tl modules/tm/timer.h /^ struct timer_link last_tl;$/;" m struct:timer
-last_to_proxy modules/cpl-c/cpl_run.h /^ struct location *last_to_proxy;$/;" m struct:cpl_interpreter::proxy_st
-lastattrib modules/jabber/xode.h /^ struct xode_struct* lastattrib;$/;" m struct:xode_struct
-lastchild modules/jabber/xode.h /^ struct xode_struct* lastchild;$/;" m struct:xode_struct
-ldone modules/msilo/ms_msg_list.h /^ msg_list_el ldone;$/;" m struct:_msg_list
-leNG parser/obsolete/strs.h 314;" d
-leNg parser/obsolete/strs.h 313;" d
-leaf_hits modules/pike/ip_tree.h /^ unsigned short leaf_hits[2];$/;" m struct:ip_node
-left lex.yy.c /^ int left;$/;" m struct:str_buf file:
-left modules/permissions/rule.h /^ expression *left, *left_exceptions, *right, *right_exceptions;$/;" m struct:rule_struct
-left_exceptions modules/permissions/rule.h /^ expression *left, *left_exceptions, *right, *right_exceptions;$/;" m struct:rule_struct
-len dset.c /^ unsigned int len;$/;" m struct:branch file:
-len ip_addr.h /^ unsigned int len; \/* address len, 16 or 4 *\/$/;" m struct:ip_addr
-len lump_struct.h /^ int len; \/* length of this header field *\/$/;" m struct:lump
-len modules/jabber/xjab_util.h /^ int len; \/\/ maximum len of the pool$/;" m struct:_xj_jcon_pool
-len modules/jabber/xjab_util.h /^ int len; \/\/ maximum size of the queue$/;" m struct:_xj_jmsg_queue
-len modules/jabber/xjab_worker.h /^ int len; \/\/ length of the list$/;" m struct:_xj_wlist
-len modules/jabber/xode.h /^ int len;$/;" m struct:xode_spool_struct
-len parser/contact/contact.h /^ int len; \/* Total length of the element *\/$/;" m struct:contact
-len parser/hf.h /^ int len; \/* length from hdr start until EoHF (incl.CRLF) *\/$/;" m struct:hdr_field
-len parser/msg_parser.h /^ unsigned int len; \/* message len (orig) *\/$/;" m struct:sip_msg
-len parser/parse_fline.h /^ int len; \/* length including delimiter *\/$/;" m struct:msg_start
-len parser/parse_nameaddr.h /^ int len; \/* Total length of the field (including all$/;" m struct:name_addr
-len parser/parse_param.h /^ int len; \/* Total length of the parameter including = and quotes *\/$/;" m struct:param
-len parser/parse_rr.h /^ int len; \/* Length of the whole route field *\/$/;" m struct:rr
-len str.h /^ int len; \/*string len*\/$/;" m struct:_str
-lenG parser/obsolete/strs.h 312;" d
-len_q qvalue.h /^static inline size_t len_q(qvalue_t q)$/;" f
-leng parser/obsolete/strs.h 311;" d
-length examples/geo_split.sh /^ length()==0 { next; } # skip empty lines$/;" f
-length_type modules/cpl-c/cpl_parser.c /^typedef unsigned short length_type ;$/;" t file:
-length_type_ptr modules/cpl-c/cpl_parser.c /^typedef length_type* length_type_ptr;$/;" t file:
-lenof modules/jabber/tree234.c 1248;" d file:
-line lex.yy.c /^ int line=1;$/;" v
-line mem/f_malloc.h /^ unsigned long line;$/;" m struct:fm_frag
-line mem/q_malloc.h /^ unsigned long line;$/;" m struct:qm_frag
-line mem/vq_malloc.h /^ unsigned long line;$/;" m struct:vqm_frag
-line modules/postgres/aug_alloc.c /^ augUInt32 line;$/;" m struct:MemHeadStruct file:
-link modules/pdt/doc/web/request.php /^ $link = mysql_connect($host, $user, $pass)$/;" v
-links_config modules/sms/sms.c /^char *links_config = 0;$/;" v
-list modules/cpl-c/cpl_parser.c /^static struct node *list = 0;$/;" v file:
-list_entry modules/tm/h_table.h 284;" d
-list_link modules/pike/timer.h /^struct list_link {$/;" s
-listen_id cfg.y /^listen_id: ip { tmp=ip_addr2a($1);$/;" l
-lists modules/tm/timer.h /^enum lists$/;" g
-ll2ipnode modules/pike/ip_tree.h 81;" d
-load_avp modules/avp_db/avp_db.c /^static int load_avp(struct sip_msg* msg, char* attr, char* _dummy)$/;" f file:
-load_avp_fixup modules/avp_db/avp_db.c /^static int load_avp_fixup(void** param, int param_no)$/;" f file:
-load_avp_fixup modules/avp_radius/avp_radius.c /^static int load_avp_fixup(void** param, int param_no)$/;" f file:
-load_avp_param modules/avp_db/avp_db.c /^typedef enum load_avp_param {$/;" g file:
-load_avp_param modules/avp_radius/avp_radius.c /^typedef enum load_avp_param {$/;" g file:
-load_avp_param_t modules/avp_db/avp_db.c /^} load_avp_param_t;$/;" t file:
-load_avp_param_t modules/avp_radius/avp_radius.c /^} load_avp_param_t;$/;" t file:
-load_avp_radius modules/avp_radius/avp_radius.c /^static int load_avp_radius(struct sip_msg* msg, char* attr, char* _dummy)$/;" f file:
-load_avp_user modules/avp_db/avp_db.c /^static int load_avp_user(struct sip_msg* msg, str* prefix, load_avp_param_t param)$/;" f file:
-load_avp_user modules/avp_radius/avp_radius.c /^static int load_avp_user(struct sip_msg* msg, str* prefix, load_avp_param_t type)$/;" f file:
-load_avp_uuid modules/avp_db/avp_db.c /^static int load_avp_uuid(struct sip_msg* msg, str* prefix, int avp_id)$/;" f file:
-load_file modules/cpl-c/cpl_loader.c /^int load_file( char *filename, str *xml)$/;" f
-load_fixup modules/permissions/permissions.c /^static int load_fixup(void** param, int param_no)$/;" f file:
-load_mod scripts/serconf.sh /^function load_mod()$/;" f
-load_module sr_module.c /^int load_module(char* path)$/;" f
-load_tm modules/tm/tm_load.c /^int load_tm( struct tm_binds *tmb)$/;" f
-load_tm_f modules/tm/tm_load.h /^typedef int(*load_tm_f)( struct tm_binds *tmb );$/;" t
-load_xjab modules/jabber/xjab_load.c /^int load_xjab(struct xjab_binds *xjb)$/;" f
-load_xjab_f modules/jabber/xjab_load.h /^typedef int(*load_xjab_f)(struct xjab_binds*);$/;" t
-loc modules/pa/presentity.h /^ str loc; \/* human readable description of location *\/$/;" m struct:location
-loc_buf modules/pa/presentity.h /^ char loc_buf[TUPLE_LOCATION_LOC_LEN];$/;" m struct:location
-loc_seq modules/tm/dlg.h /^ dlg_seq_t loc_seq; \/* Local sequence number *\/$/;" m struct:dlg
-loc_set modules/cpl-c/cpl_run.h /^ struct location *loc_set; \/* location set *\/$/;" m struct:cpl_interpreter
-loc_tag modules/tm/dlg.h /^ str loc_tag; \/* Local tag of the dialog *\/$/;" m struct:dlg_id
-loc_uri modules/tm/dlg.h /^ str loc_uri; \/* Local URI *\/$/;" m struct:dlg
-localIP modules/mediaproxy/mediaproxy.c /^ int localIP; \/\/ true if the IP is locally defined inside this media stream$/;" m file:
-local_cancel modules/tm/h_table.h /^ struct retr_buf local_cancel;$/;" m struct:ua_client
-local_free resolve.c 50;" d file:
-local_free tcp_main.c 106;" d file:
-local_malloc resolve.c 49;" d file:
-local_malloc tcp_main.c 105;" d file:
-local_reply modules/tm/t_reply.c /^enum rps local_reply( struct cell *t, struct sip_msg *p_msg, int branch, $/;" f
-local_timestamp modules/flatstore/flatstore_mod.c /^time_t local_timestamp;$/;" v
-local_totag modules/tm/h_table.h /^ str local_totag;$/;" m struct:ua_server
-location modules/cpl-c/loc_set.h /^struct location {$/;" s
-location modules/pa/presentity.h /^ location_t location;$/;" m struct:presence_tuple
-location modules/pa/presentity.h /^typedef struct location {$/;" s
-location_doc_add_user modules/pa/location.c /^int location_doc_add_user(str* _b, int _l, str *user_uri)$/;" f
-location_doc_end modules/pa/location.c /^int location_doc_end(str* _b, int _l)$/;" f
-location_doc_end_resource modules/pa/location.c /^int location_doc_end_resource(str *_b, int _l)$/;" f
-location_doc_start modules/pa/location.c /^int location_doc_start(str* _b, int _l)$/;" f
-location_doc_start_userlist modules/pa/location.c /^int location_doc_start_userlist(str* _b, int _l, str* _uri)$/;" f
-location_lookup_placeid modules/pa/location.c /^int location_lookup_placeid(str *room_name, int *placeid)$/;" f
-location_package modules/pa/presentity.h /^ location_package_t location_package;$/;" m struct:presentity
-location_package modules/pa/presentity.h /^typedef struct location_package {$/;" s
-location_package_location_add_user modules/pa/publish.c /^int location_package_location_add_user(pdomain_t *pdomain, str *site, str *floor, str *room, presentity_t *presentity)$/;" f
-location_package_location_del_user modules/pa/publish.c /^int location_package_location_del_user(pdomain_t *pdomain, str *site, str *floor, str *room, presentity_t *presentity)$/;" f
-location_package_t modules/pa/presentity.h /^} location_package_t;$/;" t
-location_placeid_n_rows modules/pa/location.c /^int location_placeid_n_rows;$/;" v
-location_placeid_row modules/pa/location.c /^struct location_placeid_row {$/;" s file:
-location_placeid_table modules/pa/location.c /^} *location_placeid_table;$/;" v
-location_t modules/pa/presentity.h /^} location_t;$/;" t
-locations modules/cpl/jcpli.h /^ TLocation *locations;$/;" m struct:_RedirectMessage
-lock modules/exec/kill.c 66;" d file:
-lock modules/pa/pdomain.h /^ gen_lock_t lock; \/* Lock for the domain *\/$/;" m struct:pdomain
-lock modules/pdt/domains.h /^ gen_lock_t lock;$/;" m struct:_h_entry
-lock modules/tm/lock.h 81;" d
-lock modules/tm/lock.h 84;" d
-lock modules/usrloc/udomain.h /^ gen_lock_t lock; \/* lock variable *\/$/;" m struct:udomain
-lock test/locking/locking_test.c /^fl_lock_t lock;$/;" v
-lock_alloc lock_alloc.h 65;" d
-lock_alloc lock_alloc.h 87;" d
-lock_cleanup modules/tm/lock.c /^void lock_cleanup()$/;" f
-lock_dealloc lock_alloc.h 66;" d
-lock_dealloc lock_alloc.h 88;" d
-lock_destroy lock_ops.h /^inline static void lock_destroy(gen_lock_t* lock)$/;" f
-lock_destroy lock_ops.h 110;" d
-lock_destroy lock_ops.h 76;" d
-lock_destroy lock_ops.h 92;" d
-lock_fd test/locking/locking_test.c /^static int lock_fd;$/;" v file:
-lock_get lock_ops.h /^inline static void lock_get(gen_lock_t* lock)$/;" f
-lock_get lock_ops.h 100;" d
-lock_get lock_ops.h 118;" d
-lock_get lock_ops.h 84;" d
-lock_hash modules/tm/h_table.c /^void lock_hash(int i) $/;" f
-lock_idx modules/pike/ip_tree.h /^ int lock_idx;$/;" m struct:ip_tree::entry
-lock_init lock_ops.h /^inline static gen_lock_t* lock_init(gen_lock_t* lock)$/;" f
-lock_initialize modules/tm/lock.c /^int lock_initialize()$/;" f
-lock_pdomain modules/pa/pdomain.c /^void lock_pdomain(pdomain_t* _d)$/;" f
-lock_release lock_ops.h /^inline static void lock_release(gen_lock_t* lock)$/;" f
-lock_release lock_ops.h 101;" d
-lock_release lock_ops.h 119;" d
-lock_release lock_ops.h 85;" d
-lock_set_alloc lock_alloc.h /^inline static gen_lock_set_t* lock_set_alloc(int n)$/;" f
-lock_set_dealloc lock_alloc.h 103;" d
-lock_set_dealloc lock_alloc.h 82;" d
-lock_set_destroy lock_ops.h /^inline static void lock_set_destroy(gen_lock_set_t* s)$/;" f
-lock_set_destroy lock_ops.h 234;" d
-lock_set_get lock_ops.h /^inline static void lock_set_get(gen_lock_set_t* s, int n)$/;" f
-lock_set_get lock_ops.h 244;" d
-lock_set_init lock_ops.h /^inline static gen_lock_set_t* lock_set_init(gen_lock_set_t* s)$/;" f
-lock_set_release lock_ops.h /^inline static void lock_set_release(gen_lock_set_t* s, int n)$/;" f
-lock_set_release lock_ops.h 245;" d
-lock_tree_branch modules/pike/ip_tree.c /^void lock_tree_branch(unsigned char b)$/;" f
-lock_udomain modules/usrloc/udomain.c /^void lock_udomain(udomain_t* _d)$/;" f
-lock_udomain modules/usrloc/usrloc.h /^ lock_udomain_t lock_udomain;$/;" m struct:usrloc_api
-lock_udomain_t modules/usrloc/udomain.h /^typedef void (*lock_udomain_t)(udomain_t* _d);$/;" t
-locks lock_ops.h /^ gen_lock_t* locks;$/;" m struct:gen_lock_set_t_
-log_buf modules/xlog/xlog.c /^char *log_buf = NULL;$/;" v
-log_dir modules/cpl-c/cpl_env.h /^ char *log_dir; \/* dir where the user log should be dumped *\/$/;" m struct:cpl_enviroment
-log_facility main.c /^int log_facility = LOG_DAEMON;$/;" v
-log_flag modules/acc/acc_mod.c /^int log_flag = 0;$/;" v
-log_fmt modules/acc/acc_mod.c /^char *log_fmt=DEFAULT_LOG_FMT;$/;" v
-log_level modules/acc/acc_mod.c /^int log_level=L_NOTICE;$/;" v
-log_missed_flag modules/acc/acc_mod.c /^int log_missed_flag = 0;$/;" v
-log_stderr main.c /^int log_stderr = 0;$/;" v
-log_stderr test/dns_query.c /^int log_stderr=1;$/;" v
-long_addr utils/fifo_relay/fifo_server.php /^ $long_addr = ip2long($addr);$/;" v
-lookup modules/registrar/lookup.c /^int lookup(struct sip_msg* _m, char* _t, char* _s)$/;" f
-lookup_avp_galias usr_avp.c /^int lookup_avp_galias(str *alias, int *type, int_str *avp_name)$/;" f
-lookup_cmd unixsock_server.c /^static struct unixsock_cmd* lookup_cmd(str* cmd)$/;" f file:
-lookup_domain modules/cpl-c/cpl.c /^static char *lookup_domain = 0;$/;" v file:
-lookup_fifo_cmd fifo_server.c /^static struct fifo_command *lookup_fifo_cmd( char *name )$/;" f file:
-looping_interval modules/sms/sms_funcs.h /^ int looping_interval;$/;" m struct:modem
-loose_route modules/rr/loose.c /^int loose_route(struct sip_msg* _m, char* _s1, char* _s2)$/;" f
-lpidf_add_address modules/pa/lpidf.c /^int lpidf_add_address(str* _b, int _l, str* _addr, lpidf_status_t _st)$/;" f
-lpidf_add_presentity modules/pa/lpidf.c /^int lpidf_add_presentity(str* _b, int _l, str* _uri)$/;" f
-lpidf_status modules/pa/lpidf.h /^typedef enum lpidf_status {$/;" g
-lpidf_status_t modules/pa/lpidf.h /^} lpidf_status_t;$/;" t
-lr parser/msg_parser.h /^ str lr;$/;" m struct:sip_uri
-lr parser/parse_param.h /^ struct param* lr; \/* lr parameter *\/$/;" m struct:uri_hooks
-lr test/p_uri.c /^ str lr;$/;" m struct:sip_uri file:
-lr_val parser/msg_parser.h /^ str lr_val; \/* lr value placeholder for lr=on a.s.o*\/$/;" m struct:sip_uri
-ls_ifflags test/ifls.c /^int ls_ifflags(char* name, int family , int options)$/;" f
-ls_ifs test/ifls.c /^int ls_ifs(char* name, int family, int options)$/;" f
-lsent modules/msilo/ms_msg_list.h /^ msg_list_el lsent;$/;" m struct:_msg_list
-lst_tmp cfg.tab.c /^static struct socket_id* lst_tmp;$/;" v file:
-ltrim modules/mediaproxy/mediaproxy.c /^ltrim(str *string)$/;" f file:
-lu_append_branches modules/cpl-c/cpl_env.h /^ int lu_append_branches; \/* how many branches lookup should add *\/$/;" m struct:cpl_enviroment
-lu_domain modules/cpl-c/cpl_env.h /^ udomain_t* lu_domain; \/* domain used for lookup *\/$/;" m struct:cpl_enviroment
-lump lump_struct.h /^struct lump{$/;" s
-lump_check_opt msg_translator.c /^static inline int lump_check_opt( enum lump_conditions cond,$/;" f file:
-lump_clone modules/tm/sip_msg.c 72;" d file:
-lump_conditions lump_struct.h /^enum lump_conditions { COND_FALSE, \/* always false *\/$/;" g
-lump_dir data_lump.c /^enum lump_dir { LD_NEXT, LD_BEFORE, LD_AFTER };$/;" g file:
-lump_flag lump_struct.h /^enum lump_flag { LUMPFLAG_NONE=0, LUMPFLAG_DUPED=1, LUMPFLAG_SHMEM=2 };$/;" g
-lump_len modules/tm/sip_msg.c 69;" d file:
-lump_op lump_struct.h /^enum lump_op { LUMP_NOP=0, LUMP_DEL, LUMP_ADD, LUMP_ADD_SUBST, LUMP_ADD_OPT };$/;" g
-lump_rpl data_lump_rpl.h /^struct lump_rpl$/;" s
-lump_struct_h lump_struct.h 42;" d
-lump_subst lump_struct.h /^enum lump_subst{ SUBST_NOP=0, \/* do nothing *\/$/;" g
-lumps_len msg_translator.c /^static inline int lumps_len(struct sip_msg* msg, struct lump* lumps, struct socket_info* send_sock)$/;" f file:
-m modules/postgres/aug_alloc.c /^ struct MemHeadStruct m;$/;" m union:MemHead file:
-mAX_ parser/obsolete/strs.h 184;" d
-mAx_ parser/obsolete/strs.h 183;" d
-m_apo_escape modules/msilo/msfuncs.c /^int m_apo_escape(char* src, int slen, char* dst, int dlen)$/;" f
-m_build_body modules/msilo/msfuncs.c /^int m_build_body(str *body, time_t date, str msg)$/;" f
-m_build_headers modules/msilo/msfuncs.c /^int m_build_headers(str *buf, str ctype, str contact)$/;" f
-m_clean_silo modules/msilo/msilo.c /^void m_clean_silo(unsigned int ticks, void *param)$/;" f
-m_dump modules/msilo/msilo.c /^static int m_dump(struct sip_msg* msg, char* str1, char* str2)$/;" f file:
-m_dump scripts/serconf.sh /^ m_dump();$/;" f
-m_extract_content_type modules/msilo/msfuncs.c /^int m_extract_content_type(char* src, int len, t_content_type* ctype, int flag)$/;" f
-m_store modules/msilo/msilo.c /^static int m_store(struct sip_msg* msg, char* mode, char* str2)$/;" f file:
-m_tm_callback modules/msilo/msilo.c /^void m_tm_callback( struct cell *t, int type, struct tmcb_params *ps)$/;" f
-ma mem/memtest.c 63;" d file:
-maX_ parser/obsolete/strs.h 182;" d
-maddr parser/msg_parser.h /^ str maddr;$/;" m struct:sip_uri
-maddr parser/parse_param.h /^ struct param* maddr; \/* maddr parameter *\/$/;" m struct:uri_hooks
-maddr test/p_uri.c /^ str maddr;$/;" m struct:sip_uri file:
-maddr_val parser/msg_parser.h /^ str maddr_val;$/;" m struct:sip_uri
-maddr_val test/p_uri.c /^ str maddr_val;$/;" m struct:sip_uri file:
-magic mem/vq_malloc.h /^ unsigned char magic;$/;" m struct:vqm_frag::<anonymous>::<anonymous>
-magic modules/postgres/aug_alloc.c /^ MemMagic magic;$/;" m struct:MemHeadStruct file:
-magic modules/postgres/aug_alloc.c /^ MemMagic magic;$/;" m struct:MemOpt file:
-main main.c /^int main(int argc, char** argv)$/;" f
-main modules/jabber/tree234.c /^int main(void) {$/;" f
-main modules/postgres/aug_alloc.c /^main(int argc, char **argv)$/;" f
-main test/auto.c /^int main(int argc, char** argv)$/;" f
-main test/dns_query.c /^int main(int argc, char** argv)$/;" f
-main test/gethostbyaddr.c /^int main(int argc, char** argv)$/;" f
-main test/gethostbyname.c /^int main(int argc, char** argv)$/;" f
-main test/ifls.c /^int main(int argc, char**argv)$/;" f
-main test/locking/locking_test.c /^int main (int argc, char** argv)$/;" f
-main test/mips_lock.c /^int main(int argc, char** argv)$/;" f
-main test/p_uri.c /^int main (int argc, char** argv)$/;" f
-main test/re_test.c /^int main (int argc, char** argv)$/;" f
-main test/resolver_test.c /^int main (int argc, char** argv)$/;" f
-main test/shoot.c /^int main(int argc, char *argv[])$/;" f
-main test/shoot2.c /^int main(int argc, char *argv[])$/;" f
-main test/sock_conn.c /^main() {$/;" f
-main test/sock_disc.c /^main() {$/;" f
-main test/test.c /^int main(char** argv, int argn)$/;" f
-main test/udp.c /^int main(int argc, char *argv[])$/;" f
-main test/udp_flood.c /^int main (int argc, char** argv)$/;" f
-main test/udp_flood_disc.c /^int main (int argc, char** argv)$/;" f
-main test/udp_test_proxy.c /^int main(int argc, char** argv)$/;" f
-main test/via_parse.c /^int main(int argc, char** argv)$/;" f
-main utils/gen_ha1/gen_ha1.c /^int main(int argc, char** argv)$/;" f
-main utils/serunix/serunix.c /^int main(int argc, char** argv)$/;" f
-main_loop main.c /^int main_loop()$/;" f
-main_loop modules/jabber/xjab_worker.c /^int main_loop = 1;$/;" v
-make_clean etc/imgwd /^make_clean() {$/;" f
-make_mask modules/mangler/ip_helper.c /^make_mask (unsigned int length)$/;" f
-make_pdu modules/sms/libsms_putsms.c /^int make_pdu(struct sms_msg *msg, struct modem *mdm, char* pdu)$/;" f
-makefile_defs Makefile /^makefile_defs=0$/;" m
-mark modules/dbtext/dbt_lib.h /^ int mark;$/;" m struct:_dbt_table
-mark_authorized_cred parser/digest/digest.c /^int mark_authorized_cred(struct sip_msg* _m, struct hdr_field* _h)$/;" f
-mark_node modules/pike/ip_tree.c /^struct ip_node* mark_node(unsigned char *ip,int ip_len,$/;" f
-mask ip_addr.h /^ struct ip_addr mask;$/;" m struct:net
-mask modules/mediaproxy/mediaproxy.c /^ uint32_t mask;$/;" m file:
-mask modules/nathelper/nathelper.c /^ uint32_t mask;$/;" m file:
-match_hash_table modules/permissions/hash.c /^int match_hash_table(struct trusted_list** table, struct sip_msg* msg)$/;" f
-match_proto modules/permissions/trusted.c /^static inline int match_proto(char *proto_string, int proto_int)$/;" f file:
-match_res modules/permissions/trusted.c /^static int match_res(struct sip_msg* msg, db_res_t* _r)$/;" f file:
-matching_3261 modules/tm/t_lookup.c /^static int matching_3261( struct sip_msg *p_msg, struct cell **trans,$/;" f file:
-matchnet ip_addr.h /^inline static int matchnet(struct ip_addr* ip, struct net* net)$/;" f
-max_ parser/obsolete/strs.h 181;" d
-max_CASE parser/case_max.h 53;" d
-max_branches modules/ext/ext.c /^static int max_branches = 0;$/;" v file:
-max_contacts modules/registrar/reg_mod.c /^int max_contacts = 0; \/* Maximum number of contacts per AOR *\/$/;" v
-max_expires modules/registrar/reg_mod.c /^int max_expires = 0; \/* Minimum expires the phones are allowed to use in seconds,$/;" v
-max_hits modules/pike/ip_tree.h /^ unsigned short max_hits;$/;" m struct:ip_tree
-max_jobs modules/jabber/jabber.c /^int max_jobs = 10;$/;" v
-max_limit modules/maxfwd/maxfwd.c /^static int max_limit = 16;$/;" v file:
-max_pmatch re.h /^ int max_pmatch ; \/* highest () referenced *\/$/;" m struct:subst_expr
-max_real_used mem/f_malloc.h /^ unsigned long max_real_used;$/;" m struct:fm_block
-max_real_used mem/q_malloc.h /^ unsigned long max_real_used;$/;" m struct:qm_block
-max_reqs modules/pike/pike.c /^static int max_reqs = 30;$/;" v file:
-max_small_bucket mem/vq_malloc.h /^ unsigned char max_small_bucket;$/;" m struct:vqm_block
-max_sms_parts modules/sms/sms.c /^int max_sms_parts = MAX_SMS_PARTS;$/;" v
-max_sms_parts modules/sms/sms_funcs.c /^int max_sms_parts;$/;" v
-max_sms_per_call modules/sms/sms_funcs.h /^ int max_sms_per_call;$/;" m struct:network
-maxbuffer main.c /^unsigned int maxbuffer = MAX_RECV_BUFFER_SIZE; \/* maximum buffer size we do$/;" v
-maxforwards parser/msg_parser.h /^ struct hdr_field* maxforwards;$/;" m struct:sip_msg
-maxfwd_exports modules/maxfwd/maxfwd.c /^struct module_exports maxfwd_exports = {$/;" v
-maxj modules/jabber/xjab_worker.h /^ int maxj; \/\/ maximum jobs \/ worker$/;" m struct:_xj_wlist
-mcast_loopback main.c /^int mcast_loopback = 0;$/;" v
-mcast_ttl main.c /^int mcast_ttl = -1; \/* if -1, don't touch it, use the default (usually 1) *\/$/;" v
-md5 modules/tm/h_table.h /^ char md5[MD5_LEN];$/;" m struct:cell
-mday modules/cpl-c/cpl_time.h /^ int mday;$/;" m struct:_ac_maxval
-mediaproxySocket modules/mediaproxy/mediaproxy.c /^static char *mediaproxySocket = "\/var\/run\/proxydispatcher.sock";$/;" v file:
-mem_alloc modules/postgres/aug_alloc.c /^static void *mem_alloc(size_t size, void *parent, char *file, int line)$/;" f file:
-mem_bad modules/postgres/aug_alloc.c /^static int mem_bad(MemHead *mem, char *where, char *file, int line)$/;" f file:
-mem_block mem/mem.c /^ struct fm_block* mem_block;$/;" v
-mem_block mem/mem.c /^ struct qm_block* mem_block;$/;" v
-mem_block mem/mem.c /^ struct vqm_block* mem_block;$/;" v
-mem_block test/dns_query.c /^struct qm_block* mem_block;$/;" v
-mem_delete_ucontact modules/usrloc/urecord.c /^void mem_delete_ucontact(urecord_t* _r, ucontact_t* _c)$/;" f
-mem_delete_urecord modules/usrloc/udomain.c /^void mem_delete_urecord(udomain_t* _d, struct urecord* _r)$/;" f
-mem_find modules/postgres/aug_alloc.c /^static augBool mem_find(MemHead *mem, MemHead *p)$/;" f file:
-mem_free modules/postgres/aug_alloc.c /^static void mem_free(MemHead *mem)$/;" f file:
-mem_h mem/mem.h 41;" d
-mem_insert_ucontact modules/usrloc/urecord.c /^int mem_insert_ucontact(urecord_t* _r, str* _c, time_t _e, qvalue_t _q, str* _cid, int _cs, $/;" f
-mem_insert_urecord modules/usrloc/udomain.c /^int mem_insert_urecord(udomain_t* _d, str* _aor, struct urecord** _r)$/;" f
-mem_lock mem/shm_mem.c /^gen_lock_t* mem_lock=0;$/;" v
-mem_magic modules/postgres/aug_alloc.c /^static MemMagic mem_magic = MEM_MAGIC_BOUND;$/;" v file:
-mem_nomem modules/postgres/aug_alloc.c /^static void mem_nomem(size_t size, char *func, char *file, int line)$/;" f file:
-mem_nomem_func modules/postgres/aug_alloc.c /^static augNoMemFunc *mem_nomem_func = 0;$/;" v file:
-mem_only modules/registrar/save.c /^static int mem_only = 0;$/;" v file:
-mem_pool mem/mem.c /^ char mem_pool[PKG_MEM_POOL_SIZE];$/;" v
-mem_pool test/dns_query.c /^char mem_pool[1024*1024];$/;" v
-mem_remove_ucontact modules/usrloc/urecord.c /^void mem_remove_ucontact(urecord_t* _r, ucontact_t* _c)$/;" f
-mem_stats modules/postgres/aug_alloc.c /^static augAllocStats mem_stats = {sizeof (MemHead) + sizeof (MemMagic) + 8, 0};$/;" v file:
-mem_update_ucontact modules/usrloc/ucontact.c /^int mem_update_ucontact(ucontact_t* _c, time_t _e, qvalue_t _q, str* _cid, int _cs,$/;" f
-memapp modules/tm/t_msgbuilder.h 57;" d
-memlog main.c /^int memlog = L_DBG;$/;" v
-method modules/pa/notify.c /^static str method = {METHOD_NOTIFY, METHOD_NOTIFY_L};$/;" v file:
-method modules/tm/h_table.h /^ str method;$/;" m struct:cell
-method parser/contact/contact.h /^ param_t* method; \/* method parameter hook *\/$/;" m struct:contact
-method parser/msg_parser.h /^ str method;$/;" m struct:sip_uri
-method parser/parse_cseq.h /^ str method; \/* Associated method *\/$/;" m struct:cseq_body
-method parser/parse_fline.h /^ str method; \/* Method string *\/$/;" m struct:msg_start::<anonymous>::<anonymous>
-method parser/parse_methods.h /^enum method {$/;" g
-method parser/parse_param.h /^ struct param* method; \/* method parameter *\/$/;" m struct:contact_hooks
-method test/p_uri.c /^ str method;$/;" m struct:sip_uri file:
-method_col modules/usrloc/ul_mod.c /^str method_col = {METHOD_COL, sizeof(METHOD_COL) - 1}; \/* Name of column containing supported method *\/$/;" v
-method_val parser/msg_parser.h /^ str method_val;$/;" m struct:sip_uri
-method_val test/p_uri.c /^ str method_val;$/;" m struct:sip_uri file:
-method_value parser/parse_fline.h /^ int method_value;$/;" m struct:msg_start::<anonymous>::<anonymous>
-mf mem/memtest.c 65;" d file:
-mhomed main.c /^int mhomed=0;$/;" v
-mime_type parser/parse_content.h /^struct mime_type {$/;" s
-min modules/mediaproxy/mediaproxy.c 77;" d file:
-min_expires modules/registrar/reg_mod.c /^int min_expires = 60; \/* Minimum expires the phones are allowed to use in seconds,$/;" v
-mine_check scripts/serconf.sh /^function mine_check()$/;" f
-mk_action route_struct.c /^struct action* mk_action(int type, int p1_type, int p2_type,$/;" f
-mk_action3 route_struct.c /^struct action* mk_action3(int type, int p1_type, int p2_type, int p3_type,$/;" f
-mk_elem route_struct.c /^struct expr* mk_elem(int op, int subtype, int operand, void* param)$/;" f
-mk_exp route_struct.c /^struct expr* mk_exp(int op, struct expr* left, struct expr* right)$/;" f
-mk_listen_id cfg.tab.c /^static struct socket_id* mk_listen_id(char* host, int proto, int port)$/;" f file:
-mk_net ip_addr.c /^struct net* mk_net(struct ip_addr* ip, struct ip_addr* mask)$/;" f
-mk_net_bitlen ip_addr.c /^struct net* mk_net_bitlen(struct ip_addr* ip, unsigned int bitlen)$/;" f
-mk_proxy proxy.c /^struct proxy_l* mk_proxy(str* name, unsigned short port, int proto)$/;" f
-mk_proxy_from_ip proxy.c /^struct proxy_l* mk_proxy_from_ip(struct ip_addr* ip, unsigned short port,$/;" f
-mknew modules/jabber/tree234.c 44;" d file:
-ml modules/msilo/msilo.c /^msg_list ml = NULL;$/;" v
-mod_child_init modules/auth_diameter/auth_diameter.c /^static int mod_child_init(int r)$/;" f file:
-mod_child_init modules/pdt/pdt.c /^static int mod_child_init(int r)$/;" f file:
-mod_destroy modules/flatstore/flatstore_mod.c /^static void mod_destroy(void)$/;" f file:
-mod_destroy modules/pdt/pdt.c /^static void mod_destroy(void)$/;" f file:
-mod_destroy modules/registrar/reg_mod.c /^static void mod_destroy(void)$/;" f file:
-mod_destroy modules/sl/sl.c /^static void mod_destroy()$/;" f file:
-mod_exit modules/permissions/permissions.c /^static void mod_exit(void) $/;" f file:
-mod_init modules/acc/acc_mod.c /^static int mod_init( void )$/;" f file:
-mod_init modules/auth/auth_mod.c /^static int mod_init(void)$/;" f file:
-mod_init modules/auth_db/authdb_mod.c /^static int mod_init(void)$/;" f file:
-mod_init modules/auth_diameter/auth_diameter.c /^static int mod_init(void)$/;" f file:
-mod_init modules/auth_radius/authrad_mod.c /^static int mod_init(void)$/;" f file:
-mod_init modules/avp_db/avp_db.c /^static int mod_init(void)$/;" f file:
-mod_init modules/avp_radius/avp_radius.c /^static int mod_init(void)$/;" f file:
-mod_init modules/cpl/cpl.c /^static int mod_init(void)$/;" f file:
-mod_init modules/dbtext/dbtex/dbtex.c /^int mod_init()$/;" f
-mod_init modules/dbtext/dbtext.c /^static int mod_init(void)$/;" f file:
-mod_init modules/dispatcher/dispatcher.c /^static int mod_init(void)$/;" f file:
-mod_init modules/diversion/diversion.c /^static int mod_init(void)$/;" f file:
-mod_init modules/domain/domain_mod.c /^static int mod_init(void)$/;" f file:
-mod_init modules/enum/enum_mod.c /^static int mod_init(void)$/;" f file:
-mod_init modules/exec/exec_mod.c /^static int mod_init( void )$/;" f file:
-mod_init modules/flatstore/flatstore_mod.c /^static int mod_init(void)$/;" f file:
-mod_init modules/gflags/gflags.c /^static int mod_init(void)$/;" f file:
-mod_init modules/group/group_mod.c /^static int mod_init(void)$/;" f file:
-mod_init modules/group_radius/grouprad_mod.c /^static int mod_init(void)$/;" f file:
-mod_init modules/jabber/jabber.c /^static int mod_init(void)$/;" f file:
-mod_init modules/mangler/mangler.c /^mod_init (void)$/;" f file:
-mod_init modules/maxfwd/maxfwd.c /^static int mod_init(void)$/;" f file:
-mod_init modules/mediaproxy/mediaproxy.c /^mod_init(void)$/;" f file:
-mod_init modules/msilo/msilo.c /^static int mod_init(void)$/;" f file:
-mod_init modules/nathelper/nathelper.c /^mod_init(void)$/;" f file:
-mod_init modules/options/mod_options.c /^static int mod_init(void) {$/;" f file:
-mod_init modules/pdt/pdt.c /^static int mod_init(void)$/;" f file:
-mod_init modules/permissions/permissions.c /^static int mod_init(void)$/;" f file:
-mod_init modules/postgres/db_mod.c /^static int mod_init(void)$/;" f file:
-mod_init modules/print/print.c /^static int mod_init(void)$/;" f file:
-mod_init modules/registrar/reg_mod.c /^static int mod_init(void)$/;" f file:
-mod_init modules/rr/rr_mod.c /^static int mod_init(void)$/;" f file:
-mod_init modules/sl/sl.c /^static int mod_init(void)$/;" f file:
-mod_init modules/speeddial/speeddial.c /^static int mod_init(void)$/;" f file:
-mod_init modules/textops/textops.c /^static int mod_init(void)$/;" f file:
-mod_init modules/tm/tm.c /^static int mod_init(void)$/;" f file:
-mod_init modules/uri_db/uridb_mod.c /^static int mod_init(void)$/;" f file:
-mod_init modules/uri_radius/urirad_mod.c /^static int mod_init(void)$/;" f file:
-mod_init modules/usrloc/ul_mod.c /^static int mod_init(void)$/;" f file:
-mod_init modules/xlog/xlog.c /^static int mod_init(void)$/;" f file:
-mod_register db/example/dbexample.c /^struct module_exports* mod_register()$/;" f
-mode modules/sms/sms_funcs.h /^ int mode;$/;" m struct:modem
-modem modules/sms/sms_funcs.h /^struct modem {$/;" s
-modem_process modules/sms/sms_funcs.c /^void modem_process(struct modem *mdm)$/;" f
-modems modules/sms/sms_funcs.c /^struct modem modems[MAX_MODEMS];$/;" v
-modems_config modules/sms/sms.c /^char *modems_config = 0;$/;" v
-modparam_h modparam.h 31;" d
-modparam_t sr_module.h /^typedef unsigned int modparam_t;$/;" t
-module_exports sr_module.h /^struct module_exports{$/;" s
-module_register sr_module.h /^typedef struct module_exports* (*module_register)();$/;" t
-module_stm cfg.y /^module_stm: LOADMODULE STRING { DBG("loading module %s\\n", $2);$/;" l
-modules Makefile /^modules:=$(filter-out $(modules), $(addprefix modules\/, $(include_modules) )) \\$/;" m
-modules Makefile /^modules=$(filter-out $(addprefix modules\/, \\$/;" m
-modules sr_module.c /^struct sr_module* modules=0;$/;" v
-modules sr_module.h /^struct sr_module* modules; \/* global module list*\/$/;" v
-modules_basenames Makefile /^modules_basenames=$(shell echo $(modules)| \\$/;" m
-modules_full_path Makefile /^modules_full_path=$(join $(modules), $(addprefix \/, $(modules_names)))$/;" m
-modules_names Makefile /^modules_names=$(shell echo $(modules)| \\$/;" m
-monit_start etc/sr /^monit_start() {$/;" f
-monit_stop etc/sr /^monit_stop() {$/;" f
-more_core mem/vq_malloc.c /^struct vqm_frag *more_core( struct vqm_block* qm, $/;" f
-move_on_top modules/registrar/save.c /^void move_on_top(urecord_t* _r, ucontact_t* _c)$/;" f
-ms_check_time modules/msilo/msilo.c /^int ms_check_time=30;$/;" v
-ms_clean_period modules/msilo/msilo.c /^int ms_clean_period=5;$/;" v
-ms_db_table modules/msilo/msilo.c /^char *ms_db_table="silo";$/;" v
-ms_db_url modules/msilo/msilo.c /^char *ms_db_url=DEFAULT_DB_URL;$/;" v
-ms_expire_time modules/msilo/msilo.c /^int ms_expire_time=259200;$/;" v
-ms_registrar modules/msilo/msilo.c /^char *ms_registrar=NULL; \/\/"sip:registrar at iptel.org";$/;" v
-ms_use_contact modules/msilo/msilo.c /^int ms_use_contact=1;$/;" v
-msg modules/cpl-c/cpl_run.h /^ struct sip_msg *msg;$/;" m struct:cpl_interpreter
-msg modules/jabber/xjab_base.h /^ str msg; \/\/ message body$/;" m struct:_xj_sipmsg
-msg utils/fifo_relay/fifo_server.php /^ $msg = "403 Forbidden\\n";$/;" v
-msg utils/fifo_relay/fifo_server.php /^ $msg = "sorry -- cannot open write fifo";$/;" v
-msg utils/fifo_relay/fifo_server.php /^ $msg = "sorry -- fifo writing error";$/;" v
-msg utils/fifo_relay/fifo_server.php /^ $msg = "sorry -- reply fifo opening error";$/;" v
-msg utils/fifo_relay/fifo_server.php /^ $msg = "sorry -- reply fifo reading error";$/;" v
-msg_flags parser/msg_parser.h /^ unsigned int msg_flags; \/* flags used by core *\/$/;" m struct:sip_msg
-msg_id modules/xlog/xl_lib.c /^int msg_id = 0;$/;" v
-msg_list modules/msilo/ms_msg_list.h /^} t_msg_list, *msg_list;$/;" t
-msg_list_check modules/msilo/ms_msg_list.c /^int msg_list_check(msg_list ml)$/;" f
-msg_list_check_msg modules/msilo/ms_msg_list.c /^int msg_list_check_msg(msg_list ml, int mid)$/;" f
-msg_list_el modules/msilo/ms_msg_list.h /^} t_msg_list_el, *msg_list_el;$/;" t
-msg_list_el_free modules/msilo/ms_msg_list.c /^void msg_list_el_free(msg_list_el mle)$/;" f
-msg_list_el_free_all modules/msilo/ms_msg_list.c /^void msg_list_el_free_all(msg_list_el mle)$/;" f
-msg_list_el_new modules/msilo/ms_msg_list.c /^msg_list_el msg_list_el_new()$/;" f
-msg_list_free modules/msilo/ms_msg_list.c /^void msg_list_free(msg_list ml)$/;" f
-msg_list_init modules/msilo/ms_msg_list.c /^msg_list msg_list_init()$/;" f
-msg_list_reset modules/msilo/ms_msg_list.c /^msg_list_el msg_list_reset(msg_list ml)$/;" f
-msg_list_set_flag modules/msilo/ms_msg_list.c /^int msg_list_set_flag(msg_list ml, int mid, int fl)$/;" f
-msg_no receive.c /^unsigned int msg_no=0;$/;" v
-msg_parser_h parser/msg_parser.h 44;" d
-msg_send forward.h /^static inline int msg_send( struct socket_info* send_sock, int proto,$/;" f
-msg_start parser/parse_fline.h /^struct msg_start {$/;" s
-msg_tm modules/xlog/xl_lib.c /^time_t msg_tm = 0;$/;" v
-msg_type modules/msilo/msilo.c /^str msg_type = { "MESSAGE", 7 };$/;" v
-msgid modules/msilo/ms_msg_list.h /^ int msgid;$/;" m struct:_msg_list_el
-msgr modules/msilo/msfuncs.h /^ str msgr;$/;" m struct:_content_type
-msilo_dbf modules/msilo/msilo.c /^static db_func_t msilo_dbf;$/;" v file:
-msn modules/jabber/doc/xjab.sql /^CREATE TABLE msn($/;" t
-msn_id modules/jabber/doc/xjab.sql /^ msn_id VARCHAR(128) NOT NULL,$/;" F
-mtime utils/fifo_relay/fifo_server.php /^ $mtime = $cur_mtime;$/;" v
-mtime utils/fifo_relay/fifo_server.php /^$mtime = 0;$/;" v
-mutex modules/tm/h_table.h /^ ser_lock_t mutex;$/;" m struct:entry
-mutex modules/tm/timer.h /^ ser_lock_t* mutex;$/;" m struct:timer
-mutex test/locking/locking_test.c /^pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;$/;" v
-mv modules/cpl-c/cpl_time.h /^ ac_maxval_p mv;$/;" m struct:_ac_tm
-mwday modules/cpl-c/cpl_time.h /^ int mwday;$/;" m struct:_ac_maxval
-mwday modules/cpl-c/cpl_time.h /^ int mwday;$/;" m struct:_ac_tm
-mweek modules/cpl-c/cpl_time.h /^ int mweek;$/;" m struct:_ac_maxval
-mweek modules/cpl-c/cpl_time.h /^ int mweek;$/;" m struct:_ac_tm
-my_T modules/tm/h_table.h /^ struct cell* my_T;$/;" m struct:retr_buf
-my_address modules/extcmd/extcmd.c /^char *my_address = 0;$/;" v
-my_argc main.c /^int my_argc;$/;" v
-my_argv main.c /^char **my_argv;$/;" v
-my_assert mem/vq_malloc.c /^void my_assert( int assertation, int line, char *file, char *function )$/;" f
-my_con modules/mysql/my_con.h /^struct my_con {$/;" s
-my_id modules/mysql/my_id.h /^struct my_id {$/;" s
-my_pid pt.h /^inline static int my_pid()$/;" f
-my_port modules/extcmd/extcmd.c /^int my_port = 7890;$/;" v
-mycmp modules/jabber/tree234.c /^int mycmp(void *av, void *bv) {$/;" f
-myfilename examples/web_im/click_to_dial.php /^$myfilename="webfifo_".rand();$/;" v
-myfilename examples/web_im/send_im.php /^$myfilename="webfifo_".rand();$/;" v
-mypath examples/web_im/click_to_dial.php /^$mypath="\/tmp\/".$myfilename;$/;" v
-mypath examples/web_im/send_im.php /^$mypath="\/tmp\/".$myfilename;$/;" v
-mypid modules/nathelper/nathelper.c /^static pid_t mypid;$/;" v file:
-myseqn modules/nathelper/nathelper.c /^static unsigned int myseqn = 0;$/;" v file:
-mysql2time modules/mysql/utils.c /^time_t mysql2time(const char* _str)$/;" f
-n db/db_res.h /^ int n; \/* Number of columns *\/$/;" m struct:db_res::<anonymous>
-n db/db_res.h /^ int n; \/* Number of rows *\/$/;" m struct:db_res
-n db/db_row.h /^ int n; \/* Number of columns in the row *\/$/;" m struct:db_row
-n modules/acc/dict.h /^ const char *n;$/;" m struct:attr
-n modules/acc/dict.h /^ const char *n;$/;" m struct:val
-n modules/pa/hslot.h /^ int n; \/* Number of elements in the collision slot *\/$/;" m struct:hslot
-n modules/pdt/domains.h /^ struct _entry *n;$/;" m struct:_entry
-n modules/usrloc/hslot.h /^ int n; \/* Number of elements in the collision slot *\/$/;" m struct:hslot
-n modules/usrloc/udomain.h /^ int n; \/* Number of element in the linked list *\/$/;" m struct:udomain::<anonymous>
-n usr_avp.h /^ int n;$/;" m
-n_escapes re.h /^ int n_escapes; \/* escapes number (replace[] size) *\/$/;" m struct:subst_expr
-n_reqs tcp_main.c /^ int n_reqs; \/* number of requests serviced so far *\/$/;" m struct:tcp_child file:
-na modules/acc/acc.c /^static str na={NA, NA_LEN};$/;" v file:
-name fifo_server.h /^ char *name;$/;" m struct:fifo_command
-name ip_addr.h /^ char* name;$/;" m struct:socket_id
-name ip_addr.h /^ str name; \/* name - eg.: foo.bar or 10.0.0.1 *\/$/;" m struct:socket_info
-name modules/avpops/avpops_db.h /^ char *name;$/;" m struct:db_scheme
-name modules/cpl-c/sub_list.h /^ char *name;$/;" m struct:node
-name modules/dbtext/dbt_lib.h /^ str name;$/;" m struct:_dbt_column
-name modules/dbtext/dbt_lib.h /^ str name;$/;" m struct:_dbt_database
-name modules/dbtext/dbt_lib.h /^ str name;$/;" m struct:_dbt_table
-name modules/jabber/xode.h /^ char* name;$/;" m struct:xode_struct
-name modules/mediaproxy/mediaproxy.c /^ const char *name;$/;" m file:
-name modules/pa/dlist.h /^ str name; \/* Name of the domain *\/$/;" m struct:dlist
-name modules/pa/pdomain.h /^ str* name;$/;" m struct:pdomain
-name modules/sms/sms_funcs.h /^ char name[64];$/;" m struct:incame_sms
-name modules/sms/sms_funcs.h /^ char name[MAX_CHAR_BUF+1];$/;" m struct:modem
-name modules/sms/sms_funcs.h /^ char name[MAX_CHAR_BUF+1];$/;" m struct:network
-name modules/tm/t_fifo.c /^ str name;$/;" m struct:tw_append file:
-name modules/usrloc/dlist.h /^ str name; \/* Name of the domain *\/$/;" m struct:dlist
-name modules/usrloc/udomain.h /^ str* name; \/* Domain name *\/$/;" m struct:udomain
-name parser/contact/contact.h /^ str name; \/* Name part *\/$/;" m struct:contact
-name parser/hf.h /^ str name; \/* Header field name *\/$/;" m struct:hdr_field
-name parser/parse_disposition.h /^ str name;$/;" m struct:disposition_param
-name parser/parse_nameaddr.h /^ str name; \/* Display name part *\/$/;" m struct:name_addr
-name parser/parse_param.h /^ str name; \/* Parameter name *\/$/;" m struct:param
-name parser/parse_to.h /^ str name; \/* Name of parameter *\/$/;" m struct:to_param
-name parser/parse_via.h /^ str name; \/* Name of the parameter *\/$/;" m struct:via_param
-name parser/parse_via.h /^ str name;$/;" m struct:via_body
-name proxy.h /^ str name; \/* original name *\/$/;" m struct:proxy_l
-name resolve.h /^ char name[MAX_DNS_NAME];$/;" m struct:cname_rdata
-name resolve.h /^ char name[MAX_DNS_NAME];$/;" m struct:srv_rdata
-name sr_module.h /^ char* name; \/* null terminated module name *\/$/;" m struct:module_exports
-name sr_module.h /^ char* name; \/* null terminated command name *\/$/;" m struct:cmd_export_
-name sr_module.h /^ char* name; \/* null terminated param. name *\/$/;" m struct:param_export_
-name unixsock_server.h /^ str name; \/* The name of the function *\/$/;" m struct:unixsock_cmd
-name usr_avp.c /^ int_str name;$/;" m struct:avp_spec file:
-name usr_avp.c /^ str name;$/;" m struct:str_int_data file:
-name usr_avp.c /^ str name;$/;" m struct:str_str_data file:
-name_CASE parser/digest/param_parser.c 83;" d file:
-name_addr parser/parse_nameaddr.h /^typedef struct name_addr {$/;" s
-name_addr_t parser/parse_nameaddr.h /^} name_addr_t;$/;" t
-name_len resolve.h /^ unsigned int name_len;$/;" m struct:srv_rdata
-nameaddr parser/parse_rr.h /^ name_addr_t nameaddr; \/* Name-addr part *\/$/;" m struct:rr
-names db/db_res.h /^ db_key_t* names; \/* Column names *\/$/;" m struct:db_res::<anonymous>
-naptr_greater modules/enum/enum.c /^static inline int naptr_greater(struct rdata* a, struct rdata* b)$/;" f file:
-naptr_rdata resolve.h /^struct naptr_rdata {$/;" s
-naptr_sort modules/enum/enum.c /^static inline void naptr_sort(struct rdata** head)$/;" f file:
-natTests modules/mediaproxy/mediaproxy.c /^NatTest natTests[] = {$/;" v
-nat_flag modules/cpl-c/cpl_env.h /^ int nat_flag; \/* flag for marking looked up contact as NAT *\/$/;" m struct:cpl_enviroment
-nat_flag modules/registrar/reg_mod.c /^int nat_flag = 4; \/* SER flag marking contacts behind NAT *\/$/;" v
-nat_uac_test_f modules/nathelper/nathelper.c /^nat_uac_test_f(struct sip_msg* msg, char* str1, char* str2)$/;" f file:
-natpingInterval modules/mediaproxy/mediaproxy.c /^static int natpingInterval = 60; \/\/ 60 seconds$/;" v file:
-natping_interval modules/nathelper/nathelper.c /^static int natping_interval = 0;$/;" v file:
-nc parser/digest/digest_parser.h /^ str nc; \/* Nonce count parameter *\/$/;" m struct:dig_cred
-net ip_addr.h /^struct net{$/;" s
-net_address modules/mangler/ip_helper.c /^net_address (unsigned int ip, unsigned int mask)$/;" f
-net_list modules/sms/sms_funcs.h /^ int net_list[MAX_NETWORKS];$/;" m struct:modem
-net_pipes_in modules/sms/sms_funcs.c /^int net_pipes_in[MAX_NETWORKS];$/;" v
-netaddr modules/nathelper/nathelper.c /^ uint32_t netaddr;$/;" m file:
-nets_1918 modules/nathelper/nathelper.c /^} nets_1918[] = {$/;" v file:
-network modules/sms/sms_funcs.h /^struct network {$/;" s
-networks modules/sms/sms_funcs.c /^struct network networks[MAX_NETWORKS];$/;" v
-networks_config modules/sms/sms.c /^char *networks_config = 0;$/;" v
-new_cell modules/pdt/domains.c /^dc_t* new_cell(char* domain, code_t code)$/;" f
-new_connection modules/mysql/my_con.c /^struct my_con* new_connection(struct my_id* id)$/;" f
-new_cpl_interpreter modules/cpl-c/cpl_run.c /^struct cpl_interpreter* new_cpl_interpreter( struct sip_msg *msg, str *script)$/;" f
-new_credentials parser/digest/digest.c /^static inline int new_credentials(struct hdr_field* _h)$/;" f file:
-new_dlg_uac modules/tm/dlg.c /^int new_dlg_uac(str* _cid, str* _ltag, unsigned int _lseq, str* _luri, str* _ruri, dlg_t** _d)$/;" f
-new_dlg_uac modules/tm/tm_load.h /^ new_dlg_uac_f new_dlg_uac;$/;" m struct:tm_binds
-new_dlg_uac_f modules/tm/dlg.h /^typedef int (*new_dlg_uac_f)(str* _cid, str* _ltag, unsigned int _lseq, str* _luri, str* _ruri, dlg_t** _d);$/;" t
-new_dlg_uas modules/tm/dlg.c /^int new_dlg_uas(struct sip_msg* _req, int _code, \/*str* _tag,*\/ dlg_t** _d)$/;" f
-new_dlg_uas modules/tm/tm_load.h /^ new_dlg_uas_f new_dlg_uas;$/;" m struct:tm_binds
-new_dlg_uas_f modules/tm/dlg.h /^typedef int (*new_dlg_uas_f)(struct sip_msg* _req, int _code, dlg_t** _d);$/;" t
-new_dlist modules/pa/dlist.c /^static inline int new_dlist(str* _n, dlist_t** _d)$/;" f file:
-new_dlist modules/usrloc/dlist.c /^static inline int new_dlist(str* _n, dlist_t** _d)$/;" f file:
-new_entry modules/pdt/domains.c /^entry_t* new_entry(dc_t* cell)$/;" f
-new_expression modules/permissions/rule.c /^expression *new_expression(char *str) $/;" f
-new_flat_id modules/flatstore/flat_id.c /^struct flat_id* new_flat_id(char* dir, char* table)$/;" f
-new_func stats.c /^ struct sip_snmp_handler* (*new_func)(size_t);$/;" m struct:stats_funcs file:
-new_hash hash_func.c /^int new_hash( str call_id, str cseq_nr )$/;" f
-new_hash2 hash_func.c /^int new_hash2( str call_id, str cseq_nr )$/;" f
-new_hash_table modules/permissions/hash.c /^struct trusted_list** new_hash_table(void)$/;" f
-new_ip_node modules/pike/ip_tree.c /^static inline struct ip_node *new_ip_node(unsigned char byte)$/;" f file:
-new_line modules/pdt/doc/web/request.php /^ $new_line ="\\n"; $/;" v
-new_my_id modules/mysql/my_id.c /^struct my_id* new_my_id(const char* url)$/;" f
-new_passwd modules/jabber/doc/web/subscribe.php /^ $new_passwd = "#".$sipname."%";$/;" v
-new_pdomain modules/pa/pdomain.c /^int new_pdomain(str* _n, int _s, pdomain_t** _d, register_watcher_t _r, unregister_watcher_t _u)$/;" f
-new_presence_tuple modules/pa/presentity.c /^int new_presence_tuple(str* _contact, time_t expires, presentity_t *_p, presence_tuple_t ** _t)$/;" f
-new_presentity modules/pa/presentity.c /^int new_presentity(struct pdomain *pdomain, str* _uri, presentity_t** _p)$/;" f
-new_presentity_no_wb modules/pa/presentity.c /^int new_presentity_no_wb(struct pdomain *pdomain, str* _uri, presentity_t** _p)$/;" f
-new_result modules/mysql/res.c /^db_res_t* new_result(void)$/;" f
-new_result_pg modules/postgres/db_res.c /^db_res_t* new_result_pg(char *parent)$/;" f
-new_rule modules/permissions/rule.c /^rule *new_rule(void) $/;" f
-new_sock2list socket_info.c /^int new_sock2list(char* name, unsigned short port, unsigned short proto,$/;" f
-new_sock_info socket_info.c /^static inline struct socket_info* new_sock_info( char* name,$/;" f file:
-new_str modules/tm/uac_fifo.c /^static inline struct str_list *new_str(char *s, int len, struct str_list **last, int *total)$/;" f file:
-new_str modules/tm/uac_unixsock.c /^static inline struct str_list *new_str(char *s, int len, struct str_list **last, int *total)$/;" f file:
-new_t modules/tm/t_lookup.c /^static inline int new_t(struct sip_msg *p_msg)$/;" f file:
-new_tuple_on_publish modules/pa/pa_mod.c /^int new_tuple_on_publish = 0;$/;" v
-new_ucontact modules/usrloc/ucontact.c /^int new_ucontact(str* _dom, str* _aor, str* _contact, time_t _e, qvalue_t _q,$/;" f
-new_udomain modules/usrloc/udomain.c /^int new_udomain(str* _n, int _s, udomain_t** _d)$/;" f
-new_urecord modules/usrloc/urecord.c /^int new_urecord(str* _dom, str* _aor, urecord_t** _r)$/;" f
-new_uri parser/msg_parser.h /^ str new_uri; \/* changed first line uri, when you change this$/;" m struct:sip_msg
-new_uri_column modules/speeddial/speeddial.c /^char* new_uri_column = "new_uri";$/;" v
-new_watcher modules/pa/watcher.c /^int new_watcher(presentity_t *_p, str* _uri, time_t _e, int event_package, doctype_t _a, dlg_t* _dlg, $/;" f
-new_watcher_no_wb modules/pa/watcher.c /^int new_watcher_no_wb(presentity_t *_p, str* _uri, time_t _e, int event_package, doctype_t _a, dlg_t* _dlg, $/;" f
-new_watcher_pending modules/pa/pa_mod.c /^int new_watcher_pending = 0;$/;" v
-newtree234 modules/jabber/tree234.c /^tree234 *newtree234(cmpfn234 cmp) {$/;" f
-next data_lump_rpl.h /^ struct lump_rpl* next;$/;" m struct:lump_rpl
-next fifo_server.h /^ struct fifo_command *next;$/;" m struct:fifo_command
-next ip_addr.h /^ struct socket_id* next;$/;" m struct:socket_id
-next ip_addr.h /^ struct socket_info* next;$/;" m struct:socket_info
-next lump_struct.h /^ struct lump* next;$/;" m struct:lump
-next modules/acc/diam_message.h /^ struct avp *next;$/;" m struct:avp
-next modules/auth_diameter/diameter_msg.h /^ struct avp *next;$/;" m struct:avp
-next modules/avpops/avpops_db.h /^ struct db_scheme *next;$/;" m struct:db_scheme
-next modules/cpl-c/loc_set.h /^ struct location *next;$/;" m struct:location
-next modules/cpl-c/sub_list.h /^ struct node *next;$/;" m struct:node
-next modules/dbtext/dbt_lib.h /^ struct _dbt_cache *next;$/;" m struct:_dbt_cache
-next modules/dbtext/dbt_lib.h /^ struct _dbt_column *next;$/;" m struct:_dbt_column
-next modules/dbtext/dbt_lib.h /^ struct _dbt_row *next;$/;" m struct:_dbt_row
-next modules/dbtext/dbt_lib.h /^ struct _tbl_cache *next; $/;" m struct:_tbl_cache
-next modules/dispatcher/dispatch.c /^ struct _ds_dest *next;$/;" m struct:_ds_dest file:
-next modules/dispatcher/dispatch.c /^ struct _ds_set *next;$/;" m struct:_ds_set file:
-next modules/dispatcher/dispatch.c /^ struct _ds_setidx *next;$/;" m struct:_ds_setidx file:
-next modules/domain/domain_mod.h /^ struct domain_list *next;$/;" m struct:domain_list
-next modules/flatstore/flat_con.h /^ struct flat_con* next; \/* Next connection in the pool *\/$/;" m struct:flat_con
-next modules/jabber/xjab_presence.h /^ struct _xj_pres_cell *next;$/;" m struct:_xj_pres_cell
-next modules/jabber/xode.h /^ struct xode_struct* next;$/;" m struct:xode_struct
-next modules/jabber/xode.h /^ struct xode_spool_node *next;$/;" m struct:xode_spool_node
-next modules/jabber/xpool.c /^ struct xode_pool_free *next;$/;" m struct:xode_pool_free file:
-next modules/msilo/ms_msg_list.h /^ struct _msg_list_el * next;$/;" m struct:_msg_list_el
-next modules/mysql/my_con.h /^ struct my_con* next; \/* Next connection in the pool *\/$/;" m struct:my_con
-next modules/pa/dlist.h /^ struct dlist* next; \/* Next element in the list *\/$/;" m struct:dlist
-next modules/pa/presentity.h /^ struct presence_tuple *next;$/;" m struct:presence_tuple
-next modules/pa/presentity.h /^ struct presentity* next; \/* Next presentity *\/$/;" m struct:presentity
-next modules/pa/presentity.h /^ struct resource_list *next;$/;" m struct:resource_list
-next modules/pa/watcher.h /^ struct watcher* next; \/* Next watcher in the list *\/$/;" m struct:watcher
-next modules/permissions/hash.h /^ struct trusted_list *next; \/* Next element in the list *\/$/;" m struct:trusted_list
-next modules/permissions/rule.h /^ struct expression_struct *next;$/;" m struct:expression_struct
-next modules/permissions/rule.h /^ struct rule_struct *next;$/;" m struct:rule_struct
-next modules/pike/ip_tree.h /^ struct ip_node *next;$/;" m struct:ip_node
-next modules/pike/timer.h /^ struct list_link *next;$/;" m struct:list_link
-next modules/tm/h_table.h /^ struct totag_elem *next;$/;" m struct:totag_elem
-next modules/tm/t_fifo.c /^ struct hdr_avp *next;$/;" m struct:hdr_avp file:
-next modules/tm/t_fifo.c /^ struct tw_append *next;$/;" m struct:tw_append file:
-next modules/tm/t_hooks.h /^ struct tm_callback* next;$/;" m struct:tm_callback
-next modules/tm/t_msgbuilder.c /^ struct rte* next;$/;" m struct:rte file:
-next modules/tm/uac_fifo.c /^ struct str_list *next;$/;" m struct:str_list file:
-next modules/tm/uac_unixsock.c /^ struct str_list *next;$/;" m struct:str_list file:
-next modules/usrloc/dlist.h /^ struct dlist* next; \/* Next element in the list *\/$/;" m struct:dlist
-next modules/usrloc/notify.h /^ struct notify_cb* next;$/;" m struct:notify_cb
-next modules/usrloc/ucontact.h /^ struct ucontact* next; \/* Next contact in the linked list *\/$/;" m struct:ucontact
-next modules/usrloc/ul_callback.h /^ struct ul_callback* next;$/;" m struct:ul_callback
-next modules/usrloc/urecord.h /^ struct urecord* next; \/* Next item in the list *\/$/;" m struct:urecord::<anonymous>
-next modules/usrloc/urecord.h /^ struct urecord* next; \/* Previous item in the linked list *\/$/;" m struct:urecord::<anonymous>
-next modules/xlog/xl_lib.h /^ struct _xl_elog *next;$/;" m struct:_xl_elog
-next name_alias.h /^ struct host_alias* next;$/;" m struct:host_alias
-next parser/contact/contact.h /^ struct contact* next; \/* Next contact in the list *\/$/;" m struct:contact
-next parser/hf.h /^ struct hdr_field* next; \/* Next header field in the list *\/$/;" m struct:hdr_field
-next parser/parse_content.c /^ int next; \/* the next sibling node *\/$/;" m struct:type_node_s file:
-next parser/parse_disposition.h /^ struct disposition_param *next;$/;" m struct:disposition_param
-next parser/parse_param.h /^ struct param* next; \/* Next parameter in the list *\/$/;" m struct:param
-next parser/parse_rr.h /^ struct rr* next; \/* Next RR in the list *\/$/;" m struct:rr
-next parser/parse_to.h /^ struct to_param* next; \/* Next parameter in the list *\/$/;" m struct:to_param
-next parser/parse_via.h /^ struct via_body* next; \/* pointer to next via body string if$/;" m struct:via_body
-next parser/parse_via.h /^ struct via_param* next; \/* Next parameter in the list *\/$/;" m struct:via_param
-next proxy.h /^ struct proxy_l* next;$/;" m struct:proxy_l
-next re.h /^ struct replace_lst *next;$/;" m struct:replace_lst
-next resolve.h /^ struct rdata* next;$/;" m struct:rdata
-next route_struct.h /^ struct action* next;$/;" m struct:action
-next script_cb.h /^ struct script_cb *next;$/;" m struct:script_cb
-next sr_module.h /^ struct sr_module* next;$/;" m struct:sr_module
-next tcp_conn.h /^ struct tcp_conn_alias* next;$/;" m struct:tcp_conn_alias
-next tcp_conn.h /^ struct tcp_req* next;$/;" m struct:tcp_req
-next timer.h /^ struct sr_timer* next;$/;" m struct:sr_timer
-next unixsock_server.h /^ struct unixsock_cmd* next; \/* Next element in the linked list *\/$/;" m struct:unixsock_cmd
-next usr_avp.c /^ struct avp_galias *next;$/;" m struct:avp_galias file:
-next usr_avp.h /^ struct usr_avp *next;$/;" m struct:usr_avp
-next_branch dset.c /^char* next_branch(int* len, qvalue_t* q, char** dst_uri, int* dst_len)$/;" f
-next_cell modules/tm/h_table.h /^ struct cell* next_cell;$/;" m struct:cell
-next_code modules/pdt/pdt.c /^code_t *next_code = NULL;$/;" v
-next_free mem/vq_malloc.h /^ struct vqm_frag* next_free[ MAX_BUCKET +1];$/;" m struct:vqm_block
-next_hop modules/tm/dlg.h /^ str* next_hop; \/* Where the message should be really sent *\/$/;" m struct:dlg_hooks
-next_label modules/tm/h_table.h /^ unsigned int next_label;$/;" m struct:entry
-next_other modules/exec/exec_hf.h /^ struct hf_wrapper *next_other;$/;" m struct:hf_wrapper
-next_proto socket_info.h /^static inline int next_proto(unsigned short proto)$/;" f
-next_same modules/exec/exec_hf.h /^ struct hf_wrapper *next_same;$/;" m struct:hf_wrapper
-next_tl modules/exec/kill.h /^ struct timer_link *next_tl;$/;" m struct:timer_link
-next_tl modules/tm/timer.h /^ struct timer_link *next_tl;$/;" m struct:timer_link
-nextb modules/jabber/xsnprintf.c /^ char *nextb; \/* pointer to next byte to read\/write *\/$/;" m struct:buf_area file:
-nh modules/tm/dlg.h /^ str nh;$/;" m struct:dlg_hooks
-nick modules/jabber/xjab_jconf.h /^ str nick;$/;" m struct:_xj_jconf
-niza_CASE parser/case_orga.h 43;" d
-nmatch re.h /^ int nmatch;$/;" m union:replace_with::<anonymous>
-no mem/f_malloc.h /^ unsigned long no;$/;" m struct:fm_frag_lnk
-no mem/q_malloc.h /^ unsigned long no;$/;" m struct:qm_frag_lnk
-no_contacts modules/registrar/save.c /^static inline int no_contacts(udomain_t* _d, str* _a)$/;" f file:
-no_sip_addr_begin modules/sms/sms_funcs.c 110;" d file:
-noanswer modules/cpl-c/cpl_run.h /^ char *noanswer;$/;" m struct:cpl_interpreter::proxy_st
-noc modules/sms/libsms_charset.c 17;" d file:
-nodb_timer modules/usrloc/urecord.c /^static inline int nodb_timer(urecord_t* _r)$/;" f file:
-node modules/cpl-c/sub_list.h /^struct node {$/;" s
-node modules/jabber/xode.h /^ xode node;$/;" m struct:xode_stream_struct
-node modules/pike/ip_tree.h /^ struct ip_node *node;$/;" m struct:ip_tree::entry
-node234 modules/jabber/tree234.c /^typedef struct node234_Tag node234;$/;" t file:
-node234_Tag modules/jabber/tree234.c /^struct node234_Tag {$/;" s file:
-noisy_ctimer modules/tm/timer.c /^int noisy_ctimer=0;$/;" v
-nomem modules/postgres/aug_alloc.c /^static void nomem(size_t size, char *func, char *file, int line)$/;" f file:
-nonc_CASE parser/digest/param_parser.c 108;" d file:
-nonce parser/digest/digest_parser.h /^ str nonce; \/* Nonce value *\/$/;" m struct:dig_cred
-nonce_expire modules/auth/auth_mod.c /^int nonce_expire = 300; \/* Nonce lifetime *\/$/;" v
-notcb_t modules/usrloc/notify.h /^typedef void (*notcb_t)(str* _user, str* _contact, pres_state_t _p, void* _d);$/;" t
-notify_cb modules/usrloc/notify.h /^typedef struct notify_cb {$/;" s
-notify_cb_t modules/usrloc/notify.h /^} notify_cb_t;$/;" t
-notify_watchers modules/pa/presentity.c /^int notify_watchers(presentity_t* _p)$/;" f
-notify_watchers modules/usrloc/notify.c /^void notify_watchers(struct urecord* _r, ucontact_t *_c, int state)$/;" f
-notify_winfo_watchers modules/pa/presentity.c /^int notify_winfo_watchers(presentity_t* _p)$/;" f
-nr modules/cpl-c/cpl_time.h /^ int nr;$/;" m struct:_tr_byxxx
-nr modules/dispatcher/dispatch.c /^ int nr;$/;" m struct:_ds_set file:
-nr modules/jabber/xjab_presence.h /^ int nr;$/;" m struct:_xj_pres_list
-nr modules/jabber/xjab_worker.h /^ int nr; \/\/ number of jobs$/;" m struct:_xj_worker
-nr_branches dset.c /^unsigned int nr_branches = 0;$/;" v
-nr_clients modules/extcmd/clients.h /^int nr_clients = 0;$/;" v
-nr_logs modules/cpl-c/cpl_log.c /^static int nr_logs;$/;" v file:
-nr_of_modems modules/sms/sms_funcs.c /^int nr_of_modems;$/;" v
-nr_of_networks modules/sms/sms_funcs.c /^int nr_of_networks;$/;" v
-nr_of_outgoings modules/tm/h_table.h /^ int nr_of_outgoings;$/;" m struct:cell
-nr_sons parser/parse_content.c /^ unsigned char nr_sons; \/* the number of sub-nodes *\/$/;" m struct:type_node_s file:
-nrcols modules/dbtext/dbt_lib.h /^ int nrcols;$/;" m struct:_dbt_table
-nrcols modules/dbtext/dbt_res.h /^ int nrcols;$/;" m struct:_dbt_result
-nrdone modules/msilo/ms_msg_list.h /^ int nrdone;$/;" m struct:_msg_list
-nrjconf modules/jabber/xjab_jcon.h /^ int nrjconf; \/\/ number of open conferences$/;" m struct:_xj_jcon
-nrrows modules/dbtext/dbt_lib.h /^ int nrrows;$/;" m struct:_dbt_table
-nrrows modules/dbtext/dbt_res.h /^ int nrrows;$/;" m struct:_dbt_result
-nrsent modules/msilo/ms_msg_list.h /^ int nrsent;$/;" m struct:_msg_list
-nrw modules/jabber/jabber.c /^int nrw = 2;$/;" v
-nt_CASE parser/case_user.h 34;" d
-nul db/db_val.h /^ int nul; \/* Means that the column in database$/;" m
-num_rows modules/pdt/doc/web/request.php /^ $num_rows = mysql_num_rows($result);$/;" v
-number parser/parse_cseq.h /^ str number; \/* CSeq number *\/$/;" m struct:cseq_body
-number route_struct.h /^ long number;$/;" m union:action::<anonymous>
-numberOfLocations modules/cpl/jcpli.h /^ int numberOfLocations;$/;" m struct:_RedirectMessage
-nxt_free mem/f_malloc.h /^ struct fm_frag* nxt_free;$/;" m union:fm_frag::<anonymous>
-nxt_free mem/q_malloc.h /^ struct qm_frag* nxt_free;$/;" m union:qm_frag::<anonymous>
-nxt_free mem/vq_malloc.h /^ struct vqm_frag* nxt_free; $/;" m union:vqm_frag::<anonymous>
-oUTE parser/obsolete/strs.h 274;" d
-oUTe parser/obsolete/strs.h 273;" d
-oUtE parser/obsolete/strs.h 272;" d
-oUte parser/obsolete/strs.h 271;" d
-octet2bin modules/sms/libsms_getsms.c /^int octet2bin(char* octet)$/;" f
-offset lump_struct.h /^ int offset; \/* used for DEL, MODIFY *\/$/;" m union:lump::<anonymous>
-offset modules/cpl-c/sub_list.h /^ char *offset;$/;" m struct:node
-offset re.h /^ int offset; \/* offset in string *\/$/;" m struct:replace_with
-offset re.h /^ int offset;$/;" m struct:replace_lst
-ojc modules/jabber/xjab_util.h /^ xj_jcon *ojc; \/\/ the connections to the Jabber$/;" m struct:_xj_jcon_pool
-ojc modules/jabber/xjab_util.h /^ xj_jcon *ojc; \/\/ pointer to the connection which will be used on sending$/;" m struct:_xj_jmsg_queue
-ok proxy.h /^ int ok; \/* 0 on error *\/$/;" m struct:proxy_l
-old_cnt modules/exec/exec_hf.h /^ int old_cnt;$/;" m struct:env
-oldtio modules/sms/sms_funcs.h /^ struct termios oldtio;$/;" m struct:modem
-on_CASE parser/case_acce.h 58;" d
-on_missed modules/acc/acc_mod.c /^static inline void on_missed(struct cell *t, struct sip_msg *reply,$/;" f file:
-on_negative modules/tm/h_table.h /^ unsigned int on_negative;$/;" m struct:cell
-on_reply modules/tm/h_table.h /^ unsigned int on_reply;$/;" m struct:cell
-onbreak_f sr_module.h /^ onbreak_function onbreak_f;$/;" m struct:module_exports
-onbreak_function sr_module.h /^typedef void (*onbreak_function)(struct sip_msg*);$/;" t
-one_of_16 modules/nathelper/nhelpr_funcs.c 61;" d file:
-one_of_8 modules/nathelper/nhelpr_funcs.c 65;" d file:
-onreply_rlist route.c /^struct action* onreply_rlist[ONREPLY_RT_NO];$/;" v
-onreply_route_stm cfg.y /^onreply_route_stm: ROUTE_ONREPLY LBRACK NUMBER RBRACK LBRACE actions RBRACE {$/;" l
-onse_CASE parser/digest/param_parser.c 117;" d file:
-op lump_struct.h /^ enum lump_op op; \/* DEL, ADD, NOP, UNSPEC(=0) *\/$/;" m struct:lump
-op route_struct.h /^ int op; \/* and, or, not | ==, =~ *\/$/;" m struct:expr
-opaq_CASE parser/digest/param_parser.c 146;" d file:
-opaque parser/digest/digest_parser.h /^ str opaque; \/* Opaque data string *\/$/;" m struct:dig_cred
-open_files_limit main.c /^int open_files_limit=-1; \/* don't touch it by default *\/$/;" v
-open_reply_pipe fifo_server.c /^FILE *open_reply_pipe( char *pipe_name )$/;" f
-openmodem modules/sms/libsms_modem.c /^int openmodem( struct modem *mdm)$/;" f
-operand route_struct.h /^ int operand;$/;" m union:expr::<anonymous>
-ops_check_avp modules/avpops/avpops_impl.c /^int ops_check_avp( struct sip_msg* msg, struct fis_param* ap,$/;" f
-ops_dbdelete_avps modules/avpops/avpops_impl.c /^int ops_dbdelete_avps (struct sip_msg* msg, struct fis_param *sp,$/;" f
-ops_dbload_avps modules/avpops/avpops_impl.c /^int ops_dbload_avps (struct sip_msg* msg, struct fis_param *sp,$/;" f
-ops_dbstore_avps modules/avpops/avpops_impl.c /^int ops_dbstore_avps (struct sip_msg* msg, struct fis_param *sp,$/;" f
-ops_delete_avp modules/avpops/avpops_impl.c /^int ops_delete_avp(struct sip_msg* msg, struct fis_param *ap)$/;" f
-ops_print_avp modules/avpops/avpops_impl.c /^int ops_print_avp()$/;" f
-ops_pushto_avp modules/avpops/avpops_impl.c /^int ops_pushto_avp ( struct sip_msg* msg, struct fis_param* dst,$/;" f
-ops_write_avp modules/avpops/avpops_impl.c /^int ops_write_avp(struct sip_msg* msg, struct fis_param *src,$/;" f
-opt_reply modules/options/mod_options.c /^static int opt_reply(struct sip_msg* _msg, char* _foo, char* _bar) {$/;" f file:
-options modules/postgres/aug_alloc.c /^ MemOpt *options;$/;" m struct:MemHeadStruct file:
-optz modules/sms/libsms_modem.c 35;" d file:
-order resolve.h /^ unsigned short order;$/;" m struct:naptr_rdata
-ordering modules/cpl-c/cpl_run.h /^ unsigned short ordering;$/;" m struct:cpl_interpreter::proxy_st
-orga_CASE parser/case_orga.h 53;" d
-organization modules/cpl-c/cpl_run.h /^ str *organization;$/;" m struct:cpl_interpreter
-organization parser/msg_parser.h /^ struct hdr_field* organization;$/;" m struct:sip_msg
-orig_host modules/acc/diam_message.h /^ AAA_AVP *orig_host;$/;" m struct:_message_t
-orig_host modules/auth_diameter/diameter_msg.h /^ AAA_AVP *orig_host;$/;" m struct:_message_t
-orig_realm modules/acc/diam_message.h /^ AAA_AVP *orig_realm;$/;" m struct:_message_t
-orig_realm modules/auth_diameter/diameter_msg.h /^ AAA_AVP *orig_realm;$/;" m struct:_message_t
-orig_tz modules/cpl-c/cpl_env.h /^ str orig_tz; \/* a copy of the original TZ; kept as a null$/;" m struct:cpl_enviroment
-ouTE parser/obsolete/strs.h 270;" d
-ouTe parser/obsolete/strs.h 269;" d
-outE parser/obsolete/strs.h 268;" d
-oute parser/obsolete/strs.h 267;" d
-own_pgid main.c /^int own_pgid = 0; \/* whether or not we have our own pgid (and it's ok$/;" v
-p modules/jabber/xjab_base.h /^ void *p; \/\/ callback parameter$/;" m struct:_xj_sipmsg
-p modules/jabber/xode.h /^ xode_pool p;$/;" m struct:xode_struct
-p modules/jabber/xode.h /^ xode_pool p;$/;" m struct:xode_spool_struct
-p modules/jabber/xode.h /^ xode_pool p;$/;" m struct:xode_stream_struct
-p modules/pdt/domains.h /^ struct _entry *p;$/;" m struct:_entry
-p1 route_struct.h /^ }p1, p2, p3;$/;" m struct:action
-p1_type route_struct.h /^ int p1_type;$/;" m struct:action
-p2 route_struct.h /^ }p1, p2, p3;$/;" m struct:action
-p2_type route_struct.h /^ int p2_type;$/;" m struct:action
-p3 route_struct.h /^ }p1, p2, p3;$/;" m struct:action
-p3_type route_struct.h /^ int p3_type;$/;" m struct:action
-pa_callback_f modules/jabber/xjab_base.h /^typedef void (*pa_callback_f)(str* _user, str* _contact, int _state, void *p);$/;" t
-pa_child_init modules/pa/pa_mod.c /^static int pa_child_init(int _rank)$/;" f file:
-pa_db modules/pa/pa_mod.c /^db_con_t* pa_db; \/* Database connection handle *\/$/;" v
-pa_dbf modules/pa/pa_mod.c /^db_func_t pa_dbf;$/;" v
-pa_destroy modules/pa/pa_mod.c /^static void pa_destroy(void)$/;" f file:
-pa_domain modules/pa/pa_mod.c /^str pa_domain;$/;" v
-pa_extract_aor modules/pa/subscribe.c /^int pa_extract_aor(str* _uri, str* _a)$/;" f
-pa_handle_registration modules/pa/subscribe.c /^int pa_handle_registration(struct sip_msg* _m, char* _domain, char* _s2)$/;" f
-pa_location modules/pa/unixsock.c /^static int pa_location(str* msg)$/;" f file:
-pa_location_init modules/pa/location.c /^int pa_location_init(void)$/;" f
-pa_mod_init modules/pa/pa_mod.c /^static int pa_mod_init(void)$/;" f file:
-pa_pidf_priority modules/pa/pa_mod.c /^int pa_pidf_priority = 1;$/;" v
-pa_presence modules/pa/unixsock.c /^static int pa_presence(str* msg)$/;" f file:
-pa_publish modules/pa/unixsock.c /^static int pa_publish(str* msg)$/;" f file:
-pa_register_watcher_f modules/jabber/xjab_load.h /^typedef int (*pa_register_watcher_f)(str*, str *, void*, void*);$/;" t
-pa_sig_handler modules/pa/pa_mod.c /^void pa_sig_handler(int s) $/;" f
-pa_unregister_watcher_f modules/jabber/xjab_load.h /^typedef int (*pa_unregister_watcher_f)(str*, str *, void*, void*);$/;" t
-packetType modules/acc/diam_message.h /^ } packetType;$/;" m struct:avp
-packetType modules/auth_diameter/diameter_msg.h /^ } packetType;$/;" m struct:avp
-packet_loss modules/pa/presentity.h /^ str packet_loss;$/;" m struct:location
-packet_loss_buf modules/pa/presentity.h /^ char packet_loss_buf[TUPLE_LOCATION_PACKET_LOSS_LEN];$/;" m struct:location
-paerr modules/pa/paerrno.h /^typedef enum paerr {$/;" g
-paerr_t modules/pa/paerrno.h /^} paerr_t;$/;" t
-paerrno modules/pa/paerrno.c /^paerr_t paerrno;$/;" v
-param fifo_server.h /^ void *param;$/;" m struct:fifo_command
-param modules/enum/enum_mod.c /^str param;$/;" v
-param modules/tm/t_hooks.h /^ void **param;$/;" m struct:tmcb_params
-param modules/tm/t_hooks.h /^ void *param; \/* param to be passed to callback function *\/$/;" m struct:tm_callback
-param modules/usrloc/ul_callback.h /^ void *param; \/* param to be passed to callback function *\/$/;" m struct:ul_callback
-param parser/parse_param.h /^typedef struct param {$/;" s
-param route_struct.h /^ void* param;$/;" m union:expr::<anonymous>
-param script_cb.h /^ void *param;$/;" m struct:script_cb
-param_common_cases parser/parse_uri.c 189;" d file:
-param_common_cases test/p_uri.c 171;" d file:
-param_export_ sr_module.h /^struct param_export_ {$/;" s
-param_export_t sr_module.h /^typedef struct param_export_ param_export_t;$/;" t
-param_func_t sr_module.h /^typedef int (*param_func_t)( modparam_t type, void* val);$/;" t
-param_hooks parser/parse_param.h /^typedef union param_hooks {$/;" u
-param_hooks_t parser/parse_param.h /^} param_hooks_t;$/;" t
-param_lst parser/parse_to.h /^ struct to_param *param_lst; \/* Linked list of parameters *\/$/;" m struct:to_body
-param_lst parser/parse_via.h /^ struct via_param* param_lst; \/* list of parameters*\/$/;" m struct:via_body
-param_no sr_module.h /^ int param_no; \/* number of parameters used by the function *\/$/;" m struct:cmd_export_
-param_pointer sr_module.h /^ void* param_pointer; \/* pointer to the param. memory location *\/$/;" m struct:param_export_
-param_set parser/parse_uri.c 151;" d file:
-param_set test/p_uri.c 133;" d file:
-param_switch parser/parse_uri.c 216;" d file:
-param_switch test/p_uri.c 198;" d file:
-param_switch1 parser/parse_uri.c 228;" d file:
-param_switch1 test/p_uri.c 210;" d file:
-param_switch_big parser/parse_uri.c 239;" d file:
-param_switch_big test/p_uri.c 221;" d file:
-param_t parser/parse_param.h /^} param_t;$/;" t
-parameters modules/mediaproxy/mediaproxy.c /^static param_export_t parameters[] = {$/;" v file:
-params modules/acc/acc_mod.c /^static param_export_t params[] = {$/;" v file:
-params modules/auth/auth_mod.c /^static param_export_t params[] = {$/;" v file:
-params modules/auth_db/authdb_mod.c /^static param_export_t params[] = {$/;" v file:
-params modules/auth_diameter/auth_diameter.c /^static param_export_t params[] = {$/;" v file:
-params modules/auth_radius/authrad_mod.c /^static param_export_t params[] = {$/;" v file:
-params modules/avp/avp.c /^static param_export_t params[] = {$/;" v file:
-params modules/avp_db/avp_db.c /^static param_export_t params[] = {$/;" v file:
-params modules/avp_radius/avp_radius.c /^static param_export_t params[] = {$/;" v file:
-params modules/avpops/avpops.c /^static param_export_t params[] = {$/;" v file:
-params modules/cpl-c/cpl.c /^static param_export_t params[] = {$/;" v file:
-params modules/cpl/cpl.c /^static param_export_t params[] = {$/;" v file:
-params modules/dbtext/dbtext.c /^static param_export_t params[] = {$/;" v file:
-params modules/dispatcher/dispatcher.c /^static param_export_t params[]={$/;" v file:
-params modules/diversion/diversion.c /^static param_export_t params[] = {$/;" v file:
-params modules/domain/domain_mod.c /^static param_export_t params[] = {$/;" v file:
-params modules/enum/enum_mod.c /^static param_export_t params[] = {$/;" v file:
-params modules/exec/exec_mod.c /^static param_export_t params[] = {$/;" v file:
-params modules/ext/ext.c /^static param_export_t params[] = {$/;" v file:
-params modules/extcmd/extcmd.c /^static param_export_t params[] = {$/;" v file:
-params modules/flatstore/flatstore_mod.c /^static param_export_t params[] = {$/;" v file:
-params modules/gflags/gflags.c /^static param_export_t params[]={ $/;" v file:
-params modules/group/group_mod.c /^static param_export_t params[] = {$/;" v file:
-params modules/group_radius/grouprad_mod.c /^static param_export_t params[] = {$/;" v file:
-params modules/jabber/jabber.c /^static param_export_t params[] = {$/;" v file:
-params modules/mangler/mangler.c /^static param_export_t params[] = { $/;" v file:
-params modules/maxfwd/maxfwd.c /^static param_export_t params[]={$/;" v file:
-params modules/msilo/msilo.c /^static param_export_t params[]={$/;" v file:
-params modules/mysql/db_mod.c /^static param_export_t params[] = {$/;" v file:
-params modules/nathelper/nathelper.c /^static param_export_t params[] = {$/;" v file:
-params modules/options/mod_options.c /^static param_export_t params[] = {$/;" v file:
-params modules/pa/pa_mod.c /^static param_export_t params[]={$/;" v file:
-params modules/pdt/pdt.c /^static param_export_t params[]={$/;" v file:
-params modules/permissions/permissions.c /^static param_export_t params[] = {$/;" v file:
-params modules/pike/pike.c /^static param_export_t params[]={$/;" v file:
-params modules/print/print.c /^static param_export_t params[]={ $/;" v file:
-params modules/registrar/reg_mod.c /^static param_export_t params[] = {$/;" v file:
-params modules/rr/rr_mod.c /^static param_export_t params[] ={ $/;" v file:
-params modules/sms/sms.c /^static param_export_t params[]={$/;" v file:
-params modules/speeddial/speeddial.c /^static param_export_t params[] = {$/;" v file:
-params modules/textops/textops.c /^static param_export_t params[]={ {0,0,0} }; \/* no params *\/$/;" v file:
-params modules/tm/tm.c /^static param_export_t params[]={$/;" v file:
-params modules/uri/uri_mod.c /^static param_export_t params[] = {$/;" v file:
-params modules/uri_db/uridb_mod.c /^static param_export_t params[] = {$/;" v file:
-params modules/uri_radius/urirad_mod.c /^static param_export_t params[] = {$/;" v file:
-params modules/usrloc/ul_mod.c /^static param_export_t params[] = {$/;" v file:
-params modules/xlog/xlog.c /^static param_export_t params[]={$/;" v file:
-params parser/contact/contact.h /^ param_t* params; \/* List of all parameters *\/$/;" m struct:contact
-params parser/msg_parser.h /^ str params; \/* Parameters *\/$/;" m struct:sip_uri
-params parser/parse_disposition.h /^ struct disposition_param *params;$/;" m struct:disposition
-params parser/parse_rr.h /^ param_t* params; \/* Linked list of other parameters *\/$/;" m struct:rr
-params parser/parse_via.h /^ str params;$/;" m struct:via_body
-params sr_module.h /^ param_export_t* params; \/* null terminated array of the exported$/;" m struct:module_exports
-params test/p_uri.c /^ str params; \/* Parameters *\/$/;" m struct:sip_uri file:
-parent modules/jabber/tree234.c /^ node234 *parent;$/;" m struct:node234_Tag file:
-parent modules/jabber/xode.h /^ struct xode_struct* parent;$/;" m struct:xode_struct
-parent modules/postgres/aug_alloc.c /^ MemHead *parent, *sibling, *child;$/;" m struct:MemHeadStruct file:
-parent tcp_conn.h /^ struct tcp_connection* parent;$/;" m struct:tcp_conn_alias
-parseRedirectResponse modules/cpl/jcpli.c /^TRedirectMessage* parseRedirectResponse(char *message, int length)$/;" f
-parseRejectResponse modules/cpl/jcpli.c /^TRejectMessage* parseRejectResponse(char *message, int length)$/;" f
-parse_accept modules/pa/subscribe.c /^int parse_accept(struct hdr_field* _h, doctype_t* _a)$/;" f
-parse_accept_hdr parser/parse_content.c /^int parse_accept_hdr( struct sip_msg *msg )$/;" f
-parse_algorithm parser/digest/digest_parser.c /^static inline void parse_algorithm(struct algorithm* _a)$/;" f file:
-parse_allow_header parser/parse_allow.c /^int parse_allow_header(struct hdr_field* _hf)$/;" f
-parse_avp_attr modules/avpops/avpops_parse.c /^char *parse_avp_attr(char *s, struct fis_param *attr, char end)$/;" f
-parse_avp_db modules/avpops/avpops_parse.c /^int parse_avp_db(char *s, struct db_param *dbp, int allow_scheme)$/;" f
-parse_avp_db_scheme modules/avpops/avpops_parse.c /^int parse_avp_db_scheme( char *s, struct db_scheme *scheme)$/;" f
-parse_avp_name usr_avp.c /^int parse_avp_name( str *name, int *type, int_str *avp_name)$/;" f
-parse_avp_spec usr_avp.c /^int parse_avp_spec( str *name, int *type, int_str *avp_name)$/;" f
-parse_check_value modules/avpops/avpops_parse.c /^struct fis_param* parse_check_value(char *s)$/;" f
-parse_cmd unixsock_server.c /^static int parse_cmd(str* res, str* buffer)$/;" f file:
-parse_config_file modules/permissions/parse_config.c /^rule *parse_config_file(char *filename) $/;" f
-parse_config_line modules/permissions/parse_config.c /^static rule *parse_config_line(char *line) $/;" f file:
-parse_config_lines modules/sms/sms.c /^int parse_config_lines()$/;" f
-parse_contact parser/contact/parse_contact.c /^int parse_contact(struct hdr_field* _h)$/;" f
-parse_contact_class parser/parse_param.c /^static inline void parse_contact_class(param_hooks_t* _h, param_t* _p)$/;" f file:
-parse_contacts parser/contact/contact.c /^int parse_contacts(str* _s, contact_t** _c)$/;" f
-parse_content_disposition parser/parse_disposition.c /^int parse_content_disposition( struct sip_msg *msg )$/;" f
-parse_content_length parser/parse_content.c /^char* parse_content_length( char* buffer, char* end, int* length)$/;" f
-parse_content_type_hdr parser/parse_content.c /^int parse_content_type_hdr( struct sip_msg *msg )$/;" f
-parse_credentials parser/digest/digest.c /^int parse_credentials(struct hdr_field* _h)$/;" f
-parse_cseq parser/parse_cseq.c /^char* parse_cseq(char *buf, char* end, struct cseq_body* cb)$/;" f
-parse_db_value db/db_fifo.c /^static inline int parse_db_value( str *s, db_val_t *val, str **ret_s)$/;" f file:
-parse_digest_cred parser/digest/digest_parser.c /^int parse_digest_cred(str* _s, dig_cred_t* _c)$/;" f
-parse_digest_param parser/digest/digest_parser.c /^static inline int parse_digest_param(str* _s, dig_cred_t* _c)$/;" f file:
-parse_digest_params parser/digest/digest_parser.c /^static inline int parse_digest_params(str* _s, dig_cred_t* _c)$/;" f file:
-parse_disposition parser/parse_disposition.c /^int parse_disposition( str *s, struct disposition *disp)$/;" f
-parse_diversion_header parser/parse_diversion.c /^int parse_diversion_header(struct sip_msg *msg)$/;" f
-parse_dlg modules/tm/t_lookup.c /^static inline int parse_dlg( struct sip_msg *msg )$/;" f file:
-parse_event parser/parse_event.c /^int parse_event(struct hdr_field* _h)$/;" f
-parse_expires parser/parse_expires.c /^int parse_expires(struct hdr_field* _h)$/;" f
-parse_expression modules/permissions/parse_config.c /^static int parse_expression(char *str, expression **e, expression **e_exceptions) $/;" f file:
-parse_expression_list modules/permissions/parse_config.c /^static int parse_expression_list(char *str, expression **e) $/;" f file:
-parse_first_line parser/parse_fline.c /^char* parse_first_line(char* buffer, unsigned int len, struct msg_start * fl)$/;" f
-parse_flat_url modules/flatstore/flatstore.c /^static int parse_flat_url(const char* url, const char** path)$/;" f file:
-parse_fline parser/parse_fline.c /^char* parse_fline(char* buffer, char* end, struct msg_start* fl)$/;" f
-parse_from_header parser/parse_from.c /^int parse_from_header( struct sip_msg *msg)$/;" f
-parse_headers parser/msg_parser.c /^int parse_headers(struct sip_msg* msg, int flags, int next)$/;" f
-parse_hfs modules/pa/publish.c /^static int parse_hfs(struct sip_msg* _m)$/;" f file:
-parse_hfs modules/pa/subscribe.c /^static int parse_hfs(struct sip_msg* _m, int accept_header_required)$/;" f file:
-parse_hname parser/msg_parser.c 64;" d file:
-parse_hname1 parser/obsolete/parse_hname.c /^char* parse_hname1(char* p, char* end, struct hdr_field* hdr)$/;" f
-parse_hname2 parser/parse_hname2.c /^char* parse_hname2(char* begin, char* end, struct hdr_field* hdr)$/;" f
-parse_hostport parser/parse_hostport.c /^char* parse_hostport(char* buf, str* host, short int* port)$/;" f
-parse_intstr_value modules/avpops/avpops_parse.c /^struct fis_param* parse_intstr_value(char *p, int len)$/;" f
-parse_ip_address modules/mangler/ip_helper.c /^parse_ip_address (char *c, unsigned int *address) \/\/inet_aton$/;" f
-parse_ip_netmask modules/mangler/ip_helper.c /^parse_ip_netmask (char *c, char **ip, unsigned int *mask)$/;" f
-parse_message modules/registrar/sip_msg.c /^int parse_message(struct sip_msg* _m)$/;" f
-parse_method parser/parse_methods.c /^static int parse_method(str* _next, unsigned int* _method) $/;" f file:
-parse_methods parser/parse_methods.c /^ int parse_methods(str* _body, unsigned int* _methods)$/;" f
-parse_msg parser/msg_parser.c /^int parse_msg(char* buf, unsigned int len, struct sip_msg* msg)$/;" f
-parse_mysql_url modules/mysql/utils.c /^int parse_mysql_url(char* _url, char** _user, char** _pass,$/;" f
-parse_nameaddr parser/parse_nameaddr.c /^int parse_nameaddr(str* _s, name_addr_t* _a)$/;" f
-parse_naptr_regexp modules/enum/enum.c /^static inline int parse_naptr_regexp(char* first, int len, str* pattern,$/;" f file:
-parse_orig_ruri parser/parse_uri.c /^int parse_orig_ruri(struct sip_msg* msg)$/;" f
-parse_param_body parser/parse_param.c /^static inline int parse_param_body(str* _s, param_t* _c)$/;" f file:
-parse_param_name parser/digest/param_parser.c /^int parse_param_name(str* _s, dig_par_t* _type)$/;" f
-parse_param_name parser/parse_param.c /^static inline void parse_param_name(str* _s, pclass_t _c, param_hooks_t* _h, param_t* _p)$/;" f file:
-parse_params parser/parse_param.c /^int parse_params(str* _s, pclass_t _c, param_hooks_t* _h, param_t** _p)$/;" f
-parse_phostport main.c /^static int parse_phostport(char* s, char** host, int* hlen, int* port,$/;" f file:
-parse_pidf modules/pa/pidf.c /^int parse_pidf(char *pidf_body, str *contact_str, str *basic_str, str *status_str, $/;" f
-parse_proto main.c /^static int parse_proto(unsigned char* s, long len, int* proto)$/;" f file:
-parse_q modules/cpl-c/cpl_proxy.h /^static inline int parse_q(str *q, unsigned int *prio)$/;" f
-parse_qop parser/digest/digest_parser.c /^static inline void parse_qop(struct qp* _q)$/;" f file:
-parse_quoted parser/digest/digest_parser.c /^static inline int parse_quoted(str* _s, str* _r)$/;" f file:
-parse_quoted_param parser/parse_param.c /^static inline int parse_quoted_param(str* _s, str* _r)$/;" f file:
-parse_rpid_header parser/parse_rpid.c /^int parse_rpid_header( struct sip_msg *msg )$/;" f
-parse_rr parser/parse_rr.c /^int parse_rr(struct hdr_field* _h)$/;" f
-parse_rr_body parser/parse_rr.c /^int parse_rr_body(char *buf, int len, rr_t **head)$/;" f
-parse_sip_msg_uri parser/parse_uri.c /^int parse_sip_msg_uri(struct sip_msg* msg)$/;" f
-parse_sipifmatch parser/parse_sipifmatch.c /^parse_sipifmatch(struct hdr_field* _h)$/;" f
-parse_source_uri modules/avpops/avpops_impl.c /^static int parse_source_uri(struct sip_msg* msg,int source,struct sip_uri *uri)$/;" f file:
-parse_sql_url modules/postgres/db_utils.c /^int parse_sql_url(char* _url, char** _user, char** _pass, $/;" f
-parse_to parser/parse_to.c /^char* parse_to(char* buffer, char *end, struct to_body *to_b)$/;" f
-parse_to_param parser/parse_to.c /^static \/*inline*\/ char* parse_to_param(char *buffer, char *end,$/;" f file:
-parse_token parser/digest/digest_parser.c /^static inline int parse_token(str* _s, str* _r)$/;" f file:
-parse_token_list modules/auth_db/aaa_avps.h /^parse_token_list(char *p, char *pend, char separator, str **result)$/;" f
-parse_token_param parser/parse_param.c /^static inline int parse_token_param(str* _s, str* _r)$/;" f file:
-parse_transid modules/tm/t_reply.c /^static int parse_transid(str* s, unsigned int* index, unsigned int* label)$/;" f file:
-parse_tw_append modules/tm/t_fifo.c /^int parse_tw_append( modparam_t type, void* val)$/;" f
-parse_uri parser/parse_uri.c /^int parse_uri(char *buf, int len, struct sip_uri* uri)$/;" f
-parse_uri parser/parse_uri.c /^int parse_uri(char* buf, int len, struct sip_uri* uri)$/;" f
-parse_uri test/p_uri.c /^int parse_uri(char* buf, int len, struct sip_uri* uri)$/;" f
-parse_uri_class parser/parse_param.c /^static inline void parse_uri_class(param_hooks_t* _h, param_t* _p)$/;" f file:
-parse_username parser/digest/digest_parser.c /^static inline void parse_username(struct username* _u)$/;" f file:
-parse_via parser/parse_via.c /^char* parse_via(char* buffer, char* end, struct via_body *vbody)$/;" f
-parse_via_param parser/parse_via.c /^static \/*inline*\/ char* parse_via_param(char* p, char* end,$/;" f file:
-parse_via_param test/via_parse.c /^__inline char* parse_via_param(char* p, int* pstate, int* psaved_state)$/;" f
-parsed parser/hf.h /^ void* parsed; \/* Parsed data structures *\/$/;" m struct:hdr_field
-parsed parser/parse_event.h /^ int parsed; \/* Parsed variant *\/$/;" m struct:event
-parsed tcp_conn.h /^ char* parsed; \/* last parsed position *\/$/;" m struct:tcp_req
-parsed_flag parser/msg_parser.h /^ int parsed_flag; \/* Already parsed header field types *\/$/;" m struct:sip_msg
-parsed_orig_ruri parser/msg_parser.h /^ struct sip_uri parsed_orig_ruri;$/;" m struct:sip_msg
-parsed_orig_ruri_ok parser/msg_parser.h /^ int parsed_orig_ruri_ok;$/;" m struct:sip_msg
-parsed_uri parser/msg_parser.h /^ struct sip_uri parsed_uri; \/* speed-up > keep here the parsed uri*\/$/;" m struct:sip_msg
-parsed_uri_ok parser/msg_parser.h /^ int parsed_uri_ok; \/* 1 if parsed_uri is valid, 0 if not, set if to 0$/;" m struct:sip_msg
-parser modules/jabber/xode.h /^ XML_Parser parser;$/;" m struct:xode_stream_struct
-parser_f_h parser/parser_f.h 35;" d
-partial_dlg_matching modules/tm/t_lookup.c /^static inline int partial_dlg_matching(struct sip_msg *t_msg, struct sip_msg *p_msg)$/;" f file:
-pass modules/pdt/doc/web/request.php /^$pass="";$/;" v
-pass_column modules/auth_db/authdb_mod.c /^str pass_column = {PASS_COL, PASS_COL_LEN};$/;" v
-pass_column_2 modules/auth_db/authdb_mod.c /^str pass_column_2 = {PASS_COL_2, PASS_COL_2_LEN};$/;" v
-passwd modules/jabber/xjab_jconf.h /^ str passwd;$/;" m struct:_xj_jconf
-passwd parser/msg_parser.h /^ str passwd; \/* Password *\/$/;" m struct:sip_uri
-passwd test/p_uri.c /^ str passwd; \/* Password *\/$/;" m struct:sip_uri file:
-password modules/mangler/contact_ops.h /^ str password;$/;" m struct:uri_format
-password modules/mysql/my_id.h /^ str password; \/* Password, case sensitive *\/$/;" m struct:my_id
-patch modules/mangler/utils.c /^patch (struct sip_msg *msg, char *oldstr, unsigned int oldlen, char *newstr,$/;" f
-patch_content_length modules/mangler/utils.c /^patch_content_length (struct sip_msg *msg, unsigned int newValue)$/;" f
-path sr_module.h /^ char* path;$/;" m struct:sr_module
-pathmax ut.h /^inline static int pathmax()$/;" f
-pattern modules/permissions/hash.h /^ char *pattern; \/* Pattern matching From header field *\/$/;" m struct:trusted_list
-pclass parser/parse_param.h /^typedef enum pclass {$/;" g
-pclass_t parser/parse_param.h /^} pclass_t;$/;" t
-pdomain modules/pa/pdomain.h /^typedef struct pdomain {$/;" s
-pdomain modules/pa/presentity.h /^ struct pdomain *pdomain; $/;" m struct:presentity
-pdomain_load_presentities modules/pa/presentity.c /^int pdomain_load_presentities(pdomain_t *pdomain)$/;" f
-pdomain_t modules/pa/pdomain.h /^} pdomain_t;$/;" t
-pdt_dbf modules/pdt/pdt.c /^static db_func_t pdt_dbf;$/;" v file:
-pdu2ascii modules/sms/libsms_getsms.c /^int pdu2ascii(char* pdu, char* ascii)$/;" f
-pdu2binary modules/sms/libsms_getsms.c /^int pdu2binary(char* pdu, char* binary)$/;" f
-periodicAsymmetricsCheck modules/mediaproxy/mediaproxy.c /^periodicAsymmetricsCheck(void)$/;" f file:
-perm_dbf modules/permissions/trusted.c /^static db_func_t perm_dbf;$/;" v file:
-permanent modules/cpl/jcpli.h /^ int permanent;$/;" m struct:_RedirectMessage
-pflag modules/pa/presentity.h /^typedef enum pflag {$/;" g
-pflag_t modules/pa/presentity.h /^} pflag_t;$/;" t
-pgid_file globals.h /^char* pgid_file;$/;" v
-pgid_file main.c /^char* pgid_file = 0;$/;" v
-phones modules/pa/presentity.h /^ resource_list_t *phones;$/;" m struct:location_package
-phostport cfg.y /^phostport: listen_id { $$=mk_listen_id($1, 0, 0); }$/;" l
-phrase2code modules/acc/acc.c /^inline static UINT4 phrase2code(str *phrase)$/;" f file:
-phrase2code modules/acc/acc.c /^inline static unsigned long phrase2code(str *phrase)$/;" f file:
-pid modules/exec/kill.h /^ int pid;$/;" m struct:timer_link
-pid modules/ext/my_exec.h /^ pid_t pid;$/;" m struct:program
-pid modules/jabber/xjab_worker.h /^ int pid; \/\/ process id$/;" m struct:_xj_worker
-pid pt.h /^ int pid;$/;" m struct:process_table
-pid stats.h /^ pid_t pid;$/;" m struct:stats_s
-pid tcp_main.c /^ pid_t pid;$/;" m struct:tcp_child file:
-pid_file globals.h /^char* pid_file;$/;" v
-pid_file main.c /^char* pid_file = 0; \/* filename as asked by use *\/$/;" v
-pidf_add_contact modules/pa/pidf.c /^int pidf_add_contact(str* _b, int _l, str* _addr, double priority)$/;" f
-pidf_add_location modules/pa/pidf.c /^int pidf_add_location(str* _b, int _l, str *_loc, str *_site, str *_floor, str *_room, double _x, double _y, double _radius,$/;" f
-pidf_add_presentity modules/pa/pidf.c /^int pidf_add_presentity(str* _b, int _l, str* _uri)$/;" f
-pidf_end_status modules/pa/pidf.c /^int pidf_end_status(str *_b, int _l)$/;" f
-pidf_end_tuple modules/pa/pidf.c /^int pidf_end_tuple(str* _b, int _l)$/;" f
-pidf_start_status modules/pa/pidf.c /^int pidf_start_status(str *_b, int _l, pidf_status_t _st)$/;" f
-pidf_start_tuple modules/pa/pidf.c /^int pidf_start_tuple(str* _b, str *id, int _l)$/;" f
-pidf_status modules/pa/pidf.h /^typedef enum pidf_status {$/;" g
-pidf_status_t modules/pa/pidf.h /^} pidf_status_t;$/;" t
-pids test/dns_query.c /^int pids[1];$/;" v
-pike_check_req modules/pike/pike_funcs.c /^int pike_check_req(struct sip_msg *msg, char *foo, char *bar)$/;" f
-pike_exit modules/pike/pike.c /^static int pike_exit(void)$/;" f file:
-pike_init modules/pike/pike.c /^static int pike_init(void)$/;" f file:
-pin modules/sms/sms_funcs.h /^ char pin[MAX_CHAR_BUF+1];$/;" m struct:modem
-pingClients modules/mediaproxy/functions.h /^pingClients(unsigned int ticks, void *param)$/;" f
-ping_interval modules/mysql/db_mod.c /^int ping_interval = 5 * 60; \/* Default is 5 minutes *\/$/;" v
-ping_nated_only modules/nathelper/nathelper.c /^static int ping_nated_only = 0;$/;" v file:
-pipe_out modules/sms/sms_funcs.h /^ int pipe_out;$/;" m struct:network
-pipes modules/jabber/jabber.c /^int **pipes = NULL;$/;" v
-pkg_free mem/mem.h 103;" d
-pkg_free mem/mem.h 107;" d
-pkg_free mem/mem.h 120;" d
-pkg_free mem/mem.h 128;" d
-pkg_free mem/mem.h 78;" d
-pkg_free mem/mem.h 84;" d
-pkg_free mem/mem.h 93;" d
-pkg_free mem/mem.h 99;" d
-pkg_malloc mem/mem.h 101;" d
-pkg_malloc mem/mem.h 105;" d
-pkg_malloc mem/mem.h 119;" d
-pkg_malloc mem/mem.h 124;" d
-pkg_malloc mem/mem.h 76;" d
-pkg_malloc mem/mem.h 82;" d
-pkg_malloc mem/mem.h 89;" d
-pkg_malloc mem/mem.h 98;" d
-pkg_realloc mem/mem.h 102;" d
-pkg_realloc mem/mem.h 106;" d
-pkg_realloc mem/mem.h 86;" d
-pkg_realloc mem/mem.h 91;" d
-pkg_status mem/mem.h 111;" d
-pkg_status mem/mem.h 113;" d
-pkg_status mem/mem.h 115;" d
-pkg_status mem/mem.h 121;" d
-pkg_status mem/mem.h 129;" d
-place modules/pa/pa.sql /^create table place($/;" t
-place_holder modules/tm/t_dlg.h /^ int place_holder;$/;" m struct:dialog
-place_table modules/pa/pa_mod.c /^char *place_table = "place";$/;" v
-placeid modules/pa/location.c /^ int placeid;$/;" m struct:location_placeid_row file:
-places_initialized modules/pa/location.c /^static int places_initialized = 0;$/;" v file:
-plist modules/jabber/xjab_jcon.h /^ xj_pres_list plist; \/\/ presence list$/;" m struct:_xj_jcon
-pool modules/flatstore/flat_pool.c /^static struct flat_con* pool = 0;$/;" v file:
-pool modules/mysql/my_pool.c /^static struct my_con* pool = 0;$/;" v file:
-pool_pid modules/flatstore/flat_pool.c /^static int pool_pid;$/;" v file:
-pool_pid modules/mysql/my_pool.c /^static int pool_pid;$/;" v file:
-port cfg.y /^port: NUMBER { $$=$1; }$/;" l
-port ip_addr.h /^ int port;$/;" m struct:socket_id
-port modules/jabber/xjab_jcon.h /^ int port; \/\/ port of the server$/;" m struct:_xj_jcon
-port modules/mangler/contact_ops.h /^ str port;$/;" m struct:uri_format
-port modules/mediaproxy/mediaproxy.c /^ str port;$/;" m file:
-port modules/mysql/my_id.h /^ unsigned short port; \/* Port number *\/$/;" m struct:my_id
-port msg_translator.h /^ str* port;$/;" m struct:hostport
-port name_alias.h /^ unsigned short port;$/;" m struct:host_alias
-port parser/msg_parser.h /^ str port; \/* Port number *\/$/;" m struct:sip_uri
-port parser/parse_via.h /^ int port;$/;" m struct:via_body
-port proxy.h /^ unsigned short port;$/;" m struct:proxy_l
-port resolve.h /^ unsigned short port;$/;" m struct:srv_rdata
-port tcp_conn.h /^ unsigned short port; \/* alias port *\/$/;" m struct:tcp_conn_alias
-port test/p_uri.c /^ str port; \/* Port number *\/$/;" m struct:sip_uri file:
-portExpression modules/mangler/sdp_mangler.h /^regex_t *portExpression;$/;" v
-port_no ip_addr.h /^ unsigned short port_no; \/* port number *\/$/;" m struct:socket_info
-port_no main.c /^unsigned short port_no=0; \/* default port*\/$/;" v
-port_no parser/msg_parser.h /^ unsigned short port_no;$/;" m struct:sip_uri
-port_no test/p_uri.c /^ unsigned short port_no;$/;" m struct:sip_uri file:
-port_no_str ip_addr.h /^ str port_no_str; \/* port number converted to string -- optimization*\/$/;" m struct:socket_info
-port_str parser/parse_via.h /^ str port_str;$/;" m struct:via_body
-pos tcp_conn.h /^ char* pos; \/* current position in buf *\/$/;" m struct:tcp_req
-post_auth modules/auth/api.c /^auth_result_t post_auth(struct sip_msg* _m, struct hdr_field* _h, str* _rpid)$/;" f
-post_auth_f modules/auth/api.h /^typedef auth_result_t (*post_auth_f)(struct sip_msg* _m, struct hdr_field* _h, str* _rpid);$/;" t
-post_auth_func modules/auth_db/authdb_mod.c /^post_auth_f post_auth_func = 0;$/;" v
-post_auth_func modules/auth_radius/authrad_mod.c /^post_auth_f post_auth_func = 0; \/* Post authorization function from auth module *\/$/;" v
-post_cb script_cb.c /^static struct script_cb *post_cb=0;$/;" v file:
-pre_auth modules/auth/api.c /^auth_result_t pre_auth(struct sip_msg* _m, str* _realm, int _hftype, struct hdr_field** _h)$/;" f
-pre_auth modules/auth_diameter/authorize.c /^auth_result_t pre_auth(struct sip_msg* _m, str* _realm, int _hftype, struct hdr_field** _h)$/;" f
-pre_auth_f modules/auth/api.h /^typedef auth_result_t (*pre_auth_f)(struct sip_msg* _m, str* _realm, int _hftype, struct hdr_field** _h);$/;" t
-pre_auth_func modules/auth_db/authdb_mod.c /^pre_auth_f pre_auth_func = 0;$/;" v
-pre_auth_func modules/auth_radius/authrad_mod.c /^pre_auth_f pre_auth_func = 0; \/* Pre authorization function from auth module *\/$/;" v
-pre_cb script_cb.c /^static struct script_cb *pre_cb=0;$/;" v file:
-pref resolve.h /^ unsigned short pref;$/;" m struct:naptr_rdata
-prefix modules/exec/exec_hf.h /^ char *prefix;$/;" m struct:hf_wrapper
-prefix modules/pdt/pdt.c /^char *prefix = NULL;$/;" v
-prefix2domain modules/pdt/pdt.c /^static int prefix2domain(struct sip_msg* msg, char* str1, char* str2)$/;" f file:
-prefix_len modules/exec/exec_hf.h /^ int prefix_len;$/;" m struct:hf_wrapper
-prefix_len modules/pdt/pdt.c /^code_t prefix_len = 0;$/;" v
-prefix_valid modules/pdt/pdt.c /^inline int prefix_valid()$/;" f
-preload_udomain modules/usrloc/udomain.c /^int preload_udomain(db_con_t* _c, udomain_t* _d)$/;" f
-prepare modules/mangler/mangler.c /^prepare ()$/;" f
-prepare_selection modules/avpops/avpops_db.c /^static inline int prepare_selection( str *uuid, str *username, str *domain,$/;" f file:
-pres_state modules/usrloc/notify.h /^typedef enum pres_state {$/;" g
-pres_state_t modules/usrloc/notify.h /^} pres_state_t;$/;" t
-prescap_names modules/pa/pidf.c /^const char *prescap_names[] = {$/;" v
-prescaps modules/pa/presentity.h /^ enum prescaps prescaps;$/;" m struct:presence_tuple
-prescaps modules/pa/presentity.h /^enum prescaps {$/;" g
-presence_agent scripts/sc /^presence_agent() {$/;" f
-presence_tuple modules/pa/presentity.h /^typedef struct presence_tuple {$/;" s
-presence_tuple_t modules/pa/presentity.h /^} presence_tuple_t;$/;" t
-presentity modules/pa/pa.sql /^CREATE TABLE presentity ($/;" t
-presentity modules/pa/presentity.h /^typedef struct presentity {$/;" s
-presentity_contact modules/pa/pa.sql /^CREATE TABLE presentity_contact ($/;" t
-presentity_contact_table modules/pa/pa_mod.c /^char *presentity_contact_table = "presentity_contact";$/;" v
-presentity_t modules/pa/presentity.h /^} presentity_t;$/;" t
-presentity_table modules/pa/pa_mod.c /^char *presentity_table = "presentity";$/;" v
-presid modules/pa/presentity.h /^ int presid; \/* presid of the record in the presentity table *\/$/;" m struct:presentity
-prev ip_addr.h /^ struct socket_info* prev;$/;" m struct:socket_info
-prev modules/acc/diam_message.h /^ struct avp *prev;$/;" m struct:avp
-prev modules/auth_diameter/diameter_msg.h /^ struct avp *prev;$/;" m struct:avp
-prev modules/dbtext/dbt_lib.h /^ struct _dbt_cache *prev;$/;" m struct:_dbt_cache
-prev modules/dbtext/dbt_lib.h /^ struct _dbt_column *prev;$/;" m struct:_dbt_column
-prev modules/dbtext/dbt_lib.h /^ struct _dbt_row *prev;$/;" m struct:_dbt_row
-prev modules/dbtext/dbt_lib.h /^ struct _tbl_cache *prev;$/;" m struct:_tbl_cache
-prev modules/jabber/xjab_presence.h /^ struct _xj_pres_cell *prev;$/;" m struct:_xj_pres_cell
-prev modules/jabber/xode.h /^ struct xode_struct* prev; $/;" m struct:xode_struct
-prev modules/msilo/ms_msg_list.h /^ struct _msg_list_el * prev;$/;" m struct:_msg_list_el
-prev modules/pa/presentity.h /^ struct presence_tuple *prev;$/;" m struct:presence_tuple
-prev modules/pa/presentity.h /^ struct presentity* prev; \/* Previous presentity in list *\/$/;" m struct:presentity
-prev modules/pa/presentity.h /^ struct resource_list *prev;$/;" m struct:resource_list
-prev modules/pike/ip_tree.h /^ struct ip_node *prev;$/;" m struct:ip_node
-prev modules/pike/timer.h /^ struct list_link *prev;$/;" m struct:list_link
-prev modules/usrloc/ucontact.h /^ struct ucontact* prev; \/* Previous contact in the linked list *\/$/;" m struct:ucontact
-prev modules/usrloc/urecord.h /^ struct urecord* prev; \/* Next item in the linked list *\/$/;" m struct:urecord::<anonymous>
-prev modules/usrloc/urecord.h /^ struct urecord* prev; \/* Previous item in the list *\/$/;" m struct:urecord::<anonymous>
-prev tcp_conn.h /^ struct tcp_conn_alias* prev;$/;" m struct:tcp_conn_alias
-prev_cell modules/tm/h_table.h /^ struct cell* prev_cell;$/;" m struct:cell
-prev_free mem/q_malloc.h /^ struct qm_frag* prev_free;$/;" m struct:qm_frag_end
-prev_ser_error error.c /^int prev_ser_error=-1;$/;" v
-prev_tl modules/exec/kill.h /^ struct timer_link *prev_tl;$/;" m struct:timer_link
-prev_tl modules/tm/timer.h /^ struct timer_link *prev_tl;$/;" m struct:timer_link
-printRedirectMessage modules/cpl/jcpli.c /^void printRedirectMessage(TRedirectMessage *redMessage)$/;" f
-printRejectMessage modules/cpl/jcpli.c /^void printRejectMessage(TRejectMessage *rejMessage)$/;" f
-print_action route_struct.c /^void print_action(struct action* a)$/;" f
-print_aliases socket_info.c /^void print_aliases()$/;" f
-print_all_pdomains modules/pa/dlist.c /^void print_all_pdomains(FILE* _f)$/;" f
-print_all_socket_lists socket_info.c /^void print_all_socket_lists()$/;" f
-print_all_udomains modules/usrloc/dlist.c /^void print_all_udomains(FILE* _f)$/;" f
-print_av_var modules/exec/exec_hf.c /^static int print_av_var(struct hf_wrapper *w)$/;" f file:
-print_callid modules/tm/t_msgbuilder.c /^static inline char* print_callid(char* w, dlg_t* dialog, struct cell* t)$/;" f file:
-print_callid_mini modules/tm/t_msgbuilder.c /^char* print_callid_mini(char* target, str callid) {$/;" f
-print_cmd unixsock_server.c /^static int print_cmd(str* msg)$/;" f file:
-print_columns modules/mysql/dbase.c /^static int print_columns(char* _b, int _l, db_key_t* _c, int _n)$/;" f file:
-print_columns modules/postgres/dbase.c /^static int print_columns(char* _b, int _l, db_key_t* _c, int _n)$/;" f file:
-print_contact parser/contact/parse_contact.c /^void print_contact(FILE* _o, contact_body_t* _c)$/;" f
-print_contacts modules/usrloc/ul_fifo.c /^static inline int print_contacts(FILE* _o, ucontact_t* _c)$/;" f file:
-print_contacts modules/usrloc/ul_unixsock.c /^static inline int print_contacts(ucontact_t* _c)$/;" f file:
-print_contacts parser/contact/contact.c /^void print_contacts(FILE* _o, contact_t* _c)$/;" f
-print_content_length modules/tm/t_msgbuilder.c /^static inline int print_content_length(str* dest, str* body)$/;" f file:
-print_cred parser/digest/digest.c /^void print_cred(dig_cred_t* _c)$/;" f
-print_cseq modules/tm/t_msgbuilder.c /^static inline char* print_cseq(char* w, str* cseq, str* method, struct cell* t)$/;" f file:
-print_cseq_mini modules/tm/t_msgbuilder.c /^char* print_cseq_mini(char* target, str* cseq, str* method) {$/;" f
-print_cseq_num modules/tm/t_msgbuilder.c /^static inline int print_cseq_num(str* _s, dlg_t* _d)$/;" f file:
-print_ct_constants main.c /^void print_ct_constants()$/;" f
-print_disposition parser/parse_disposition.c /^void print_disposition( struct disposition *disp)$/;" f
-print_dlg modules/tm/dlg.c /^void print_dlg(FILE* out, dlg_t* _d)$/;" f
-print_dlg modules/tm/tm_load.h /^ print_dlg_f print_dlg;$/;" m struct:tm_binds
-print_dlg_f modules/tm/dlg.h /^typedef void (*print_dlg_f)(FILE* out, dlg_t* _d);$/;" t
-print_dset dset.c /^char* print_dset(struct sip_msg* msg, int* len) $/;" f
-print_event parser/parse_event.c /^void print_event(event_t* _e)$/;" f
-print_expires parser/parse_expires.c /^void print_expires(exp_body_t* _e)$/;" f
-print_expr route_struct.c /^void print_expr(struct expr* exp)$/;" f
-print_expression modules/permissions/rule.c /^void print_expression(expression *e) $/;" f
-print_f modules/print/print.c /^static int print_f(struct sip_msg* msg, char* str, char* str2)$/;" f file:
-print_fifo_cmd fifo_server.c /^static int print_fifo_cmd( FILE *stream, char *response_file )$/;" f file:
-print_from modules/tm/t_msgbuilder.c /^static inline char* print_from(char* w, dlg_t* dialog, struct cell* t)$/;" f file:
-print_hash modules/pdt/domains.c /^void print_hash(h_entry_t* hash, unsigned int hash_size)$/;" f
-print_hf_var modules/exec/exec_hf.c /^static int print_hf_var(struct hf_wrapper *w, int offset)$/;" f file:
-print_ip ip_addr.c /^void print_ip(char* p, struct ip_addr* ip, char *s)$/;" f
-print_location_set modules/cpl-c/loc_set.h /^static inline void print_location_set(struct location *loc_set)$/;" f
-print_nameaddr parser/parse_nameaddr.c /^void print_nameaddr(FILE* _o, name_addr_t* _a)$/;" f
-print_net ip_addr.c /^void print_net(struct net* net)$/;" f
-print_node modules/pike/ip_tree.c /^void print_node(struct ip_node *node,int sp, FILE *f)$/;" f
-print_param parser/parse_param.c /^static inline void print_param(FILE* _o, param_t* _p)$/;" f file:
-print_params parser/parse_param.c /^void print_params(FILE* _o, param_t* _p)$/;" f
-print_pdomain modules/pa/pdomain.c /^void print_pdomain(FILE* _f, pdomain_t* _d)$/;" f
-print_presentity modules/pa/presentity.c /^void print_presentity(FILE* _f, presentity_t* _p)$/;" f
-print_request_uri modules/tm/t_msgbuilder.c /^static inline char* print_request_uri(char* w, str* method, dlg_t* dialog, struct cell* t, int branch)$/;" f file:
-print_res db/db_fifo.c /^static inline void print_res(db_res_t* res, FILE *rpl)$/;" f file:
-print_res db/example/dbexample.c /^static int print_res(db_res_t* _r)$/;" f file:
-print_res modules/dbtext/dbtex/dbtex.c /^static int print_res(db_res_t* _r)$/;" f file:
-print_rl route.c /^void print_rl()$/;" f
-print_routes modules/tm/uac_fifo.c /^static inline void print_routes(FILE* out, dlg_t* _d)$/;" f file:
-print_routes modules/tm/uac_unixsock.c /^static void print_routes(dlg_t* _d)$/;" f file:
-print_routeset modules/tm/dlg.c /^char* print_routeset(char* buf, dlg_t* _d)$/;" f
-print_rr parser/parse_rr.c /^void print_rr(FILE* _o, rr_t* _r)$/;" f
-print_rs modules/tm/t_msgbuilder.c /^static inline char* print_rs(char* p, struct rte* list, str* contact)$/;" f file:
-print_rule modules/permissions/rule.c /^void print_rule(rule *r) $/;" f
-print_sattr modules/avp/avp.c /^static int print_sattr(struct sip_msg* msg, char* attr, char* s2)$/;" f file:
-print_set modules/mysql/dbase.c /^static int print_set(MYSQL* _c, char* _b, int _l, db_key_t* _k, db_val_t* _v, int _n)$/;" f file:
-print_set modules/postgres/dbase.c /^static int print_set(char* _b, int _l, db_key_t* _k,$/;" f file:
-print_sl_stats modules/sl/sl_stats.c /^static int print_sl_stats(FILE *reply_file)$/;" f file:
-print_sockaddr test/ifls.c /^void print_sockaddr(struct sockaddr* sa)$/;" f
-print_stats modules/postgres/serpgctl /^print_stats() {$/;" f
-print_stats modules/tm/t_stats.c /^int print_stats( FILE *f )$/;" f
-print_stats scripts/sc /^print_stats() {$/;" f
-print_stats scripts/sc_unixsock /^print_stats() {$/;" f
-print_status scripts/sc /^print_status() {$/;" f
-print_status scripts/sc_unixsock /^print_status() {$/;" f
-print_timer_list modules/pike/pike_funcs.c /^void print_timer_list(struct list_link *head)$/;" f
-print_timer_list modules/tm/timer.c /^void print_timer_list( enum lists list_id)$/;" f
-print_to modules/tm/t_msgbuilder.c /^static inline char* print_to(char* w, dlg_t* dialog, struct cell* t)$/;" f file:
-print_tree modules/pike/ip_tree.c /^void print_tree( FILE *f )$/;" f
-print_tw_append modules/tm/t_fifo.c /^static void print_tw_append( struct tw_append *append)$/;" f file:
-print_uac_request modules/tm/t_fwd.c /^char *print_uac_request( struct cell *t, struct sip_msg *i_req,$/;" f
-print_ucontact modules/usrloc/ucontact.c /^void print_ucontact(FILE* _f, ucontact_t* _c)$/;" f
-print_udomain modules/usrloc/udomain.c /^void print_udomain(FILE* _f, udomain_t* _d)$/;" f
-print_ul_stats modules/usrloc/ul_fifo.c /^static int print_ul_stats(FILE *reply_file)$/;" f file:
-print_urecord modules/usrloc/urecord.c /^void print_urecord(FILE* _f, urecord_t* _r)$/;" f
-print_uris modules/tm/uac_fifo.c /^static inline int print_uris(FILE* out, struct sip_msg* reply)$/;" f file:
-print_uris modules/tm/uac_unixsock.c /^static int print_uris(struct sip_msg* reply)$/;" f file:
-print_values modules/mysql/dbase.c /^static int print_values(MYSQL* _c, char* _b, int _l, db_val_t* _v, int _n)$/;" f file:
-print_values modules/postgres/dbase.c /^static int print_values(char* _b, int _l, db_val_t* _v, int _n)$/;" f file:
-print_var modules/exec/exec_hf.c /^static int print_var(struct hf_wrapper *w, int offset)$/;" f file:
-print_version_cmd fifo_server.c /^static int print_version_cmd( FILE *stream, char *response_file )$/;" f file:
-print_watcher modules/pa/watcher.c /^void print_watcher(FILE* _f, watcher_t* _w)$/;" f
-print_where modules/mysql/dbase.c /^static int print_where(MYSQL* _c, char* _b, int _l, db_key_t* _k, db_op_t* _o, db_val_t* _v, int _n)$/;" f file:
-print_where modules/postgres/dbase.c /^static int print_where(char* _b, int _l, db_key_t* _k,$/;" f file:
-prio_CASE parser/case_prio.h 43;" d
-priority modules/cpl-c/cpl_run.h /^ str *priority;$/;" m struct:cpl_interpreter
-priority modules/cpl-c/loc_set.h /^ unsigned int priority;$/;" m struct:location::address
-priority modules/cpl/jcpli.h /^ float priority;$/;" m struct:_Location
-priority modules/pa/presentity.h /^ double priority;$/;" m struct:presence_tuple
-priority parser/msg_parser.h /^ struct hdr_field* priority;$/;" m struct:sip_msg
-priority resolve.h /^ unsigned short priority;$/;" m struct:srv_rdata
-probe_max_receive_buffer udp_server.c /^int probe_max_receive_buffer( int udp_sock )$/;" f
-proc modules/mediaproxy/mediaproxy.c /^ NatTestProc proc;$/;" m file:
-proc_no tcp_main.c /^ int proc_no; \/* ser proc_no, for debugging *\/$/;" m struct:tcp_child file:
-processResponseMessage modules/cpl/jcpli.c /^void processResponseMessage(char* msgBuff, int msgLen, int msgType)$/;" f
-process_bm_t types.h /^typedef unsigned int process_bm_t;$/;" t
-process_count pt.h /^inline static int process_count()$/;" f
-process_index stats.h /^ unsigned int process_index;$/;" m struct:stats_s
-process_lumps msg_translator.c /^static inline void process_lumps( struct sip_msg* msg,$/;" f file:
-process_no main.c /^int process_no = 0;$/;" v
-process_no test/dns_query.c /^int process_no=0;$/;" v
-process_routeset modules/tm/t_msgbuilder.c /^static inline int process_routeset(struct sip_msg* msg, str* contact, struct rte** list, str* ruri, str* next_hop)$/;" f file:
-process_table pt.h /^struct process_table {$/;" s
-processed_requests stats.h /^ processed_requests,$/;" m struct:stats_s
-processed_responses stats.h /^ processed_responses,$/;" m struct:stats_s
-program modules/ext/my_exec.h /^struct program$/;" s
-prompt_pw modules/postgres/serpgctl /^prompt_pw() {$/;" f
-prompt_pw scripts/sc /^prompt_pw() {$/;" f
-prompt_pw scripts/sc_unixsock /^prompt_pw() {$/;" f
-prompt_pw scripts/ser_mysql.sh /^prompt_pw()$/;" f
-prompt_realm scripts/ser_mysql.sh /^prompt_realm()$/;" f
-proto cfg.y /^proto: UDP { $$=PROTO_UDP; }$/;" l
-proto ip_addr.h /^ int proto; \/* tcp or udp*\/$/;" m struct:socket_info
-proto ip_addr.h /^ int proto;$/;" m struct:dest_info
-proto ip_addr.h /^ int proto;$/;" m struct:receive_info
-proto ip_addr.h /^ int proto;$/;" m struct:socket_id
-proto modules/permissions/hash.h /^ int proto; \/* Protocol -- UDP, TCP, TLS, or SCTP *\/$/;" m struct:trusted_list
-proto name_alias.h /^ unsigned short proto;$/;" m struct:host_alias
-proto parser/msg_parser.h /^ unsigned short proto; \/* from transport *\/$/;" m struct:sip_uri
-proto parser/parse_via.h /^ int proto; \/* transport *\/$/;" m struct:via_body
-proto proxy.h /^ int proto;$/;" m struct:proxy_l
-proto test/p_uri.c /^ unsigned short proto; \/* from transport *\/$/;" m struct:sip_uri file:
-proto_col modules/permissions/permissions.c /^char* proto_col = "proto"; \/* Name of protocol column *\/$/;" v
-proto_reserved1 ip_addr.h /^ int proto_reserved1; \/* tcp stores the connection id here *\/ $/;" m struct:dest_info
-proto_reserved1 ip_addr.h /^ int proto_reserved1; \/* tcp stores the connection id here *\/$/;" m struct:receive_info
-proto_reserved2 ip_addr.h /^ int proto_reserved2;$/;" m struct:receive_info
-protocol modules/mangler/contact_ops.h /^ str protocol;$/;" m struct:uri_format
-prox_CASE parser/case_prox.h 105;" d
-proxies proxy.c /^struct proxy_l* proxies=0;$/;" v
-proxy modules/cpl-c/cpl_run.h /^ }proxy;$/;" m struct:cpl_interpreter
-proxy modules/jabber/jabber.c /^char *proxy = NULL;$/;" v
-proxy modules/jabber/xjab_worker.h /^ str *proxy; \/\/ outbound proxy$/;" m struct:_xj_jalias
-proxy_auth parser/msg_parser.h /^ struct hdr_field* proxy_auth;$/;" m struct:sip_msg
-proxy_authorize modules/auth_db/authorize.c /^int proxy_authorize(struct sip_msg* _m, char* _realm, char* _table)$/;" f
-proxy_challenge modules/auth/challenge.c /^int proxy_challenge(struct sip_msg* _msg, char* _realm, char* _qop)$/;" f
-proxy_h proxy.h 36;" d
-proxy_l proxy.h /^struct proxy_l{$/;" s
-proxy_recurse modules/cpl-c/cpl_env.h /^ int proxy_recurse; \/* numbers of proxy redirection accepted *\/$/;" m struct:cpl_enviroment
-proxy_require parser/msg_parser.h /^ struct hdr_field* proxy_require;$/;" m struct:sip_msg
-proxy_route modules/cpl-c/cpl_env.h /^ int proxy_route; \/* script route to be run before proxy *\/$/;" m struct:cpl_enviroment
-proxy_st modules/cpl-c/cpl_run.h /^ struct proxy_st {$/;" s struct:cpl_interpreter
-prv_free mem/vq_malloc.h /^ struct vqm_frag* prv_free;$/;" m struct:vqm_frag_end
-prv_get_tree_branch modules/pike/ip_tree.c /^static inline struct ip_node* prv_get_tree_branch(unsigned char b)$/;" f file:
-prv_lock_tree_branch modules/pike/ip_tree.c /^static inline void prv_lock_tree_branch(unsigned char b)$/;" f file:
-prv_unlock_tree_branch modules/pike/ip_tree.c /^static inline void prv_unlock_tree_branch(unsigned char b)$/;" f file:
-ps_cmd unixsock_server.c /^static int ps_cmd(str* msg)$/;" f file:
-ps_fifo_cmd fifo_server.c /^static int ps_fifo_cmd(FILE *stream, char *response_file )$/;" f file:
-pstate modules/pa/pstate.h /^typedef enum pstate {$/;" g
-pstate_name modules/pa/presentity.c /^str pstate_name[PS_NSTATES] = {$/;" v
-pstate_t modules/pa/pstate.h /^} pstate_t;$/;" t
-pt main.c /^struct process_table *pt=0; \/*array with children pids, 0= main proc,$/;" v
-ptld_CASE parser/case_acce.h 89;" d
-ptr modules/tm/t_msgbuilder.c /^ rr_t* ptr;$/;" m struct:rte file:
-ptype parser/parse_param.h /^typedef enum ptype {$/;" g
-ptype_t parser/parse_param.h /^} ptype_t;$/;" t
-pua_exists modules/pa/subscribe.c /^int pua_exists(struct sip_msg* _m, char* _domain, char* _s2)$/;" f
-publish_presentity modules/pa/publish.c /^static int publish_presentity(struct sip_msg* _m, struct pdomain* _d, struct presentity* presentity, int *pchanged)$/;" f file:
-publish_presentity_pidf modules/pa/publish.c /^static int publish_presentity_pidf(struct sip_msg* _m, struct pdomain* _d, struct presentity* presentity, int *pchanged)$/;" f file:
-publish_presentity_xcap_change modules/pa/publish.c /^static int publish_presentity_xcap_change(struct sip_msg* _m, struct pdomain* _d, struct presentity* presentity, int *pchanged)$/;" f file:
-push route.c /^void push(struct action* a, struct action** head)$/;" f
-push_on_network modules/sms/sms_funcs.c /^int push_on_network(struct sip_msg *msg, int net)$/;" f
-push_reply_to_client modules/extcmd/extcmd_funcs.c /^static int push_reply_to_client(int code, char* reason_s, int reason_l,$/;" f file:
-put_command modules/sms/libsms_modem.c /^int put_command( struct modem *mdm, char* cmd, int cmd_len, char* answer,$/;" f
-put_int_h2n modules/extcmd/extcmd_funcs.c /^inline void put_int_h2n( int x, char *b, int l)$/;" f
-put_on_wait modules/tm/t_funcs.c /^void put_on_wait( struct cell *Trans )$/;" f
-putsms modules/sms/libsms_putsms.c /^int putsms( struct sms_msg *sms_messg, struct modem *mdm)$/;" f
-pwd_cmd fifo_server.c /^static int pwd_cmd( FILE *stream, char *response_file )$/;" f file:
-pwd_cmd unixsock_server.c /^static int pwd_cmd(str* msg)$/;" f file:
-q dset.c /^ int q; \/* Preference of the contact among$/;" m struct:branch file:
-q modules/usrloc/ucontact.h /^ qvalue_t q; \/* q parameter *\/$/;" m struct:ucontact
-q parser/contact/contact.h /^ param_t* q; \/* q parameter hook *\/$/;" m struct:contact
-q parser/parse_param.h /^ struct param* q; \/* q parameter *\/$/;" m struct:contact_hooks
-q2double qvalue.h /^static inline double q2double(qvalue_t q)$/;" f
-q2str qvalue.h /^static inline char* q2str(qvalue_t q, unsigned int* len)$/;" f
-q_col modules/usrloc/ul_mod.c /^str q_col = {Q_COL, sizeof(Q_COL) - 1}; \/* Name of column containing q values *\/$/;" v
-q_malloc mem/q_malloc.c 43;" d file:
-q_malloc_h mem/q_malloc.h 40;" d
-q_memchr ut.h /^static inline char* q_memchr(char* p, int c, unsigned int size)$/;" f
-qm_block mem/q_malloc.h /^struct qm_block{$/;" s
-qm_debug_frag mem/q_malloc.c /^static void qm_debug_frag(struct qm_block* qm, struct qm_frag* f)$/;" f file:
-qm_detach_free mem/q_malloc.c /^static inline void qm_detach_free(struct qm_block* qm, struct qm_frag* frag)$/;" f file:
-qm_find_free mem/q_malloc.c /^static inline struct qm_frag* qm_find_free(struct qm_block* qm, $/;" f file:
-qm_frag mem/q_malloc.h /^struct qm_frag{$/;" s
-qm_frag_end mem/q_malloc.h /^struct qm_frag_end{$/;" s
-qm_frag_lnk mem/q_malloc.h /^struct qm_frag_lnk{$/;" s
-qm_free mem/q_malloc.c /^void qm_free(struct qm_block* qm, void* p, const char* file, const char* func, $/;" f
-qm_insert_free mem/q_malloc.c /^static inline void qm_insert_free(struct qm_block* qm, struct qm_frag* frag)$/;" f file:
-qm_malloc mem/q_malloc.c /^void* qm_malloc(struct qm_block* qm, unsigned long size,$/;" f
-qm_malloc_init mem/q_malloc.c /^struct qm_block* qm_malloc_init(char* address, unsigned long size)$/;" f
-qm_realloc mem/q_malloc.c /^void* qm_realloc(struct qm_block* qm, void* p, unsigned long size,$/;" f
-qm_status mem/q_malloc.c /^void qm_status(struct qm_block* qm)$/;" f
-qop parser/digest/digest_parser.h /^ struct qp qop; \/* Quality Of Protection *\/$/;" m struct:dig_cred
-qop_parsed parser/digest/digest_parser.h /^ qop_type_t qop_parsed; \/* Parsed value *\/$/;" m struct:qp
-qop_str parser/digest/digest_parser.h /^ str qop_str; \/* The original string representation *\/$/;" m struct:qp
-qop_type parser/digest/digest_parser.h /^typedef enum qop_type { $/;" g
-qop_type_t parser/digest/digest_parser.h /^} qop_type_t;$/;" t
-qp parser/digest/digest_parser.h /^struct qp {$/;" s
-query db/db.h /^ db_query_f query; \/* query a table *\/$/;" m struct:db_func
-query modules/jabber/doc/web/subscribe.php /^ $query = "INSERT INTO ".$imtype." (juid, ".$imtype."_id, ".$imtype."_passwd, ".$imtype."_nick) VALUES ('$juid', '$imname', '$impasswd', '$imnick')";$/;" v
-query modules/jabber/doc/web/subscribe.php /^ $query = "UPDATE ".$imtype." SET ".$imtype."_id='$imname', ".$imtype."_passwd='$impasswd', ".$imtype."_nick='$imnick' WHERE juid='$juid'";$/;" v
-query modules/jabber/doc/web/subscribe.php /^ $query = "DELETE FROM ".$imtype." WHERE juid='$juid'";$/;" v
-query modules/jabber/doc/web/subscribe.php /^ $query = "SELECT ".$imtype."_id FROM ".$imtype." WHERE juid='$juid'";$/;" v
-query modules/jabber/doc/web/subscribe.php /^ $query = "INSERT INTO jusers (jab_id, jab_passwd, sip_id) VALUES ('$sipname', '$new_passwd', '$sipuri')";$/;" v
-query modules/jabber/doc/web/subscribe.php /^ $query = "UPDATE jusers SET tyep=1 WHERE sip_id='$sipuri'";$/;" v
-query modules/jabber/doc/web/subscribe.php /^ $query = "UPDATE jusers SET type=0 WHERE sip_id='$sipuri'";$/;" v
-query modules/jabber/doc/web/subscribe.php /^ $query = "SELECT $sip_db_cusr FROM $sip_db_tab WHERE $sip_db_cusr='$sipname' AND $sip_db_cpas='$sippasswd'";$/;" v
-query modules/jabber/doc/web/subscribe.php /^ $query = "SELECT jab_id FROM jusers WHERE sip_id='$sipuri'";$/;" v
-query modules/jabber/doc/web/subscribe.php /^ $query="SELECT juid,jab_id,jab_passwd,type FROM jusers WHERE$/;" v
-query modules/pdt/doc/web/request.php /^ $query = "SELECT * FROM ".$table." WHERE name=\\"".$admin."\\" and passwd=\\"".$passwd."\\"";$/;" v
-query scripts/serstats /^query() {$/;" f
-query_db modules/avp_db/avp_db.c /^static int query_db(str* prefix, str* uuid, str* username, str* domain)$/;" f file:
-question_case parser/parse_uri.c 165;" d file:
-question_case test/p_uri.c 147;" d file:
-queued_msgs modules/sms/sms.c /^int *queued_msgs = 0;$/;" v
-queued_msgs modules/sms/sms_funcs.c /^int *queued_msgs;$/;" v
-qvalue_t qvalue.h /^typedef int qvalue_t;$/;" t
-r route_struct.h /^ }r;$/;" m struct:expr
-r2 parser/msg_parser.h /^ str r2; \/* ser specific rr parameter *\/$/;" m struct:sip_uri
-r2 parser/parse_param.h /^ struct param* r2; \/* r2 parameter *\/$/;" m struct:uri_hooks
-r2 parser/parse_rr.h /^ param_t* r2; \/* Hook to r2 parameter *\/$/;" m struct:rr
-r2_val parser/msg_parser.h /^ str r2_val;$/;" m struct:sip_uri
-rD_R parser/obsolete/strs.h 261;" d
-rD_r parser/obsolete/strs.h 260;" d
-rECO parser/obsolete/strs.h 248;" d
-rECo parser/obsolete/strs.h 247;" d
-rEcO parser/obsolete/strs.h 246;" d
-rEco parser/obsolete/strs.h 245;" d
-rOUT parser/obsolete/strs.h 231;" d
-rOUt parser/obsolete/strs.h 230;" d
-rOuT parser/obsolete/strs.h 229;" d
-rOut parser/obsolete/strs.h 228;" d
-rad_attr modules/acc/acc.c /^static int rad_attr[] = { A_CALLING_STATION_ID, A_CALLED_STATION_ID,$/;" v file:
-rad_status modules/acc/acc.c /^inline UINT4 rad_status(struct sip_msg *rq, str *phrase)$/;" f
-radius modules/pa/presentity.h /^ double radius;$/;" m struct:location
-radius_authorize_sterman modules/auth_radius/sterman.c /^int radius_authorize_sterman(struct sip_msg* _msg, dig_cred_t* _cred, str* _method, str* _user, str* _rpid) $/;" f
-radius_config modules/acc/acc_mod.c /^static char *radius_config = "\/usr\/local\/etc\/radiusclient\/radiusclient.conf";$/;" v file:
-radius_config modules/auth_radius/authrad_mod.c /^static char* radius_config = "\/usr\/local\/etc\/radiusclient\/radiusclient.conf";$/;" v file:
-radius_config modules/avp_radius/avp_radius.c /^static char *radius_config = "\/usr\/local\/etc\/radiusclient\/radiusclient.conf";$/;" v file:
-radius_config modules/group_radius/grouprad_mod.c /^static char* radius_config = "\/usr\/local\/etc\/radiusclient\/radiusclient.conf";$/;" v file:
-radius_config modules/uri_radius/urirad_mod.c /^static char* radius_config = "\/usr\/local\/etc\/radiusclient\/radiusclient.conf";$/;" v file:
-radius_does_uri_exist modules/uri_radius/checks.c /^int radius_does_uri_exist(struct sip_msg* _m, char* _s1, char* _s2)$/;" f
-radius_flag modules/acc/acc_mod.c /^int radius_flag = 0;$/;" v
-radius_is_user_in modules/group_radius/group.c /^int radius_is_user_in(struct sip_msg* _m, char* _hf, char* _group)$/;" f
-radius_missed_flag modules/acc/acc_mod.c /^int radius_missed_flag = 0;$/;" v
-radius_proxy_authorize modules/auth_radius/authorize.c /^int radius_proxy_authorize(struct sip_msg* _msg, char* _realm, char* _s2)$/;" f
-radius_www_authorize modules/auth_radius/authorize.c /^int radius_www_authorize(struct sip_msg* _msg, char* _realm, char* _s2)$/;" f
-randomnumber modules/jabber/tree234.c /^int randomnumber(unsigned *seed) {$/;" f
-raw_query db/db.h /^ db_raw_query_f raw_query; \/* Raw query - SQL *\/$/;" m struct:db_func
-rb modules/acc/acc_mod.c /^rd_buf_t *rb;$/;" v
-rb modules/auth_diameter/auth_diameter.c /^rd_buf_t *rb;$/;" v
-rcv parser/msg_parser.h /^ struct receive_info rcv; \/* source & dest ip, ports, proto a.s.o*\/$/;" m struct:sip_msg
-rcv tcp_conn.h /^ struct receive_info rcv; \/* src & dst ip, ports, proto a.s.o*\/$/;" m struct:tcp_connection
-rcv_avp_no modules/nathelper/nathelper.c /^static int rcv_avp_no=42;$/;" v file:
-rcv_avp_no modules/registrar/reg_mod.c /^int rcv_avp_no=42;$/;" v
-rcv_param modules/registrar/reg_mod.c /^str rcv_param = {RCV_NAME, RCV_NAME_LEN};$/;" v
-rd_R parser/obsolete/strs.h 259;" d
-rd_buf modules/acc/defs.h /^typedef struct rd_buf$/;" s
-rd_buf modules/auth_diameter/defs.h /^typedef struct rd_buf$/;" s
-rd_buf_t modules/acc/defs.h /^} rd_buf_t;$/;" t
-rd_buf_t modules/auth_diameter/defs.h /^} rd_buf_t;$/;" t
-rd_r parser/obsolete/strs.h 258;" d
-rdata resolve.h /^ void* rdata;$/;" m struct:rdata
-rdata resolve.h /^struct rdata {$/;" s
-re re.h /^ regex_t* re;$/;" m struct:subst_expr
-reCO parser/obsolete/strs.h 244;" d
-reCo parser/obsolete/strs.h 243;" d
-read_body fifo_server.c /^int read_body(char *buf, int max_len, FILE *fifo, int *len)$/;" f
-read_eol fifo_server.c /^int read_eol( FILE *stream )$/;" f
-read_flag modules/gflags/gflags.c /^static unsigned int read_flag(FILE *pipe, char *response_file)$/;" f file:
-read_line fifo_server.c /^int read_line( char *b, int max, FILE *stream, int *read )$/;" f
-read_line_set fifo_server.c /^int read_line_set(char *buf, int max_len, FILE *fifo, int *len)$/;" f
-read_n modules/extcmd/extcmd_funcs.c /^inline int read_n( int fd, int n, char *b)$/;" f
-readall modules/mediaproxy/mediaproxy.c /^readall(int fd, void *buf, size_t count)$/;" f file:
-ready modules/jabber/xjab_jcon.h /^ int ready; \/\/ time when the connection is ready for sending messages$/;" m struct:_xj_jcon
-real_CASE parser/digest/param_parser.c 99;" d file:
-real_used mem/f_malloc.h /^ unsigned long real_used; \/* used+malloc overhead*\/$/;" m struct:fm_block
-real_used mem/q_malloc.h /^ unsigned long real_used; \/* used+malloc overhead*\/$/;" m struct:qm_block
-realloc_ops modules/postgres/aug_alloc.h /^ unsigned long realloc_ops; \/* Total reallocs since epoch *\/$/;" m
-realm parser/digest/digest_parser.h /^ str realm; \/* Realm *\/$/;" m struct:dig_cred
-realm_pref modules/registrar/reg_mod.c /^char* realm_pref = ""; \/* Realm prefix to be removed *\/$/;" v
-realm_prefix modules/auth/auth_mod.c /^str realm_prefix;$/;" v
-realm_prefix modules/cpl-c/cpl_env.h /^ str realm_prefix; \/* domain prefix to be ignored *\/$/;" m struct:cpl_enviroment
-realm_prefix modules/registrar/reg_mod.c /^str realm_prefix;$/;" v
-realm_prefix_param modules/auth/auth_mod.c /^static char* realm_prefix_param = "";$/;" v file:
-reason modules/cpl/jcpli.h /^ char *reason;$/;" m struct:_RejectMessage
-reason modules/pa/notify.c /^static str reason[] = {$/;" v file:
-reason parser/parse_fline.h /^ str reason; \/* Reply reason phrase *\/$/;" m struct:msg_start::<anonymous>::<anonymous>
-reasonLength modules/cpl/jcpli.h /^ int reasonLength;$/;" m struct:_RejectMessage
-recO parser/obsolete/strs.h 242;" d
-receive_fd pass_fd.c /^int receive_fd(int unix_socket, void* data, int data_len, int* fd)$/;" f
-receive_h receive.h 31;" d
-receive_info ip_addr.h /^struct receive_info{$/;" s
-receive_msg receive.c /^int receive_msg(char* buf, unsigned int len, struct receive_info* rcv_info) $/;" f
-received modules/usrloc/ucontact.h /^ str received; \/* IP, port, and protocol we received the REGISTER from *\/$/;" m struct:ucontact
-received parser/contact/contact.h /^ param_t* received; \/* received parameter hook *\/$/;" m struct:contact
-received parser/parse_param.h /^ struct param* received; \/* received parameter *\/$/;" m struct:contact_hooks
-received parser/parse_via.h /^ struct via_param* received;$/;" m struct:via_body
-received_builder msg_translator.c /^char* received_builder(struct sip_msg *msg, unsigned int *received_len)$/;" f
-received_col modules/usrloc/ul_mod.c /^str received_col = {RECEIVED_COL, sizeof(RECEIVED_COL) - 1}; \/* Name of column containing transport info of REGISTER *\/$/;" v
-received_dns main.c /^int received_dns = 0; $/;" v
-received_drops stats.h /^ received_drops, \/* all messages we received and did not process$/;" m struct:stats_s
-received_requests_ack stats.h /^ received_requests_ack,$/;" m struct:stats_s
-received_requests_bye stats.h /^ received_requests_bye,$/;" m struct:stats_s
-received_requests_cnc stats.h /^ received_requests_cnc,$/;" m struct:stats_s
-received_requests_inv stats.h /^ received_requests_inv, \/* received_requests *\/$/;" m struct:stats_s
-received_requests_other stats.h /^ received_requests_other,$/;" m struct:stats_s
-received_responses_1 stats.h /^ received_responses_1, \/* received_responses *\/$/;" m struct:stats_s
-received_responses_2 stats.h /^ received_responses_2,$/;" m struct:stats_s
-received_responses_3 stats.h /^ received_responses_3,$/;" m struct:stats_s
-received_responses_4 stats.h /^ received_responses_4,$/;" m struct:stats_s
-received_responses_5 stats.h /^ received_responses_5,$/;" m struct:stats_s
-received_responses_6 stats.h /^ received_responses_6,$/;" m struct:stats_s
-received_responses_other stats.h /^ received_responses_other,$/;" m struct:stats_s
-received_test msg_translator.c /^int received_test( struct sip_msg *msg )$/;" f
-reco parser/obsolete/strs.h 241;" d
-reco_CASE parser/case_reco.h 53;" d
-record_route modules/rr/record.c /^int record_route(struct sip_msg* _m, char* _s1, char* _s2)$/;" f
-record_route parser/msg_parser.h /^ struct hdr_field* record_route;$/;" m struct:sip_msg
-record_route scripts/serconf.sh /^ record_route();$/;" f
-record_route_preset modules/rr/record.c /^int record_route_preset(struct sip_msg* _m, char* _data, char* _s2)$/;" f
-record_route_strict modules/rr/record.c /^int record_route_strict(struct sip_msg* _m, char* _s1, char* _s2)$/;" f
-recurse modules/cpl-c/cpl_run.h /^ unsigned short recurse;$/;" m struct:cpl_interpreter::proxy_st
-recv_all pass_fd.c /^int recv_all(int socket, void* data, int data_len)$/;" f
-recv_time modules/cpl-c/cpl_run.h /^ int recv_time; \/* receiving time stamp *\/$/;" m struct:cpl_interpreter
-recvfrom_prog modules/ext/my_exec.h /^inline int recvfrom_prog(char *out, int out_len)$/;" f
-redirect modules/cpl-c/cpl_run.h /^ char *redirect;$/;" m struct:cpl_interpreter::proxy_st
-ref modules/flatstore/flat_con.h /^ int ref; \/* Reference count *\/$/;" m struct:flat_con
-ref modules/mysql/my_con.h /^ int ref; \/* Reference count *\/$/;" m struct:my_con
-ref modules/sms/sms_funcs.h /^ int ref;$/;" m struct:sms_msg
-ref_count modules/tm/h_table.h /^ volatile unsigned int ref_count;$/;" m struct:cell
-refcnt tcp_conn.h /^ volatile int refcnt;$/;" m struct:tcp_connection
-refix Makefile /^ $(MAKE) install basedir=tmp\/ser prefix=\/usr\/local $/;" m
-refix Makefile /^ $(MAKE) install basedir=tmp\/ser prefix=\/usr\/local$/;" m
-refresh_node modules/pike/pike_funcs.c /^void refresh_node( struct ip_node *node)$/;" f
-reg modules/pa/pdomain.h /^ register_watcher_t reg; \/* Register watcher function *\/$/;" m struct:pdomain
-reg stats.c 321;" d file:
-reg_addr modules/msilo/msilo.c /^str reg_addr;$/;" v
-reg_func stats.c /^ int (*reg_func)(const char *, struct sip_snmp_handler*);$/;" m struct:stats_funcs file:
-reg_match modules/enum/regexp.c /^int reg_match(char *pattern, char *string, regmatch_t *pmatch)$/;" f
-reg_replace modules/enum/regexp.c /^int reg_replace(char *pattern, char *replacement, char *string, str *result)$/;" f
-reg_types modules/tm/t_hooks.h /^ int reg_types;$/;" m struct:tmcb_head_list
-reg_types modules/usrloc/ul_callback.h /^ int reg_types;$/;" m struct:ulcb_head_list
-reg_value modules/permissions/rule.h /^ regex_t *reg_value;$/;" m struct:expression_struct
-regexp resolve.h /^ char regexp[MAX_DNS_STRING];$/;" m struct:naptr_rdata
-regexp test/shoot.c /^regex_t* regexp;$/;" v
-regexp test/shoot2.c /^regex_t* regexp;$/;" v
-regexp_len resolve.h /^ unsigned int regexp_len;$/;" m struct:naptr_rdata
-register_builtin_modules sr_module.c /^int register_builtin_modules()$/;" f
-register_core_commands unixsock_server.c /^static int register_core_commands(void)$/;" f file:
-register_core_fifo fifo_server.c /^int register_core_fifo()$/;" f
-register_fifo_cmd fifo_server.c /^int register_fifo_cmd(fifo_cmd f, char *cmd_name, void *param)$/;" f
-register_galiases modules/avpops/avpops.c /^static int register_galiases( modparam_t type, void* val)$/;" f file:
-register_module sr_module.c /^int register_module(struct module_exports* e, char* path, void* handle)$/;" f
-register_pdomain modules/pa/dlist.c /^int register_pdomain(const char* _n, pdomain_t** _d)$/;" f
-register_script_cb script_cb.c /^int register_script_cb( cb_function f, callback_t t, void *param )$/;" f
-register_timer timer.c /^int register_timer(timer_function f, void* param, unsigned int interval)$/;" f
-register_tmcb modules/tm/t_hooks.c /^int register_tmcb( struct sip_msg* p_msg, struct cell *t, int types,$/;" f
-register_tmcb modules/tm/tm_load.h /^ register_tmcb_f register_tmcb;$/;" m struct:tm_binds
-register_tmcb_f modules/tm/t_hooks.h /^typedef int (*register_tmcb_f)(struct sip_msg* p_msg, struct cell *t,$/;" t
-register_udomain modules/usrloc/dlist.c /^int register_udomain(const char* _n, udomain_t** _d)$/;" f
-register_udomain modules/usrloc/usrloc.h /^ register_udomain_t register_udomain;$/;" m struct:usrloc_api
-register_udomain_t modules/usrloc/dlist.h /^typedef int (*register_udomain_t)(const char* _n, udomain_t** _d);$/;" t
-register_ulcb modules/usrloc/ul_callback.c /^int register_ulcb( int types, ul_cb f, void *param )$/;" f
-register_ulcb modules/usrloc/usrloc.h /^ register_ulcb_t register_ulcb;$/;" m struct:usrloc_api
-register_ulcb_t modules/usrloc/ul_callback.h /^typedef int (*register_ulcb_t)( int cb_types, ul_cb f, void *param);$/;" t
-register_watcher modules/jabber/xjab_load.h /^ pa_register_watcher_f register_watcher;$/;" m struct:xjab_binds
-register_watcher modules/usrloc/notify.c /^int register_watcher(str* _f, str* _t, notcb_t _c, void* _data)$/;" f
-register_watcher modules/usrloc/usrloc.h /^ register_watcher_t register_watcher;$/;" m struct:usrloc_api
-register_watcher_t modules/pa/pdomain.h /^typedef int (*register_watcher_t)(str* _f, str* _t, void* _cb, void* _data);$/;" t
-register_watcher_t modules/usrloc/notify.h /^typedef int (*register_watcher_t)(str* _f, str* _t, notcb_t _c, void* _data);$/;" t
-registered modules/registrar/lookup.c /^int registered(struct sip_msg* _m, char* _t, char* _s)$/;" f
-registrar modules/jabber/jabber.c /^char *registrar=NULL; \/\/"sip:registrar at iptel.org";$/;" v
-relaied_reply_branch modules/tm/h_table.h /^ int relaied_reply_branch;$/;" m struct:cell
-relay_reply modules/tm/t_reply.c /^enum rps relay_reply( struct cell *t, struct sip_msg *p_msg, int branch, $/;" f
-relay_report_to_queue modules/sms/sms_report.c /^int relay_report_to_queue(int id, char *phone, int status, int *old_status)$/;" f
-release_cell_lock modules/tm/lock.c /^int release_cell_lock( struct cell *cell )$/;" f
-release_connection modules/mysql/my_pool.c /^void release_connection(struct my_con* con)$/;" f
-release_entry_lock modules/tm/lock.c /^int release_entry_lock( struct entry *entry )$/;" f
-release_hf_struct modules/exec/exec_hf.c /^static void release_hf_struct( struct hf_wrapper *list )$/;" f file:
-release_lock fastlock.h /^inline static void release_lock(fl_lock_t* lock)$/;" f
-release_lock test/mips_lock.c /^void release_lock(fl_lock_t* lock)$/;" f
-release_tcpconn tcp_read.c /^void release_tcpconn(struct tcp_connection* c, long state, int unix_sock)$/;" f
-release_timerlist_lock modules/tm/lock.c /^int release_timerlist_lock( struct timer *timerlist )$/;" f
-release_urecord modules/usrloc/urecord.c /^void release_urecord(urecord_t* _r)$/;" f
-release_urecord modules/usrloc/usrloc.h /^ release_urecord_t release_urecord;$/;" m struct:usrloc_api
-release_urecord_t modules/usrloc/urecord.h /^typedef void (*release_urecord_t)(urecord_t* _r);$/;" t
-release_vars modules/exec/exec_hf.c /^static void release_vars(struct hf_wrapper *list) $/;" f file:
-reload rpm/ser.init /^reload() {$/;" f
-reload_domain_table modules/domain/domain.c /^int reload_domain_table ( void )$/;" f
-reload_trusted_table modules/permissions/trusted.c /^int reload_trusted_table(void)$/;" f
-rem_seq modules/tm/dlg.h /^ dlg_seq_t rem_seq; \/* Remote sequence number *\/$/;" m struct:dlg
-rem_tag modules/tm/dlg.h /^ str rem_tag; \/* Remote tag of the dialog *\/$/;" m struct:dlg_id
-rem_target modules/tm/dlg.h /^ str rem_target; \/* Remote target URI *\/$/;" m struct:dlg
-rem_uri modules/tm/dlg.h /^ str rem_uri; \/* Remote URI *\/$/;" m struct:dlg
-remo_CASE parser/case_remo.h 65;" d
-remove_cont modules/registrar/save.c /^void remove_cont(urecord_t* _r, ucontact_t* _c)$/;" f
-remove_first_location modules/cpl-c/loc_set.h /^static inline struct location *remove_first_location(struct location **loc_set)$/;" f
-remove_from_double_hash modules/pdt/domains.c /^int remove_from_double_hash(double_hash_t* hash, dc_t* cell)$/;" f
-remove_from_hash modules/pdt/domains.c /^int remove_from_hash(h_entry_t* hash, unsigned int hash_size, dc_t* cell, int type)$/;" f
-remove_from_hash_table_unsafe modules/tm/h_table.c /^void remove_from_hash_table_unsafe( struct cell * p_cell)$/;" f
-remove_from_timer modules/pike/timer.c /^inline void remove_from_timer(struct list_link *head, struct list_link *ll)$/;" f
-remove_hf_f modules/textops/textops.c /^static int remove_hf_f(struct sip_msg* msg, char* str_hf, char* foo)$/;" f file:
-remove_location modules/cpl-c/loc_set.h /^static inline void remove_location(struct location **loc_set, char *uri_s,$/;" f
-remove_node modules/pike/ip_tree.c /^void remove_node(struct ip_node *node)$/;" f
-remove_presence_tuple modules/pa/presentity.c /^void remove_presence_tuple(presentity_t *_p, presence_tuple_t *_t)$/;" f
-remove_presentity modules/pa/pdomain.c /^void remove_presentity(pdomain_t* _d, struct presentity* _p)$/;" f
-remove_sms_from_report_queue modules/sms/sms_report.c /^void remove_sms_from_report_queue(int id)$/;" f
-remove_timer_unsafe modules/tm/timer.c /^static void remove_timer_unsafe( struct timer_link* tl )$/;" f file:
-remove_watcher modules/pa/presentity.c /^int remove_watcher(presentity_t* _p, watcher_t* _w)$/;" f
-remove_watcher modules/usrloc/notify.c /^int remove_watcher(struct urecord* _r, notcb_t _c, void* _d)$/;" f
-remove_winfo_watcher modules/pa/presentity.c /^int remove_winfo_watcher(presentity_t* _p, watcher_t* _w)$/;" f
-repl resolve.h /^ char repl[MAX_DNS_NAME];$/;" m struct:naptr_rdata
-repl_len resolve.h /^ unsigned int repl_len; \/* not currently used *\/$/;" m struct:naptr_rdata
-replace modules/enum/regexp.c /^int replace(regmatch_t* pmatch, char* string, char* replacement, str* result)$/;" f
-replace re.h /^ struct replace_with replace[1]; \/* 0 does not work on all compilers *\/$/;" m struct:subst_expr
-replaceElement modules/mediaproxy/mediaproxy.c /^replaceElement(struct sip_msg *msg, str *oldElem, str *newElem)$/;" f file:
-replace_all re.h /^ int replace_all; $/;" m struct:subst_expr
-replace_all_f modules/textops/textops.c /^static int replace_all_f(struct sip_msg* msg, char* key, char* str)$/;" f file:
-replace_build re.c /^static int replace_build(const char* match, int nmatch, regmatch_t* pmatch,$/;" f file:
-replace_env modules/exec/exec_hf.c /^environment_t *replace_env(struct hf_wrapper *list)$/;" f
-replace_f modules/textops/textops.c /^static int replace_f(struct sip_msg* msg, char* key, char* str)$/;" f file:
-replace_len re.c /^static int replace_len(const char* match, int nmatch, regmatch_t* pmatch,$/;" f file:
-replace_lst re.h /^struct replace_lst{$/;" s
-replace_lst_free re.c /^void replace_lst_free(struct replace_lst* l)$/;" f
-replace_special re.h /^enum replace_special { REPLACE_NMATCH, REPLACE_CHAR, REPLACE_URI };$/;" g
-replace_with re.h /^struct replace_with{$/;" s
-replacement re.h /^ str replacement;$/;" m struct:subst_expr
-replied_localy modules/tm/t_stats.h /^ stat_counter replied_localy;$/;" m struct:t_stats
-reply modules/pdt/doc/web/request.php /^ $reply = "\/tmp\/".$response_file;$/;" v
-reply modules/tm/h_table.h /^ struct sip_msg *reply;$/;" m struct:ua_client
-reply parser/parse_fline.h /^ } reply;$/;" m union:msg_start::<anonymous>
-reply_addr unixsock_server.c /^static struct sockaddr_un reply_addr;$/;" v file:
-reply_addr_len unixsock_server.c /^static unsigned int reply_addr_len;$/;" v file:
-reply_buf unixsock_server.c /^static char reply_buf[UNIXSOCK_BUF_SIZE];$/;" v file:
-reply_callback modules/cpl-c/cpl_proxy.h /^static void reply_callback( struct cell* t, int type, struct tmcb_params* ps)$/;" f
-reply_lump parser/msg_parser.h /^ struct lump_rpl *reply_lump; \/* only for localy generated replies !!!*\/$/;" m struct:sip_msg
-reply_mutex modules/tm/h_table.h /^ ser_lock_t reply_mutex;$/;" m struct:cell
-reply_pos unixsock_server.c /^static str reply_pos;$/;" v file:
-reply_received modules/tm/t_reply.c /^int reply_received( struct sip_msg *p_msg )$/;" f
-reply_semaphore modules/tm/lock.c /^gen_lock_set_t* reply_semaphore=0;$/;" v
-reply_to_via main.c /^int reply_to_via=0;$/;" v
-reply_type modules/sl/sl_stats.h /^enum reply_type { RT_200, RT_202, RT_2xx,$/;" g
-report profile/launch.sh /^function report()$/;" f
-report_ack modules/acc/acc_mod.c /^int report_ack = 1;$/;" v
-report_cancels modules/acc/acc_mod.c /^int report_cancels = 0;$/;" v
-report_cell modules/sms/sms_report.c /^struct report_cell {$/;" s file:
-report_queue modules/sms/sms_report.c /^struct report_cell *report_queue=0;$/;" v
-req modules/cpl-c/cpl_time.h /^ int *req;$/;" m struct:_tr_byxxx
-req modules/tm/t_hooks.h /^ struct sip_msg* req;$/;" m struct:tmcb_params
-req tcp_conn.h /^ struct tcp_req req; \/* request data *\/$/;" m struct:tcp_connection
-req_in_tmcb_hl modules/tm/t_hooks.c /^struct tmcb_head_list* req_in_tmcb_hl = 0;$/;" v
-req_outside modules/tm/uac.c /^int req_outside(str* method, str* to, str* from, str* headers, str* body, dlg_t** dialog, transaction_cb cb, void* cbp)$/;" f
-req_pipe modules/extcmd/extcmd.c /^int req_pipe[2];$/;" v
-req_pipe modules/extcmd/extcmd_funcs.c /^int req_pipe[2];$/;" v
-req_t modules/tm/uac.h /^typedef int (*req_t)(str* m, str* ruri, str* t, str* f, str* h, str* b, transaction_cb c, void* cp);$/;" t
-req_within modules/tm/uac.c /^int req_within(str* method, str* headers, str* body, dlg_t* dialog, transaction_cb completion_cb, void* cbp)$/;" f
-reqout_t modules/tm/uac.h /^typedef int (*reqout_t)(str* m, str* t, str* f, str* h, str* b, dlg_t** d, transaction_cb c, void* cp);$/;" t
-requ_CASE parser/case_requ.h 56;" d
-request modules/tm/h_table.h /^ struct retr_buf request;$/;" m struct:ua_client
-request modules/tm/h_table.h /^ struct sip_msg *request;$/;" m struct:ua_server
-request modules/tm/uac.c /^int request(str* m, str* ruri, str* to, str* from, str* h, str* b, transaction_cb c, void* cp)$/;" f
-request parser/parse_fline.h /^ } request;$/;" m union:msg_start::<anonymous>
-request2dlg modules/tm/dlg.c /^static inline int request2dlg(struct sip_msg* _m, dlg_t* _d)$/;" f file:
-request_method parser/msg_parser.h /^enum request_method { METHOD_UNDEF=0, METHOD_INVITE=1, METHOD_CANCEL=2, METHOD_ACK=4, $/;" g
-request_uri modules/tm/dlg.h /^ str* request_uri; \/* This should be put into Request-URI *\/$/;" m struct:dlg_hooks
-reqwith_t modules/tm/uac.h /^typedef int (*reqwith_t)(str* m, str* h, str* b, dlg_t* d, transaction_cb c, void* cp);$/;" t
-rerr modules/registrar/rerrno.h /^typedef enum rerr {$/;" g
-rerr_t modules/registrar/rerrno.h /^} rerr_t;$/;" t
-rerrno modules/registrar/rerrno.c /^rerr_t rerrno;$/;" v
-res modules/dbtext/dbt_res.h /^ dbt_result_p res;$/;" m struct:_dbt_con
-res modules/mysql/my_con.h /^ MYSQL_RES* res; \/* Actual result *\/$/;" m struct:my_con
-res modules/postgres/con_postgres.h /^ PGresult *res; \/* this is the current result *\/$/;" m struct:con_postgres
-res_code modules/acc/diam_message.h /^ AAA_AVP *res_code;$/;" m struct:_message_t
-res_code modules/auth_diameter/diameter_msg.h /^ AAA_AVP *res_code;$/;" m struct:_message_t
-reserved mem/f_malloc.h /^ long reserved;$/;" m union:fm_frag::<anonymous>
-reserved proxy.h /^ unsigned short reserved; \/*align*\/$/;" m struct:proxy_l
-reserved1 mem/q_malloc.h /^ unsigned long reserved1;$/;" m struct:qm_frag_end
-reserved2 mem/q_malloc.h /^ unsigned long reserved2;$/;" m struct:qm_frag_end
-reset_avps usr_avp.c /^void reset_avps( )$/;" f
-reset_gflag modules/gflags/gflags.c /^static int reset_gflag(struct sip_msg *bar, char *flag_par, char *foo)$/;" f file:
-reset_logs modules/cpl-c/cpl_log.c /^void reset_logs()$/;" f
-reset_read_buffer modules/acc/diam_tcp.c /^void reset_read_buffer(rd_buf_t *rb)$/;" f
-reset_read_buffer modules/auth_diameter/tcp_comm.c /^void reset_read_buffer(rd_buf_t *rb)$/;" f
-reset_timer modules/tm/timer.c /^void reset_timer( struct timer_link* tl )$/;" f
-reset_timer_list modules/tm/timer.c /^void reset_timer_list( enum lists list_id)$/;" f
-resetflag flags.c /^int resetflag( struct sip_msg* msg, flag_t flag ) {$/;" f
-resolvehost resolve.h /^static inline struct hostent* resolvehost(char* name)$/;" f
-resource modules/jabber/xjab_jcon.h /^ char *resource; \/\/ resource ID$/;" m struct:_xj_jcon
-resource_list modules/pa/presentity.h /^typedef struct resource_list {$/;" s
-resource_list_append_unique modules/pa/presentity.c /^resource_list_t *resource_list_append_unique(resource_list_t *list, str *uri)$/;" f
-resource_list_remove modules/pa/presentity.c /^resource_list_t *resource_list_remove(resource_list_t *list, str *uri)$/;" f
-resource_list_t modules/pa/presentity.h /^} resource_list_t;$/;" t
-resp_CASE parser/digest/param_parser.c 126;" d file:
-resp_buf modules/cpl/cpl.c /^char *resp_buf;$/;" v
-resp_code modules/cpl/cpl.c /^unsigned int resp_code;$/;" v
-resp_len modules/cpl/cpl.c /^unsigned int resp_len;$/;" v
-response modules/tm/h_table.h /^ struct retr_buf response;$/;" m struct:ua_server
-response parser/digest/digest_parser.h /^ str response; \/* Response string *\/$/;" m struct:dig_cred
-response2dlg modules/tm/dlg.c /^static inline int response2dlg(struct sip_msg* _m, dlg_t* _d)$/;" f file:
-response_f sr_module.h /^ response_function response_f; \/* function used for responses,$/;" m struct:module_exports
-response_file modules/pdt/doc/web/request.php /^ $response_file = "rf".session_id();$/;" v
-response_function sr_module.h /^typedef int (*response_function)(struct sip_msg*);$/;" t
-rest modules/cpl-c/cpl_time.h /^ time_t rest;$/;" m struct:_tr_res
-rest utils/fifo_relay/fifo_server.php /^ $rest = fread($fp, 8192);$/;" v
-restart_fr_on_each_reply modules/tm/t_reply.c /^int restart_fr_on_each_reply=1;$/;" v
-result modules/jabber/doc/web/subscribe.php /^ $result = mysql_query($query, $dblink);$/;" v
-result modules/jabber/doc/web/subscribe.php /^ $result = mysql_query($query, $dblink) or html_die("Invalid SQL query");$/;" v
-result modules/jabber/doc/web/subscribe.php /^ $result = mysql_query($query, $dblink);$/;" v
-result modules/jabber/doc/web/subscribe.php /^ $result = mysql_query($query, $dblink);$/;" v
-result modules/jabber/doc/web/subscribe.php /^ $result = mysql_query($query) or html_die("Invalid SQL query");$/;" v
-result modules/jabber/doc/web/subscribe.php /^ $result = mysql_query($query, $dblink) or html_die("Invalid SQL query");$/;" v
-result modules/pdt/doc/web/request.php /^ $result = mysql_query($query) or die("Query failed: ".mysql_error()); $/;" v
-ret_code modules/auth_diameter/defs.h /^ int ret_code;$/;" m struct:rd_buf
-retr_buf modules/tm/h_table.h /^typedef struct retr_buf$/;" s
-retr_buf_type modules/tm/h_table.h /^}retr_buf_type;$/;" t
-retr_list modules/tm/h_table.h /^ enum lists retr_list;$/;" m struct:retr_buf
-retr_timer modules/tm/h_table.h /^ struct timer_link retr_timer;$/;" m struct:retr_buf
-retransmission_handler modules/tm/timer.c /^inline static void retransmission_handler( struct timer_link *retr_tl )$/;" f file:
-retry modules/sms/sms_funcs.h /^ int retry;$/;" m struct:modem
-retry_after modules/registrar/reg_mod.c /^int retry_after = 0; \/* The value of Retry-After HF in 5xx replies *\/$/;" v
-rev_resolvehost resolve.h 123;" d
-reverseInteger modules/cpl/jcpli.c /^int reverseInteger(int val)$/;" f
-reverse_hex2int ut.h /^inline static int reverse_hex2int( char *c, int len, unsigned int* res)$/;" f
-rewrite_ruri modules/speeddial/sdlookup.c /^static inline int rewrite_ruri(struct sip_msg* _m, char* _s)$/;" f file:
-rewrite_uri dset.c /^int rewrite_uri(struct sip_msg* _m, str* _s)$/;" f
-rfc1918address modules/mediaproxy/mediaproxy.c /^rfc1918address(str *address)$/;" f file:
-rfc1918nets modules/mediaproxy/mediaproxy.c /^NetInfo rfc1918nets[] = {$/;" v
-rh modules/acc/acc_mod.c /^void *rh;$/;" v
-rh modules/auth_radius/authrad_mod.c /^void *rh;$/;" v
-rh modules/avp_radius/avp_radius.c /^static void *rh;$/;" v file:
-rh modules/group_radius/grouprad_mod.c /^void *rh;$/;" v
-rh modules/uri_radius/urirad_mod.c /^void *rh;$/;" v
-right modules/permissions/rule.h /^ expression *left, *left_exceptions, *right, *right_exceptions;$/;" m struct:rule_struct
-right_exceptions modules/permissions/rule.h /^ expression *left, *left_exceptions, *right, *right_exceptions;$/;" m struct:rule_struct
-rith_CASE parser/digest/param_parser.c 159;" d file:
-rity_CASE parser/case_prio.h 35;" d
-rlist route.c /^struct action* rlist[RT_NO];$/;" v
-rmode modules/tm/t_reply.c /^enum route_mode rmode=MODE_REQUEST;$/;" v
-rmv_from_db modules/cpl-c/cpl_db.c /^int rmv_from_db(char *usr)$/;" f
-roUT parser/obsolete/strs.h 227;" d
-roUt parser/obsolete/strs.h 226;" d
-rol1 modules/jabber/sha.c 88;" d file:
-rol30 modules/jabber/sha.c 90;" d file:
-rol5 modules/jabber/sha.c 89;" d file:
-room modules/jabber/xjab_jconf.h /^ str room;$/;" m struct:_xj_jconf
-room modules/pa/presentity.h /^ str room;$/;" m struct:location
-room_buf modules/pa/presentity.h /^ char room_buf[TUPLE_LOCATION_ROOM_LEN];$/;" m struct:location
-room_name modules/pa/location.c /^ str room_name;$/;" m struct:location_placeid_row file:
-root modules/jabber/tree234.c /^ node234 *root;$/;" m struct:tree234_Tag file:
-root modules/pa/dlist.c /^dlist_t* root = 0;$/;" v
-root modules/pike/ip_tree.c /^static struct ip_tree* root = 0;$/;" v file:
-root modules/usrloc/dlist.c /^dlist_t* root = 0;$/;" v
-rouT parser/obsolete/strs.h 225;" d
-rout parser/obsolete/strs.h 224;" d
-rout_CASE parser/case_rout.h 35;" d
-route parser/msg_parser.h /^ struct hdr_field* route;$/;" m struct:sip_msg
-route_h route.h 30;" d
-route_mode modules/tm/t_reply.h /^enum route_mode { MODE_REQUEST=1, MODE_ONREPLY, MODE_ONFAILURE };$/;" g
-route_mode modules/tm/tm_load.h /^ enum route_mode* route_mode;$/;" m struct:tm_binds
-route_set modules/tm/dlg.h /^ rr_t* route_set; \/* Route set *\/$/;" m struct:dlg
-route_stm cfg.y /^route_stm: ROUTE LBRACE actions RBRACE { push($3, &rlist[DEFAULT_RT]); }$/;" l
-route_struct_h route_struct.h 40;" d
-row modules/dbtext/dbt_res.h /^ dbt_row_p row;$/;" m struct:_dbt_con
-row modules/mysql/my_con.h /^ MYSQL_ROW row; \/* Actual row in the result *\/$/;" m struct:my_con
-rows db/db_res.h /^ struct db_row* rows; \/* Rows *\/$/;" m struct:db_res
-rows modules/dbtext/dbt_lib.h /^ dbt_row_p rows;$/;" m struct:_dbt_table
-rows modules/dbtext/dbt_res.h /^ dbt_row_p rows;$/;" m struct:_dbt_result
-rpid modules/auth/rpid.c /^static str rpid = {rpid_buffer, 0}; \/* rpid, stored in a backend $/;" v file:
-rpid modules/auth_radius/authorize.c /^static str rpid = {rpid_buffer, 0};$/;" v file:
-rpid parser/msg_parser.h /^ struct hdr_field* rpid;$/;" m struct:sip_msg
-rpid scripts/sc /^rpid() {$/;" f
-rpid scripts/sc_unixsock /^rpid() {$/;" f
-rpid_buffer modules/auth/rpid.c /^static char rpid_buffer[MAX_RPID_LEN];$/;" v file:
-rpid_buffer modules/auth_radius/authorize.c /^static char rpid_buffer[MAX_RPID_LEN];$/;" v file:
-rpid_fixup modules/auth/auth_mod.c /^static int rpid_fixup(void** param, int param_no)$/;" f file:
-rpid_is_e164 modules/auth/rpid.c /^static int rpid_is_e164; \/* 1 - yes, 0 - unknown, -1 - no *\/$/;" v file:
-rpid_prefix modules/auth/auth_mod.c /^str rpid_prefix;$/;" v
-rpid_prefix_param modules/auth/auth_mod.c /^char* rpid_prefix_param = "";$/;" v
-rpid_suffix modules/auth/auth_mod.c /^str rpid_suffix;$/;" v
-rpid_suffix_param modules/auth/auth_mod.c /^char* rpid_suffix_param = ";party=calling;id-type=subscriber;screen=yes";$/;" v
-rpipe modules/jabber/xjab_worker.h /^ int rpipe; \/\/ communication pipe - read$/;" m struct:_xj_worker
-rpl db/db_fifo.c /^static FILE* rpl;$/;" v file:
-rpl modules/tm/t_hooks.h /^ struct sip_msg* rpl;$/;" m struct:tmcb_params
-rpl re.h /^ str rpl;$/;" m struct:replace_lst
-rpl_pipe modules/extcmd/extcmd.c /^int rpl_pipe[2];$/;" v
-rpl_pipe modules/extcmd/extcmd_funcs.c /^int rpl_pipe[2];$/;" v
-rport parser/parse_via.h /^ struct via_param* rport;$/;" m struct:via_body
-rport_builder msg_translator.c /^char* rport_builder(struct sip_msg *msg, unsigned int *rport_len)$/;" f
-rps modules/tm/t_reply.h /^enum rps {$/;" g
-rr parser/parse_rr.h /^typedef struct rr {$/;" s
-rr_t parser/parse_rr.h /^} rr_t;$/;" t
-rt cfg.tab.c /^static int rt; \/* Type of route block for find_export *\/$/;" v file:
-rte modules/tm/t_msgbuilder.c /^struct rte {$/;" s file:
-rtpAsymmetrics modules/mediaproxy/mediaproxy.c /^static AsymmetricClients rtpAsymmetrics = {$/;" v file:
-rtpp_test modules/nathelper/nathelper.c /^rtpp_test(int isdisabled, int force)$/;" f file:
-rtpproxy_disable modules/nathelper/nathelper.c /^static int rtpproxy_disable = 0;$/;" v file:
-rtpproxy_disable_tout modules/nathelper/nathelper.c /^static int rtpproxy_disable_tout = 60;$/;" v file:
-rtpproxy_retr modules/nathelper/nathelper.c /^static int rtpproxy_retr = 5;$/;" v file:
-rtpproxy_sock modules/nathelper/nathelper.c /^static char *rtpproxy_sock = "unix:\/var\/run\/rtpproxy.sock";$/;" v file:
-rtpproxy_tout modules/nathelper/nathelper.c /^static int rtpproxy_tout = 1;$/;" v file:
-rtrim modules/mediaproxy/mediaproxy.c /^rtrim(str *string)$/;" f file:
-ru modules/tm/dlg.h /^ str ru;$/;" m struct:dlg_hooks
-rule cfg.y /^rule: condition actions CR {$/;" l
-rule modules/permissions/rule.h /^typedef struct rule_struct rule;$/;" t
-rule_file modules/permissions/permissions.h /^typedef struct rule_file {$/;" s
-rule_file_t modules/permissions/permissions.h /^} rule_file_t;$/;" t
-rule_struct modules/permissions/rule.h /^struct rule_struct {$/;" s
-rules cfg.y /^rules: rules rule { push($2, &$1); $$=$1; }$/;" l
-rules modules/permissions/permissions.h /^ rule* rules; \/* Parsed rule set *\/$/;" m struct:rule_file
-rules_num modules/permissions/permissions.c /^static int rules_num; \/* Number of parsed allow\/deny files *\/$/;" v file:
-run profile/launch.sh /^function run()$/;" f
-run_actions action.c /^int run_actions(struct action* a, struct sip_msg* msg)$/;" f
-run_address_switch modules/cpl-c/cpl_switches.h /^static inline char *run_address_switch( struct cpl_interpreter *intr )$/;" f
-run_cpl_node modules/cpl-c/cpl_run.c /^static inline char *run_cpl_node( struct cpl_interpreter *intr )$/;" f file:
-run_default modules/cpl-c/cpl_run.c /^static inline int run_default( struct cpl_interpreter *intr )$/;" f file:
-run_ext_prog modules/ext/ext.c /^static char *run_ext_prog(char *cmd, char *in, int in_len, int *out_len)$/;" f file:
-run_failure_handlers modules/tm/t_reply.c /^static inline int run_failure_handlers(struct cell *t, struct sip_msg *rpl,$/;" f file:
-run_handler_for_each modules/tm/timer.c 939;" d file:
-run_language_switch modules/cpl-c/cpl_switches.h /^static inline char *run_language_switch( struct cpl_interpreter *intr )$/;" f
-run_location modules/cpl-c/cpl_run.c /^static inline char *run_location( struct cpl_interpreter *intr )$/;" f file:
-run_log modules/cpl-c/cpl_run.c /^static inline char *run_log( struct cpl_interpreter *intr )$/;" f file:
-run_lookup modules/cpl-c/cpl_run.c /^static inline char *run_lookup( struct cpl_interpreter *intr )$/;" f file:
-run_mail modules/cpl-c/cpl_run.c /^static inline char *run_mail( struct cpl_interpreter *intr )$/;" f file:
-run_priority_switch modules/cpl-c/cpl_switches.h /^static inline char *run_priority_switch( struct cpl_interpreter *intr )$/;" f
-run_proxy modules/cpl-c/cpl_proxy.h /^static inline char *run_proxy( struct cpl_interpreter *intr )$/;" f
-run_redirect modules/cpl-c/cpl_run.c /^static inline char *run_redirect( struct cpl_interpreter *intr )$/;" f file:
-run_reject modules/cpl-c/cpl_run.c /^static inline char *run_reject( struct cpl_interpreter *intr )$/;" f file:
-run_remove_location modules/cpl-c/cpl_run.c /^static inline char *run_remove_location( struct cpl_interpreter *intr )$/;" f file:
-run_reqin_callbacks modules/tm/t_hooks.c /^void run_reqin_callbacks( struct cell *trans, struct sip_msg *req, int code )$/;" f
-run_string_switch modules/cpl-c/cpl_switches.h /^static inline char *run_string_switch( struct cpl_interpreter *intr )$/;" f
-run_sub modules/cpl-c/cpl_run.c /^static inline char *run_sub( struct cpl_interpreter *intr )$/;" f file:
-run_time_switch modules/cpl-c/cpl_switches.h /^static inline char *run_time_switch( struct cpl_interpreter *intr )$/;" f
-run_trans_callbacks modules/tm/t_hooks.c /^void run_trans_callbacks( int type , struct cell *trans,$/;" f
-run_ul_callbacks modules/usrloc/ul_callback.h /^static inline void run_ul_callbacks( int type , ucontact_t *c)$/;" f
-ruri modules/cpl-c/cpl_run.h /^ str *ruri;$/;" m struct:cpl_interpreter
-ruri_matching modules/tm/t_lookup.c /^int ruri_matching=1;$/;" v
-ruri_q dset.c /^static qvalue_t ruri_q = Q_UNSPECIFIED; $/;" v file:
-rx_sock unixsock_server.c /^static int rx_sock, tx_sock;$/;" v file:
-s ip_addr.h /^ struct sockaddr s;$/;" m union:sockaddr_union
-s lex.yy.c /^ char* s;$/;" m struct:str_buf file:
-s modules/tm/uac_fifo.c /^ str s;$/;" m struct:str_list file:
-s modules/tm/uac_unixsock.c /^ str s;$/;" m struct:str_list file:
-s str.h /^ char* s; \/*string*\/$/;" m struct:_str
-s tcp_conn.h /^ int s; \/*socket, used by "tcp main" *\/$/;" m struct:tcp_connection
-s usr_avp.h /^ str *s;$/;" m
-s1 modules/cpl-c/cpl_nonsig.h /^ str s1;$/;" m struct:cpl_cmd
-s2 modules/cpl-c/cpl_nonsig.h /^ str s2;$/;" m struct:cpl_cmd
-s2b mem/vq_malloc.h /^ unsigned char s2b[ MAX_FIXED_BLOCK ];$/;" m struct:vqm_block
-s2b_step mem/vq_malloc.c /^int s2b_step[] = {8, 16, 32, 64, 128, 256, 512, 1024, 1536, 2048, 2560,$/;" v
-s2s mem/vq_malloc.h /^ unsigned short s2s[ MAX_FIXED_BLOCK ];$/;" m struct:vqm_block
-s3 modules/cpl-c/cpl_nonsig.h /^ str s3;$/;" m struct:cpl_cmd
-sId modules/acc/diam_message.h /^ AAASessionId *sId;$/;" m struct:_message_t
-sId modules/auth_diameter/diameter_msg.h /^ AAASessionId *sId;$/;" m struct:_message_t
-s_buf lex.yy.c /^ static struct str_buf s_buf;$/;" v file:
-s_client_transactions modules/tm/t_stats.h /^ stat_counter *s_client_transactions;$/;" m struct:t_stats
-s_id modules/pa/watcher.h /^ str s_id; \/* id of this watcherinfo statement *\/$/;" m struct:watcher
-s_ll modules/usrloc/urecord.h /^ } s_ll;$/;" m struct:urecord
-s_table modules/tm/h_table.h /^struct s_table$/;" s
-s_tmp cfg.tab.c /^static str s_tmp;$/;" v file:
-s_transactions modules/tm/t_stats.h /^ stat_counter *s_transactions;$/;" m struct:t_stats
-s_waiting modules/tm/t_stats.h /^ stat_counter *s_waiting;$/;" m struct:t_stats
-sa modules/avpops/avpops_impl.h /^ str sa; \/* attribute as str (for db queries) *\/$/;" m struct:db_param
-same_net modules/mangler/ip_helper.c /^same_net (unsigned int ip, unsigned int address, unsigned int mask)$/;" f
-save modules/registrar/save.c /^int save(struct sip_msg* _m, char* _t, char* _s)$/;" f
-save_memory modules/registrar/save.c /^int save_memory(struct sip_msg* _m, char* _t, char* _s)$/;" f
-save_noreply modules/registrar/save.c /^int save_noreply(struct sip_msg* _m, char* _t, char* _s)$/;" f
-save_real modules/registrar/save.c /^static inline int save_real(struct sip_msg* _m, udomain_t* _t, char* _s, int doreply)$/;" f file:
-save_rpid modules/auth/rpid.c /^void save_rpid(str* _rpid)$/;" f
-save_ruri modules/rr/loose.c /^static inline int save_ruri(struct sip_msg* _m)$/;" f file:
-sbuf modules/nathelper/nathelper.c /^static const char sbuf[4] = {0, 0, 0, 0};$/;" v file:
-sc_body modules/msilo/msilo.c /^char *sc_body = "body"; \/* 5 *\/$/;" v
-sc_ctype modules/msilo/msilo.c /^char *sc_ctype = "ctype"; \/* 6 *\/$/;" v
-sc_exp_time modules/msilo/msilo.c /^char *sc_exp_time = "exp_time"; \/* 7 *\/$/;" v
-sc_from modules/msilo/msilo.c /^char *sc_from = "src_addr"; \/* 1 *\/$/;" v
-sc_inc_time modules/msilo/msilo.c /^char *sc_inc_time = "inc_time"; \/* 8 *\/$/;" v
-sc_mid modules/msilo/msilo.c /^char *sc_mid = "mid"; \/* 0 *\/$/;" v
-sc_to modules/msilo/msilo.c /^char *sc_to = "dst_addr"; \/* 2 *\/$/;" v
-sc_uri_host modules/msilo/msilo.c /^char *sc_uri_host = "domain"; \/* 4 *\/$/;" v
-sc_uri_user modules/msilo/msilo.c /^char *sc_uri_user = "username"; \/* 3 *\/$/;" v
-sched_yield fastlock.h 56;" d
-schedule_to_kill modules/exec/kill.c /^int schedule_to_kill( int pid )$/;" f
-scheme modules/avpops/avpops_impl.h /^ struct db_scheme *scheme; \/* DB scheme name *\/$/;" m struct:db_param
-script modules/cpl-c/cpl_run.h /^ str script; \/* CPL script *\/$/;" m struct:cpl_interpreter
-script_cb script_cb.h /^struct script_cb{$/;" s
-script_init modules/tm/tm.c /^static int script_init( struct sip_msg *foo, void *bar)$/;" f file:
-sd_domain_column modules/speeddial/speeddial.c /^char* sd_domain_column = "sd_domain";$/;" v
-sd_lookup modules/speeddial/sdlookup.c /^int sd_lookup(struct sip_msg* _msg, char* _table, char* _str2)$/;" f
-sd_user_column modules/speeddial/speeddial.c /^char* sd_user_column = "sd_username";$/;" v
-sdp_1918 modules/nathelper/nathelper.c /^sdp_1918(struct sip_msg* msg)$/;" f file:
-sdp_mangle_ip modules/mangler/sdp_mangler.c /^sdp_mangle_ip (struct sip_msg *msg, char *oldip, char *newip)$/;" f
-sdp_mangle_port modules/mangler/sdp_mangler.c /^sdp_mangle_port (struct sip_msg *msg, char *offset, char *unused)$/;" f
-search_and_duplicate_hdr modules/cpl-c/cpl_proxy.h 47;" d
-search_append_f modules/textops/textops.c /^static int search_append_f(struct sip_msg* msg, char* key, char* str)$/;" f file:
-search_expression modules/permissions/rule.c /^int search_expression(expression *e, char *value) $/;" f
-search_f modules/textops/textops.c /^static int search_f(struct sip_msg* msg, char* key, char* str2)$/;" f file:
-search_first_avp usr_avp.c /^struct usr_avp *search_first_avp( unsigned short name_type,$/;" f
-search_next_avp usr_avp.c /^struct usr_avp *search_next_avp( struct usr_avp *avp, int_str *val )$/;" f
-search_rule modules/permissions/rule.c /^int search_rule(rule *r, char *left, char *right) $/;" f
-search_the_list modules/cpl-c/sub_list.c /^char* search_the_list(struct node *head, char *name)$/;" f
-search_tw_append modules/tm/t_fifo.c /^static struct tw_append *search_tw_append(char *name, int len)$/;" f file:
-sec_param modules/auth/auth_mod.c /^char* sec_param = 0; \/* If the parameter was not used, the secret phrase will be auto-generated *\/$/;" v
-sec_rand modules/auth/auth_mod.c /^char* sec_rand = 0;$/;" v
-second modules/mangler/contact_ops.h /^ int second;$/;" m struct:uri_format
-secret modules/auth/auth_mod.c /^str secret;$/;" v
-secure modules/tm/dlg.h /^ unsigned char secure; \/* Secure flag -- currently not used *\/$/;" m struct:dlg
-secure parser/msg_parser.h /^ int secure; \/* 1 if is a sips, 0 otherwise *\/$/;" m struct:sip_uri
-sem modules/dbtext/dbt_lib.h /^ gen_lock_t sem;$/;" m struct:_dbt_cache
-sem modules/dbtext/dbt_lib.h /^ gen_lock_t sem;$/;" m struct:_tbl_cache
-sem test/locking/locking_test.c /^static sem_t sem;$/;" v file:
-sem_done modules/msilo/ms_msg_list.h /^ gen_lock_t sem_done;$/;" m struct:_msg_list
-sem_nr modules/tm/lock.c /^static int sem_nr;$/;" v file:
-sem_sent modules/msilo/ms_msg_list.h /^ gen_lock_t sem_sent;$/;" m struct:_msg_list
-semaphore_index modules/tm/lock.h /^ int semaphore_index;$/;" m
-semaphore_set modules/tm/lock.h /^ gen_lock_set_t* semaphore_set;$/;" m
-semicolon_case parser/parse_uri.c 157;" d file:
-semicolon_case test/p_uri.c 139;" d file:
-semid lock_ops.h /^ int semid;$/;" m struct:gen_lock_set_t_
-semid test/locking/locking_test.c /^static int semid=-1;$/;" v file:
-semidouble_log db/db_fifo.c 102;" d file:
-sems modules/jabber/xjab_worker.h /^ gen_lock_set_t *sems; \/\/ semaphores$/;" m struct:_xj_wlist
-semun lock_ops.h /^ union semun {$/;" u
-semun test/locking/locking_test.c /^ union semun {$/;" u file:
-send2child tcp_main.c /^static int send2child(struct tcp_connection* tcpconn)$/;" f file:
-sendMediaproxyCommand modules/mediaproxy/mediaproxy.c /^sendMediaproxyCommand(char *command)$/;" f file:
-send_all pass_fd.c /^int send_all(int socket, void* data, int data_len)$/;" f
-send_as_sms modules/sms/sms_funcs.c /^int send_as_sms(struct sms_msg *sms_messg, struct modem *mdm)$/;" f
-send_error modules/sms/sms_funcs.c /^inline int send_error(struct sms_msg *sms_messg, char *msg1_s, int msg1_len,$/;" f
-send_fd pass_fd.c /^int send_fd(int unix_socket, void* data, int data_len, int fd)$/;" f
-send_local_ack modules/tm/t_reply.c /^static int send_local_ack(struct sip_msg* msg, str* next_hop,$/;" f file:
-send_location_notify modules/pa/notify.c /^int send_location_notify(struct presentity* _p, struct watcher* _w)$/;" f
-send_lpidf_notify modules/pa/notify.c /^static int send_lpidf_notify(struct presentity* _p, struct watcher* _w)$/;" f file:
-send_mail modules/cpl-c/cpl_nonsig.c /^static inline void send_mail( struct cpl_cmd *cmd)$/;" f file:
-send_notify modules/pa/notify.c /^int send_notify(struct presentity* _p, struct watcher* _w)$/;" f
-send_pidf_notify modules/pa/notify.c /^static int send_pidf_notify(struct presentity* _p, struct watcher* _w)$/;" f file:
-send_pr_buffer modules/tm/t_funcs.c /^int send_pr_buffer( struct retr_buf *rb, void *buf, int len$/;" f
-send_reply modules/pa/reply.c /^int send_reply(struct sip_msg* _m)$/;" f
-send_reply modules/registrar/reply.c /^int send_reply(struct sip_msg* _m)$/;" f
-send_reply modules/tm/t_reply.c /^static int send_reply(struct cell *trans, unsigned int code, str* text, str* body, str* headers, str* to_tag)$/;" f file:
-send_resp modules/auth/common.c /^int send_resp(struct sip_msg* _m, int _code, char* _reason,$/;" f
-send_resp modules/auth_diameter/authorize.c /^int send_resp(struct sip_msg* m, int code, char* reason,$/;" f
-send_rtpp_command modules/nathelper/nathelper.c /^send_rtpp_command(struct iovec *v, int vcnt)$/;" f file:
-send_sip_msg_request modules/sms/sms_funcs.c /^int send_sip_msg_request(str *to, str *from_user, str *body)$/;" f
-send_sip_req modules/extcmd/extcmd_funcs.c /^int send_sip_req(str* msg_type, str *msg, int client_fd)$/;" f
-send_sms_as_sip modules/sms/sms_funcs.c /^int send_sms_as_sip( struct incame_sms *sms )$/;" f
-send_sock ip_addr.h /^ struct socket_info* send_sock;$/;" m struct:dest_info
-send_winfo_notify modules/pa/notify.c /^static int send_winfo_notify(struct presentity* _p, struct watcher* _w)$/;" f file:
-send_xcap_change_notify modules/pa/notify.c /^static int send_xcap_change_notify(struct presentity* _p, struct watcher* _w)$/;" f file:
-send_xpidf_notify modules/pa/notify.c /^static int send_xpidf_notify(struct presentity* _p, struct watcher* _w)$/;" f file:
-sender modules/sms/sms_funcs.h /^ char sender[31];$/;" m struct:incame_sms
-sendipv4 main.c /^struct socket_info* sendipv4; \/* ipv4 socket to use when msg. comes from ipv6*\/$/;" v
-sendipv4_tcp main.c /^struct socket_info* sendipv4_tcp; $/;" v
-sendipv4_tls main.c /^struct socket_info* sendipv4_tls;$/;" v
-sendipv6 main.c /^struct socket_info* sendipv6; \/* same as above for ipv6 *\/$/;" v
-sendipv6_tcp main.c /^struct socket_info* sendipv6_tcp; $/;" v
-sendipv6_tls main.c /^struct socket_info* sendipv6_tls;$/;" v
-sendto_prog modules/ext/my_exec.h /^inline int sendto_prog(char *in, int in_len, int end_it)$/;" f
-sent_requests_ack stats.h /^ sent_requests_ack,$/;" m struct:stats_s
-sent_requests_bye stats.h /^ sent_requests_bye,$/;" m struct:stats_s
-sent_requests_cnc stats.h /^ sent_requests_cnc,$/;" m struct:stats_s
-sent_requests_inv stats.h /^ sent_requests_inv,$/;" m struct:stats_s
-sent_requests_other stats.h /^ sent_requests_other,$/;" m struct:stats_s
-sent_responses_1 stats.h /^ sent_responses_1,$/;" m struct:stats_s
-sent_responses_2 stats.h /^ sent_responses_2,$/;" m struct:stats_s
-sent_responses_3 stats.h /^ sent_responses_3,$/;" m struct:stats_s
-sent_responses_4 stats.h /^ sent_responses_4,$/;" m struct:stats_s
-sent_responses_5 stats.h /^ sent_responses_5,$/;" m struct:stats_s
-sent_responses_6 stats.h /^ sent_responses_6,$/;" m struct:stats_s
-separator modules/auth_diameter/defs.h 40;" d
-seq_nr modules/jabber/xjab_jcon.h /^ int seq_nr; \/\/ sequence number$/;" m struct:_xj_jcon
-ser_backup scripts/ser_mysql.sh /^ser_backup() # par: <database name>$/;" f
-ser_create scripts/ser_mysql.sh /^ser_create () # pars: <database name> [<no_init_user>]$/;" f
-ser_drop scripts/ser_mysql.sh /^ser_drop() # pars: <database name>$/;" f
-ser_dump scripts/ser_mysql.sh /^ser_dump() # pars: <database name>$/;" f
-ser_error error.c /^int ser_error=-1;$/;" v
-ser_lock_t modules/tm/lock.h /^} ser_lock_t;$/;" t
-ser_lock_t modules/tm/lock.h 47;" d
-ser_memmem modules/nathelper/nathelper.c /^ser_memmem(const void *b1, const void *b2, size_t len1, size_t len2)$/;" f file:
-ser_restore scripts/ser_mysql.sh /^ser_restore() #pars: <database name> <filename>$/;" f
-ser_start etc/sr /^ser_start() {$/;" f
-ser_stop etc/sr /^ser_stop() {$/;" f
-server modules/jabber/xjab_jconf.h /^ str server;$/;" m struct:_xj_jconf
-server_signature main.c /^int server_signature=1;$/;" v
-server_sock modules/extcmd/extcmd.c /^int server_sock;$/;" v
-service modules/enum/enum_mod.c /^str service;$/;" v
-service_type modules/acc/acc_mod.c /^static int service_type = -1;$/;" v file:
-service_type modules/auth_radius/authrad_mod.c /^static int service_type = -1;$/;" v file:
-service_type modules/uri_radius/urirad_mod.c /^static int service_type = -1;$/;" v file:
-services resolve.h /^ char services[MAX_DNS_STRING];$/;" m struct:naptr_rdata
-services_len resolve.h /^ unsigned int services_len;$/;" m struct:naptr_rdata
-sessionId modules/acc/diam_message.h /^ AAA_AVP *sessionId;$/;" m struct:_message_t
-sessionId modules/auth_diameter/diameter_msg.h /^ AAA_AVP *sessionId;$/;" m struct:_message_t
-set_1timer modules/tm/timer.c /^void set_1timer( struct timer_link *new_tl, enum lists list_id, unsigned int* ext_timeout )$/;" f
-set_3bytes modules/acc/diam_message.c 44;" d file:
-set_3bytes modules/auth_diameter/message.c 44;" d file:
-set_4bytes modules/acc/diam_message.c 48;" d file:
-set_4bytes modules/auth_diameter/message.c 48;" d file:
-set_TZ modules/cpl-c/cpl_switches.h /^inline static int set_TZ(char *tz_env)$/;" f
-set_attr_type modules/cpl-c/cpl_parser.c 81;" d file:
-set_avp_fields modules/acc/diam_avp.c /^inline void set_avp_fields( AAA_AVPCode code, AAA_AVP *avp)$/;" f
-set_avp_fields modules/auth_diameter/avp.c /^inline void set_avp_fields( AAA_AVPCode code, AAA_AVP *avp)$/;" f
-set_avp_list usr_avp.c /^struct usr_avp** set_avp_list( struct usr_avp **list )$/;" f
-set_core_dump daemonize.c /^int set_core_dump(int enable, int size)$/;" f
-set_date modules/sms/libsms_getsms.c 32;" d file:
-set_dst_uri parser/msg_parser.c /^int set_dst_uri(struct sip_msg* msg, str* uri)$/;" f
-set_env modules/exec/exec_hf.c /^environment_t *set_env(struct sip_msg *msg)$/;" f
-set_final_timer modules/tm/t_reply.c /^void set_final_timer( \/* struct s_table *h_table, *\/ struct cell *t )$/;" f
-set_gettime_function modules/sms/sms_report.c /^void set_gettime_function()$/;" f
-set_gflag modules/gflags/gflags.c /^static int set_gflag(struct sip_msg *bar, char *flag_par, char *foo) $/;" f file:
-set_global_address parser/msg_parser.h /^ str set_global_address;$/;" m struct:sip_msg
-set_global_port parser/msg_parser.h /^ str set_global_port;$/;" m struct:sip_msg
-set_hostport msg_translator.h 66;" d
-set_iattr modules/avp/avp.c /^static int set_iattr(struct sip_msg* msg, char* attr, char* nr) $/;" f file:
-set_kr modules/tm/h_table.c /^void set_kr( enum kill_reason _kr )$/;" f
-set_mod_param modparam.c /^int set_mod_param(char* _mod, char* _name, modparam_t _type, void* _val)$/;" f
-set_mod_param_regex modparam.c /^int set_mod_param_regex(char* regex, char* name, modparam_t type, void* val)$/;" f
-set_modem_arg modules/sms/sms.c /^int set_modem_arg(struct modem *mdm, char *arg, char *arg_end)$/;" f
-set_network_arg modules/sms/sms.c /^int set_network_arg(struct network *net, char *arg, char *arg_end)$/;" f
-set_ruri_q dset.c /^void set_ruri_q(qvalue_t q)$/;" f
-set_sattr modules/avp/avp.c /^static int set_sattr(struct sip_msg* msg, char* attr, char* val) $/;" f file:
-set_sig_h main.c /^static void (*set_sig_h(int sig, void (*handler) (int) ))(int)$/;" f file:
-set_sig_h main.c 430;" d file:
-set_t modules/tm/t_lookup.c /^void set_t(struct cell *t) { T=t; }$/;" f
-set_table modules/avpops/avpops_db.c /^static inline int set_table( char *table, char *func)$/;" f file:
-set_time modules/sms/libsms_getsms.c 42;" d file:
-set_timer modules/tm/timer.c /^void set_timer( struct timer_link *new_tl, enum lists list_id, unsigned int* ext_timeout )$/;" f
-set_user scripts/sc /^set_user() {$/;" f
-set_user scripts/sc_unixsock /^set_user() {$/;" f
-setflag flags.c /^int setflag( struct sip_msg* msg, flag_t flag ) {$/;" f
-setmodemparams modules/sms/libsms_modem.c /^int setmodemparams( struct modem *mdm )$/;" f
-setsmsc modules/sms/libsms_modem.c /^int setsmsc(struct modem *mdm, char *smsc)$/;" f
-setstats stats.c /^void setstats(int child_index)$/;" f
-setup_mcast_rcvr udp_server.c /^static int setup_mcast_rcvr(int sock, union sockaddr_union* addr)$/;" f file:
-setvars modules/exec/exec_hf.c /^unsigned int setvars=1;$/;" v
-sfree modules/jabber/tree234.c 42;" d file:
-sgn_str2float db/db_fifo.c /^static inline int sgn_str2float(str* _s, float* _r, db_type_t* _type )$/;" f file:
-sh_realloc mem/shm_mem.c /^inline static void* sh_realloc(void* p, unsigned int size)$/;" f file:
-sha_hash modules/jabber/sha.c /^sha_hash(int *data, int *hash) $/;" f
-sha_init modules/jabber/sha.c /^sha_init(int *hash) $/;" f
-shahash modules/jabber/sha.c /^char *shahash(const char *str) $/;" f
-shm_block mem/shm_mem.c /^ struct fm_block* shm_block;$/;" v
-shm_block mem/shm_mem.c /^ struct qm_block* shm_block;$/;" v
-shm_block mem/shm_mem.c /^ struct vqm_block* shm_block;$/;" v
-shm_duplicate_params parser/parse_param.c /^int shm_duplicate_params(param_t** _n, param_t* _p)$/;" f
-shm_duplicate_rr parser/parse_rr.c /^int shm_duplicate_rr(rr_t** _new, rr_t* _r)$/;" f
-shm_free mem/shm_mem.h 162;" d
-shm_free mem/shm_mem.h 208;" d
-shm_free_params parser/parse_param.c /^void shm_free_params(param_t* _p)$/;" f
-shm_free_rr parser/parse_rr.c /^void shm_free_rr(rr_t** _r)$/;" f
-shm_free_unsafe mem/shm_mem.h 159;" d
-shm_free_unsafe mem/shm_mem.h 206;" d
-shm_getmem mem/shm_mem.c /^int shm_getmem()$/;" f
-shm_lock mem/shm_mem.h 114;" d
-shm_malloc mem/shm_mem.h /^inline static void* shm_malloc(unsigned int size)$/;" f
-shm_malloc mem/shm_mem.h 151;" d
-shm_malloc_init mem/shm_mem.h 81;" d
-shm_malloc_init mem/shm_mem.h 90;" d
-shm_malloc_init mem/shm_mem.h 98;" d
-shm_malloc_unsafe mem/shm_mem.h 125;" d
-shm_malloc_unsafe mem/shm_mem.h 182;" d
-shm_mem_destroy mem/shm_mem.c /^void shm_mem_destroy()$/;" f
-shm_mem_h mem/shm_mem.h 40;" d
-shm_mem_init mem/shm_mem.c /^int shm_mem_init()$/;" f
-shm_mem_init_mallocs mem/shm_mem.c /^int shm_mem_init_mallocs(void* mempool, unsigned long pool_size)$/;" f
-shm_mem_size main.c /^unsigned long shm_mem_size=SHM_MEM_SIZE * 1024 * 1024;$/;" v
-shm_mem_size test/dns_query.c /^long shm_mem_size=0;$/;" v
-shm_mempool mem/shm_mem.c /^static void* shm_mempool=(void*)-1;$/;" v file:
-shm_realloc mem/shm_mem.h /^inline static void* shm_realloc(void *ptr, unsigned int size)$/;" f
-shm_realloc mem/shm_mem.h 154;" d
-shm_resize mem/shm_mem.h 173;" d
-shm_resize mem/shm_mem.h 218;" d
-shm_shmid mem/shm_mem.c /^static int shm_shmid=-1; \/*shared memory id*\/$/;" v file:
-shm_status mem/shm_mem.h 225;" d
-shm_unlock mem/shm_mem.h 115;" d
-shoot test/shoot.c /^void shoot(char *buff, long address, int lport, int rport )$/;" f
-shoot test/shoot2.c /^void shoot(char *buff, long address, int lport, int rport )$/;" f
-shoot test/udp.c /^void shoot()$/;" f
-should_acc_reply modules/acc/acc_mod.c /^static inline int should_acc_reply(struct cell *t, int code)$/;" f file:
-should_cancel_branch modules/tm/t_cancel.h /^inline short static should_cancel_branch( struct cell *t, int b )$/;" f
-si_flags ip_addr.h /^enum si_flags { SI_NONE=0, SI_IS_IP=1, SI_IS_LO=2, SI_IS_MCAST=4 };$/;" g
-sibling modules/postgres/aug_alloc.c /^ MemHead *parent, *sibling, *child;$/;" m struct:MemHeadStruct file:
-sig_alarm_abort main.c /^static void sig_alarm_abort(int signo)$/;" f file:
-sig_alarm_kill main.c /^static void sig_alarm_kill(int signo)$/;" f file:
-sig_chld modules/ext/my_exec.c /^static void sig_chld(int signo)$/;" f file:
-sig_flag main.c /^int sig_flag = 0; \/* last signal received *\/$/;" v
-sig_usr main.c /^static void sig_usr(int signo)$/;" f file:
-signature examples/web_im/click_to_dial.php /^$signature="web_test_0.0.0";$/;" v
-signature examples/web_im/send_im.php /^$signature="web_test_0.0.0";$/;" v
-silo modules/msilo/doc/msilo.sql /^CREATE TABLE silo($/;" t
-sin ip_addr.h /^ struct sockaddr_in sin;$/;" m union:sockaddr_union
-sin6 ip_addr.h /^ struct sockaddr_in6 sin6;$/;" m union:sockaddr_union
-single_fixup modules/permissions/permissions.c /^static int single_fixup(void** param, int param_no)$/;" f file:
-sipAsymmetrics modules/mediaproxy/mediaproxy.c /^static AsymmetricClients sipAsymmetrics = {$/;" v file:
-sipMethodStatsTable_register stats.c /^static int sipMethodStatsTable_register(const struct stats_funcs *f)$/;" f file:
-sipStatsMethod_handler stats.c /^static int sipStatsMethod_handler(struct sip_snmp_obj *o, enum handler_op op)$/;" f file:
-sipStatusCodesTable_register stats.c /^static int sipStatusCodesTable_register(const struct stats_funcs *f)$/;" f file:
-sipStatusCodes_handler stats.c /^static int sipStatusCodes_handler(struct sip_snmp_obj *o, enum handler_op op)$/;" f file:
-sipSummaryStatsTable_register stats.c /^static int sipSummaryStatsTable_register(const struct stats_funcs *f)$/;" f file:
-sip_CASE parser/case_sip.h 24;" d
-sip_db_cpas modules/jabber/doc/web/subscribe.php /^$sip_db_cpas="password"; # column name for user's password$/;" v
-sip_db_cusr modules/jabber/doc/web/subscribe.php /^$sip_db_cusr="user"; # column name for username$/;" v
-sip_db_db modules/jabber/doc/web/subscribe.php /^$sip_db_db="ser"; # database name$/;" v
-sip_db_pas modules/jabber/doc/web/subscribe.php /^$sip_db_pas="***"; # database user's password$/;" v
-sip_db_srv modules/jabber/doc/web/subscribe.php /^$sip_db_srv="127.0.0.1"; # database server$/;" v
-sip_db_tab modules/jabber/doc/web/subscribe.php /^$sip_db_tab="subscriber"; # name of users table$/;" v
-sip_db_usr modules/jabber/doc/web/subscribe.php /^$sip_db_usr="ser"; # database user$/;" v
-sip_ids modules/jabber/xjab_worker.h /^ tree234 *sip_ids; \/\/ sip ids allocated for the worker$/;" m struct:_xj_worker
-sip_match modules/enum/enum.c /^static inline int sip_match( struct naptr_rdata* naptr, str* service)$/;" f file:
-sip_msg parser/msg_parser.h /^struct sip_msg {$/;" s
-sip_msg_cloner modules/tm/sip_msg.c /^struct sip_msg* sip_msg_cloner( struct sip_msg *org_msg, int *sip_msg_len )$/;" f
-sip_msg_free modules/tm/sip_msg.h 39;" d
-sip_msg_free_unsafe modules/tm/sip_msg.h 40;" d
-sip_protos ip_addr.h /^enum sip_protos { PROTO_NONE, PROTO_UDP, PROTO_TCP, PROTO_TLS, PROTO_SCTP };$/;" g
-sip_resolvehost resolve.c /^struct hostent* sip_resolvehost(str* name, unsigned short* port, int proto)$/;" f
-sip_uri parser/msg_parser.h /^struct sip_uri {$/;" s
-sip_uri test/p_uri.c /^struct sip_uri {$/;" s file:
-sip_warning main.c /^int sip_warning = 1;$/;" v
-sipuri modules/jabber/doc/web/subscribe.php /^ $sipuri = "sip:".$sipname."@iptel.org";$/;" v
-site modules/pa/presentity.h /^ str site;$/;" m struct:location
-site_buf modules/pa/presentity.h /^ char site_buf[TUPLE_LOCATION_SITE_LEN];$/;" m struct:location
-siti_CASE parser/case_acce.h 69;" d
-size lock_ops.h /^ int size;$/;" m struct:gen_lock_set_t_
-size lock_ops.h /^ long size;$/;" m struct:gen_lock_set_t_
-size mem/f_malloc.h /^ unsigned long size; \/* total size *\/$/;" m struct:fm_block
-size mem/f_malloc.h /^ unsigned long size;$/;" m struct:fm_frag
-size mem/q_malloc.h /^ unsigned long size; \/* total size *\/$/;" m struct:qm_block
-size mem/q_malloc.h /^ unsigned long size;$/;" m struct:qm_frag
-size mem/q_malloc.h /^ unsigned long size;$/;" m struct:qm_frag_end
-size mem/vq_malloc.h /^ unsigned long size; $/;" m struct:vqm_frag_end
-size mem/vq_malloc.h /^ unsigned long size;$/;" m struct:vqm_frag
-size modules/jabber/xjab_util.h /^ int size; \/\/ number of elements in the queue$/;" m struct:_xj_jmsg_queue
-size modules/jabber/xjab_worker.h /^ int size; \/\/ number of aliases$/;" m struct:_xj_jalias
-size modules/jabber/xode.h /^ int size, used;$/;" m struct:xode_pool_heap
-size modules/jabber/xode.h /^ int size;$/;" m struct:xode_pool_struct
-size modules/mediaproxy/mediaproxy.c /^ int size; \/\/ size of array above$/;" m file:
-size modules/pa/pdomain.h /^ int size; \/* Hash table size *\/$/;" m struct:pdomain
-size modules/usrloc/udomain.h /^ int size; \/* Hash table size *\/$/;" m struct:udomain
-size parser/parse_via.h /^ int size; \/* total size, including preceding and trailing$/;" m struct:via_param
-size re.h /^ int size; \/* at offset, delete size bytes and replace them with rpl *\/$/;" m struct:replace_lst
-size re.h /^ int size; \/* size of replace "anchor" in string *\/$/;" m struct:replace_with
-size2bucket mem/vq_malloc.c /^unsigned char size2bucket( struct vqm_block* qm, int *size )$/;" f
-skip_cancel modules/acc/acc.h /^inline static int skip_cancel(struct sip_msg *msg)$/;" f
-skip_hf modules/tm/uac_fifo.c 67;" d file:
-skip_hf modules/tm/uac_unixsock.c 54;" d file:
-skip_line unixsock_server.c /^static void skip_line(str* buffer)$/;" f file:
-skip_name parser/contact/contact.c /^static inline int skip_name(str* _s)$/;" f file:
-skip_token parser/parse_event.c /^static inline char* skip_token(char* _b, int _l)$/;" f file:
-skip_token parser/parse_sipifmatch.c /^static inline char* skip_token(char* _b, int _l)$/;" f file:
-skip_uri parser/contact/contact.c /^static inline int skip_uri(str* _s)$/;" f file:
-skip_ws parser/parse_hname2.c /^static inline char* skip_ws(char* p, unsigned int size)$/;" f file:
-sl_exports modules/sl/sl.c /^struct module_exports sl_exports = {$/;" v
-sl_filter_ACK modules/sl/sl_funcs.c /^int sl_filter_ACK(struct sip_msg *msg, void *bar )$/;" f
-sl_reply modules/auth/auth_mod.c /^int (*sl_reply)(struct sip_msg* _msg, char* _str1, char* _str2);$/;" v
-sl_reply modules/auth_db/authdb_mod.c /^int (*sl_reply)(struct sip_msg* _msg, char* _str1, char* _str2);$/;" v
-sl_reply modules/auth_diameter/auth_diameter.c /^int (*sl_reply)(struct sip_msg* _msg, char* _str1, char* _str2);$/;" v
-sl_reply modules/cpl-c/cpl_env.h /^ int (*sl_reply)(struct sip_msg* _m, char* _s1, char* _s2);$/;" m struct:cpl_functions
-sl_reply modules/options/mod_options.c /^int (*sl_reply)(struct sip_msg* _m, char* _s1, char* _s2);$/;" v
-sl_reply modules/registrar/reg_mod.c /^int (*sl_reply)(struct sip_msg* _m, char* _s1, char* _s2);$/;" v
-sl_reply modules/speeddial/speeddial.c /^int (*sl_reply)(struct sip_msg* _m, char* _s1, char* _s2);$/;" v
-sl_reply_error modules/sl/sl_funcs.c /^int sl_reply_error(struct sip_msg *msg )$/;" f
-sl_reply_error scripts/serconf.sh /^ sl_reply_error();$/;" f
-sl_reply_error scripts/serconf.sh /^ sl_reply_error();$/;" f
-sl_send_reply modules/sl/sl_funcs.c /^int sl_send_reply(struct sip_msg *msg ,int code ,char *text )$/;" f
-sl_shutdown modules/sl/sl_funcs.c /^int sl_shutdown()$/;" f
-sl_startup modules/sl/sl_funcs.c /^int sl_startup()$/;" f
-sl_stats modules/sl/sl_stats.c /^static struct sl_stats *sl_stats;$/;" v file:
-sl_stats modules/sl/sl_stats.h /^struct sl_stats {$/;" s
-sl_stats_cmd modules/sl/sl_stats.c /^int static sl_stats_cmd( FILE *pipe, char *response_file )$/;" f file:
-sl_stats_cmd_unixsock modules/sl/sl_stats.c /^int static sl_stats_cmd_unixsock( str* msg )$/;" f file:
-sl_stats_destroy modules/sl/sl_stats.c /^void sl_stats_destroy()$/;" f
-sl_tag modules/sl/sl_funcs.c /^static str sl_tag = {sl_tag_buf,TOTAG_VALUE_LEN};$/;" v file:
-sl_tag_buf modules/sl/sl_funcs.c /^static char sl_tag_buf[TOTAG_VALUE_LEN];$/;" v file:
-sl_timeout modules/sl/sl_funcs.c /^static unsigned int *sl_timeout;$/;" v file:
-sleep_time modules/jabber/jabber.c /^int sleep_time = 20;$/;" v
-sleep_us ut.h /^inline static void sleep_us( unsigned int nusecs )$/;" f
-sleept modules/jabber/xjab_worker.h /^ int sleept;$/;" m struct:_xj_wlist
-slot modules/pa/presentity.h /^ struct hslot* slot; \/* Hash table collision slot we belong to *\/$/;" m struct:presentity
-slot modules/usrloc/urecord.h /^ struct hslot* slot; \/* Collision slot in the hash table array we belong to *\/$/;" m struct:urecord
-slot_add modules/pa/hslot.c /^void slot_add(hslot_t* _s, struct presentity* _p, struct presentity** _f, struct presentity** _l)$/;" f
-slot_add modules/usrloc/hslot.c /^void slot_add(hslot_t* _s, struct urecord* _r)$/;" f
-slot_rem modules/pa/hslot.c /^void slot_rem(hslot_t* _s, struct presentity* _p, struct presentity** _f, struct presentity** _l)$/;" f
-slot_rem modules/usrloc/hslot.c /^void slot_rem(hslot_t* _s, struct urecord* _r)$/;" f
-smalloc modules/jabber/tree234.c 41;" d file:
-sms modules/sms/sms_report.c /^ struct sms_msg *sms;$/;" m struct:report_cell file:
-sms2ascii modules/sms/libsms_charset.c /^char sms2ascii(const char c)$/;" f
-sms_child_init modules/sms/sms.c /^int sms_child_init(int rank)$/;" f
-sms_exit modules/sms/sms.c /^static int sms_exit(void)$/;" f file:
-sms_id modules/sms/sms_funcs.h /^ int sms_id;$/;" m struct:incame_sms
-sms_init modules/sms/sms.c /^static int sms_init(void)$/;" f file:
-sms_msg modules/sms/sms_funcs.h /^struct sms_msg {$/;" s
-sms_report_type modules/sms/libsms_modem.c /^int sms_report_type;$/;" v
-sms_report_type modules/sms/libsms_putsms.c /^int sms_report_type;$/;" v
-sms_report_type modules/sms/sms.c /^int sms_report_type = NO_REPORT;$/;" v
-sms_report_type modules/sms/sms_funcs.c /^int sms_report_type;$/;" v
-smsc modules/sms/sms_funcs.h /^ char smsc[31];$/;" m struct:incame_sms
-smsc modules/sms/sms_funcs.h /^ char smsc[MAX_CHAR_BUF+1];$/;" m struct:modem
-snprintf modules/jabber/sha.c 60;" d file:
-snprintf modules/jabber/xode.h 72;" d
-sock modules/jabber/xjab_jcon.h /^ int sock; \/\/ communication socket$/;" m struct:_xj_jcon
-sock modules/tm/t_fifo.c /^static int sock;$/;" v file:
-sock_gid main.c /^int sock_gid= -1;$/;" v
-sock_group main.c /^char* sock_group=0;$/;" v
-sock_listadd socket_info.c 68;" d file:
-sock_listins socket_info.c 82;" d file:
-sock_listrm socket_info.c 96;" d file:
-sock_mode main.c /^int sock_mode= S_IRUSR| S_IWUSR| S_IRGRP| S_IWGRP; \/* rw-rw---- *\/$/;" v
-sock_uid main.c /^int sock_uid= -1;$/;" v
-sock_user main.c /^char* sock_user=0;$/;" v
-sockaddr2ip_addr ip_addr.h /^static inline void sockaddr2ip_addr(struct ip_addr* ip, struct sockaddr* sa)$/;" f
-sockaddr_union ip_addr.h /^union sockaddr_union{$/;" u
-sockaddru_len ip_addr.h 132;" d
-sockaddru_len ip_addr.h 135;" d
-sockaddru_len ip_addr.h 139;" d
-socket ip_addr.h /^ int socket;$/;" m struct:socket_info
-socket_id ip_addr.h /^struct socket_id{$/;" s
-socket_info ip_addr.h /^struct socket_info{$/;" s
-socket_info_h socket_info.h 39;" d
-sockfd modules/acc/diam_tcp.h /^int sockfd;$/;" v
-sockfd modules/auth_diameter/auth_diameter.h /^int sockfd;$/;" v
-sockid cfg.tab.c /^ struct socket_id* sockid;$/;" m union:YYSTYPE file:
-sockid cfg.tab.h /^ struct socket_id* sockid;$/;" m union:YYSTYPE
-source_col modules/permissions/permissions.c /^char* source_col = "src_ip"; \/* Name of source address column *\/$/;" v
-speed_dial modules/speeddial/doc/speeddial.sql /^CREATE TABLE speed_dial ($/;" t
-split_frag mem/q_malloc.c /^int split_frag(struct qm_block* qm, struct qm_frag* f, unsigned long new_size,$/;" f file:
-split_node modules/pike/ip_tree.c /^struct ip_node *split_node(struct ip_node* dad, unsigned char byte)$/;" f
-split_text modules/sms/sms_funcs.c /^inline unsigned int split_text(str *text, unsigned char *lens,int nice)$/;" f
-split_type_0 modules/sms/libsms_getsms.c /^int split_type_0( char* Pointer,struct incame_sms *sms)$/;" f
-split_type_2 modules/sms/libsms_getsms.c /^int split_type_2( char* position, struct incame_sms *sms)$/;" f
-splitascii modules/sms/libsms_getsms.c /^int splitascii(struct modem *mdm, char *source, struct incame_sms *sms)$/;" f
-splitpdu modules/sms/libsms_getsms.c /^int splitpdu(struct modem *mdm, char* pdu, struct incame_sms *sms)$/;" f
-sql_buf modules/mysql/dbase.c /^static char sql_buf[SQL_BUF_LEN];$/;" v file:
-sql_buf modules/postgres/dbase.c /^static char sql_buf[SQL_BUF_LEN];$/;" v file:
-sql_query modules/postgres/serpgctl /^sql_query() {$/;" f
-sql_query scripts/sc /^sql_query() {$/;" f
-sql_query scripts/sc_unixsock /^sql_query() {$/;" f
-sql_query scripts/ser_mysql.sh /^sql_query()$/;" f
-sql_ro_query modules/postgres/serpgctl /^sql_ro_query() {$/;" f
-sql_ro_query scripts/sc /^sql_ro_query() {$/;" f
-sql_ro_query scripts/sc_unixsock /^sql_ro_query() {$/;" f
-sql_ro_raw_query modules/postgres/serpgctl /^sql_ro_raw_query() {$/;" f
-sqlurl modules/postgres/con_postgres.h /^ char *sqlurl; \/* the url we are connected to, all connection memory$/;" m struct:con_postgres
-sr_module sr_module.h /^struct sr_module{$/;" s
-sr_module_h sr_module.h 45;" d
-sr_timer timer.h /^struct sr_timer{$/;" s
-src_addr modules/msilo/doc/msilo.sql /^ src_addr VARCHAR(255) NOT NULL DEFAULT "",$/;" F
-src_ip ip_addr.h /^ struct ip_addr src_ip;$/;" m struct:receive_info
-src_ip modules/permissions/hash.h /^ str src_ip; \/* Source IP of SIP message *\/$/;" m struct:trusted_list
-src_port ip_addr.h /^ unsigned short src_port; \/* host byte order *\/$/;" m struct:receive_info
-src_su ip_addr.h /^ union sockaddr_union src_su; \/* useful for replies*\/$/;" m struct:receive_info
-srealloc modules/jabber/tree234.c 966;" d file:
-srv_rdata resolve.h /^struct srv_rdata {$/;" s
-srv_response modules/auth_diameter/authorize.c /^int srv_response(struct sip_msg* msg, rd_buf_t * rb, int hftype)$/;" f
-ss_reason modules/pa/notify.h /^typedef enum ss_reason {$/;" g
-ss_reason_t modules/pa/notify.h /^} ss_reason_t;$/;" t
-st_delete_ucontact modules/usrloc/ucontact.c /^int st_delete_ucontact(ucontact_t* _c)$/;" f
-st_expired_ucontact modules/usrloc/ucontact.c /^int st_expired_ucontact(ucontact_t* _c)$/;" f
-st_flush_ucontact modules/usrloc/ucontact.c /^int st_flush_ucontact(ucontact_t* _c)$/;" f
-st_update_ucontact modules/usrloc/ucontact.c /^void st_update_ucontact(ucontact_t* _c)$/;" f
-stale parser/digest/digest.h /^ unsigned char stale; \/* Flag is set if nonce is stale *\/$/;" m struct:auth_body
-star modules/registrar/save.c /^static inline int star(udomain_t* _d, str* _a)$/;" f file:
-star parser/contact/parse_contact.h /^ unsigned char star; \/* Star contact *\/$/;" m struct:contact_body
-start parser/parse_via.h /^ char* start; \/* Pointer to param start, just after ';',$/;" m struct:via_param
-start rpm/ser.init /^start() {$/;" f
-start tcp_conn.h /^ char* start; \/* where the message starts, after all the empty lines are$/;" m struct:tcp_req
-start_fifo_server fifo_server.c /^int start_fifo_server()$/;" f
-start_jab etc/imgwd /^start_jab() {$/;" f
-start_jab etc/obsoleted/sip2jabd /^start_jab() {$/;" f
-start_pidf_doc modules/pa/pidf.c /^int start_pidf_doc(str* _b, int _l)$/;" f
-start_prog modules/ext/my_exec.c /^int start_prog( char *cmd )$/;" f
-start_range modules/pdt/pdt.c /^code_t start_range = 10;$/;" v
-start_retr modules/tm/t_funcs.c /^void start_retr( struct retr_buf *rb )$/;" f
-start_retr modules/tm/t_funcs.h /^static void inline start_retr(struct retr_buf *rb)$/;" f
-start_ser etc/imgwd /^start_ser() {$/;" f
-start_ser etc/obsoleted/sip2jabd /^start_ser() {$/;" f
-start_time stats.h /^ time_t start_time;$/;" m struct:stats_s
-start_winfo_doc modules/pa/watcher.c /^int start_winfo_doc(str* _b, int _l)$/;" f
-start_xpidf_doc modules/pa/xpidf.c /^int start_xpidf_doc(str* _b, int _l)$/;" f
-startcolumn lex.yy.c /^ int startcolumn=1;$/;" v
-stat modules/ext/my_exec.h /^ int stat;$/;" m struct:program
-stat_counter modules/tm/t_stats.h /^typedef unsigned long stat_counter;$/;" t
-stat_file stats.c /^char *stat_file = NULL; \/* set by the parser *\/$/;" v
-state lex.yy.c /^ static int state=0;$/;" v file:
-state md5.h /^ UINT4 state[4]; \/* state (ABCD) *\/$/;" m
-state modules/jabber/xjab_presence.h /^ int state;$/;" m struct:_xj_pres_cell
-state modules/pa/presentity.h /^ pstate_t state;$/;" m struct:presence_tuple
-state modules/tm/dlg.h /^ dlg_state_t state; \/* State of the dialog *\/$/;" m struct:dlg
-state modules/usrloc/ucontact.h /^ cstate_t state; \/* State of the contact *\/$/;" m struct:ucontact
-state tcp_conn.h /^ enum tcp_conn_states state; \/* connection state *\/$/;" m struct:tcp_connection
-state tcp_conn.h /^ enum tcp_req_states state;$/;" m struct:tcp_req
-state_col modules/usrloc/ul_mod.c /^str state_col = {STATE_COL, sizeof(STATE_COL) - 1}; \/* Name of column containing contact state *\/$/;" v
-statement cfg.y /^statement: assign_stm $/;" l
-statements cfg.y /^statements: statements statement {}$/;" l
-static_defs Makefile /^static_defs= $(foreach mod, $(static_modules), \\$/;" m
-static_modules Makefile /^static_modules=$/;" m
-static_modules_path Makefile /^static_modules_path=$(addprefix modules\/, $(static_modules))$/;" m
-stats examples/geo_split.sh /^stats()$/;" f
-stats stats.c /^struct stats_s *stats; \/* per process stats structure *\/ $/;" v
-stats_funcs stats.c /^struct stats_funcs {$/;" s file:
-stats_h stats.h 31;" d
-stats_register stats.c /^int stats_register()$/;" f
-stats_s stats.h /^struct stats_s {$/;" s
-stats_segments stats.c /^static int stats_segments=-1; \/*used also to determine if we've been init'ed*\/$/;" v file:
-status modules/cpl/jcpli.h /^ int status;$/;" m struct:_RejectMessage
-status modules/jabber/xjab_jconf.h /^ int status;$/;" m struct:_xj_jconf
-status modules/jabber/xjab_presence.h /^ int status;$/;" m struct:_xj_pres_cell
-status modules/jabber/xode.h /^ int status;$/;" m struct:xode_stream_struct
-status modules/pa/presentity.h /^ str status;$/;" m struct:presence_tuple
-status modules/pa/watcher.h /^ watcher_status_t status; \/* status of subscription *\/$/;" m struct:watcher
-status modules/sms/sms_report.c /^ int status;$/;" m struct:report_cell file:
-status modules/tm/h_table.h /^ unsigned int status;$/;" m struct:ua_server
-status parser/parse_fline.h /^ str status; \/* Reply status *\/$/;" m struct:msg_start::<anonymous>::<anonymous>
-status utils/fifo_relay/fifo_server.php /^ $status = fgetS($fp, 256);$/;" v
-status_buf modules/pa/presentity.h /^ char status_buf[TUPLE_STATUS_STR_LEN];$/;" m struct:presence_tuple
-statuscode parser/parse_fline.h /^ unsigned int \/* statusclass,*\/ statuscode;$/;" m struct:msg_start::<anonymous>::<anonymous>
-stdout_print_ip ip_addr.c /^void stdout_print_ip(struct ip_addr* ip)$/;" f
-still_at_user parser/parse_uri.c 105;" d file:
-still_at_user test/p_uri.c 87;" d file:
-stm cfg.y /^stm: action { $$=$1; }$/;" l
-stop rpm/ser.init /^stop() {$/;" f
-stop_jab etc/imgwd /^stop_jab() {$/;" f
-stop_jab etc/obsoleted/sip2jabd /^stop_jab() {$/;" f
-stop_ser etc/imgwd /^stop_ser() {$/;" f
-stop_ser etc/obsoleted/sip2jabd /^stop_ser() {$/;" f
-store_keys modules/avpops/avpops_impl.c /^static db_key_t store_keys[6];$/;" v file:
-store_reply modules/tm/t_reply.c /^static int store_reply( struct cell *trans, int branch, struct sip_msg *rpl)$/;" f file:
-store_result modules/mysql/dbase.c /^static int store_result(db_con_t* _h, db_res_t** _r)$/;" f file:
-store_vals modules/avpops/avpops_impl.c /^static db_val_t store_vals[6];$/;" v file:
-str modules/jabber/doc/web/libjab.php /^ $str = "<iq id='$id' to='$server' type='get'><query xmlns='jabber:iq:register'\/><\/iq>";$/;" v
-str modules/jabber/doc/web/libjab.php /^ $str = "<iq id='$id' to='$server' type='set'><query xmlns='jabber:iq:register'><remove\/><\/query><\/iq>";$/;" v
-str modules/jabber/doc/web/libjab.php /^ $str = "<iq id='$id' to='$server' type='set'><query xmlns='jabber:iq:register'><username>$username<\/username><password>$password<\/password><\/query><\/iq>";$/;" v
-str modules/jabber/doc/web/libjab.php /^ $str = "<iq id='$id' to='$server' type='set'><query xmlns='jabber:iq:register'><username>$username<\/username><password>$password<\/password><nick>$nick<\/nick><key>$key<\/key><\/query><\/iq>";$/;" v
-str modules/jabber/doc/web/libjab.php /^ $str = "<iq id='$id' type='get'><query xmlns='jabber:iq:auth'><username>$user<\/username><\/query><\/iq>";$/;" v
-str modules/jabber/doc/web/libjab.php /^ $str = "<iq id='$id' type='set'><query xmlns='jabber:iq:auth'><username>$user<\/username><resource>webjb<\/resource><password>$passwd<\/password><\/query><\/iq>";$/;" v
-str modules/jabber/doc/web/libjab.php /^ $str = "<iq id='j86' to='$server' type='get'><query xmlns='jabber:iq:agents'\/><\/iq>";$/;" v
-str modules/jabber/doc/web/libjab.php /^ $str = "<presence to='$to' type='$presence'\/>";$/;" v
-str modules/pdt/doc/web/request.php /^ $str = fread($fr, $count);$/;" v
-str str.h /^typedef struct _str str;$/;" t
-str2double modules/mysql/val.c /^static inline int str2double(const char* _s, double* _v)$/;" f file:
-str2double modules/postgres/db_val.c /^static inline int str2double(const char* _s, double* _v)$/;" f file:
-str2facility dprint.c /^int str2facility(char *s)$/;" f
-str2int modules/mysql/val.c /^static inline int str2int(const char* _s, int* _v)$/;" f file:
-str2int modules/postgres/db_val.c /^static inline int str2int(const char* _s, int* _v)$/;" f file:
-str2int ut.h /^static inline int str2int(str* _s, unsigned int* _r)$/;" f
-str2ip resolve.h /^static inline struct ip_addr* str2ip(str* st)$/;" f
-str2ip6 resolve.h /^static inline struct ip_addr* str2ip6(str* st)$/;" f
-str2q qvalue.c /^int str2q(qvalue_t* q, char* s, int len)$/;" f
-str2s ut.h /^static inline unsigned short str2s(char* s, unsigned int len,$/;" f
-str2time modules/mysql/val.c /^static inline int str2time(const char* _s, time_t* _v)$/;" f file:
-str2time modules/postgres/db_val.c /^static inline int str2time(const char* _s, time_t* _v)$/;" f file:
-str2val modules/mysql/val.c /^int str2val(db_type_t _t, db_val_t* _v, const char* _s, int _l)$/;" f
-str2valp modules/postgres/db_val.c /^int str2valp(db_type_t _t, db_val_t* _v, const char* _s, int _l, void *_p)$/;" f
-str_append modules/pa/common.h 40;" d
-str_buf lex.yy.c /^ struct str_buf{$/;" s file:
-str_buf modules/avpops/avpops_impl.c /^static char str_buf[STR_BUF_SIZE];$/;" v file:
-str_duplicate modules/tm/dlg.c /^static inline int str_duplicate(str* _d, str* _s)$/;" f file:
-str_fac dprint.c /^static char* str_fac[]={"LOG_AUTH","LOG_CRON","LOG_DAEMON",$/;" v file:
-str_fixup mod_fix.h /^static int str_fixup(void** param, int param_no)$/;" f
-str_fixup modules/auth/auth_mod.c /^static int str_fixup(void** param, int param_no)$/;" f file:
-str_fixup modules/auth_db/authdb_mod.c /^static int str_fixup(void** param, int param_no)$/;" f file:
-str_fixup modules/auth_diameter/auth_diameter.c /^static int str_fixup(void** param, int param_no)$/;" f file:
-str_fixup modules/auth_radius/authrad_mod.c /^static int str_fixup(void** param, int param_no)$/;" f file:
-str_fixup modules/avp/avp.c /^static int str_fixup(void** param, int param_no)$/;" f file:
-str_fixup modules/diversion/diversion.c /^static int str_fixup(void** param, int param_no)$/;" f file:
-str_fixup modules/enum/enum_mod.c /^static int str_fixup(void** param, int param_no)$/;" f file:
-str_fixup modules/rr/rr_mod.c /^static int str_fixup(void** param, int param_no)$/;" f file:
-str_fixup modules/textops/textops.c /^static int str_fixup(void** param, int param_no)$/;" f file:
-str_fixup modules/uri/uri_mod.c /^static int str_fixup(void** param, int param_no)$/;" f file:
-str_h str.h 30;" d
-str_int_data usr_avp.c /^struct str_int_data {$/;" s file:
-str_int_print msg_translator.c 257;" d file:
-str_ipaddr_print msg_translator.c 263;" d file:
-str_lenpair_print msg_translator.c 248;" d file:
-str_list modules/tm/uac_fifo.c /^struct str_list {$/;" s file:
-str_list modules/tm/uac_unixsock.c /^struct str_list {$/;" s file:
-str_null modules/xlog/xl_lib.c /^static str str_null = { "<null>", 6 };$/;" v file:
-str_pair_print msg_translator.c 254;" d file:
-str_param modules/print/print.c /^char* str_param;$/;" v
-str_per modules/xlog/xl_lib.c /^static str str_per = { "%", 1 };$/;" v file:
-str_print msg_translator.c 239;" d file:
-str_str_data usr_avp.c /^struct str_str_data {$/;" s file:
-str_strcasecmp modules/pa/pa_mod.c /^int str_strcasecmp(const str *stra, const str *strb)$/;" f
-str_strcmp modules/pa/pa_mod.c /^int str_strcmp(const str *stra, const str *strb)$/;" f
-str_strdup modules/pa/presentity.c /^str str_strdup(str string)$/;" f
-str_tmp cfg.tab.c /^static str* str_tmp;$/;" v file:
-str_val db/db_val.h /^ str str_val; \/* str string value *\/$/;" m
-strcasefind modules/mediaproxy/mediaproxy.c /^strcasefind(const char *haystack, size_t len, const char *needle, size_t nlen)$/;" f file:
-strcasestr_str modules/cpl-c/cpl_utils.h /^static inline char *strcasestr_str(str *s1, str *s2)$/;" f
-stream modules/jabber/doc/web/libjab.php /^ $stream = "<\/stream:stream>";$/;" v
-stream modules/jabber/doc/web/libjab.php /^ $stream = "<stream:stream to='$server' xmlns='jabber:client' xmlns:stream='http:\/\/etherx.jabber.org\/streams'>";$/;" v
-stream_id modules/jabber/xjab_jcon.h /^ char *stream_id; \/\/ stream id of the session$/;" m struct:_xj_jcon
-strfind modules/mediaproxy/mediaproxy.c /^strfind(const void *haystack, size_t len, const void *needle, size_t nlen)$/;" f file:
-string route_struct.h /^ char* string;$/;" m union:action::<anonymous>
-string2hex ut.h /^inline static int string2hex( $/;" f
-string_val db/db_val.h /^ const char* string_val; \/* NULL terminated string *\/$/;" m
-strings modules/jabber/tree234.c /^char *strings[] = {$/;" v
-strip_realm modules/auth/api.c /^void strip_realm(str* _realm)$/;" f
-strlower ut.h /^static inline void strlower(str* _s)$/;" f
-strop cfg.y /^strop: equalop {$$=$1; }$/;" l
-strprintsha modules/jabber/sha.c /^int strprintsha(char *dest, int *hashval) $/;" f
-strtoint modules/mediaproxy/mediaproxy.c /^strtoint(str *data)$/;" f file:
-strval cfg.tab.c /^ char* strval;$/;" m union:YYSTYPE file:
-strval cfg.tab.h /^ char* strval;$/;" m union:YYSTYPE
-strx_printv modules/jabber/xsnprintf.c /^static void strx_printv(int *ccp, char *buf, size_t len, const char *format,$/;" f file:
-strz2int modules/cpl-c/cpl_time.c /^static inline int strz2int(char *_bp)$/;" f file:
-su ip_addr.h /^ union sockaddr_union su; $/;" m struct:socket_info
-su2ip_addr ip_addr.h /^static inline void su2ip_addr(struct ip_addr* ip, union sockaddr_union* su)$/;" f
-su_cmp ip_addr.h /^static inline int su_cmp(union sockaddr_union* s1, union sockaddr_union* s2)$/;" f
-su_getport ip_addr.h /^static inline unsigned short su_getport(union sockaddr_union* su)$/;" f
-su_setport ip_addr.h /^static inline void su_setport(union sockaddr_union* su, unsigned short port)$/;" f
-subj_CASE parser/case_subj.h 49;" d
-subject modules/cpl-c/cpl_run.h /^ str *subject;$/;" m struct:cpl_interpreter
-subject parser/msg_parser.h /^ struct hdr_field* subject;$/;" m struct:sip_msg
-submit_query modules/mysql/dbase.c /^static int submit_query(db_con_t* _h, const char* _s)$/;" f file:
-submit_query modules/postgres/dbase.c /^static int submit_query(db_con_t* _h, const char* _s)$/;" f file:
-subs_state modules/pa/notify.h /^typedef enum subs_state {$/;" g
-subs_state_t modules/pa/notify.h /^} subs_state_t;$/;" t
-subs_states modules/pa/notify.c /^static str subs_states[] = {$/;" v file:
-subscribe_fixup modules/pa/pa_mod.c /^static int subscribe_fixup(void** param, int param_no)$/;" f file:
-subscriber_domain_col modules/uri_db/uridb_mod.c /^str subscriber_domain_col = {DOMAIN_COL, DOMAIN_COL_LEN}; \/* Name of domain column in subscriber table *\/$/;" v
-subscriber_table modules/uri_db/uridb_mod.c /^str subscriber_table = {SUBSCRIBER_TABLE, SUBSCRIBER_TABLE_LEN}; \/* Name of subscriber table *\/$/;" v
-subscriber_user_col modules/uri_db/uridb_mod.c /^str subscriber_user_col = {USER_COL, USER_COL_LEN}; \/* Name of user column in subscriber table *\/$/;" v
-subst lump_struct.h /^ enum lump_subst subst; \/*what to subst: ip addr, port, proto*\/$/;" m union:lump::<anonymous>
-subst_expr re.h /^struct subst_expr{$/;" s
-subst_expr_free re.c /^void subst_expr_free(struct subst_expr* se)$/;" f
-subst_f modules/textops/textops.c /^static int subst_f(struct sip_msg* msg, char* subst, char* ignored)$/;" f file:
-subst_parser re.c /^struct subst_expr* subst_parser(str* subst)$/;" f
-subst_run re.c /^struct replace_lst* subst_run(struct subst_expr* se, const char* input,$/;" f
-subst_str re.c /^str* subst_str(const char *input, struct sip_msg* msg, struct subst_expr* se,$/;" f
-subst_uri_f modules/textops/textops.c /^static int subst_uri_f(struct sip_msg* msg, char* subst, char* ignored)$/;" f file:
-subst_user_f modules/textops/textops.c /^static int subst_user_f(struct sip_msg* msg, char* subst, char* ignored)$/;" f file:
-subtype parser/parse_content.h /^ unsigned short subtype;$/;" m struct:mime_type
-subtype route_struct.h /^ int subtype;$/;" m struct:expr
-subtype_tree parser/parse_content.c /^static type_node_t subtype_tree[] = {$/;" v file:
-suffix modules/diversion/diversion.c /^str suffix = {"", 0};$/;" v
-suffix modules/enum/enum_mod.c /^str suffix;$/;" v
-supp_CASE parser/case_supp.h 48;" d
-supported parser/msg_parser.h /^ struct hdr_field* supported;$/;" m struct:sip_msg
-supt_c modules/options/mod_options.c /^char *acpt_c, *acpt_enc_c, *acpt_lan_c, *supt_c;$/;" v
-supt_s modules/options/mod_options.c /^str acpt_s, acpt_enc_s, acpt_lan_s, supt_s;$/;" v
-sval modules/tm/t_fifo.c /^ str sval;$/;" m struct:hdr_avp file:
-swap_routine modules/pike/pike_funcs.c /^void swap_routine( unsigned int ticks, void *param)$/;" f
-swapchars modules/sms/libsms_putsms.c /^void swapchars(char* string, int len) \/* Swaps every second character *\/$/;" f
-switch_endianness modules/jabber/sha.c 64;" d file:
-syn_branch main.c /^int syn_branch = 1;$/;" v
-synchronize_all_udomains modules/usrloc/dlist.c /^int synchronize_all_udomains(void)$/;" f
-t modules/cpl-c/cpl_time.h /^ struct tm t;$/;" m struct:_ac_tm
-tH12 parser/obsolete/strs.h 329;" d
-tH21 parser/obsolete/strs.h 334;" d
-tO12 parser/obsolete/strs.h 93;" d
-tO21 parser/obsolete/strs.h 98;" d
-t_ack modules/tm/t_lookup.c /^static struct cell *t_ack;$/;" v file:
-t_addblind modules/tm/tm_load.h /^ taddblind_f t_addblind;$/;" m struct:tm_binds
-t_calc_branch modules/tm/t_msgbuilder.c /^int t_calc_branch(struct cell *t, $/;" f
-t_check modules/tm/t_lookup.c /^int t_check( struct sip_msg* p_msg , int *param_branch )$/;" f
-t_check_status modules/tm/tm.c /^static int t_check_status(struct sip_msg* msg, char *regexp, char *foo)$/;" f file:
-t_content_type modules/msilo/msfuncs.h /^} t_content_type;$/;" t
-t_forward_nonack modules/tm/t_fwd.c /^int t_forward_nonack( struct cell *t, struct sip_msg* p_msg , $/;" f
-t_forward_nonack modules/tm/tm_load.h /^ tfwd_f t_forward_nonack;$/;" m struct:tm_binds
-t_get_trans_ident modules/tm/t_lookup.c /^int t_get_trans_ident(struct sip_msg* p_msg, unsigned int* hash_index, unsigned int* label)$/;" f
-t_get_trans_ident modules/tm/tm_load.h /^ tget_ti_f t_get_trans_ident;$/;" m struct:tm_binds
-t_getdlg modules/tm/t_dlg.c /^dlg_t t_getdlg() {$/;" f
-t_gett modules/tm/tm_load.h /^ tgett_f t_gett;$/;" m struct:tm_binds
-t_is_local modules/tm/t_lookup.c /^int t_is_local(struct sip_msg* p_msg)$/;" f
-t_is_local modules/tm/tm_load.h /^ tislocal_f t_is_local;$/;" m struct:tm_binds
-t_lookupOriginalT modules/tm/t_lookup.c /^struct cell* t_lookupOriginalT( struct sip_msg* p_msg )$/;" f
-t_lookup_callid modules/tm/t_lookup.c /^int t_lookup_callid(struct cell ** trans, str callid, str cseq) {$/;" f
-t_lookup_ident modules/tm/t_lookup.c /^int t_lookup_ident(struct cell ** trans, unsigned int hash_index, unsigned int label)$/;" f
-t_lookup_ident modules/tm/tm_load.h /^ tlookup_ident_f t_lookup_ident;$/;" m struct:tm_binds
-t_lookup_request modules/tm/t_lookup.c /^int t_lookup_request( struct sip_msg* p_msg , int leave_new_locked )$/;" f
-t_msg_list modules/msilo/ms_msg_list.h /^} t_msg_list, *msg_list;$/;" t
-t_msg_list_el modules/msilo/ms_msg_list.h /^} t_msg_list_el, *msg_list_el;$/;" t
-t_newdlg modules/tm/t_dlg.c /^int t_newdlg( struct sip_msg *msg )$/;" f
-t_newtran modules/tm/t_lookup.c /^int t_newtran( struct sip_msg* p_msg )$/;" f
-t_newtran modules/tm/tm_load.h /^ tnewtran_f t_newtran;$/;" m struct:tm_binds
-t_newtran scripts/serconf.sh /^ t_newtran();$/;" f
-t_newtran scripts/serconf.sh /^ t_newtran();$/;" f
-t_on_negative modules/tm/t_reply.c /^void t_on_negative( unsigned int go_to )$/;" f
-t_on_reply modules/tm/t_reply.c /^void t_on_reply( unsigned int go_to )$/;" f
-t_param timer.h /^ void* t_param;$/;" m struct:sr_timer
-t_pick_branch modules/tm/t_reply.c /^int t_pick_branch(int inc_branch, int inc_code, struct cell *t, int *res_code)$/;" f
-t_relay modules/tm/tm_load.h /^ cmd_function t_relay;$/;" m struct:tm_binds
-t_relay scripts/serconf.sh /^ t_relay();$/;" f
-t_relay scripts/serconf.sh /^ t_relay();$/;" f
-t_relay_to modules/tm/t_funcs.c /^int t_relay_to( struct sip_msg *p_msg , struct proxy_l *proxy, int proto,$/;" f
-t_relay_to_tcp modules/tm/tm_load.h /^ cmd_function t_relay_to_tcp;$/;" m struct:tm_binds
-t_relay_to_udp modules/tm/tm_load.h /^ cmd_function t_relay_to_udp;$/;" m struct:tm_binds
-t_release_transaction modules/tm/t_funcs.c /^int t_release_transaction( struct cell *trans )$/;" f
-t_replicate modules/tm/t_fwd.c /^int t_replicate(struct sip_msg *p_msg, struct proxy_l *proxy, int proto )$/;" f
-t_reply modules/tm/t_reply.c /^int t_reply( struct cell *t, struct sip_msg* p_msg, unsigned int code, $/;" f
-t_reply modules/tm/tm_load.h /^ treply_f t_reply;$/;" m struct:tm_binds
-t_reply_matching modules/tm/t_lookup.c /^int t_reply_matching( struct sip_msg *p_msg , int *p_branch )$/;" f
-t_reply_unsafe modules/tm/t_reply.c /^int t_reply_unsafe( struct cell *t, struct sip_msg* p_msg, unsigned int code, $/;" f
-t_reply_unsafe modules/tm/tm_load.h /^ treply_f t_reply_unsafe;$/;" m struct:tm_binds
-t_reply_with_body modules/tm/t_reply.c /^int t_reply_with_body( struct cell *trans, unsigned int code, $/;" f
-t_reply_with_body modules/tm/tm_load.h /^ treply_wb_f t_reply_with_body;$/;" m struct:tm_binds
-t_request modules/tm/tm_load.h /^ req_t t_request;$/;" m struct:tm_binds
-t_request_outside modules/tm/tm_load.h /^ reqout_t t_request_outside;$/;" m struct:tm_binds
-t_request_within modules/tm/tm_load.h /^ reqwith_t t_request_within;$/;" m struct:tm_binds
-t_retransmit_reply modules/tm/t_reply.c /^int t_retransmit_reply( struct cell *t )$/;" f
-t_should_relay_response modules/tm/t_reply.c /^static enum rps t_should_relay_response( struct cell *Trans , int new_code,$/;" f file:
-t_stats modules/tm/t_stats.h /^struct t_stats {$/;" s
-t_stats_deleted modules/tm/t_stats.h /^inline void static t_stats_deleted( int local )$/;" f
-t_stats_new modules/tm/t_stats.h /^inline void static t_stats_new(int local)$/;" f
-t_stats_wait modules/tm/t_stats.h /^inline void static t_stats_wait()$/;" f
-t_uac modules/tm/uac.c /^int t_uac(str* method, str* headers, str* body, dlg_t* dialog,$/;" f
-t_unref modules/tm/t_lookup.c /^int t_unref( struct sip_msg* p_msg )$/;" f
-t_write_req modules/tm/t_fifo.c /^int t_write_req(struct sip_msg* msg, char* vm_fifo, char* info)$/;" f
-t_write_unix modules/tm/t_fifo.c /^int t_write_unix(struct sip_msg* msg, char* socket, char* info)$/;" f
-t_xj_jalias modules/jabber/xjab_worker.h /^} t_xj_jalias, *xj_jalias;$/;" t
-t_xj_jcon modules/jabber/xjab_jcon.h /^} t_xj_jcon, *xj_jcon;$/;" t
-t_xj_jcon_pool modules/jabber/xjab_util.h /^} t_xj_jcon_pool, *xj_jcon_pool;$/;" t
-t_xj_jconf modules/jabber/xjab_jconf.h /^} t_xj_jconf, *xj_jconf;$/;" t
-t_xj_jkey modules/jabber/xjab_base.h /^} t_xj_jkey, *xj_jkey;$/;" t
-t_xj_jmsg_queue modules/jabber/xjab_util.h /^} t_xj_jmsg_queue, *xj_jmsg_queue;$/;" t
-t_xj_pres_cell modules/jabber/xjab_presence.h /^} t_xj_pres_cell, *xj_pres_cell;$/;" t
-t_xj_pres_list modules/jabber/xjab_presence.h /^} t_xj_pres_list, *xj_pres_list;$/;" t
-t_xj_sipmsg modules/jabber/xjab_base.h /^} t_xj_sipmsg, *xj_sipmsg;$/;" t
-t_xj_wlist modules/jabber/xjab_worker.h /^} t_xj_wlist, *xj_wlist;$/;" t
-t_xj_worker modules/jabber/xjab_worker.h /^} t_xj_worker, *xj_worker;$/;" t
-table db/db_con.h /^ const char* table; \/* Default table to use *\/$/;" m
-table modules/avpops/avpops_db.h /^ char *table;$/;" m struct:db_scheme
-table modules/avpops/avpops_impl.h /^ char *table; \/* DB table\/scheme name *\/$/;" m struct:db_param
-table modules/flatstore/flat_id.h /^ str table; \/* Name of table *\/$/;" m struct:flat_id
-table modules/group/group_mod.c /^str table = {TABLE, TABLE_LEN}; \/* Table name where group definitions are stored *\/$/;" v
-table modules/pa/pdomain.h /^ struct hslot* table; \/* Hash table for fast lookup *\/$/;" m struct:pdomain
-table modules/pdt/doc/web/request.php /^$table="admin";$/;" v
-table modules/usrloc/udomain.h /^ struct hslot* table; \/* Hash table - array of collision slots *\/$/;" m struct:udomain
-table_version db/db.c /^int table_version(db_func_t* dbf, db_con_t* connection, const str* table)$/;" f
-tables modules/dbtext/dbt_lib.h /^ tbl_cache_p tables;$/;" m struct:_dbt_database
-taddblind_f modules/tm/t_fwd.h /^typedef int (*taddblind_f)( \/*struct cell *t *\/ );$/;" t
-tag modules/tm/h_table.h /^ str tag;$/;" m struct:totag_elem
-tag_suffix modules/sl/sl_funcs.c /^static char *tag_suffix;$/;" v file:
-tag_value parser/parse_to.h /^ str tag_value; \/* Value of tag *\/$/;" m struct:to_body
-tail db/db_con.h /^ unsigned long tail; \/* Variable length tail$/;" m
-tail mem/q_malloc.h /^ struct qm_frag_end tail;$/;" m struct:qm_frag_lnk
-tail modules/acc/diam_message.h /^ AAA_AVP *tail;$/;" m struct:_avp_list_t
-tail modules/auth_diameter/diameter_msg.h /^ AAA_AVP *tail;$/;" m struct:_avp_list_t
-tbl_buf db/db_fifo.c /^static char tbl_buf[MAX_SIZE_LINE]; \/* current 'table name' buffer *\/$/;" v file:
-tbl_cache_free modules/dbtext/dbt_lib.c /^int tbl_cache_free(tbl_cache_p _tbc)$/;" f
-tbl_cache_new modules/dbtext/dbt_lib.c /^tbl_cache_p tbl_cache_new()$/;" f
-tbl_cache_p modules/dbtext/dbt_lib.h /^} tbl_cache_t, *tbl_cache_p;$/;" t
-tbl_cache_t modules/dbtext/dbt_lib.h /^} tbl_cache_t, *tbl_cache_p;$/;" t
-tcp_accept_aliases tcp_main.c /^int tcp_accept_aliases=0; \/* by default don't accept aliases *\/$/;" v
-tcp_addr_hash tcp_conn.h /^static inline unsigned tcp_addr_hash(struct ip_addr* ip, unsigned short port)$/;" f
-tcp_blocking_connect tcp_main.c /^static int tcp_blocking_connect(int fd, const struct sockaddr *servaddr,$/;" f file:
-tcp_child tcp_main.c /^struct tcp_child{$/;" s file:
-tcp_children tcp_main.c /^struct tcp_child tcp_children[MAX_TCP_CHILDREN];$/;" v
-tcp_children_no main.c /^int tcp_children_no = 0;$/;" v
-tcp_conn_alias tcp_conn.h /^struct tcp_conn_alias{$/;" s
-tcp_conn_states tcp_conn.h /^enum tcp_conn_states { S_CONN_ERROR=-2, S_CONN_BAD=-1, S_CONN_OK=0, $/;" g
-tcp_connect_timeout tcp_main.c /^int tcp_connect_timeout=DEFAULT_TCP_CONNECT_TIMEOUT;$/;" v
-tcp_connection tcp_conn.h /^struct tcp_connection{$/;" s
-tcp_disable main.c /^int tcp_disable = 0; \/* 1 if tcp is disabled *\/$/;" v
-tcp_id_hash tcp_conn.h 192;" d
-tcp_init tcp_main.c /^int tcp_init(struct socket_info* sock_info)$/;" f
-tcp_init_children tcp_main.c /^int tcp_init_children()$/;" f
-tcp_init_h tcp_init.h 29;" d
-tcp_listen main.c /^struct socket_info* tcp_listen=0;$/;" v
-tcp_listen socket_info.h /^struct socket_info* tcp_listen;$/;" v
-tcp_main_loop tcp_main.c /^void tcp_main_loop()$/;" f
-tcp_proto_no tcp_main.c /^int tcp_proto_no=-1; \/* tcp protocol number as returned by getprotobyname *\/$/;" v
-tcp_read tcp_read.c /^int tcp_read(struct tcp_connection *c)$/;" f
-tcp_read_headers tcp_read.c /^int tcp_read_headers(struct tcp_connection *c)$/;" f
-tcp_read_req tcp_read.c /^int tcp_read_req(struct tcp_connection* con)$/;" f
-tcp_receive_loop tcp_read.c /^void tcp_receive_loop(int unix_sock)$/;" f
-tcp_req tcp_conn.h /^struct tcp_req{$/;" s
-tcp_req_errors tcp_conn.h /^enum tcp_req_errors { TCP_REQ_INIT, TCP_REQ_OK, TCP_READ_ERROR,$/;" g
-tcp_req_states tcp_conn.h /^enum tcp_req_states { H_SKIP_EMPTY, H_SKIP, H_LF, H_LFCR, H_BODY, H_STARTWS,$/;" g
-tcp_send tcp_main.c /^int tcp_send(int type, char* buf, unsigned len, union sockaddr_union* to,$/;" f
-tcp_send_recv modules/acc/diam_tcp.c /^int tcp_send_recv(int sockfd, char* buf, int len, rd_buf_t* rb, $/;" f
-tcp_send_recv modules/auth_diameter/tcp_comm.c /^int tcp_send_recv(int sockfd, char* buf, int len, rd_buf_t* rb, $/;" f
-tcp_send_timeout tcp_main.c /^int tcp_send_timeout=DEFAULT_TCP_SEND_TIMEOUT;$/;" v
-tcp_server_h tcp_server.h 30;" d
-tcpconn_add tcp_main.c /^struct tcp_connection* tcpconn_add(struct tcp_connection *c)$/;" f
-tcpconn_add_alias tcp_main.c /^int tcpconn_add_alias(int id, int port, int proto)$/;" f
-tcpconn_aliases_hash tcp_main.c /^struct tcp_conn_alias** tcpconn_aliases_hash=0;$/;" v
-tcpconn_connect tcp_main.c /^struct tcp_connection* tcpconn_connect(union sockaddr_union* server, int type)$/;" f
-tcpconn_destroy tcp_main.c /^static void tcpconn_destroy(struct tcp_connection* tcpconn)$/;" f file:
-tcpconn_get tcp_main.c /^struct tcp_connection* tcpconn_get(int id, struct ip_addr* ip, int port,$/;" f
-tcpconn_id_hash tcp_main.c /^struct tcp_connection** tcpconn_id_hash=0;$/;" v
-tcpconn_listadd tcp_conn.h 154;" d
-tcpconn_listrm tcp_conn.h 165;" d
-tcpconn_lock tcp_main.c /^gen_lock_t* tcpconn_lock=0;$/;" v
-tcpconn_new tcp_main.c /^struct tcp_connection* tcpconn_new(int sock, union sockaddr_union* su,$/;" f
-tcpconn_put tcp_main.c /^void tcpconn_put(struct tcp_connection* c)$/;" f
-tcpconn_ref tcp_main.c /^void tcpconn_ref(struct tcp_connection* c)$/;" f
-tcpconn_rm tcp_main.c /^void tcpconn_rm(struct tcp_connection* c)$/;" f
-tcpconn_timeout tcp_main.c /^void tcpconn_timeout(fd_set* set)$/;" f
-tel2sip modules/uri/checks.c /^int tel2sip(struct sip_msg* _msg, char* _s1, char* _s2)$/;" f
-tel_uri_params modules/enum/enum_mod.c /^char* tel_uri_params = "";$/;" v
-termio modules/postgres/aug_sysdep.h 257;" d
-test modules/mediaproxy/mediaproxy.c /^ NatTestType test;$/;" m file:
-testPrivateContact modules/mediaproxy/mediaproxy.c /^testPrivateContact(struct sip_msg* msg)$/;" f file:
-testPrivateVia modules/mediaproxy/mediaproxy.c /^testPrivateVia(struct sip_msg* msg)$/;" f file:
-testSourceAddress modules/mediaproxy/mediaproxy.c /^testSourceAddress(struct sip_msg* msg)$/;" f file:
-test_max_contacts modules/registrar/save.c /^static int test_max_contacts(struct sip_msg* _m, urecord_t* _r, contact_t* _c)$/;" f file:
-text data_lump_rpl.h /^ str text;$/;" m struct:lump_rpl
-text modules/sms/sms_funcs.h /^ str text;$/;" m struct:sms_msg
-text modules/sms/sms_report.c /^ char *text;$/;" m struct:report_cell file:
-text modules/xlog/xl_lib.h /^ str text;$/;" m struct:_xl_elog
-text parser/parse_event.h /^ str text; \/* Original string representation *\/$/;" m struct:event
-text parser/parse_expires.h /^ str text; \/* Original text representation *\/$/;" m struct:exp_body
-text parser/parse_sipifmatch.h /^ str text; \/* Original string representation *\/$/;" m struct:etag
-text_len modules/sms/sms_report.c /^ unsigned int text_len;$/;" m struct:report_cell file:
-tfwd_f modules/tm/t_fwd.h /^typedef int (*tfwd_f)(struct sip_msg* p_msg , struct proxy_l * proxy );$/;" t
-tg modules/tm/timer.h /^ enum timer_groups tg;$/;" m struct:timer_link
-tget_ti_f modules/tm/t_lookup.h /^typedef int (*tget_ti_f)(struct sip_msg*, unsigned int*, unsigned int*);$/;" t
-tgett_f modules/tm/t_lookup.h /^typedef struct cell * (*tgett_f)(void);$/;" t
-th12 parser/obsolete/strs.h 328;" d
-th21 parser/obsolete/strs.h 333;" d
-tid parser/parse_via.h /^ str tid; \/* transaction id, part of branch *\/$/;" m struct:via_body
-time modules/cpl-c/cpl_time.h /^ time_t time;$/;" m struct:_ac_tm
-time modules/sms/sms_funcs.h /^ char time[TIME_LEN];$/;" m struct:incame_sms
-time2mysql modules/mysql/utils.c /^int time2mysql(time_t _time, char* _result, int _res_len)$/;" f
-time2str modules/mysql/val.c /^static inline int time2str(time_t _v, char* _s, int* _l)$/;" f file:
-time2str modules/postgres/db_val.c /^static inline int time2str(time_t _v, char* _s, int* _l)$/;" f file:
-time_out modules/exec/kill.h /^ volatile unsigned int time_out;$/;" m struct:timer_link
-time_out modules/tm/timer.h /^ volatile unsigned int time_out;$/;" m struct:timer_link
-time_to_kill modules/exec/exec_mod.c /^unsigned int time_to_kill=0;$/;" v
-time_unit modules/pike/pike.c /^static int time_unit = 2;$/;" v file:
-time_val db/db_val.h /^ time_t time_val; \/* unix time value *\/$/;" m
-timeout modules/pike/pike.c /^int timeout = 120;$/;" v
-timeout modules/sms/sms_report.c /^ time_t timeout;$/;" m struct:report_cell file:
-timeout tcp_conn.h /^ int timeout; \/* connection timeout, after this it will be removed*\/$/;" m struct:tcp_connection
-timer modules/nathelper/nathelper.c /^timer(unsigned int ticks, void *param)$/;" f file:
-timer modules/pa/pa_mod.c /^static void timer(unsigned int ticks, void* param)$/;" f file:
-timer modules/pike/pike.c /^struct list_link* timer = 0;$/;" v
-timer modules/tm/timer.h /^typedef struct timer$/;" s
-timer modules/usrloc/ul_mod.c /^static void timer(unsigned int ticks, void* param)$/;" f file:
-timer_all_pdomains modules/pa/dlist.c /^int timer_all_pdomains(void)$/;" f
-timer_avp modules/cpl-c/cpl.c /^static char *timer_avp = 0; \/* name of variable timer AVP *\/$/;" v file:
-timer_avp modules/cpl-c/cpl_env.h /^ int_str timer_avp;$/;" m struct:cpl_enviroment
-timer_avp_type modules/cpl-c/cpl_env.h /^ int timer_avp_type; \/* specs - type and name - of the timer AVP *\/$/;" m struct:cpl_enviroment
-timer_f timer.h /^ timer_function* timer_f;$/;" m struct:sr_timer
-timer_function timer.h /^typedef void (timer_function)(unsigned int ticks, void* param);$/;" t
-timer_group modules/tm/timer.c /^int timer_group[NR_OF_TIMER_LISTS] = $/;" v
-timer_group_lock modules/tm/lock.c /^static ser_lock_t* timer_group_lock=0; \/* pointer to a TG_NR lock array,$/;" v file:
-timer_groups modules/tm/lock.h /^enum timer_groups {$/;" g
-timer_h timer.h 34;" d
-timer_id timer.c /^static int timer_id=0;$/;" v file:
-timer_id2timeout modules/tm/timer.c /^unsigned int timer_id2timeout[NR_OF_TIMER_LISTS] = {$/;" v
-timer_interval modules/pa/pa_mod.c /^int timer_interval = 10; \/* Expiration timer interval in seconds *\/$/;" v
-timer_interval modules/usrloc/ul_mod.c /^int timer_interval = 60; \/* Timer interval in seconds *\/$/;" v
-timer_link modules/exec/kill.h /^struct timer_link {$/;" s
-timer_link modules/tm/timer.h /^typedef struct timer_link$/;" s
-timer_link_type modules/tm/timer.h /^}timer_link_type ;$/;" t
-timer_list modules/exec/kill.h /^struct timer_list$/;" s
-timer_list modules/tm/timer.h /^ struct timer *timer_list;$/;" m struct:timer_link
-timer_list timer.c /^struct sr_timer* timer_list=0;$/;" v
-timer_ll modules/pike/ip_tree.h /^ struct list_link timer_ll;$/;" m struct:ip_node
-timer_lock modules/pike/pike.c /^gen_lock_t* timer_lock=0;$/;" v
-timer_pdomain modules/pa/pdomain.c /^int timer_pdomain(pdomain_t* _d)$/;" f
-timer_presentity modules/pa/presentity.c /^int timer_presentity(presentity_t* _p)$/;" f
-timer_routine modules/exec/kill.c /^static void timer_routine(unsigned int ticks , void * attr)$/;" f file:
-timer_routine modules/tm/timer.c /^void timer_routine(unsigned int ticks , void * attr)$/;" f
-timer_semaphore modules/tm/lock.c /^gen_lock_set_t* timer_semaphore=0;$/;" v
-timer_table modules/tm/timer.h /^struct timer_table$/;" s
-timer_ticker timer.c /^void timer_ticker()$/;" f
-timer_type modules/tm/timer.h /^} timer_type;$/;" t
-timer_udomain modules/usrloc/udomain.c /^int timer_udomain(udomain_t* _d)$/;" f
-timer_urecord modules/usrloc/urecord.c /^int timer_urecord(urecord_t* _r)$/;" f
-timers modules/tm/timer.h /^ struct timer timers[ NR_OF_TIMER_LISTS ];$/;" m struct:timer_table
-timertable modules/tm/timer.c /^static struct timer_table *timertable=0;$/;" v file:
-timestamp modules/mediaproxy/mediaproxy.c /^ long timestamp; \/\/ for checking if it was modified$/;" m file:
-timestamp modules/mysql/my_con.h /^ time_t timestamp; \/* Timestamp of last query *\/$/;" m struct:my_con
-tion_CASE parser/case_orga.h 35;" d
-tislocal_f modules/tm/t_lookup.h /^typedef int (*tislocal_f)(struct sip_msg*);$/;" t
-title modules/tm/t_fifo.c /^ str title;$/;" m struct:hdr_avp file:
-tlookup_ident_f modules/tm/t_lookup.h /^typedef int (*tlookup_ident_f)(struct cell**, unsigned int, unsigned int);$/;" t
-tls_disable main.c /^int tls_disable = 0; \/* 1 if tls is disabled *\/$/;" v
-tls_listen main.c /^struct socket_info* tls_listen=0;$/;" v
-tls_listen socket_info.h /^struct socket_info* tls_listen;$/;" v
-tls_port_no main.c /^unsigned short tls_port_no=0; \/* default port *\/$/;" v
-tm_binds modules/tm/tm_load.h /^struct tm_binds {$/;" s
-tm_callback modules/tm/t_hooks.h /^struct tm_callback {$/;" s
-tm_exports modules/tm/tm.c /^struct module_exports tm_exports = {$/;" v
-tm_init_tags modules/tm/t_reply.c /^void tm_init_tags()$/;" f
-tm_init_timers modules/tm/timer.c /^struct timer_table *tm_init_timers()$/;" f
-tm_shutdown modules/tm/t_funcs.c /^void tm_shutdown()$/;" f
-tm_stats modules/tm/t_stats.c /^struct t_stats *tm_stats=0;$/;" v
-tm_table modules/tm/h_table.c /^static struct s_table* tm_table;$/;" v file:
-tm_tag modules/tm/t_reply.c /^static str tm_tag = {tm_tags,TOTAG_VALUE_LEN};$/;" v file:
-tm_tag_suffix modules/tm/t_reply.c /^char *tm_tag_suffix;$/;" v
-tm_tags modules/tm/t_reply.c /^char tm_tags[TOTAG_VALUE_LEN];$/;" v
-tm_unix_tx_timeout modules/tm/t_fifo.c /^int tm_unix_tx_timeout = 2; \/* Default is 2 seconds *\/$/;" v
-tmb modules/acc/acc_mod.c /^struct tm_binds tmb;$/;" v
-tmb modules/cpl-c/cpl_env.h /^ struct tm_binds tmb; \/* Structure with pointers to tm funcs *\/$/;" m struct:cpl_functions
-tmb modules/extcmd/extcmd.c /^struct tm_binds tmb;$/;" v
-tmb modules/extcmd/extcmd_funcs.c /^struct tm_binds tmb;$/;" v
-tmb modules/jabber/jabber.c /^struct tm_binds tmb;$/;" v
-tmb modules/mangler/mangler.c /^struct tm_binds tmb; $/;" v
-tmb modules/msilo/msilo.c /^struct tm_binds tmb;$/;" v
-tmb modules/pa/pa_mod.c /^struct tm_binds tmb;$/;" v
-tmb modules/sms/sms.c /^struct tm_binds tmb;$/;" v
-tmb modules/sms/sms_funcs.c /^struct tm_binds tmb;$/;" v
-tmcb_func modules/acc/acc_mod.c /^static void tmcb_func( struct cell* t, int type, struct tmcb_params *ps )$/;" f file:
-tmcb_head_list modules/tm/t_hooks.h /^struct tmcb_head_list {$/;" s
-tmcb_hl modules/tm/h_table.h /^ struct tmcb_head_list tmcb_hl;$/;" m struct:cell
-tmcb_params modules/tm/t_hooks.h /^struct tmcb_params {$/;" s
-tmp cfg.tab.c /^static char* tmp;$/;" v file:
-tmrec_free modules/cpl-c/cpl_time.c /^int tmrec_free(tmrec_p _trp)$/;" f
-tmrec_new modules/cpl-c/cpl_time.c /^tmrec_p tmrec_new()$/;" f
-tmrec_p modules/cpl-c/cpl_time.h /^} tmrec_t, *tmrec_p;$/;" t
-tmrec_t modules/cpl-c/cpl_time.h /^} tmrec_t, *tmrec_p;$/;" t
-tnewtran_f modules/tm/t_lookup.h /^typedef int (*tnewtran_f)(struct sip_msg*);$/;" t
-to ip_addr.h /^ union sockaddr_union to;$/;" m struct:dest_info
-to modules/cpl-c/cpl_run.h /^ str *to;$/;" m struct:cpl_interpreter
-to modules/jabber/xjab_base.h /^ str to; \/\/ destination$/;" m struct:_xj_sipmsg
-to modules/sms/sms_funcs.h /^ str to;$/;" m struct:sms_msg
-to modules/tm/h_table.h /^ str from, callid, cseq_n, to;$/;" m struct:cell
-to parser/msg_parser.h /^ struct hdr_field* to;$/;" m struct:sip_msg
-to12 parser/obsolete/strs.h 92;" d
-to12_CASE parser/case_to.h 41;" d
-to21 parser/obsolete/strs.h 97;" d
-to_32x_len modules/acc/diam_message.c 52;" d file:
-to_32x_len modules/auth_diameter/message.c 52;" d file:
-to_body parser/parse_to.h /^struct to_body{$/;" s
-to_param parser/parse_to.h /^struct to_param{$/;" s
-to_tag_val msg_translator.h /^ str to_tag_val;$/;" m struct:bookmark
-token_char parser/parse_methods.c /^static int token_char(char _c)$/;" f file:
-totag_elem modules/tm/h_table.h /^struct totag_elem {$/;" s
-tpid modules/postgres/con_postgres.h /^ long tpid; \/* record pid of database opener in case one of *\/$/;" m struct:con_postgres
-tr_byxxx_free modules/cpl-c/cpl_time.c /^int tr_byxxx_free(tr_byxxx_p _bxp)$/;" f
-tr_byxxx_init modules/cpl-c/cpl_time.c /^int tr_byxxx_init(tr_byxxx_p _bxp, int _nr)$/;" f
-tr_byxxx_new modules/cpl-c/cpl_time.c /^tr_byxxx_p tr_byxxx_new()$/;" f
-tr_byxxx_p modules/cpl-c/cpl_time.h /^} tr_byxxx_t, *tr_byxxx_p;$/;" t
-tr_byxxx_t modules/cpl-c/cpl_time.h /^} tr_byxxx_t, *tr_byxxx_p;$/;" t
-tr_parse_byday modules/cpl-c/cpl_time.c /^int tr_parse_byday(tmrec_p _trp, char *_in)$/;" f
-tr_parse_bymday modules/cpl-c/cpl_time.c /^int tr_parse_bymday(tmrec_p _trp, char *_in)$/;" f
-tr_parse_bymonth modules/cpl-c/cpl_time.c /^int tr_parse_bymonth(tmrec_p _trp, char *_in)$/;" f
-tr_parse_byweekno modules/cpl-c/cpl_time.c /^int tr_parse_byweekno(tmrec_p _trp, char *_in)$/;" f
-tr_parse_byyday modules/cpl-c/cpl_time.c /^int tr_parse_byyday(tmrec_p _trp, char *_in)$/;" f
-tr_parse_dtend modules/cpl-c/cpl_time.c /^int tr_parse_dtend(tmrec_p _trp, char *_in)$/;" f
-tr_parse_dtstart modules/cpl-c/cpl_time.c /^int tr_parse_dtstart(tmrec_p _trp, char *_in)$/;" f
-tr_parse_duration modules/cpl-c/cpl_time.c /^int tr_parse_duration(tmrec_p _trp, char *_in)$/;" f
-tr_parse_freq modules/cpl-c/cpl_time.c /^int tr_parse_freq(tmrec_p _trp, char *_in)$/;" f
-tr_parse_interval modules/cpl-c/cpl_time.c /^int tr_parse_interval(tmrec_p _trp, char *_in)$/;" f
-tr_parse_until modules/cpl-c/cpl_time.c /^int tr_parse_until(tmrec_p _trp, char *_in)$/;" f
-tr_parse_wkst modules/cpl-c/cpl_time.c /^int tr_parse_wkst(tmrec_p _trp, char *_in)$/;" f
-tr_print modules/cpl-c/cpl_time.c /^int tr_print(tmrec_p _trp)$/;" f
-tr_res_p modules/cpl-c/cpl_time.h /^} tr_res_t, *tr_res_p;$/;" t
-tr_res_t modules/cpl-c/cpl_time.h /^} tr_res_t, *tr_res_p;$/;" t
-transaction_cb modules/tm/t_hooks.h /^typedef void (transaction_cb) (struct cell* t, int type, struct tmcb_params*);$/;" t
-transaction_count modules/tm/h_table.c /^unsigned int transaction_count( void )$/;" f
-translate_pointer ut.h 87;" d
-transport parser/msg_parser.h /^ str transport;$/;" m struct:sip_uri
-transport parser/parse_param.h /^ struct param* transport; \/* transport parameter *\/$/;" m struct:uri_hooks
-transport parser/parse_via.h /^ str transport;$/;" m struct:via_body
-transport test/p_uri.c /^ str transport;$/;" m struct:sip_uri file:
-transport_fin parser/parse_uri.c 284;" d file:
-transport_fin test/p_uri.c 266;" d file:
-transport_val parser/msg_parser.h /^ str transport_val;$/;" m struct:sip_uri
-transport_val test/p_uri.c /^ str transport_val;$/;" m struct:sip_uri file:
-tree modules/jabber/tree234.c /^tree234 *tree;$/;" v
-tree234 modules/jabber/tree234.h /^typedef struct tree234_Tag tree234;$/;" t
-tree234_Tag modules/jabber/tree234.c /^struct tree234_Tag {$/;" s file:
-treedepth modules/jabber/tree234.c /^ int treedepth;$/;" m file:
-treply_f modules/tm/t_reply.h /^typedef int (*treply_f)(struct sip_msg * , unsigned int , char * );$/;" t
-treply_wb_f modules/tm/t_reply.h /^typedef int (*treply_wb_f)( struct cell* trans,$/;" t
-trim modules/cpl-c/cpl_time.c /^static inline char* trim(char* _s)$/;" f file:
-trim modules/mediaproxy/mediaproxy.c /^trim(str *string)$/;" f file:
-trim modules/postgres/db_utils.c /^char* trim(char* _s)$/;" f
-trim trim.h /^static inline void trim(str* _s)$/;" f
-trim_filename fifo_server.c /^static char *trim_filename( char * file )$/;" f file:
-trim_leading trim.h /^static inline void trim_leading(str* _s)$/;" f
-trim_len ut.h 65;" d
-trim_r ut.h 78;" d
-trim_spaces db/db_fifo.c 90;" d file:
-trim_trailing trim.h /^static inline void trim_trailing(str* _s)$/;" f
-trimlr modules/cpl-c/cpl_parser.c 66;" d file:
-trusted_dump modules/permissions/fifo.c /^static int trusted_dump(FILE* pipe, char* response_file)$/;" f file:
-trusted_dump modules/permissions/unixsock.c /^static int trusted_dump(str* msg)$/;" f file:
-trusted_list modules/permissions/hash.h /^struct trusted_list {$/;" s
-trusted_reload modules/permissions/fifo.c /^static int trusted_reload(FILE* pipe, char* response_file)$/;" f file:
-trusted_reload modules/permissions/unixsock.c /^static int trusted_reload(str* msg)$/;" f file:
-trusted_table modules/permissions/permissions.c /^char* trusted_table = "trusted"; \/* Name of trusted table *\/$/;" v
-ts modules/cpl-c/cpl_time.h /^ struct tm ts;$/;" m struct:_tmrec
-tsend_dgram tsend.c /^int tsend_dgram(int fd, char* buf, unsigned int len, $/;" f
-tsend_dgram_ev tsend.c /^int tsend_dgram_ev(int fd, const struct iovec* v, int count, int timeout)$/;" f
-tsend_stream tsend.c /^int tsend_stream(int fd, char* buf, unsigned int len, int timeout)$/;" f
-tsl fastlock.h /^inline static int tsl(fl_lock_t* lock)$/;" f
-tsl test/mips_lock.c /^int tsl(fl_lock_t* lock)$/;" f
-ttl parser/msg_parser.h /^ str ttl;$/;" m struct:sip_uri
-ttl parser/parse_param.h /^ struct param* ttl; \/* ttl parameter *\/$/;" m struct:uri_hooks
-ttl resolve.h /^ unsigned int ttl;$/;" m struct:rdata
-ttl test/p_uri.c /^ str ttl;$/;" m struct:sip_uri file:
-ttl_val parser/msg_parser.h /^ str ttl_val;$/;" m struct:sip_uri
-ttl_val test/p_uri.c /^ str ttl_val;$/;" m struct:sip_uri file:
-tuac_callback modules/extcmd/extcmd_funcs.c /^void tuac_callback( struct cell *t, struct sip_msg *msg, int code, void *param)$/;" f
-tuples modules/pa/presentity.h /^ presence_tuple_t *tuples;$/;" m struct:presentity
-tw_append modules/tm/t_fifo.c /^struct tw_append {$/;" s file:
-tw_appends modules/tm/t_fifo.c /^static struct tw_append *tw_appends;$/;" v file:
-tw_info modules/tm/t_fifo.c /^struct tw_info {$/;" s file:
-tx proxy.h /^ int tx;$/;" m struct:proxy_l
-tx_bytes proxy.h /^ int tx_bytes;$/;" m struct:proxy_l
-tx_sock unixsock_server.c /^static int rx_sock, tx_sock;$/;" v file:
-type db/db_val.h /^ db_type_t type; \/* Type of the value *\/$/;" m
-type lump_struct.h /^ int type; \/* VIA, OTHER, UNSPEC(=0), ... *\/$/;" m struct:lump
-type modules/acc/diam_message.h /^ AAA_AVPDataType type;$/;" m struct:avp
-type modules/auth_diameter/diameter_msg.h /^ AAA_AVPDataType type;$/;" m struct:avp
-type modules/dbtext/dbt_lib.h /^ int type;$/;" m struct:_dbt_column
-type modules/jabber/xjab_base.h /^ int type; \/\/ type of message$/;" m struct:_xj_sipmsg
-type modules/jabber/xode.h /^ unsigned short type;$/;" m struct:xode_struct
-type modules/mediaproxy/mediaproxy.c /^ str type; \/\/ stream type (`audio', `video', ...)$/;" m file:
-type modules/msilo/msfuncs.h /^ str type;$/;" m struct:_content_type
-type modules/tm/t_fifo.c /^ int type;$/;" m struct:hdr_avp file:
-type parser/hf.h /^ int type; \/* Header field type *\/$/;" m struct:hdr_field
-type parser/parse_content.h /^ unsigned short type;$/;" m struct:mime_type
-type parser/parse_disposition.h /^ str type;$/;" m struct:disposition
-type parser/parse_fline.h /^ int type; \/* Type of the Message - Request\/Response *\/$/;" m struct:msg_start
-type parser/parse_param.h /^ ptype_t type; \/* Type of the parameter *\/$/;" m struct:param
-type parser/parse_to.h /^ int type; \/* Type of parameter *\/$/;" m struct:to_param
-type parser/parse_via.h /^ int type; \/* Type of the parameter *\/$/;" m struct:via_param
-type re.h /^ enum replace_special type;$/;" m struct:replace_with
-type resolve.h /^ unsigned short type;$/;" m struct:rdata
-type route_struct.h /^ int type; \/* forward, drop, log, send ...*\/$/;" m struct:action
-type route_struct.h /^ int type; \/* exp, exp_elem *\/$/;" m struct:expr
-type sr_module.h /^ modparam_t type; \/* param. type *\/$/;" m struct:param_export_
-type tcp_conn.h /^ enum sip_protos type; \/* PROTO_TCP or a protocol over it, e.g. TLS *\/$/;" m struct:tcp_connection
-type usr_avp.c /^ int type;$/;" m struct:avp_spec file:
-type_node_s parser/parse_content.c /^typedef struct type_node_s {$/;" s file:
-type_node_t parser/parse_content.c /^}type_node_t;$/;" t file:
-type_tree parser/parse_content.c /^static type_node_t type_tree[] = {$/;" v file:
-types db/db_res.h /^ db_type_t* types; \/* Column types *\/$/;" m struct:db_res::<anonymous>
-types modules/tm/t_hooks.h /^ int types; \/* types of events that trigger the callback*\/$/;" m struct:tm_callback
-types modules/usrloc/ul_callback.h /^ int types; \/* types of events that trigger the callback*\/$/;" m struct:ul_callback
-u ip_addr.h /^ }u;$/;" m struct:ip_addr
-u lump_struct.h /^ }u;$/;" m struct:lump
-u mem/f_malloc.h /^ }u;$/;" m struct:fm_frag
-u mem/q_malloc.h /^ }u;$/;" m struct:qm_frag
-u mem/vq_malloc.h /^ } u;$/;" m struct:vqm_frag
-u modules/exec/exec_hf.h /^ } u;$/;" m struct:hf_wrapper
-u parser/parse_fline.h /^ }u;$/;" m struct:msg_start
-u re.h /^ }u;$/;" m struct:replace_with
-u_wide_int modules/jabber/xsnprintf.c /^typedef unsigned WIDE_INT u_wide_int;$/;" t file:
-ua_client modules/tm/h_table.h /^typedef struct ua_client$/;" s
-ua_client_type modules/tm/h_table.h /^}ua_client_type;$/;" t
-ua_server modules/tm/h_table.h /^typedef struct ua_server$/;" s
-ua_server_type modules/tm/h_table.h /^}ua_server_type;$/;" t
-uac modules/tm/h_table.h /^ struct ua_client uac[ MAX_BRANCHES ];$/;" m struct:cell
-uac_from modules/tm/uac.c /^char* uac_from = "sip:foo at foo.bar"; \/* Module parameter *\/$/;" v
-uac_init modules/tm/uac.c /^int uac_init(void) $/;" f
-uas modules/tm/h_table.h /^ struct ua_server uas;$/;" m struct:cell
-ucontact modules/usrloc/ucontact.h /^typedef struct ucontact {$/;" s
-ucontact_t modules/usrloc/ucontact.h /^} ucontact_t;$/;" t
-udomain modules/usrloc/udomain.h /^typedef struct udomain {$/;" s
-udomain_add modules/usrloc/udomain.c /^static inline void udomain_add(udomain_t* _d, urecord_t* _r)$/;" f file:
-udomain_remove modules/usrloc/udomain.c /^static inline void udomain_remove(udomain_t* _d, urecord_t* _r)$/;" f file:
-udomain_t modules/usrloc/udomain.h /^} udomain_t;$/;" t
-udp_init udp_server.c /^int udp_init(struct socket_info* sock_info)$/;" f
-udp_listen main.c /^struct socket_info* udp_listen=0;$/;" v
-udp_listen socket_info.h /^struct socket_info* udp_listen;$/;" v
-udp_rcv_loop udp_server.c /^int udp_rcv_loop()$/;" f
-udp_send test/sock_conn.c /^int udp_send()$/;" f
-udp_send test/sock_disc.c /^int udp_send()$/;" f
-udp_send udp_server.c /^int udp_send(struct socket_info *source, char *buf, unsigned len,$/;" f
-udp_server_h udp_server.h 30;" d
-uid main.c /^int uid = 0;$/;" v
-ul modules/nathelper/nathelper.c /^static usrloc_api_t ul;$/;" v file:
-ul modules/registrar/reg_mod.c /^usrloc_api_t ul; \/* Structure containing pointers to usrloc functions *\/$/;" v
-ul modules/registrar/reg_mod.h /^usrloc_api_t ul; \/* Structure containing pointers to usrloc functions *\/$/;" v
-ul_add modules/usrloc/ul_fifo.c /^static int ul_add(FILE* pipe, char* response_file)$/;" f file:
-ul_add modules/usrloc/ul_unixsock.c /^static int ul_add(str* msg)$/;" f file:
-ul_callback modules/usrloc/ul_callback.h /^struct ul_callback {$/;" s
-ul_cb modules/usrloc/ul_callback.h /^typedef void (ul_cb) (ucontact_t *c, int type, void *param);$/;" t
-ul_dbf modules/usrloc/ul_mod.c /^db_func_t ul_dbf;$/;" v
-ul_dbh modules/usrloc/ul_mod.c /^db_con_t* ul_dbh; \/* Database connection handle *\/$/;" v
-ul_dump modules/usrloc/ul_fifo.c /^int static ul_dump(FILE* pipe, char* response_file)$/;" f file:
-ul_dump modules/usrloc/ul_unixsock.c /^static int ul_dump(str* msg)$/;" f file:
-ul_flush modules/usrloc/ul_fifo.c /^int static ul_flush(FILE* pipe, char* response_file)$/;" f file:
-ul_flush modules/usrloc/ul_unixsock.c /^static int ul_flush(str* msg)$/;" f file:
-ul_rm modules/usrloc/ul_fifo.c /^int static ul_rm( FILE *pipe, char *response_file )$/;" f file:
-ul_rm modules/usrloc/ul_unixsock.c /^static int ul_rm(str* msg)$/;" f file:
-ul_rm_contact modules/usrloc/ul_fifo.c /^static int ul_rm_contact(FILE* pipe, char* response_file)$/;" f file:
-ul_rm_contact modules/usrloc/ul_unixsock.c /^static int ul_rm_contact(str* msg)$/;" f file:
-ul_show_contact modules/usrloc/ul_fifo.c /^static inline int ul_show_contact(FILE* pipe, char* response_file)$/;" f file:
-ul_show_contact modules/usrloc/ul_unixsock.c /^static inline int ul_show_contact(str* msg)$/;" f file:
-ul_stats_cmd modules/usrloc/ul_fifo.c /^int static ul_stats_cmd( FILE *pipe, char *response_file )$/;" f file:
-ul_stats_cmd modules/usrloc/ul_unixsock.c /^static int ul_stats_cmd(str* msg)$/;" f file:
-ulb modules/cpl-c/cpl_env.h /^ usrloc_api_t ulb; \/* Structure with pointers to usrloc funcs *\/$/;" m struct:cpl_functions
-ulcb_head_list modules/usrloc/ul_callback.h /^struct ulcb_head_list {$/;" s
-ulcb_list modules/usrloc/ul_callback.c /^struct ulcb_head_list* ulcb_list = 0;$/;" v
-umode modules/nathelper/nathelper.c /^static int umode = 0;$/;" v file:
-un_escape ut.h /^inline static int un_escape(str *user, str *new_user ) $/;" f
-unforce_rtp_proxy_f modules/nathelper/nathelper.c /^unforce_rtp_proxy_f(struct sip_msg* msg, char* str1, char* str2)$/;" f file:
-unix_server_loop unixsock_server.c /^static void unix_server_loop(void)$/;" f file:
-unix_sock pt.h /^ int unix_sock; \/* unix socket on which tcp main listens *\/$/;" m struct:process_table
-unix_sock tcp_main.c /^ int unix_sock; \/* unix "read child" sock fd *\/$/;" m struct:tcp_child file:
-unix_tcp_sock tcp_main.c /^int unix_tcp_sock;$/;" v
-unixsock_add_to_reply unixsock_server.c /^int unixsock_add_to_reply(const char* buf, size_t len)$/;" f
-unixsock_children unixsock_server.c /^int unixsock_children = 1;$/;" v
-unixsock_cmd scripts/sc_unixsock /^unixsock_cmd()$/;" f
-unixsock_cmd unixsock_server.h /^struct unixsock_cmd {$/;" s
-unixsock_f unixsock_server.h /^typedef int (unixsock_f)(str* msg);$/;" t
-unixsock_find_domain modules/usrloc/ul_unixsock.c /^static inline void unixsock_find_domain(str* _name, udomain_t** _d)$/;" f file:
-unixsock_hash modules/tm/h_table.c /^int unixsock_hash(str* msg)$/;" f
-unixsock_name unixsock_server.c /^char* unixsock_name = 0;$/;" v
-unixsock_read_body unixsock_server.c /^int unixsock_read_body(str* body, str* source)$/;" f
-unixsock_read_line unixsock_server.c /^int unixsock_read_line(str* line, str* source)$/;" f
-unixsock_read_lineset unixsock_server.c /^int unixsock_read_lineset(str* lineset, str* source)$/;" f
-unixsock_register_cmd unixsock_server.c /^int unixsock_register_cmd(char* command, unixsock_f* f)$/;" f
-unixsock_reply_asciiz unixsock_server.c /^int unixsock_reply_asciiz(char* str)$/;" f
-unixsock_reply_printf unixsock_server.c /^int unixsock_reply_printf(char* fmt, ...)$/;" f
-unixsock_reply_reset unixsock_server.c /^void unixsock_reply_reset(void)$/;" f
-unixsock_reply_send unixsock_server.c /^ssize_t unixsock_reply_send(void)$/;" f
-unixsock_reply_sendto unixsock_server.c /^ssize_t unixsock_reply_sendto(struct sockaddr_un* to)$/;" f
-unixsock_reply_str unixsock_server.c /^int unixsock_reply_str(str* s)$/;" f
-unixsock_sender_addr unixsock_server.c /^struct sockaddr_un* unixsock_sender_addr(void)$/;" f
-unixsock_stats modules/tm/t_stats.c /^int static unixsock_stats(str* cmd)$/;" f file:
-unixsock_t_reply modules/tm/t_reply.c /^int unixsock_t_reply(str* msg)$/;" f
-unixsock_tx_timeout unixsock_server.c /^int unixsock_tx_timeout = 2000; \/* Timeout for sending replies in milliseconds *\/$/;" v
-unixsock_uac modules/tm/uac_unixsock.c /^int unixsock_uac(str* msg)$/;" f
-unixsock_uac_cancel modules/tm/t_cancel.c /^int unixsock_uac_cancel(str* msg)$/;" f
-unlink_lump_rpl data_lump_rpl.c /^void unlink_lump_rpl(struct sip_msg * msg, struct lump_rpl* lump)$/;" f
-unlink_timer_lists modules/tm/timer.c /^void unlink_timer_lists()$/;" f
-unlink_timers modules/tm/timer.c /^static void unlink_timers( struct cell *t )$/;" f file:
-unlock modules/exec/kill.c 68;" d file:
-unlock modules/tm/lock.h 82;" d
-unlock modules/tm/lock.h 85;" d
-unlock_hash modules/tm/h_table.c /^void unlock_hash(int i) $/;" f
-unlock_pdomain modules/pa/pdomain.c /^void unlock_pdomain(pdomain_t* _d)$/;" f
-unlock_tree_branch modules/pike/ip_tree.c /^void unlock_tree_branch(unsigned char b)$/;" f
-unlock_udomain modules/usrloc/udomain.c /^void unlock_udomain(udomain_t* _d)$/;" f
-unlock_udomain modules/usrloc/usrloc.h /^ unlock_udomain_t unlock_udomain;$/;" m struct:usrloc_api
-unlock_udomain_t modules/usrloc/udomain.h /^typedef void (*unlock_udomain_t)(udomain_t* _d);$/;" t
-unmatched_totag modules/tm/t_reply.c /^int unmatched_totag(struct cell *t, struct sip_msg *ack)$/;" f
-unparsed parser/msg_parser.h /^ char* unparsed; \/* here we stopped parsing*\/$/;" m struct:sip_msg
-unput lex.yy.c 166;" d file:
-unreg modules/pa/pdomain.h /^ unregister_watcher_t unreg; \/* Unregister watcher function *\/$/;" m struct:pdomain
-unregister_watcher modules/jabber/xjab_load.h /^ pa_unregister_watcher_f unregister_watcher;$/;" m struct:xjab_binds
-unregister_watcher modules/usrloc/notify.c /^int unregister_watcher(str* _f, str* _t, notcb_t _c, void* _data)$/;" f
-unregister_watcher modules/usrloc/usrloc.h /^ unregister_watcher_t unregister_watcher;$/;" m struct:usrloc_api
-unregister_watcher_t modules/pa/pdomain.h /^typedef int (*unregister_watcher_t)(str* _f, str* _t, void* _cb, void* _data);$/;" t
-unregister_watcher_t modules/usrloc/notify.h /^typedef int (*unregister_watcher_t)(str* _f, str* _t, notcb_t _c, void* _data);$/;" t
-unset_env modules/exec/exec_hf.c /^void unset_env(environment_t *backup_env)$/;" f
-unsu_CASE parser/case_unsu.h 65;" d
-unsupported parser/msg_parser.h /^ struct hdr_field* unsupported;$/;" m struct:sip_msg
-until modules/cpl-c/cpl_time.h /^ time_t until;$/;" m struct:_tmrec
-up_since fifo_server.c /^static time_t up_since;$/;" v file:
-up_since unixsock_server.c /^static time_t up_since;$/;" v file:
-up_since_ctime fifo_server.c /^static char up_since_ctime[MAX_CTIME_LEN];$/;" v file:
-up_since_ctime unixsock_server.c /^static char up_since_ctime[MAX_CTIME_LEN];$/;" v file:
-update db/db.h /^ db_update_f update; \/* Update table *\/$/;" m struct:db_func
-update modules/registrar/save.c /^static inline int update(struct sip_msg* _m, urecord_t* _r, contact_t* _c, str* _ua)$/;" f file:
-update_in_timer modules/pike/timer.c /^void update_in_timer(struct list_link *head, struct list_link *ll)$/;" f
-update_local_tags modules/tm/t_reply.c /^static inline void update_local_tags(struct cell *trans, $/;" f file:
-update_new_uri modules/pdt/pdt.c /^int update_new_uri(struct sip_msg *msg, int code_len, char* host_port)$/;" f
-update_presentity modules/pa/subscribe.c /^static int update_presentity(struct sip_msg* _m, struct pdomain* _d, $/;" f file:
-update_reply_stats modules/tm/t_stats.h /^inline static void update_reply_stats( int code ) {$/;" f
-update_sl_failures modules/sl/sl_stats.c /^void update_sl_failures( void )$/;" f
-update_sl_stats modules/sl/sl_stats.c /^void update_sl_stats( int code ) $/;" f
-update_sock_struct_from_ip forward.h 67;" d
-update_sock_struct_from_via forward.c /^int update_sock_struct_from_via( union sockaddr_union* to,$/;" f
-update_totag_set modules/tm/t_reply.c /^inline static int update_totag_set(struct cell *t, struct sip_msg *ok)$/;" f file:
-update_ucontact modules/usrloc/ucontact.c /^int update_ucontact(ucontact_t* _c, time_t _e, qvalue_t _q, str* _cid, int _cs,$/;" f
-update_ucontact modules/usrloc/usrloc.h /^ update_ucontact_t update_ucontact;$/;" m struct:usrloc_api
-update_ucontact_t modules/usrloc/ucontact.h /^typedef int (*update_ucontact_t)(ucontact_t* _c, time_t _e, qvalue_t _q, str* _cid, int _cs, $/;" t
-update_watcher modules/pa/watcher.c /^int update_watcher(watcher_t* _w, time_t _e)$/;" f
-uptime_cmd unixsock_server.c /^static int uptime_cmd(str* msg)$/;" f file:
-uptime_fifo_cmd fifo_server.c /^static int uptime_fifo_cmd( FILE *stream, char *response_file )$/;" f file:
-uread modules/mediaproxy/mediaproxy.c /^uread(int fd, void *buf, size_t count)$/;" f file:
-urecord modules/usrloc/urecord.h /^typedef struct urecord {$/;" s
-urecord_t modules/usrloc/urecord.h /^} urecord_t;$/;" t
-uri dset.c /^ char uri[MAX_URI_SIZE];$/;" m struct:branch file:
-uri modules/cpl-c/loc_set.h /^ str uri;$/;" m struct:location::address
-uri modules/dispatcher/dispatch.c /^ str uri;$/;" m struct:_ds_dest file:
-uri modules/jabber/xjab_jconf.h /^ str uri;$/;" m struct:_xj_jconf
-uri modules/pa/presentity.h /^ str uri;$/;" m struct:resource_list
-uri modules/pa/presentity.h /^ str uri; \/* URI of presentity *\/$/;" m struct:presentity
-uri modules/pa/watcher.h /^ str uri; \/* Uri of the watcher *\/$/;" m struct:watcher
-uri modules/tm/h_table.h /^ str uri;$/;" m struct:ua_client
-uri parser/contact/contact.h /^ str uri; \/* contact uri *\/$/;" m struct:contact
-uri parser/digest/digest_parser.h /^ str uri; \/* URI *\/$/;" m struct:dig_cred
-uri parser/parse_fline.h /^ str uri; \/* Request URI *\/$/;" m struct:msg_start::<anonymous>::<anonymous>
-uri parser/parse_nameaddr.h /^ str uri; \/* Uri part without surrounding <> *\/$/;" m struct:name_addr
-uri parser/parse_param.h /^ struct uri_hooks uri; \/* URI hooks *\/$/;" m union:param_hooks
-uri parser/parse_to.h /^ str uri; \/* URI *\/$/;" m struct:to_body
-uri2attr modules/avp/avp.c /^static int uri2attr(struct sip_msg* msg, char* attr, char* foo)$/;" f file:
-uri2proxy modules/tm/ut.h /^inline static struct proxy_l *uri2proxy( str *uri, int proto )$/;" f
-uri2sock modules/tm/ut.h /^static inline struct socket_info *uri2sock(struct sip_msg* msg, str *uri,$/;" f
-uri_domain_col modules/uri_db/uridb_mod.c /^str uri_domain_col = {DOMAIN_COL, DOMAIN_COL_LEN}; \/* Name of domain column in URI table *\/$/;" v
-uri_fixup modules/uri/uri_mod.c /^static int uri_fixup(void** param, int param_no)$/;" f file:
-uri_format modules/mangler/contact_ops.h /^struct uri_format$/;" s
-uri_hooks parser/parse_param.h /^struct uri_hooks {$/;" s
-uri_param_1 modules/uri/checks.c /^int uri_param_1(struct sip_msg* _msg, char* _param, char* _str2)$/;" f
-uri_param_2 modules/uri/checks.c /^int uri_param_2(struct sip_msg* _msg, char* _param, char* _value)$/;" f
-uri_table modules/uri_db/uridb_mod.c /^str uri_table = {URI_TABLE, URI_TABLE_LEN}; \/* Name of URI table *\/$/;" v
-uri_trans modules/tm/sip_msg.c /^static void uri_trans(char *new_buf, char *org_buf, struct sip_uri *uri)$/;" f file:
-uri_type cfg.y /^uri_type: URI {$$=URI_O;}$/;" l
-uri_uriuser_col modules/uri_db/uridb_mod.c /^str uri_uriuser_col = {URI_USER_COL, URI_USER_COL_LEN}; \/* Name of uri_user column in URI table *\/$/;" v
-uri_user_col modules/uri_db/uridb_mod.c /^str uri_user_col = {USER_COL, USER_COL_LEN}; \/* Name of username column in URI table *\/$/;" v
-uridb_db_bind modules/uri_db/checks.c /^int uridb_db_bind(char* db_url)$/;" f
-uridb_db_close modules/uri_db/checks.c /^void uridb_db_close()$/;" f
-uridb_db_init modules/uri_db/checks.c /^int uridb_db_init(char* db_url)$/;" f
-uridb_db_ver modules/uri_db/checks.c /^int uridb_db_ver(char* db_url, str* name)$/;" f
-uridb_dbf modules/uri_db/checks.c /^static db_func_t uridb_dbf;$/;" v file:
-urlLength modules/cpl/jcpli.h /^ int urlLength;$/;" m struct:_Location
-usage mem/vq_malloc.h /^ unsigned long usage[ MAX_BUCKET +1];$/;" m struct:vqm_block
-usage modules/postgres/serpgctl /^usage() {$/;" f
-usage profile/launch.sh /^function usage()$/;" f
-usage scripts/filter_log.sh /^usage()$/;" f
-usage scripts/sc /^usage() {$/;" f
-usage scripts/sc_unixsock /^usage() {$/;" f
-usage scripts/ser_mysql.sh /^usage() {$/;" f
-usage scripts/serconf.sh /^function usage()$/;" f
-usage scripts/serstats /^usage() {$/;" f
-use_bsearch modules/pa/pa_mod.c /^int use_bsearch = 0;$/;" v
-use_contact modules/sms/sms.c /^int use_contact = 0;$/;" v
-use_contact modules/sms/sms_funcs.c /^int use_contact;$/;" v
-use_db modules/pa/pa_mod.c /^int use_db = 0;$/;" v
-use_domain modules/auth_db/authdb_mod.c /^int use_domain = 0; \/* Use also domain when looking up a table row *\/$/;" v
-use_domain modules/auth_diameter/auth_diameter.c /^int use_domain = 0;$/;" v
-use_domain modules/auth_diameter/auth_diameter.h /^int use_domain;$/;" v
-use_domain modules/avp_db/avp_db.c /^static int use_domain = 0;$/;" v file:
-use_domain modules/avpops/avpops.c /^static int use_domain = 0; \/* if domain should be use for avp matching *\/$/;" v file:
-use_domain modules/group/group_mod.c /^int use_domain = 0;$/;" v
-use_domain modules/group_radius/grouprad_mod.c /^int use_domain = 0; \/* By default we use domain *\/$/;" v
-use_domain modules/registrar/reg_mod.c /^int use_domain = 0;$/;" v
-use_domain modules/speeddial/speeddial.c /^int use_domain = 0;$/;" v
-use_domain modules/uri_db/uridb_mod.c /^int use_domain = 0; \/* Should does_uri_exist honor the domain part ? *\/$/;" v
-use_domain modules/usrloc/ul_mod.c /^int use_domain = 0; \/* Whether usrloc should use domain part of aor *\/$/;" v
-use_domain modules/usrloc/usrloc.h /^ int use_domain;$/;" m struct:usrloc_api
-use_location_package modules/pa/pa_mod.c /^int use_location_package = 0;$/;" v
-use_place_table modules/pa/pa_mod.c /^int use_place_table = 0;$/;" v
-use_table db/db.h /^ db_use_table_f use_table; \/* Specify table name *\/$/;" m struct:db_func
-use_table modules/mysql/db_con.c /^int use_table(db_con_t* _h, const char* _t)$/;" f
-use_table modules/postgres/db_con.c /^int use_table(db_con_t* _h, const char* _t)$/;" f
-use_uri_table modules/uri_db/uridb_mod.c /^int use_uri_table = 0; \/* Should uri table be used *\/$/;" v
-used mem/f_malloc.h /^ unsigned long used; \/* alloc'ed size*\/$/;" m struct:fm_block
-used mem/q_malloc.h /^ unsigned long used; \/* alloc'ed size*\/$/;" m struct:qm_block
-used modules/jabber/xode.h /^ int size, used;$/;" m struct:xode_pool_heap
-user main.c /^char* user=0;$/;" v
-user modules/cpl-c/cpl_run.h /^ str user; \/* user *\/$/;" m struct:cpl_interpreter
-user modules/pdt/doc/web/request.php /^$user="root";$/;" v
-user parser/digest/digest_parser.h /^ str user; \/* username part only *\/$/;" m struct:username
-user parser/msg_parser.h /^ str user; \/* Username *\/$/;" m struct:sip_uri
-user test/p_uri.c /^ str user; \/* Username *\/$/;" m struct:sip_uri file:
-user2uid main.c /^static int user2uid(int* uid, int* gid, char* user)$/;" f file:
-userLocation modules/mediaproxy/mediaproxy.c /^static usrloc_api_t userLocation;$/;" v file:
-user_CASE parser/case_user.h 46;" d
-user_CASE parser/digest/param_parser.c 92;" d file:
-user_agent modules/cpl-c/cpl_run.h /^ str *user_agent;$/;" m struct:cpl_interpreter
-user_agent modules/usrloc/ucontact.h /^ str user_agent; \/* User-Agent header field *\/$/;" m struct:ucontact
-user_agent parser/msg_parser.h /^ struct hdr_field* user_agent;$/;" m struct:sip_msg
-user_agent_col modules/usrloc/ul_mod.c /^str user_agent_col = {USER_AGENT_COL, sizeof(USER_AGENT_COL) - 1}; \/* Name of column containing user agent string *\/$/;" v
-user_avps modules/tm/h_table.h /^ struct usr_avp *user_avps;$/;" m struct:cell
-user_col modules/usrloc/ul_mod.c /^str user_col = {USER_COL, sizeof(USER_COL) - 1}; \/* Name of column containing usernames *\/$/;" v
-user_column modules/auth_db/authdb_mod.c /^str user_column = {USER_COL, USER_COL_LEN};$/;" v
-user_column modules/group/group_mod.c /^str user_column = {USER_COL, USER_COL_LEN};$/;" v
-user_column modules/speeddial/speeddial.c /^char* user_column = "username";$/;" v
-user_param parser/msg_parser.h /^ str user_param;$/;" m struct:sip_uri
-user_param test/p_uri.c /^ str user_param;$/;" m struct:sip_uri file:
-user_param_val parser/msg_parser.h /^ str user_param_val;$/;" m struct:sip_uri
-user_param_val test/p_uri.c /^ str user_param_val;$/;" m struct:sip_uri file:
-userdatalength modules/sms/sms_funcs.h /^ int userdatalength;$/;" m struct:incame_sms
-userid modules/jabber/xjab_presence.h /^ str userid;$/;" m struct:_xj_pres_cell
-username modules/mangler/contact_ops.h /^ str username;$/;" m struct:uri_format
-username modules/mysql/my_id.h /^ str username; \/* Username, case sensitive *\/$/;" m struct:my_id
-username parser/digest/digest_parser.h /^ struct username username; \/* Username *\/$/;" m struct:dig_cred
-username parser/digest/digest_parser.h /^struct username {$/;" s
-username_col modules/avpops/avpops_db.h /^ char *username_col;$/;" m struct:db_scheme
-username_column modules/avp_db/avp_db.c /^static char* username_column = "username";$/;" v file:
-users modules/pa/pdomain.h /^ int users; \/* Number of registered presentities *\/$/;" m struct:pdomain
-users modules/pa/presentity.h /^ resource_list_t *users;$/;" m struct:location_package
-users modules/usrloc/udomain.h /^ int users; \/* Number of registered users *\/$/;" m struct:udomain
-useruri_buf modules/speeddial/sdlookup.c /^char useruri_buf[MAX_USERURI_SIZE];$/;" v
-usr_avp usr_avp.h /^struct usr_avp {$/;" s
-usrloc modules/postgres/serpgctl /^usrloc() {$/;" f
-usrloc scripts/sc /^usrloc() {$/;" f
-usrloc scripts/sc_unixsock /^usrloc() {$/;" f
-usrloc_api modules/usrloc/usrloc.h /^typedef struct usrloc_api {$/;" s
-usrloc_api_t modules/usrloc/usrloc.h /^} usrloc_api_t;$/;" t
-ut_h ut.h 44;" d
-uuid_col modules/avpops/avpops_db.h /^ char *uuid_col;$/;" m struct:db_scheme
-uuid_column modules/avp_db/avp_db.c /^static char* uuid_column = "uuid";$/;" v file:
-uval cfg.tab.c /^ unsigned long uval;$/;" m union:YYSTYPE file:
-uval cfg.tab.h /^ unsigned long uval;$/;" m union:YYSTYPE
-uwrite modules/mediaproxy/mediaproxy.c /^uwrite(int fd, const void *buf, size_t count)$/;" f file:
-v modules/acc/dict.h /^ int v;$/;" m struct:attr
-v modules/acc/dict.h /^ int v;$/;" m struct:val
-vIA1 parser/obsolete/strs.h 60;" d
-vIA2 parser/obsolete/strs.h 69;" d
-vIa1 parser/obsolete/strs.h 59;" d
-vIa2 parser/obsolete/strs.h 68;" d
-val db/db_val.h /^ } val; \/* union of all possible types *\/$/;" m
-val lock_ops.h /^ int val; \/* value for SETVAL *\/$/;" m union:semun
-val modules/acc/dict.h /^struct val {$/;" s
-val modules/avpops/avpops_impl.h /^ int_str val; \/* values int or str *\/$/;" m struct:fis_param
-val modules/exec/exec_hf.h /^ str val;$/;" m struct:attrval
-val parser/parse_expires.h /^ int val; \/* Parsed value *\/$/;" m struct:exp_body
-val test/locking/locking_test.c /^ int val; \/* value for SETVAL *\/$/;" m union:semun file:
-val usr_avp.c /^ int val;$/;" m struct:str_int_data file:
-val usr_avp.c /^ str val;$/;" m struct:str_str_data file:
-val2str modules/mysql/val.c /^int val2str(MYSQL* _c, db_val_t* _v, char* _s, int* _len)$/;" f
-val2str modules/postgres/db_val.c /^int val2str(db_val_t* _v, char* _s, int* _len)$/;" f
-val_column modules/avp_db/avp_db.c /^static char* val_column = "value";$/;" v file:
-valid parser/parse_expires.h /^ unsigned char valid; \/* Was parsing successful ? *\/$/;" m struct:exp_body
-valid_to modules/acc/acc.c /^static inline struct hdr_field *valid_to( struct cell *t, $/;" f file:
-vals modules/acc/acc_mod.c /^struct val vals[V_MAX];$/;" v
-vals modules/auth_radius/authrad_mod.c /^struct val vals[V_MAX];$/;" v
-vals modules/avp_radius/avp_radius.c /^struct val vals[V_MAX];$/;" v
-vals modules/group_radius/grouprad_mod.c /^struct val vals[V_MAX];$/;" v
-vals modules/uri_radius/urirad_mod.c /^struct val vals[V_MAX];$/;" v
-vals_cmp modules/avpops/avpops_db.c /^static db_val_t vals_cmp[3]; \/* statement as in "select" and "delete" *\/$/;" v file:
-value lump_struct.h /^ char * value; \/* used for ADD *\/$/;" m union:lump::<anonymous>
-value modules/permissions/rule.h /^ char value[EXPRESSION_LENGTH+1];$/;" m struct:expression_struct
-value modules/tm/dlg.h /^ unsigned int value; \/* Sequence value *\/$/;" m struct:dlg_seq
-value parser/parse_to.h /^ str value; \/* Parameter value *\/$/;" m struct:to_param
-value parser/parse_via.h /^ str value; \/* Value of the parameter *\/$/;" m struct:via_param
-value_col modules/avpops/avpops_db.h /^ char *value_col;$/;" m struct:db_scheme
-value_common_cases parser/parse_uri.c 201;" d file:
-value_common_cases test/p_uri.c 183;" d file:
-value_switch parser/parse_uri.c 255;" d file:
-value_switch test/p_uri.c 237;" d file:
-value_switch_big parser/parse_uri.c 267;" d file:
-value_switch_big test/p_uri.c 249;" d file:
-values db/db_row.h /^ db_val_t* values; \/* Columns in the row *\/$/;" m struct:db_row
-var_type modules/exec/exec_hf.h /^ enum wrapper_type var_type;$/;" m struct:hf_wrapper
-varchar modules/pa/pa.sql /^ r_uri varchar(128) NOT NULL,$/;" F
-varchar modules/pa/pa.sql /^ username varchar(64) not null primary key,$/;" F
-varchar modules/speeddial/doc/speeddial.sql /^ username varchar(64) NOT NULL default '',$/;" F
-vendorID modules/acc/diam_dict.h 9;" d
-vendorID modules/auth_diameter/defs.h 4;" d
-vendorId modules/acc/diam_message.h /^ AAAVendorId vendorId;$/;" m struct:avp
-vendorId modules/auth_diameter/diameter_msg.h /^ AAAVendorId vendorId;$/;" m struct:avp
-verify modules/jabber/tree234.c /^void verify(void) {$/;" f
-verify_fmt modules/acc/acc_mod.c /^static int verify_fmt(char *fmt) {$/;" f file:
-version main.c /^static char* version=SER_FULL_VERSION;$/;" v file:
-version parser/parse_fline.h /^ str version; \/* SIP version *\/$/;" m struct:msg_start::<anonymous>::<anonymous>
-version parser/parse_via.h /^ str version; $/;" m struct:via_body
-version test/dns_query.c /^static char* version="dns_query 0.1";$/;" v file:
-version test/gethostbyaddr.c /^static char* version="gethostbyaddr 0.1";$/;" v file:
-version test/gethostbyname.c /^static char* version="gethostbyname 0.1";$/;" v file:
-version test/ifls.c /^static char* version="ifls 0.1";$/;" v file:
-version test/locking/locking_test.c /^static char *version="locking_test 0.1-"$/;" v file:
-version test/re_test.c /^static char *version="re_test 0.1";$/;" v file:
-version test/resolver_test.c /^static char *version="resolver_test 0.1";$/;" v file:
-version test/udp_flood.c /^static char *version="udp_flood 0.1";$/;" v file:
-version test/udp_flood_disc.c /^static char *version="udp_flood_disc 0.1";$/;" v file:
-version test/udp_test_proxy.c /^static char *version="udp_test_proxy 0.1";$/;" v file:
-version_cmd unixsock_server.c /^static int version_cmd(str* msg)$/;" f file:
-version_control sr_module.c /^static inline int version_control(void *handle, char *path)$/;" f file:
-version_h version.h 32;" d
-viA1 parser/obsolete/strs.h 58;" d
-viA2 parser/obsolete/strs.h 67;" d
-via1 parser/msg_parser.h /^ struct via_body* via1; \/* The first via *\/$/;" m struct:sip_msg
-via1 parser/obsolete/strs.h 31;" d
-via1_CASE parser/case_via.h 40;" d
-via1_matching modules/tm/t_lookup.c /^int via1_matching=1;$/;" v
-via2 parser/msg_parser.h /^ struct via_body* via2; \/* The second via *\/$/;" m struct:sip_msg
-via2 parser/obsolete/strs.h 66;" d
-via2_CASE parser/case_via.h 45;" d
-via_1918 modules/nathelper/nathelper.c /^via_1918(struct sip_msg* msg)$/;" f file:
-via_body parser/parse_via.h /^struct via_body { $/;" s
-via_body_cloner modules/tm/sip_msg.c /^inline struct via_body* via_body_cloner( char* new_buf,$/;" f
-via_builder msg_translator.c /^char* via_builder( unsigned int *len, $/;" f
-via_cnt parser/msg_parser.c /^int via_cnt;$/;" v
-via_len ut.h 90;" d
-via_matching modules/tm/t_lookup.c /^static inline int via_matching( struct via_body *inv_via, $/;" f file:
-via_param parser/parse_via.h /^struct via_param {$/;" s
-vqm_block mem/vq_malloc.h /^struct vqm_block{$/;" s
-vqm_debug_frag mem/vq_malloc.c /^void vqm_debug_frag(struct vqm_block* qm, struct vqm_frag* f)$/;" f
-vqm_detach_free mem/vq_malloc.c /^static inline void vqm_detach_free( struct vqm_block* qm,$/;" f file:
-vqm_frag mem/vq_malloc.h /^struct vqm_frag {$/;" s
-vqm_frag_end mem/vq_malloc.h /^struct vqm_frag_end{$/;" s
-vqm_free mem/vq_malloc.c /^void vqm_free(struct vqm_block* qm, void* p, char* file, char* func, $/;" f
-vqm_malloc mem/vq_malloc.c /^void* vqm_malloc(struct vqm_block* qm, unsigned int size, $/;" f
-vqm_malloc_init mem/vq_malloc.c /^struct vqm_block* vqm_malloc_init(char* address, unsigned int size)$/;" f
-vqm_status mem/vq_malloc.c /^void vqm_status(struct vqm_block* qm)$/;" f
-vsnprintf modules/jabber/xode.h 77;" d
-w_acc_db_request modules/acc/acc_mod.c /^static int w_acc_db_request(struct sip_msg *rq, char *comment, char *table)$/;" f file:
-w_acc_diam_request modules/acc/acc_mod.c /^static int w_acc_diam_request(struct sip_msg *rq, char *comment, $/;" f file:
-w_acc_log_request modules/acc/acc_mod.c /^static int w_acc_log_request(struct sip_msg *rq, char *comment, char *foo)$/;" f file:
-w_acc_rad_request modules/acc/acc_mod.c /^static int w_acc_rad_request(struct sip_msg *rq, char *comment, $/;" f file:
-w_calculate_hooks modules/tm/dlg.c /^int w_calculate_hooks(dlg_t* _d)$/;" f
-w_check_avps modules/avpops/avpops.c /^static int w_check_avps(struct sip_msg* msg, char* param, char *check)$/;" f file:
-w_dbdelete_avps modules/avpops/avpops.c /^static int w_dbdelete_avps(struct sip_msg* msg, char* source, char* param)$/;" f file:
-w_dbload_avps modules/avpops/avpops.c /^static int w_dbload_avps(struct sip_msg* msg, char* source, char* param)$/;" f file:
-w_dbstore_avps modules/avpops/avpops.c /^static int w_dbstore_avps(struct sip_msg* msg, char* source, char* param)$/;" f file:
-w_delete_avps modules/avpops/avpops.c /^static int w_delete_avps(struct sip_msg* msg, char* param, char* foo)$/;" f file:
-w_ds_select_dst modules/dispatcher/dispatcher.c /^static int w_ds_select_dst(struct sip_msg* msg, char* set, char* alg)$/;" f file:
-w_exec_dset modules/exec/exec_mod.c /^inline static int w_exec_dset(struct sip_msg* msg, char* cmd, char* foo)$/;" f file:
-w_exec_msg modules/exec/exec_mod.c /^inline static int w_exec_msg(struct sip_msg* msg, char* cmd, char* foo)$/;" f file:
-w_print_avps modules/avpops/avpops.c /^static int w_print_avps(struct sip_msg* msg, char* foo, char *bar)$/;" f file:
-w_process_maxfwd_header modules/maxfwd/maxfwd.c /^static int w_process_maxfwd_header(struct sip_msg* msg, char* str1,char* str2)$/;" f file:
-w_process_register modules/cpl-c/cpl.c /^static int w_process_register(struct sip_msg* msg, char* str, char* str2)$/;" f file:
-w_process_register_norpl modules/cpl-c/cpl.c /^static int w_process_register_norpl(struct sip_msg* msg, char* str,char* str2)$/;" f file:
-w_pushto_avps modules/avpops/avpops.c /^static int w_pushto_avps(struct sip_msg* msg, char* destination, char *param)$/;" f file:
-w_sl_reply_error modules/sl/sl.c /^static int w_sl_reply_error( struct sip_msg* msg, char* str, char* str2)$/;" f file:
-w_sl_send_reply modules/sl/sl.c /^static int w_sl_send_reply(struct sip_msg* msg, char* str, char* str2)$/;" f file:
-w_sms_send_msg modules/sms/sms.c /^static int w_sms_send_msg(struct sip_msg *msg, char *foo, char *bar)$/;" f file:
-w_sms_send_msg_to_net modules/sms/sms.c /^static int w_sms_send_msg_to_net(struct sip_msg *msg, char *net_nr, char *foo)$/;" f file:
-w_t_check modules/tm/tm.c /^inline static int w_t_check(struct sip_msg* msg, char* str, char* str2)$/;" f file:
-w_t_forward_nonack modules/tm/tm.c /^inline static int w_t_forward_nonack( struct sip_msg* msg, char* proxy,$/;" f file:
-w_t_forward_nonack_tcp modules/tm/tm.c /^inline static int w_t_forward_nonack_tcp( struct sip_msg* msg, char* proxy,$/;" f file:
-w_t_forward_nonack_tls modules/tm/tm.c /^inline static int w_t_forward_nonack_tls( struct sip_msg* msg, char* proxy,$/;" f file:
-w_t_forward_nonack_udp modules/tm/tm.c /^inline static int w_t_forward_nonack_udp( struct sip_msg* msg, char* proxy,$/;" f file:
-w_t_forward_nonack_uri modules/tm/tm.c /^inline static int w_t_forward_nonack_uri(struct sip_msg* msg, char *foo,$/;" f file:
-w_t_newtran modules/tm/tm.c /^inline static int w_t_newtran( struct sip_msg* p_msg, char* foo, char* bar ) $/;" f file:
-w_t_on_negative modules/tm/tm.c /^inline static int w_t_on_negative( struct sip_msg* msg, char *go_to, char *foo)$/;" f file:
-w_t_on_reply modules/tm/tm.c /^inline static int w_t_on_reply( struct sip_msg* msg, char *go_to, char *foo )$/;" f file:
-w_t_relay modules/tm/tm.c /^inline static int w_t_relay( struct sip_msg *p_msg , $/;" f file:
-w_t_relay_to_tcp modules/tm/tm.c /^inline static int w_t_relay_to_tcp( struct sip_msg *p_msg , $/;" f file:
-w_t_relay_to_tls modules/tm/tm.c /^inline static int w_t_relay_to_tls( struct sip_msg *p_msg , $/;" f file:
-w_t_relay_to_udp modules/tm/tm.c /^inline static int w_t_relay_to_udp( struct sip_msg *p_msg , $/;" f file:
-w_t_release modules/tm/tm.c /^inline static int w_t_release(struct sip_msg* msg, char* str, char* str2)$/;" f file:
-w_t_replicate modules/tm/tm.c /^inline static int w_t_replicate( struct sip_msg *p_msg , $/;" f file:
-w_t_replicate_tcp modules/tm/tm.c /^inline static int w_t_replicate_tcp( struct sip_msg *p_msg , $/;" f file:
-w_t_replicate_tls modules/tm/tm.c /^inline static int w_t_replicate_tls( struct sip_msg *p_msg , $/;" f file:
-w_t_replicate_udp modules/tm/tm.c /^inline static int w_t_replicate_udp( struct sip_msg *p_msg , $/;" f file:
-w_t_reply modules/tm/tm.c /^inline static int w_t_reply(struct sip_msg* msg, char* str, char* str2)$/;" f file:
-w_t_retransmit_reply modules/tm/tm.c /^inline static int w_t_retransmit_reply( struct sip_msg* p_msg, char* foo, char* bar)$/;" f file:
-w_t_unref modules/tm/tm.c /^static int w_t_unref( struct sip_msg *foo, void *bar)$/;" f file:
-w_write_avps modules/avpops/avpops.c /^static int w_write_avps(struct sip_msg* msg, char* source, char* param)$/;" f file:
-wait_handler modules/tm/timer.c /^inline static void wait_handler( struct timer_link *wait_tl )$/;" f file:
-wait_prog modules/ext/my_exec.h /^inline int wait_prog()$/;" f
-wait_tl modules/tm/h_table.h /^ struct timer_link wait_tl;$/;" m struct:cell
-warn cfg.tab.c /^static void warn(char* s)$/;" f file:
-warning_builder msg_translator.c /^static char * warning_builder( struct sip_msg *msg, unsigned int *returned_len)$/;" f file:
-watcher modules/pa/watcher.h /^typedef struct watcher {$/;" s
-watcher_assign_statement_id modules/pa/watcher.c /^static int watcher_assign_statement_id(presentity_t *presentity, watcher_t *watcher)$/;" f file:
-watcher_event modules/pa/watcher.h /^typedef enum watcher_event {$/;" g
-watcher_event_from_string modules/pa/watcher.c /^watcher_event_t watcher_event_from_string(str *wename) $/;" f
-watcher_event_names modules/pa/watcher.c /^static str watcher_event_names[] = {$/;" v file:
-watcher_event_t modules/pa/watcher.h /^} watcher_event_t;$/;" t
-watcher_status modules/pa/watcher.h /^typedef enum watcher_status {$/;" g
-watcher_status_from_string modules/pa/watcher.c /^watcher_status_t watcher_status_from_string(str *wsname) $/;" f
-watcher_status_names modules/pa/watcher.c /^static str watcher_status_names[] = {$/;" v file:
-watcher_status_t modules/pa/watcher.h /^} watcher_status_t;$/;" t
-watcher_t modules/pa/watcher.h /^} watcher_t;$/;" t
-watcherinfo modules/pa/pa.sql /^create table watcherinfo ($/;" t
-watcherinfo_table modules/pa/pa_mod.c /^char *watcherinfo_table = "watcherinfo";$/;" v
-watchers modules/pa/presentity.h /^ watcher_t* watchers; \/* List of watchers *\/$/;" m struct:presentity
-watchers modules/usrloc/urecord.h /^ struct notify_cb* watchers; \/* List of watchers *\/$/;" m struct:urecord
-wb_timer modules/usrloc/urecord.c /^static inline int wb_timer(urecord_t* _r)$/;" f file:
-web_contact examples/web_im/click_to_dial.php /^$web_contact="sip:daemon at iptel.org";$/;" v
-web_contact examples/web_im/send_im.php /^$web_contact="sip:daemon at iptel.org";$/;" v
-weight resolve.h /^ unsigned short weight;$/;" m struct:srv_rdata
-wflags modules/pa/watcher.h /^typedef enum wflags {$/;" g
-wflags_t modules/pa/watcher.h /^} wflags_t;$/;" t
-which_cancel modules/tm/t_cancel.c /^void which_cancel( struct cell *t, branch_bm_t *cancel_bm )$/;" f
-which_cmd unixsock_server.c /^static int which_cmd(str* msg)$/;" f file:
-which_fifo_cmd fifo_server.c /^static int which_fifo_cmd(FILE *stream, char *response_file )$/;" f file:
-whole parser/digest/digest_parser.h /^ str whole; \/* The whole username parameter value *\/$/;" m struct:username
-wide_int modules/jabber/xsnprintf.c /^typedef WIDE_INT wide_int;$/;" t file:
-winfo_add_watcher modules/pa/watcher.c /^int winfo_add_watcher(str* _b, int _l, watcher_t *watcher)$/;" f
-winfo_end_resource modules/pa/watcher.c /^int winfo_end_resource(str *_b, int _l)$/;" f
-winfo_start_resource modules/pa/watcher.c /^int winfo_start_resource(str* _b, int _l, str* _uri, watcher_t *watcher)$/;" f
-winfo_watchers modules/pa/presentity.h /^ watcher_t* winfo_watchers; \/* Watchers subscribed to winfo *\/$/;" m struct:presentity
-wkst modules/cpl-c/cpl_time.h /^ int wkst;$/;" m struct:_tmrec
-workers modules/jabber/xjab_worker.h /^ xj_worker workers; \/\/ the list of workers$/;" m struct:_xj_wlist
-working_dir main.c /^char* working_dir = 0;$/;" v
-wpipe modules/jabber/xjab_worker.h /^ int wpipe; \/\/ communication pipe - write$/;" m struct:_xj_worker
-wrapper_type modules/exec/exec_hf.h /^enum wrapper_type { W_HF=1, W_AV };$/;" g
-write_cpl_cmd modules/cpl-c/cpl_nonsig.h /^static inline void write_cpl_cmd(unsigned int code, str *s1, str *s2, str *s3)$/;" f
-write_lock tcp_conn.h /^ gen_lock_t write_lock;$/;" m struct:tcp_connection
-write_log modules/cpl-c/cpl_nonsig.c /^static inline void write_log( struct cpl_cmd *cmd)$/;" f file:
-write_to_db modules/cpl-c/cpl_db.c /^int write_to_db(char *usr, str *xml, str *bin)$/;" f
-write_to_fifo modules/tm/t_fifo.c /^static int inline write_to_fifo(char *fifo, int cnt )$/;" f file:
-write_to_file modules/cpl-c/cpl_loader.c /^void write_to_file( char *file, str *txt, int n )$/;" f
-write_to_unixsock modules/tm/t_fifo.c /^static int write_to_unixsock(char* sockname, int cnt)$/;" f file:
-wt_timer modules/usrloc/urecord.c /^static inline int wt_timer(urecord_t* _r)$/;" f file:
-www_CASE parser/case_www.h 64;" d
-www_authorize modules/auth_db/authorize.c /^int www_authorize(struct sip_msg* _m, char* _realm, char* _table)$/;" f
-www_challenge modules/auth/challenge.c /^int www_challenge(struct sip_msg* _msg, char* _realm, char* _qop)$/;" f
-x modules/pa/presentity.h /^ double x;$/;" m struct:location
-xTYPE parser/obsolete/strs.h 309;" d
-xTYPe parser/obsolete/strs.h 308;" d
-xTYpE parser/obsolete/strs.h 307;" d
-xTYpe parser/obsolete/strs.h 306;" d
-xTyPE parser/obsolete/strs.h 305;" d
-xTyPe parser/obsolete/strs.h 304;" d
-xTypE parser/obsolete/strs.h 303;" d
-xType parser/obsolete/strs.h 302;" d
-xdbg modules/xlog/xlog.c /^static int xdbg(struct sip_msg* msg, char* frm, char* str2)$/;" f file:
-xdbg_fixup modules/xlog/xlog.c /^static int xdbg_fixup(void** param, int param_no)$/;" f file:
-xj_address_translation modules/jabber/xjab_worker.c /^int xj_address_translation(str *src, str *dst, xj_jalias als, int flag)$/;" f
-xj_exit_jconf modules/jabber/jabber.c /^static int xj_exit_jconf(struct sip_msg *msg, char* foo1, char * foo2)$/;" f file:
-xj_extract_aor modules/jabber/xjab_base.c /^int xj_extract_aor(str* u, int t)$/;" f
-xj_get_hash modules/jabber/xjab_base.c /^int xj_get_hash(str *x, str *y)$/;" f
-xj_go_offline modules/jabber/jabber.c /^static int xj_go_offline(struct sip_msg *msg, char* foo1, char * foo2)$/;" f file:
-xj_go_online modules/jabber/jabber.c /^static int xj_go_online(struct sip_msg *msg, char* foo1, char * foo2)$/;" f file:
-xj_jalias modules/jabber/xjab_worker.h /^} t_xj_jalias, *xj_jalias;$/;" t
-xj_jcon modules/jabber/xjab_jcon.h /^} t_xj_jcon, *xj_jcon;$/;" t
-xj_jcon_check_jconf modules/jabber/xjab_jcon.c /^xj_jconf xj_jcon_check_jconf(xj_jcon jbc, char* id)$/;" f
-xj_jcon_connect modules/jabber/xjab_jcon.c /^int xj_jcon_connect(xj_jcon jbc)$/;" f
-xj_jcon_del_jconf modules/jabber/xjab_jcon.c /^int xj_jcon_del_jconf(xj_jcon jbc, str *sid, char dl, int flag)$/;" f
-xj_jcon_disconnect modules/jabber/xjab_jcon.c /^int xj_jcon_disconnect(xj_jcon jbc)$/;" f
-xj_jcon_free modules/jabber/xjab_jcon.c /^int xj_jcon_free(xj_jcon jbc)$/;" f
-xj_jcon_get_jconf modules/jabber/xjab_jcon.c /^xj_jconf xj_jcon_get_jconf(xj_jcon jbc, str* sid, char dl)$/;" f
-xj_jcon_get_juid modules/jabber/xjab_jcon.c /^int xj_jcon_get_juid(xj_jcon jbc)$/;" f
-xj_jcon_get_roster modules/jabber/xjab_jcon.c /^int xj_jcon_get_roster(xj_jcon jbc)$/;" f
-xj_jcon_init modules/jabber/xjab_jcon.c /^xj_jcon xj_jcon_init(char *hostname, int port)$/;" f
-xj_jcon_is_ready modules/jabber/xjab_jcon.c /^int xj_jcon_is_ready(xj_jcon jbc, char *to, int tol, char dl)$/;" f
-xj_jcon_jconf_presence modules/jabber/xjab_jcon.c /^int xj_jcon_jconf_presence(xj_jcon jbc, xj_jconf jcf, char* type, $/;" f
-xj_jcon_pool modules/jabber/xjab_util.h /^} t_xj_jcon_pool, *xj_jcon_pool;$/;" t
-xj_jcon_pool_add modules/jabber/xjab_util.c /^int xj_jcon_pool_add(xj_jcon_pool jcp, xj_jcon jc)$/;" f
-xj_jcon_pool_add_jmsg modules/jabber/xjab_util.c /^int xj_jcon_pool_add_jmsg(xj_jcon_pool jcp, xj_sipmsg _jsm, xj_jcon _ojc)$/;" f
-xj_jcon_pool_del modules/jabber/xjab_util.c /^int xj_jcon_pool_del(xj_jcon_pool jcp, xj_jkey jkey)$/;" f
-xj_jcon_pool_del_jmsg modules/jabber/xjab_util.c /^int xj_jcon_pool_del_jmsg(xj_jcon_pool jcp, int idx)$/;" f
-xj_jcon_pool_free modules/jabber/xjab_util.c /^void xj_jcon_pool_free(xj_jcon_pool jcp)$/;" f
-xj_jcon_pool_get modules/jabber/xjab_util.c /^xj_jcon xj_jcon_pool_get(xj_jcon_pool jcp, xj_jkey jkey)$/;" f
-xj_jcon_pool_init modules/jabber/xjab_util.c /^xj_jcon_pool xj_jcon_pool_init(int size, int jlen, int ch)$/;" f
-xj_jcon_recv_msg modules/jabber/xjab_jcon.c /^int xj_jcon_recv_msg(xj_jcon jbc, char *from, char *msg)$/;" f
-xj_jcon_send_msg modules/jabber/xjab_jcon.c /^int xj_jcon_send_msg(xj_jcon jbc, char *to, int tol, char *msg, $/;" f
-xj_jcon_send_presence modules/jabber/xjab_jcon.c /^int xj_jcon_send_presence(xj_jcon jbc, char *sto, char *type, char *status,$/;" f
-xj_jcon_send_subscribe modules/jabber/xjab_jcon.c /^int xj_jcon_send_subscribe(xj_jcon jbc, char *to, char *from, char *type)$/;" f
-xj_jcon_set_attrs modules/jabber/xjab_jcon.c /^int xj_jcon_set_attrs(xj_jcon jbc, xj_jkey jkey, int cache_time, $/;" f
-xj_jcon_set_juid modules/jabber/xjab_jcon.c /^void xj_jcon_set_juid(xj_jcon jbc, int _juid)$/;" f
-xj_jcon_set_roster modules/jabber/xjab_jcon.c /^int xj_jcon_set_roster(xj_jcon jbc, char* jid, char *type)$/;" f
-xj_jcon_update modules/jabber/xjab_jcon.c /^int xj_jcon_update(xj_jcon jbc, int cache_time)$/;" f
-xj_jcon_user_auth modules/jabber/xjab_jcon.c /^int xj_jcon_user_auth(xj_jcon jbc, char *username, char *passwd,$/;" f
-xj_jconf modules/jabber/xjab_jconf.h /^} t_xj_jconf, *xj_jconf;$/;" t
-xj_jconf_check_addr modules/jabber/xjab_jconf.c /^int xj_jconf_check_addr(str *addr, char dl)$/;" f
-xj_jconf_cmp modules/jabber/xjab_jconf.c /^int xj_jconf_cmp(void *a, void *b)$/;" f
-xj_jconf_free modules/jabber/xjab_jconf.c /^int xj_jconf_free(xj_jconf jcf)$/;" f
-xj_jconf_init_jab modules/jabber/xjab_jconf.c /^int xj_jconf_init_jab(xj_jconf jcf)$/;" f
-xj_jconf_init_sip modules/jabber/xjab_jconf.c /^int xj_jconf_init_sip(xj_jconf jcf, str *sid, char dl)$/;" f
-xj_jconf_new modules/jabber/xjab_jconf.c /^xj_jconf xj_jconf_new(str *u)$/;" f
-xj_jconf_set_status modules/jabber/xjab_jconf.c /^int xj_jconf_set_status(xj_jconf jcf, int s)$/;" f
-xj_jkey modules/jabber/xjab_base.h /^} t_xj_jkey, *xj_jkey;$/;" t
-xj_jkey_cmp modules/jabber/xjab_base.c /^int xj_jkey_cmp(void *x, void *y)$/;" f
-xj_jkey_free_p modules/jabber/xjab_base.c /^void xj_jkey_free_p(void *p)$/;" f
-xj_jmsg_queue modules/jabber/xjab_util.h /^} t_xj_jmsg_queue, *xj_jmsg_queue;$/;" t
-xj_join_jconf modules/jabber/jabber.c /^static int xj_join_jconf(struct sip_msg *msg, char* foo1, char * foo2)$/;" f file:
-xj_manage_jab modules/jabber/xjab_worker.c /^int xj_manage_jab(char *buf, int len, int *pos, xj_jalias als, xj_jcon jbc)$/;" f
-xj_pres_cell modules/jabber/xjab_presence.h /^} t_xj_pres_cell, *xj_pres_cell;$/;" t
-xj_pres_cell_free modules/jabber/xjab_presence.c /^void xj_pres_cell_free(xj_pres_cell prc)$/;" f
-xj_pres_cell_free_all modules/jabber/xjab_presence.c /^void xj_pres_cell_free_all(xj_pres_cell prc)$/;" f
-xj_pres_cell_init modules/jabber/xjab_presence.c /^int xj_pres_cell_init(xj_pres_cell prc, str* uid, pa_callback_f f, void* p)$/;" f
-xj_pres_cell_new modules/jabber/xjab_presence.c /^xj_pres_cell xj_pres_cell_new()$/;" f
-xj_pres_cell_update modules/jabber/xjab_presence.c /^int xj_pres_cell_update(xj_pres_cell prc, pa_callback_f f, void *p)$/;" f
-xj_pres_list modules/jabber/xjab_presence.h /^} t_xj_pres_list, *xj_pres_list;$/;" t
-xj_pres_list_add modules/jabber/xjab_presence.c /^xj_pres_cell xj_pres_list_add(xj_pres_list prl, xj_pres_cell prc)$/;" f
-xj_pres_list_check modules/jabber/xjab_presence.c /^xj_pres_cell xj_pres_list_check(xj_pres_list prl, str* uid)$/;" f
-xj_pres_list_del modules/jabber/xjab_presence.c /^int xj_pres_list_del(xj_pres_list prl, str *uid)$/;" f
-xj_pres_list_free modules/jabber/xjab_presence.c /^void xj_pres_list_free(xj_pres_list prl)$/;" f
-xj_pres_list_init modules/jabber/xjab_presence.c /^xj_pres_list xj_pres_list_init()$/;" f
-xj_pres_list_notifyall modules/jabber/xjab_presence.c /^void xj_pres_list_notifyall(xj_pres_list prl, int s)$/;" f
-xj_register_watcher modules/jabber/jabber.c /^void xj_register_watcher(str *from, str *to, void *cbf, void *pp)$/;" f
-xj_send_message modules/jabber/jabber.c /^static int xj_send_message(struct sip_msg *msg, char* foo1, char * foo2)$/;" f file:
-xj_send_sip_msg modules/jabber/xjab_worker.c /^int xj_send_sip_msg(str *proxy, str *to, str *from, str *msg, int *cbp)$/;" f
-xj_send_sip_msgz modules/jabber/xjab_worker.c /^int xj_send_sip_msgz(str *proxy, str *to, str *from, char *msg, int *cbp)$/;" f
-xj_sig_handler modules/jabber/xjab_worker.c /^void xj_sig_handler(int s) $/;" f
-xj_sipmsg modules/jabber/xjab_base.h /^} t_xj_sipmsg, *xj_sipmsg;$/;" t
-xj_sipmsg_free modules/jabber/xjab_base.c /^void xj_sipmsg_free(xj_sipmsg jsmsg)$/;" f
-xj_tuac_callback modules/jabber/xjab_worker.c /^void xj_tuac_callback( struct cell *t, int type, struct tmcb_params *ps)$/;" f
-xj_unregister_watcher modules/jabber/jabber.c /^void xj_unregister_watcher(str *from, str *to, void *cbf, void *pp)$/;" f
-xj_wlist modules/jabber/xjab_worker.h /^} t_xj_wlist, *xj_wlist;$/;" t
-xj_wlist_check modules/jabber/xjab_wlist.c /^int xj_wlist_check(xj_wlist jwl, xj_jkey jkey, xj_jkey *p)$/;" f
-xj_wlist_check_aliases modules/jabber/xjab_wlist.c /^int xj_wlist_check_aliases(xj_wlist jwl, str *addr)$/;" f
-xj_wlist_clean_jobs modules/jabber/xjab_worker.c /^int xj_wlist_clean_jobs(xj_wlist jwl, int idx, int fl)$/;" f
-xj_wlist_del modules/jabber/xjab_wlist.c /^void xj_wlist_del(xj_wlist jwl, xj_jkey jkey, int _pid)$/;" f
-xj_wlist_free modules/jabber/xjab_wlist.c /^void xj_wlist_free(xj_wlist jwl)$/;" f
-xj_wlist_get modules/jabber/xjab_wlist.c /^int xj_wlist_get(xj_wlist jwl, xj_jkey jkey, xj_jkey *p)$/;" f
-xj_wlist_init modules/jabber/xjab_wlist.c /^xj_wlist xj_wlist_init(int **pipes, int size, int max, int cache_time,$/;" f
-xj_wlist_set_aliases modules/jabber/xjab_wlist.c /^int xj_wlist_set_aliases(xj_wlist jwl, char *als, char *jd, char *pa)$/;" f
-xj_wlist_set_flag modules/jabber/xjab_wlist.c /^int xj_wlist_set_flag(xj_wlist jwl, xj_jkey jkey, int fl)$/;" f
-xj_wlist_set_pid modules/jabber/xjab_wlist.c /^int xj_wlist_set_pid(xj_wlist jwl, int pid, int idx)$/;" f
-xj_worker modules/jabber/xjab_worker.h /^} t_xj_worker, *xj_worker;$/;" t
-xj_worker_check_jcons modules/jabber/xjab_worker.c /^void xj_worker_check_jcons(xj_wlist jwl, xj_jcon_pool jcp, int ltime, fd_set *pset)$/;" f
-xj_worker_check_qmsg modules/jabber/xjab_worker.c /^void xj_worker_check_qmsg(xj_wlist jwl, xj_jcon_pool jcp)$/;" f
-xj_worker_check_watcher modules/jabber/xjab_worker.c /^void xj_worker_check_watcher(xj_wlist jwl, xj_jcon_pool jcp,$/;" f
-xj_worker_process modules/jabber/xjab_worker.c /^int xj_worker_process(xj_wlist jwl, char* jaddress, int jport, int rank,$/;" f
-xjab_binds modules/jabber/xjab_load.h /^struct xjab_binds {$/;" s
-xjab_check_workers modules/jabber/jabber.c /^void xjab_check_workers(int mpid)$/;" f
-xjab_connections modules/jabber/jabber.c /^int xjab_connections(ih_req_p _irp, void *_p, char *_bb, int *_bl, $/;" f
-xjab_manage_sipmsg modules/jabber/jabber.c /^int xjab_manage_sipmsg(struct sip_msg *msg, int type)$/;" f
-xjab_mod_info modules/jabber/jabber.c /^int xjab_mod_info(ih_req_p _irp, void *_p, char *_bb, int *_bl, $/;" f
-xl_elog_free_all modules/xlog/xl_lib.c /^int xl_elog_free_all(xl_elog_p log)$/;" f
-xl_elog_p modules/xlog/xl_lib.h /^} xl_elog_t, *xl_elog_p;$/;" t
-xl_elog_t modules/xlog/xl_lib.h /^} xl_elog_t, *xl_elog_p;$/;" t
-xl_get_callid modules/xlog/xl_lib.c /^static int xl_get_callid(struct sip_msg *msg, str *res, str *hp, int hi)$/;" f file:
-xl_get_contact modules/xlog/xl_lib.c /^static int xl_get_contact(struct sip_msg* msg, str* res, str *hp, int hi)$/;" f file:
-xl_get_cseq modules/xlog/xl_lib.c /^static int xl_get_cseq(struct sip_msg *msg, str *res, str *hp, int hi)$/;" f file:
-xl_get_flags modules/xlog/xl_lib.c /^static int xl_get_flags(struct sip_msg *msg, str *res, str *hp, int hi)$/;" f file:
-xl_get_from modules/xlog/xl_lib.c /^static int xl_get_from(struct sip_msg *msg, str *res, str *hp, int hi)$/;" f file:
-xl_get_from_tag modules/xlog/xl_lib.c /^static int xl_get_from_tag(struct sip_msg *msg, str *res, str *hp, int hi)$/;" f file:
-xl_get_header modules/xlog/xl_lib.c /^static int xl_get_header(struct sip_msg *msg, str *res, str *hp, int hi)$/;" f file:
-xl_get_method modules/xlog/xl_lib.c /^static int xl_get_method(struct sip_msg *msg, str *res, str *hp, int hi)$/;" f file:
-xl_get_msg_buf modules/xlog/xl_lib.c /^static int xl_get_msg_buf(struct sip_msg *msg, str *res, str *hp, int hi)$/;" f file:
-xl_get_msg_len modules/xlog/xl_lib.c /^static int xl_get_msg_len(struct sip_msg *msg, str *res, str *hp, int hi)$/;" f file:
-xl_get_msgid modules/xlog/xl_lib.c /^static int xl_get_msgid(struct sip_msg *msg, str *res, str *hp, int hi)$/;" f file:
-xl_get_null modules/xlog/xl_lib.c /^static int xl_get_null(struct sip_msg *msg, str *res, str *hp, int hi)$/;" f file:
-xl_get_percent modules/xlog/xl_lib.c /^static int xl_get_percent(struct sip_msg *msg, str *res, str *hp, int hi)$/;" f file:
-xl_get_pid modules/xlog/xl_lib.c /^static int xl_get_pid(struct sip_msg *msg, str *res, str *hp, int hi)$/;" f file:
-xl_get_reason modules/xlog/xl_lib.c /^static int xl_get_reason(struct sip_msg *msg, str *res, str *hp, int hi)$/;" f file:
-xl_get_ruri modules/xlog/xl_lib.c /^static int xl_get_ruri(struct sip_msg *msg, str *res, str *hp, int hi)$/;" f file:
-xl_get_srcip modules/xlog/xl_lib.c /^static int xl_get_srcip(struct sip_msg *msg, str *res, str *hp, int hi)$/;" f file:
-xl_get_status modules/xlog/xl_lib.c /^static int xl_get_status(struct sip_msg *msg, str *res, str *hp, int hi)$/;" f file:
-xl_get_timef modules/xlog/xl_lib.c /^static int xl_get_timef(struct sip_msg *msg, str *res, str *hp, int hi)$/;" f file:
-xl_get_times modules/xlog/xl_lib.c /^static int xl_get_times(struct sip_msg *msg, str *res, str *hp, int hi)$/;" f file:
-xl_get_to modules/xlog/xl_lib.c /^static int xl_get_to(struct sip_msg *msg, str *res, str *hp, int hi)$/;" f file:
-xl_get_to_tag modules/xlog/xl_lib.c /^static int xl_get_to_tag(struct sip_msg* msg, str* res, str *hp, int hi)$/;" f file:
-xl_get_useragent modules/xlog/xl_lib.c /^static int xl_get_useragent(struct sip_msg *msg, str *res, str *hp, int hi)$/;" f file:
-xl_parse_format modules/xlog/xl_lib.c /^int xl_parse_format(char *s, xl_elog_p *el)$/;" f
-xl_print_log modules/xlog/xl_lib.c /^int xl_print_log(struct sip_msg* msg, xl_elog_p log, char *buf, int *len)$/;" f
-xlate_pointers parser/parse_rr.c /^static inline void xlate_pointers(rr_t* _orig, rr_t* _r)$/;" f file:
-xlog modules/xlog/xlog.c /^static int xlog(struct sip_msg* msg, char* lev, char* frm)$/;" f file:
-xlog_fixup modules/xlog/xlog.c /^static int xlog_fixup(void** param, int param_no)$/;" f file:
-xmlDocGetNodeByName modules/pa/pidf.c /^xmlNodePtr xmlDocGetNodeByName(xmlDocPtr doc, const char *name, const char *ns)$/;" f
-xmlDocGetNodeContentByName modules/pa/pidf.c /^char *xmlDocGetNodeContentByName(xmlDocPtr doc, const char *name, const char *ns)$/;" f
-xmlDocMapByName modules/pa/pidf.c /^void xmlDocMapByName(xmlDocPtr doc, const char *name, const char *ns,$/;" f
-xmlNodeGetAttrByName modules/pa/pidf.c /^xmlAttrPtr xmlNodeGetAttrByName(xmlNodePtr node, const char *name)$/;" f
-xmlNodeGetAttrContentByName modules/pa/pidf.c /^char *xmlNodeGetAttrContentByName(xmlNodePtr node, const char *name)$/;" f
-xmlNodeGetChildByName modules/pa/pidf.c /^xmlNodePtr xmlNodeGetChildByName(xmlNodePtr node, const char *name)$/;" f
-xmlNodeGetNodeByName modules/pa/pidf.c /^xmlNodePtr xmlNodeGetNodeByName(xmlNodePtr node, const char *name, const char *ns)$/;" f
-xmlNodeGetNodeContentByName modules/pa/pidf.c /^char *xmlNodeGetNodeContentByName(xmlNodePtr root, const char *name, const char *ns)$/;" f
-xmlNodeMapByName modules/pa/pidf.c /^void xmlNodeMapByName(xmlNodePtr node, const char *name, const char *ns, $/;" f
-xode modules/jabber/xode.h /^} _xode, *xode;$/;" t
-xode_cmp modules/jabber/xode.c /^int xode_cmp(xode a, xode b)$/;" f
-xode_dup modules/jabber/xode.c /^xode xode_dup(xode x)$/;" f
-xode_dup_frompool modules/jabber/xode.c /^xode xode_dup_frompool(xode_pool p, xode x)$/;" f
-xode_free modules/jabber/xode.c /^void xode_free(xode node)$/;" f
-xode_from_file modules/jabber/xode_from.c /^xode xode_from_file(char *file)$/;" f
-xode_from_str modules/jabber/xode_from.c /^xode xode_from_str(char *str, int len)$/;" f
-xode_from_strx modules/jabber/xode_from.c /^xode xode_from_strx(char *str, int len, int *err, int *pos)$/;" f
-xode_get_attrib modules/jabber/xode.c /^char* xode_get_attrib(xode owner, const char* name)$/;" f
-xode_get_data modules/jabber/xode.c /^char* xode_get_data(xode node)$/;" f
-xode_get_datasz modules/jabber/xode.c /^int xode_get_datasz(xode node)$/;" f
-xode_get_firstattrib modules/jabber/xode.c /^xode xode_get_firstattrib(xode parent)$/;" f
-xode_get_firstchild modules/jabber/xode.c /^xode xode_get_firstchild(xode parent)$/;" f
-xode_get_lastchild modules/jabber/xode.c /^xode xode_get_lastchild(xode parent)$/;" f
-xode_get_name modules/jabber/xode.c /^char* xode_get_name(xode node)$/;" f
-xode_get_nextsibling modules/jabber/xode.c /^xode xode_get_nextsibling(xode sibling)$/;" f
-xode_get_parent modules/jabber/xode.c /^xode xode_get_parent(xode node)$/;" f
-xode_get_pool modules/jabber/xode.c /^xode_pool xode_get_pool(xode node)$/;" f
-xode_get_prevsibling modules/jabber/xode.c /^xode xode_get_prevsibling(xode sibling)$/;" f
-xode_get_tag modules/jabber/xode.c /^xode xode_get_tag(xode parent, const char* name)$/;" f
-xode_get_tagdata modules/jabber/xode.c /^char *xode_get_tagdata(xode parent, const char *name)$/;" f
-xode_get_type modules/jabber/xode.c /^int xode_get_type(xode node)$/;" f
-xode_get_vattrib modules/jabber/xode.c /^void* xode_get_vattrib(xode owner, const char* name)$/;" f
-xode_has_attribs modules/jabber/xode.c /^int xode_has_attribs(xode node)$/;" f
-xode_has_children modules/jabber/xode.c /^int xode_has_children(xode node)$/;" f
-xode_hide modules/jabber/xode.c /^void xode_hide(xode child)$/;" f
-xode_hide_attrib modules/jabber/xode.c /^void xode_hide_attrib(xode parent, const char *name)$/;" f
-xode_insert_cdata modules/jabber/xode.c /^xode xode_insert_cdata(xode parent, const char* CDATA, unsigned int size)$/;" f
-xode_insert_node modules/jabber/xode.c /^void xode_insert_node(xode parent, xode node)$/;" f
-xode_insert_tag modules/jabber/xode.c /^xode xode_insert_tag(xode parent, const char* name)$/;" f
-xode_insert_tagnode modules/jabber/xode.c /^xode xode_insert_tagnode(xode parent, xode node)$/;" f
-xode_new modules/jabber/xode.c /^xode xode_new(const char* name)$/;" f
-xode_new_frompool modules/jabber/xode.c /^xode xode_new_frompool(xode_pool p, const char* name)$/;" f
-xode_new_tag modules/jabber/xode.c /^xode xode_new_tag(const char* name)$/;" f
-xode_pool modules/jabber/xode.h /^} _xode_pool, *xode_pool;$/;" t
-xode_pool_cleaner modules/jabber/xode.h /^typedef void (*xode_pool_cleaner)(void *arg);$/;" t
-xode_pool_cleanup modules/jabber/xpool.c /^void xode_pool_cleanup(xode_pool p, xode_pool_cleaner f, void *arg)$/;" f
-xode_pool_free modules/jabber/xpool.c /^struct xode_pool_free$/;" s file:
-xode_pool_free modules/jabber/xpool.c /^void xode_pool_free(xode_pool p)$/;" f
-xode_pool_heap modules/jabber/xode.h /^struct xode_pool_heap$/;" s
-xode_pool_heap modules/jabber/xpool.c /^xode_pool xode_pool_heap(const int bytes)$/;" f
-xode_pool_malloc modules/jabber/xpool.c /^void *xode_pool_malloc(xode_pool p, int size)$/;" f
-xode_pool_malloco modules/jabber/xpool.c /^void *xode_pool_malloco(xode_pool p, int size)$/;" f
-xode_pool_mallocx modules/jabber/xpool.c /^void *xode_pool_mallocx(xode_pool p, int size, char c)$/;" f
-xode_pool_new modules/jabber/xpool.c /^xode_pool xode_pool_new(void)$/;" f
-xode_pool_size modules/jabber/xpool.c /^int xode_pool_size(xode_pool p)$/;" f
-xode_pool_strdup modules/jabber/xpool.c /^char *xode_pool_strdup(xode_pool p, const char *src)$/;" f
-xode_pool_strdupx modules/jabber/xpool.c /^char *xode_pool_strdupx(xode_pool p, const char *src)$/;" f
-xode_pool_struct modules/jabber/xode.h /^typedef struct xode_pool_struct$/;" s
-xode_put_attrib modules/jabber/xode.c /^void xode_put_attrib(xode owner, const char* name, const char* value)$/;" f
-xode_put_vattrib modules/jabber/xode.c /^void xode_put_vattrib(xode owner, const char* name, void *value)$/;" f
-xode_spool modules/jabber/xode.h /^} *xode_spool;$/;" t
-xode_spool_add modules/jabber/xode_str.c /^void xode_spool_add(xode_spool s, char *str)$/;" f
-xode_spool_free modules/jabber/xode_str.c /^void xode_spool_free(xode_spool s)$/;" f
-xode_spool_getlen modules/jabber/xode_str.c /^int xode_spool_getlen(const xode_spool s)$/;" f
-xode_spool_getpool modules/jabber/xode_str.c /^xode_pool xode_spool_getpool(const xode_spool s)$/;" f
-xode_spool_new modules/jabber/xode_str.c /^xode_spool xode_spool_new(void)$/;" f
-xode_spool_newfrompool modules/jabber/xode_str.c /^xode_spool xode_spool_newfrompool(xode_pool p)$/;" f
-xode_spool_node modules/jabber/xode.h /^struct xode_spool_node$/;" s
-xode_spool_str modules/jabber/xode_str.c /^char *xode_spool_str(xode_pool p, ...)$/;" f
-xode_spool_struct modules/jabber/xode.h /^typedef struct xode_spool_struct$/;" s
-xode_spool_tostr modules/jabber/xode_str.c /^char *xode_spool_tostr(xode_spool s)$/;" f
-xode_spooler modules/jabber/xode_str.c /^void xode_spooler(xode_spool s, ...)$/;" f
-xode_stream modules/jabber/xode.h /^} *xode_stream, _xode_stream;$/;" t
-xode_stream_eat modules/jabber/xstream.c /^int xode_stream_eat(xode_stream xs, char *buff, int len)$/;" f
-xode_stream_new modules/jabber/xstream.c /^xode_stream xode_stream_new(xode_pool p, xode_stream_onNode f, void *arg)$/;" f
-xode_stream_onNode modules/jabber/xode.h /^typedef void (*xode_stream_onNode)(int type, xode x, void *arg); \/* xstream event handler *\/$/;" t
-xode_stream_struct modules/jabber/xode.h /^typedef struct xode_stream_struct$/;" s
-xode_strescape modules/jabber/xode_str.c /^char *xode_strescape(xode_pool p, char *buf)$/;" f
-xode_struct modules/jabber/xode.h /^typedef struct xode_struct$/;" s
-xode_strunescape modules/jabber/xode_str.c /^char *xode_strunescape(xode_pool p, char *buf)$/;" f
-xode_to_file modules/jabber/xode_from.c /^int xode_to_file(char *file, xode node)$/;" f
-xode_to_prettystr modules/jabber/xode.c /^xode_to_prettystr( xode x )$/;" f
-xode_to_str modules/jabber/xode.c /^char *xode_to_str(xode node)$/;" f
-xode_wrap modules/jabber/xode.c /^xode xode_wrap(xode x,const char *wrapper)$/;" f
-xpath_get_node modules/pa/pidf.c /^xmlNodePtr xpath_get_node(xmlDocPtr doc, char *xpath)$/;" f
-xpath_map modules/pa/pidf.c /^void xpath_map(xmlDocPtr doc, char *xpath, void (*f)(xmlNodePtr, void *), void *data)$/;" f
-xpidf_add_address modules/pa/xpidf.c /^int xpidf_add_address(str* _b, int _l, str* _addr, xpidf_status_t _st)$/;" f
-xpidf_add_presentity modules/pa/xpidf.c /^int xpidf_add_presentity(str* _b, int _l, str* _uri)$/;" f
-xpidf_status modules/pa/xpidf.h /^typedef enum xpidf_status {$/;" g
-xpidf_status_t modules/pa/xpidf.h /^} xpidf_status_t;$/;" t
-xtYPE parser/obsolete/strs.h 301;" d
-xtYPe parser/obsolete/strs.h 300;" d
-xtYpE parser/obsolete/strs.h 299;" d
-xtYpe parser/obsolete/strs.h 298;" d
-xtyPE parser/obsolete/strs.h 297;" d
-xtyPe parser/obsolete/strs.h 296;" d
-xtypE parser/obsolete/strs.h 295;" d
-xtype parser/obsolete/strs.h 294;" d
-xxx modules/cpl-c/cpl_time.h /^ int *xxx;$/;" m struct:_tr_byxxx
-y modules/pa/presentity.h /^ double y;$/;" m struct:location
-yahoo modules/jabber/doc/xjab.sql /^CREATE TABLE yahoo($/;" t
-yahoo_id modules/jabber/doc/xjab.sql /^ yahoo_id VARCHAR(128) NOT NULL,$/;" F
-yday modules/cpl-c/cpl_time.h /^ int yday;$/;" m struct:_ac_maxval
-ywday modules/cpl-c/cpl_time.h /^ int ywday;$/;" m struct:_ac_maxval
-ywday modules/cpl-c/cpl_time.h /^ int ywday;$/;" m struct:_ac_tm
-yweek modules/cpl-c/cpl_time.h /^ int yweek;$/;" m struct:_ac_maxval
-yweek modules/cpl-c/cpl_time.h /^ int yweek;$/;" m struct:_ac_tm
-yy_accept lex.yy.c /^static yyconst flex_int16_t yy_accept[1032] =$/;" v file:
-yy_at_bol lex.yy.c /^ int yy_at_bol;$/;" m struct:yy_buffer_state file:
-yy_base lex.yy.c /^static yyconst flex_int16_t yy_base[1126] =$/;" v file:
-yy_bs_column lex.yy.c /^ int yy_bs_column; \/**< The column count. *\/$/;" m struct:yy_buffer_state file:
-yy_bs_lineno lex.yy.c /^ int yy_bs_lineno; \/**< The line count. *\/$/;" m struct:yy_buffer_state file:
-yy_buf_pos lex.yy.c /^ char *yy_buf_pos; \/* current position in input buffer *\/$/;" m struct:yy_buffer_state file:
-yy_buf_size lex.yy.c /^ yy_size_t yy_buf_size;$/;" m struct:yy_buffer_state file:
-yy_buffer_stack lex.yy.c /^static YY_BUFFER_STATE * yy_buffer_stack = 0; \/**< Stack as an array. *\/$/;" v file:
-yy_buffer_stack_max lex.yy.c /^static size_t yy_buffer_stack_max = 0; \/**< capacity of stack. *\/$/;" v file:
-yy_buffer_stack_top lex.yy.c /^static size_t yy_buffer_stack_top = 0; \/**< index of top of stack. *\/$/;" v file:
-yy_buffer_state lex.yy.c /^struct yy_buffer_state$/;" s file:
-yy_buffer_status lex.yy.c /^ int yy_buffer_status;$/;" m struct:yy_buffer_state file:
-yy_c_buf_p lex.yy.c /^static char *yy_c_buf_p = (char *) 0;$/;" v file:
-yy_ch_buf lex.yy.c /^ char *yy_ch_buf; \/* input buffer *\/$/;" m struct:yy_buffer_state file:
-yy_chk lex.yy.c /^static yyconst flex_int16_t yy_chk[1474] =$/;" v file:
-yy_create_buffer lex.yy.c /^ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )$/;" f
-yy_def lex.yy.c /^static yyconst flex_int16_t yy_def[1126] =$/;" v file:
-yy_delete_buffer lex.yy.c /^ void yy_delete_buffer (YY_BUFFER_STATE b )$/;" f
-yy_did_buffer_switch_on_eof lex.yy.c /^static int yy_did_buffer_switch_on_eof;$/;" v file:
-yy_ec lex.yy.c /^static yyconst flex_int32_t yy_ec[256] =$/;" v file:
-yy_fatal_error lex.yy.c /^static void yy_fatal_error (yyconst char* msg )$/;" f file:
-yy_fill_buffer lex.yy.c /^ int yy_fill_buffer;$/;" m struct:yy_buffer_state file:
-yy_flex_debug lex.yy.c /^int yy_flex_debug = 0;$/;" v
-yy_flex_strlen lex.yy.c /^static int yy_flex_strlen (yyconst char * s )$/;" f file:
-yy_flex_strncpy lex.yy.c /^static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )$/;" f file:
-yy_flush_buffer lex.yy.c /^ void yy_flush_buffer (YY_BUFFER_STATE b )$/;" f
-yy_get_next_buffer lex.yy.c /^static int yy_get_next_buffer (void)$/;" f file:
-yy_get_previous_state lex.yy.c /^ static yy_state_type yy_get_previous_state (void)$/;" f file:
-yy_hold_char lex.yy.c /^static char yy_hold_char;$/;" v file:
-yy_init lex.yy.c /^static int yy_init = 1; \/* whether we need to initialize *\/$/;" v file:
-yy_init_buffer lex.yy.c /^ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )$/;" f file:
-yy_input_file lex.yy.c /^ FILE *yy_input_file;$/;" m struct:yy_buffer_state file:
-yy_is_interactive lex.yy.c /^ int yy_is_interactive;$/;" m struct:yy_buffer_state file:
-yy_is_our_buffer lex.yy.c /^ int yy_is_our_buffer;$/;" m struct:yy_buffer_state file:
-yy_last_accepting_cpos lex.yy.c /^static char *yy_last_accepting_cpos;$/;" v file:
-yy_last_accepting_state lex.yy.c /^static yy_state_type yy_last_accepting_state;$/;" v file:
-yy_load_buffer_state lex.yy.c /^static void yy_load_buffer_state (void)$/;" f file:
-yy_meta lex.yy.c /^static yyconst flex_int32_t yy_meta[74] =$/;" v file:
-yy_more_flag lex.yy.c /^static int yy_more_flag = 0;$/;" v file:
-yy_more_len lex.yy.c /^static int yy_more_len = 0;$/;" v file:
-yy_n_chars lex.yy.c /^ int yy_n_chars;$/;" m struct:yy_buffer_state file:
-yy_n_chars lex.yy.c /^static int yy_n_chars; \/* number of characters read into yy_ch_buf *\/$/;" v file:
-yy_new_buffer lex.yy.c 300;" d file:
-yy_new_buffer lex.yy.c 3374;" d file:
-yy_nxt lex.yy.c /^ flex_int32_t yy_nxt;$/;" m struct:yy_trans_info file:
-yy_nxt lex.yy.c /^static yyconst flex_int16_t yy_nxt[1474] =$/;" v file:
-yy_reduce_print cfg.tab.c /^yy_reduce_print (yyrule)$/;" f file:
-yy_scan_buffer lex.yy.c /^YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )$/;" f
-yy_scan_bytes lex.yy.c /^YY_BUFFER_STATE yy_scan_bytes (yyconst char * bytes, int len )$/;" f
-yy_scan_string lex.yy.c /^YY_BUFFER_STATE yy_scan_string (yyconst char * yy_str )$/;" f
-yy_set_bol lex.yy.c 312;" d file:
-yy_set_bol lex.yy.c 3373;" d file:
-yy_set_interactive lex.yy.c 302;" d file:
-yy_set_interactive lex.yy.c 3375;" d file:
-yy_size_t lex.yy.c /^typedef unsigned int yy_size_t;$/;" t file:
-yy_stack_print cfg.tab.c /^yy_stack_print (bottom, top)$/;" f file:
-yy_start lex.yy.c /^static int yy_start = 0; \/* start state number *\/$/;" v file:
-yy_state_type lex.yy.c /^typedef int yy_state_type;$/;" t file:
-yy_switch_to_buffer lex.yy.c /^ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )$/;" f
-yy_trans_info lex.yy.c /^struct yy_trans_info$/;" s file:
-yy_try_NUL_trans lex.yy.c /^ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )$/;" f file:
-yy_verify lex.yy.c /^ flex_int32_t yy_verify;$/;" m struct:yy_trans_info file:
-yyalloc cfg.tab.c /^union yyalloc$/;" u file:
-yyalloc lex.yy.c /^void *yyalloc (yy_size_t size )$/;" f
-yychar cfg.tab.c /^int yychar;$/;" v
-yycheck cfg.tab.c /^static const short int yycheck[] =$/;" v file:
-yyclearin cfg.tab.c 1553;" d file:
-yyconst lex.yy.c 96;" d file:
-yyconst lex.yy.c 98;" d file:
-yydebug cfg.tab.c /^int yydebug;$/;" v
-yydefact cfg.tab.c /^static const unsigned short int yydefact[] =$/;" v file:
-yydefgoto cfg.tab.c /^static const short int yydefgoto[] =$/;" v file:
-yydestruct cfg.tab.c /^yydestruct (yymsg, yytype, yyvaluep)$/;" f file:
-yyensure_buffer_stack lex.yy.c /^static void yyensure_buffer_stack (void)$/;" f file:
-yyerrok cfg.tab.c 1552;" d file:
-yyerror cfg.tab.c /^static void yyerror(char* s)$/;" f file:
-yyfree lex.yy.c /^void yyfree (void * ptr )$/;" f
-yyget_debug lex.yy.c /^int yyget_debug (void)$/;" f
-yyget_in lex.yy.c /^FILE *yyget_in (void)$/;" f
-yyget_leng lex.yy.c /^int yyget_leng (void)$/;" f
-yyget_lineno lex.yy.c /^int yyget_lineno (void)$/;" f
-yyget_out lex.yy.c /^FILE *yyget_out (void)$/;" f
-yyget_text lex.yy.c /^char *yyget_text (void)$/;" f
-yyin lex.yy.c /^FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;$/;" v
-yyinput lex.yy.c /^ static int yyinput (void)$/;" f file:
-yyleng lex.yy.c /^int yyleng;$/;" v
-yyless lex.yy.c 153;" d file:
-yyless lex.yy.c 3210;" d file:
-yyless lex.yy.c 3211;" d file:
-yylex_destroy lex.yy.c /^int yylex_destroy (void)$/;" f
-yylineno lex.yy.c /^int yylineno = 1;$/;" v
-yylval cfg.tab.c /^YYSTYPE yylval;$/;" v
-yymore lex.yy.c 1126;" d file:
-yynerrs cfg.tab.c /^int yynerrs;$/;" v
-yyout lex.yy.c /^FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;$/;" v
-yypact cfg.tab.c /^static const short int yypact[] =$/;" v file:
-yypgoto cfg.tab.c /^static const short int yypgoto[] =$/;" v file:
-yypop_buffer_state lex.yy.c /^void yypop_buffer_state (void)$/;" f
-yyprhs cfg.tab.c /^static const unsigned short int yyprhs[] =$/;" v file:
-yypush_buffer_state lex.yy.c /^void yypush_buffer_state (YY_BUFFER_STATE new_buffer )$/;" f
-yyr1 cfg.tab.c /^static const unsigned char yyr1[] =$/;" v file:
-yyr2 cfg.tab.c /^static const unsigned char yyr2[] =$/;" v file:
-yyrealloc lex.yy.c /^void *yyrealloc (void * ptr, yy_size_t size )$/;" f
-yyrestart lex.yy.c /^ void yyrestart (FILE * input_file )$/;" f
-yyrhs cfg.tab.c /^static const short int yyrhs[] =$/;" v file:
-yyrline cfg.tab.c /^static const unsigned short int yyrline[] =$/;" v file:
-yyset_debug lex.yy.c /^void yyset_debug (int bdebug )$/;" f
-yyset_in lex.yy.c /^void yyset_in (FILE * in_str )$/;" f
-yyset_lineno lex.yy.c /^void yyset_lineno (int line_number )$/;" f
-yyset_out lex.yy.c /^void yyset_out (FILE * out_str )$/;" f
-yysigned_char cfg.tab.c /^ typedef short int yysigned_char;$/;" t file:
-yysigned_char cfg.tab.c /^ typedef signed char yysigned_char;$/;" t file:
-yyss cfg.tab.c /^ short int yyss;$/;" m union:yyalloc file:
-yystos cfg.tab.c /^static const unsigned char yystos[] =$/;" v file:
-yystpcpy cfg.tab.c /^yystpcpy (char *yydest, const char *yysrc)$/;" f file:
-yystpcpy cfg.tab.c 1780;" d file:
-yystrlen cfg.tab.c /^yystrlen (const char *yystr)$/;" f file:
-yystrlen cfg.tab.c 1757;" d file:
-yystype cfg.tab.c 430;" d file:
-yystype cfg.tab.h 336;" d
-yysymprint cfg.tab.c /^yysymprint (yyoutput, yytype, yyvaluep)$/;" f file:
-yytable cfg.tab.c /^static const short int yytable[] =$/;" v file:
-yyterminate lex.yy.c 1340;" d file:
-yytext lex.yy.c /^char *yytext;$/;" v
-yytext_ptr lex.yy.c 3376;" d file:
-yytext_ptr lex.yy.c 337;" d file:
-yytname cfg.tab.c /^static const char *const yytname[] =$/;" v file:
-yytokentype cfg.tab.c /^ enum yytokentype {$/;" g file:
-yytokentype cfg.tab.h /^ enum yytokentype {$/;" g
-yytoknum cfg.tab.c /^static const unsigned short int yytoknum[] =$/;" v file:
-yytranslate cfg.tab.c /^static const unsigned char yytranslate[] =$/;" v file:
-yyunput lex.yy.c /^ static void yyunput (int c, register char * yy_bp )$/;" f file:
-yyvs cfg.tab.c /^ YYSTYPE yyvs;$/;" m union:yyalloc file:
Deleted: ser/trunk/tags.h
===================================================================
--- ser/trunk/tags.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/tags.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,93 +0,0 @@
-/*
- * $Id: tags.h,v 1.7 2004/08/24 08:45:10 janakj Exp $
- *
- * - utility for generating to-tags
- * in SER, to-tags consist of two parts: a fixed part
- * which is bound to server instance and variable part
- * which is bound to request -- that helps to recognize,
- * who generated the to-tag in loops through the same
- * server -- in such cases, fixed part is constant, but
- * the variable part varies because it depends on
- * via
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*
- * History:
- * --------
- * 2003-02-18 changed TOTAG_LEN into TOTAG_VALUE_LEN, to solve
- * redefinition conflict with tm/t_msgbuilder.h (andrei)
- */
-
-
-#ifndef _TAGS_H
-#define _TAGS_H
-
-#include "parser/msg_parser.h"
-#include "globals.h"
-#include "crc.h"
-#include "str.h"
-#include "socket_info.h"
-
-#define TOTAG_VALUE_LEN (MD5_LEN+CRC16_LEN+1)
-
-/* generate variable part of to-tag for a request;
- * it will have length of CRC16_LEN, sufficiently
- * long buffer must be passed to the function */
-static inline void calc_crc_suffix( struct sip_msg *msg, char *tag_suffix)
-{
- int ss_nr;
- str suffix_source[3];
-
- ss_nr=2;
- if (msg->via1==0) return; /* no via, bad message */
- suffix_source[0]=msg->via1->host;
- suffix_source[1]=msg->via1->port_str;
- if (msg->via1->branch)
- suffix_source[ss_nr++]=msg->via1->branch->value;
- crcitt_string_array( tag_suffix, suffix_source, ss_nr );
-}
-
-static void inline init_tags( char *tag, char **suffix,
- char *signature, char separator )
-{
- str src[3];
- struct socket_info* si;
-
- si=get_first_socket();
- src[0].s=signature; src[0].len=strlen(signature);
- /* if we are not listening on anything we shouldn't be here */
- src[1].s=si?si->address_str.s:"";
- src[1].len=si?si->address_str.len:0;
- src[2].s=si?si->port_no_str.s:"";
- src[2].len=si?si->port_no_str.len:0;
-
- MDStringArray( tag, src, 3 );
-
- tag[MD5_LEN]=separator;
- *suffix=tag+MD5_LEN+1;
-}
-
-
-#endif
Deleted: ser/trunk/tcp_conn.h
===================================================================
--- ser/trunk/tcp_conn.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/tcp_conn.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,197 +0,0 @@
-/*
- * $Id: tcp_conn.h,v 1.22 2004/08/24 08:45:10 janakj Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- *
- * History:
- * --------
- * 2003-01-29 tcp buffer size ++-ed to allow for 0-terminator
- * 2003-06-30 added tcp_connection flags & state (andrei)
- * 2003-10-27 tcp port aliases support added (andrei)
- */
-
-
-
-#ifndef _tcp_conn_h
-#define _tcp_conn_h
-
-#include "ip_addr.h"
-#include "locking.h"
-
-
-#define TCP_CON_MAX_ALIASES 4 /* maximum number of port aliases */
-
-#define TCP_BUF_SIZE 65535
-#define TCP_CON_TIMEOUT 120 /* in seconds */
-#define TCP_CON_SEND_TIMEOUT 120 /* timeout after a send */
-#define DEFAULT_TCP_SEND_TIMEOUT 10 /* if a send can't write for more then 10s,
- timeout */
-#define DEFAULT_TCP_CONNECT_TIMEOUT 10 /* if a connect doesn't complete in this
- time, timeout */
-#define TCP_CHILD_TIMEOUT 5 /* after 5 seconds, the child "returns"
- the connection to the tcp master process */
-#define TCP_MAIN_SELECT_TIMEOUT 5 /* how often "tcp main" checks for timeout*/
-#define TCP_CHILD_SELECT_TIMEOUT 2 /* the same as above but for children */
-
-
-/* tcp connection flags */
-#define F_CONN_NON_BLOCKING 1
-
-
-enum tcp_req_errors { TCP_REQ_INIT, TCP_REQ_OK, TCP_READ_ERROR,
- TCP_REQ_OVERRUN, TCP_REQ_BAD_LEN };
-enum tcp_req_states { H_SKIP_EMPTY, H_SKIP, H_LF, H_LFCR, H_BODY, H_STARTWS,
- H_CONT_LEN1, H_CONT_LEN2, H_CONT_LEN3, H_CONT_LEN4, H_CONT_LEN5,
- H_CONT_LEN6, H_CONT_LEN7, H_CONT_LEN8, H_CONT_LEN9, H_CONT_LEN10,
- H_CONT_LEN11, H_CONT_LEN12, H_CONT_LEN13, H_L_COLON,
- H_CONT_LEN_BODY, H_CONT_LEN_BODY_PARSE
- };
-
-enum tcp_conn_states { S_CONN_ERROR=-2, S_CONN_BAD=-1, S_CONN_OK=0,
- S_CONN_INIT, S_CONN_EOF,
- S_CONN_ACCEPT, S_CONN_CONNECT };
-
-
-/* fd communication commands */
-enum conn_cmds { CONN_DESTROY=-3, CONN_ERROR=-2, CONN_EOF=-1, CONN_RELEASE,
- CONN_GET_FD, CONN_NEW };
-/* CONN_RELEASE, EOF, ERROR, DESTROY can be used by "reader" processes
- * CONN_GET_FD, NEW, ERROR only by writers */
-
-struct tcp_req{
- struct tcp_req* next;
- /* sockaddr ? */
- char buf[TCP_BUF_SIZE+1]; /* bytes read so far (+0-terminator)*/
- char* start; /* where the message starts, after all the empty lines are
- skipped*/
- char* pos; /* current position in buf */
- char* parsed; /* last parsed position */
- char* body; /* body position */
- int content_len;
- int has_content_len; /* 1 if content_length was parsed ok*/
- int complete; /* 1 if one req has been fully read, 0 otherwise*/
- int bytes_to_go; /* how many bytes we have still to read from the body*/
- enum tcp_req_errors error;
- enum tcp_req_states state;
-};
-
-
-
-struct tcp_connection;
-
-/* tcp port alias structure */
-struct tcp_conn_alias{
- struct tcp_connection* parent;
- struct tcp_conn_alias* next;
- struct tcp_conn_alias* prev;
- unsigned short port; /* alias port */
- unsigned short hash; /* hash index in the address hash */
-};
-
-
-
-struct tcp_connection{
- int s; /*socket, used by "tcp main" */
- int fd; /* used only by "children", don't modify it! private data! */
- gen_lock_t write_lock;
- int id; /* id (unique!) used to retrieve a specific connection when
- reply-ing*/
- struct receive_info rcv; /* src & dst ip, ports, proto a.s.o*/
- struct tcp_req req; /* request data */
- volatile int refcnt;
- enum sip_protos type; /* PROTO_TCP or a protocol over it, e.g. TLS */
- int flags; /* connection related flags */
- enum tcp_conn_states state; /* connection state */
- void* extra_data; /* extra data associated to the connection, 0 for tcp*/
- int timeout; /* connection timeout, after this it will be removed*/
- unsigned id_hash; /* hash index in the id_hash */
- int aliases; /* aliases number, at least 1 */
- struct tcp_conn_alias con_aliases[TCP_CON_MAX_ALIASES];
- struct tcp_connection* id_next; /* next, prev in id hash table */
- struct tcp_connection* id_prev;
- struct tcp_connection* c_next; /* child next prev (use locally) */
- struct tcp_connection* c_prev;
-};
-
-
-
-
-
-
-#define init_tcp_req( r) \
- do{ \
- memset( (r), 0, sizeof(struct tcp_req)); \
- (r)->parsed=(r)->pos=(r)->start=(r)->buf; \
- (r)->error=TCP_REQ_OK;\
- (r)->state=H_SKIP_EMPTY; \
- }while(0)
-
-
-/* add a tcpconn to a list*/
-/* list head, new element, next member, prev member */
-#define tcpconn_listadd(head, c, next, prev) \
- do{ \
- /* add it at the begining of the list*/ \
- (c)->next=(head); \
- (c)->prev=0; \
- if ((head)) (head)->prev=(c); \
- (head)=(c); \
- } while(0)
-
-
-/* remove a tcpconn from a list*/
-#define tcpconn_listrm(head, c, next, prev) \
- do{ \
- if ((head)==(c)) (head)=(c)->next; \
- if ((c)->next) (c)->next->prev=(c)->prev; \
- if ((c)->prev) (c)->prev->next=(c)->next; \
- }while(0)
-
-
-#define TCPCONN_LOCK lock_get(tcpconn_lock);
-#define TCPCONN_UNLOCK lock_release(tcpconn_lock);
-
-#define TCP_ALIAS_HASH_SIZE 1024
-#define TCP_ID_HASH_SIZE 1024
-
-static inline unsigned tcp_addr_hash(struct ip_addr* ip, unsigned short port)
-{
- if(ip->len==4) return (ip->u.addr32[0]^port)&(TCP_ALIAS_HASH_SIZE-1);
- else if (ip->len==16)
- return (ip->u.addr32[0]^ip->u.addr32[1]^ip->u.addr32[2]^
- ip->u.addr32[3]^port) & (TCP_ALIAS_HASH_SIZE-1);
- else{
- LOG(L_CRIT, "tcp_addr_hash: BUG: bad len %d for an ip address\n",
- ip->len);
- return 0;
- }
-}
-
-#define tcp_id_hash(id) (id&(TCP_ID_HASH_SIZE-1))
-
-
-#endif
-
-
Deleted: ser/trunk/tcp_init.h
===================================================================
--- ser/trunk/tcp_init.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/tcp_init.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,40 +0,0 @@
-/*
- * $Id: tcp_init.h,v 1.3 2004/08/24 08:45:10 janakj Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef tcp_init_h
-#define tcp_init_h
-#include "ip_addr.h"
-
-int init_tcp();
-void destroy_tcp();
-int tcp_init(struct socket_info* sock_info);
-int tcp_init_children();
-void tcp_main_loop();
-void tcp_receive_loop(int unix_sock);
-
-
-#endif
Deleted: ser/trunk/tcp_main.c
===================================================================
--- ser/trunk/tcp_main.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/tcp_main.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,1449 +0,0 @@
-/*
- * $Id: tcp_main.c,v 1.58.2.2 2005/06/16 10:30:07 andrei Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*
- * History:
- * --------
- * 2002-11-29 created by andrei
- * 2002-12-11 added tcp_send (andrei)
- * 2003-01-20 locking fixes, hashtables (andrei)
- * 2003-02-20 s/lock_t/gen_lock_t/ to avoid a conflict on solaris (andrei)
- * 2003-02-25 Nagle is disabled if -DDISABLE_NAGLE (andrei)
- * 2003-03-29 SO_REUSEADDR before calling bind to allow
- * server restart, Nagle set on the (hopefuly)
- * correct socket (jiri)
- * 2003-03-31 always try to find the corresponding tcp listen socket for
- * a temp. socket and store in in *->bind_address: added
- * find_tcp_si, modified tcpconn_connect (andrei)
- * 2003-04-14 set sockopts to TOS low delay (andrei)
- * 2003-06-30 moved tcp new connect checking & handling to
- * handle_new_connect (andrei)
- * 2003-07-09 tls_close called before closing the tcp connection (andrei)
- * 2003-10-24 converted to the new socket_info lists (andrei)
- * 2003-10-27 tcp port aliases support added (andrei)
- * 2003-11-04 always lock before manipulating refcnt; sendchild
- * does not inc refcnt by itself anymore (andrei)
- * 2003-11-07 different unix sockets are used for fd passing
- * to/from readers/writers (andrei)
- * 2003-11-17 handle_new_connect & tcp_connect will close the
- * new socket if tcpconn_new return 0 (e.g. out of mem) (andrei)
- * 2003-11-28 tcp_blocking_write & tcp_blocking_connect added (andrei)
- * 2004-11-08 dropped find_tcp_si and replaced with find_si (andrei)
- */
-
-
-#ifdef USE_TCP
-
-
-#ifndef SHM_MEM
-#error "shared memory support needed (add -DSHM_MEM to Makefile.defs)"
-#endif
-
-
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/select.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <netinet/tcp.h>
-#include <sys/uio.h> /* writev*/
-#include <netdb.h>
-
-#include <unistd.h>
-#include <fcntl.h>
-
-#include <errno.h>
-#include <string.h>
-
-
-
-#include "ip_addr.h"
-#include "pass_fd.h"
-#include "tcp_conn.h"
-#include "globals.h"
-#include "pt.h"
-#include "locking.h"
-#include "mem/mem.h"
-#include "mem/shm_mem.h"
-#include "timer.h"
-#include "sr_module.h"
-#include "tcp_server.h"
-#include "tcp_init.h"
-#include "tsend.h"
-#ifdef USE_TLS
-#include "tls/tls_server.h"
-#endif
-
-
-
-
-#define local_malloc pkg_malloc
-#define local_free pkg_free
-
-#define MAX_TCP_CHILDREN 100
-
-struct tcp_child{
- pid_t pid;
- int proc_no; /* ser proc_no, for debugging */
- int unix_sock; /* unix "read child" sock fd */
- int busy;
- int n_reqs; /* number of requests serviced so far */
-};
-
-
-int tcp_accept_aliases=0; /* by default don't accept aliases */
-int tcp_connect_timeout=DEFAULT_TCP_CONNECT_TIMEOUT;
-int tcp_send_timeout=DEFAULT_TCP_SEND_TIMEOUT;
-
-/* connection hash table (after ip&port) , includes also aliases */
-struct tcp_conn_alias** tcpconn_aliases_hash=0;
-/* connection hash table (after connection id) */
-struct tcp_connection** tcpconn_id_hash=0;
-gen_lock_t* tcpconn_lock=0;
-
-struct tcp_child tcp_children[MAX_TCP_CHILDREN];
-static int* connection_id=0; /* unique for each connection, used for
- quickly finding the corresponding connection
- for a reply */
-int unix_tcp_sock;
-
-int tcp_proto_no=-1; /* tcp protocol number as returned by getprotobyname */
-
-
-
-/* set all socket/fd options: disable nagle, tos lowdelay, non-blocking
- * return -1 on error */
-static int init_sock_opt(int s)
-{
- int flags;
- int optval;
-
-#ifdef DISABLE_NAGLE
- flags=1;
- if ( (tcp_proto_no!=-1) && (setsockopt(s, tcp_proto_no , TCP_NODELAY,
- &flags, sizeof(flags))<0) ){
- LOG(L_WARN, "WARNING: init_sock_opt: could not disable Nagle: %s\n",
- strerror(errno));
- }
-#endif
- /* tos*/
- optval=IPTOS_LOWDELAY;
- if (setsockopt(s, IPPROTO_IP, IP_TOS, (void*)&optval,sizeof(optval)) ==-1){
- LOG(L_WARN, "WARNING: init_sock_opt: setsockopt tos: %s\n",
- strerror(errno));
- /* continue since this is not critical */
- }
- /* non-blocking */
- flags=fcntl(s, F_GETFL);
- if (flags==-1){
- LOG(L_ERR, "ERROR: init_sock_opt: fnctl failed: (%d) %s\n",
- errno, strerror(errno));
- goto error;
- }
- if (fcntl(s, F_SETFL, flags|O_NONBLOCK)==-1){
- LOG(L_ERR, "ERROR: init_sock_opt: fcntl: set non-blocking failed:"
- " (%d) %s\n", errno, strerror(errno));
- goto error;
- }
- return 0;
-error:
- return -1;
-}
-
-
-
-static int tcp_blocking_connect(int fd, const struct sockaddr *servaddr,
- socklen_t addrlen)
-{
- int n;
- fd_set sel_set;
- struct timeval timeout;
- int ticks;
- int err;
- unsigned int err_len;
-
-again:
- n=connect(fd, servaddr, addrlen);
- if (n==-1){
- if (errno==EINTR) goto again;
- if (errno!=EINPROGRESS && errno!=EALREADY){
- LOG(L_ERR, "ERROR: tcp_blocking_connect: (%d) %s\n",
- errno, strerror(errno));
- goto error;
- }
- }else goto end;
-
- while(1){
- FD_ZERO(&sel_set);
- FD_SET(fd, &sel_set);
- timeout.tv_sec=tcp_connect_timeout;
- timeout.tv_usec=0;
- ticks=get_ticks();
- n=select(fd+1, 0, &sel_set, 0, &timeout);
- if (n<0){
- if (errno==EINTR) continue;
- LOG(L_ERR, "ERROR: tcp_blocking_connect: select failed: (%d) %s\n",
- errno, strerror(errno));
- goto error;
- }else if (n==0){
- /* timeout */
- if (get_ticks()-ticks>=tcp_connect_timeout){
- LOG(L_ERR, "ERROR: tcp_blocking_connect: timeout (%d)\n",
- tcp_connect_timeout);
- goto error;
- }
- continue;
- }
- if (FD_ISSET(fd, &sel_set)){
- err_len=sizeof(err);
- getsockopt(fd, SOL_SOCKET, SO_ERROR, &err, &err_len);
- if (err==0) goto end;
- if (err!=EINPROGRESS && err!=EALREADY){
- LOG(L_ERR, "ERROR: tcp_blocking_connect: SO_ERROR (%d) %s\n",
- err, strerror(err));
- goto error;
- }
- }
- }
-error:
- return -1;
-end:
- return 0;
-}
-
-
-
-#if 0
-/* blocking write even on non-blocking sockets
- * if TCP_TIMEOUT will return with error */
-static int tcp_blocking_write(struct tcp_connection* c, int fd, char* buf,
- unsigned int len)
-{
- int n;
- fd_set sel_set;
- struct timeval timeout;
- int ticks;
- int initial_len;
-
- initial_len=len;
-again:
-
- n=send(fd, buf, len,
-#ifdef HAVE_MSG_NOSIGNAL
- MSG_NOSIGNAL
-#else
- 0
-#endif
- );
- if (n<0){
- if (errno==EINTR) goto again;
- else if (errno!=EAGAIN && errno!=EWOULDBLOCK){
- LOG(L_ERR, "tcp_blocking_write: failed to send: (%d) %s\n",
- errno, strerror(errno));
- goto error;
- }
- }else if (n<len){
- /* partial write */
- buf+=n;
- len-=n;
- }else{
- /* success: full write */
- goto end;
- }
- while(1){
- FD_ZERO(&sel_set);
- FD_SET(fd, &sel_set);
- timeout.tv_sec=tcp_send_timeout;
- timeout.tv_usec=0;
- ticks=get_ticks();
- n=select(fd+1, 0, &sel_set, 0, &timeout);
- if (n<0){
- if (errno==EINTR) continue; /* signal, ignore */
- LOG(L_ERR, "ERROR: tcp_blocking_write: select failed: "
- " (%d) %s\n", errno, strerror(errno));
- goto error;
- }else if (n==0){
- /* timeout */
- if (get_ticks()-ticks>=tcp_send_timeout){
- LOG(L_ERR, "ERROR: tcp_blocking_write: send timeout (%d)\n",
- tcp_send_timeout);
- goto error;
- }
- continue;
- }
- if (FD_ISSET(fd, &sel_set)){
- /* we can write again */
- goto again;
- }
- }
-error:
- return -1;
-end:
- return initial_len;
-}
-#endif
-
-
-
-struct tcp_connection* tcpconn_new(int sock, union sockaddr_union* su,
- struct socket_info* ba, int type,
- int state)
-{
- struct tcp_connection *c;
-
- c=(struct tcp_connection*)shm_malloc(sizeof(struct tcp_connection));
- if (c==0){
- LOG(L_ERR, "ERROR: tcpconn_new: mem. allocation failure\n");
- goto error;
- }
- memset(c, 0, sizeof(struct tcp_connection)); /* zero init */
- c->s=sock;
- c->fd=-1; /* not initialized */
- if (lock_init(&c->write_lock)==0){
- LOG(L_ERR, "ERROR: tcpconn_new: init lock failed\n");
- goto error;
- }
-
- c->rcv.src_su=*su;
-
- c->refcnt=0;
- su2ip_addr(&c->rcv.src_ip, su);
- c->rcv.src_port=su_getport(su);
- c->rcv.bind_address=ba;
- if (ba){
- c->rcv.dst_ip=ba->address;
- c->rcv.dst_port=ba->port_no;
- }
- print_ip("tcpconn_new: new tcp connection: ", &c->rcv.src_ip, "\n");
- DBG( "tcpconn_new: on port %d, type %d\n", c->rcv.src_port, type);
- init_tcp_req(&c->req);
- c->id=(*connection_id)++;
- c->rcv.proto_reserved1=0; /* this will be filled before receive_message*/
- c->rcv.proto_reserved2=0;
- c->state=state;
- c->extra_data=0;
-#ifdef USE_TLS
- if (type==PROTO_TLS){
- if (tls_tcpconn_init(c, sock)==-1) goto error;
- }else
-#endif /* USE_TLS*/
- {
- c->type=PROTO_TCP;
- c->rcv.proto=PROTO_TCP;
- c->flags=0;
- c->timeout=get_ticks()+TCP_CON_TIMEOUT;
- }
-
-
- return c;
-
-error:
- if (c) shm_free(c);
- return 0;
-}
-
-
-
-struct tcp_connection* tcpconn_connect(union sockaddr_union* server, int type)
-{
- int s;
- struct socket_info* si;
- union sockaddr_union my_name;
- socklen_t my_name_len;
- struct tcp_connection* con;
- struct ip_addr ip;
-
- s=socket(AF2PF(server->s.sa_family), SOCK_STREAM, 0);
- if (s==-1){
- LOG(L_ERR, "ERROR: tcpconn_connect: socket: (%d) %s\n",
- errno, strerror(errno));
- goto error;
- }
- if (init_sock_opt(s)<0){
- LOG(L_ERR, "ERROR: tcpconn_connect: init_sock_opt failed\n");
- goto error;
- }
- if (tcp_blocking_connect(s, &server->s, sockaddru_len(*server))<0){
- LOG(L_ERR, "ERROR: tcpconn_connect: tcp_blocking_connect failed\n");
- goto error;
- }
- my_name_len=sizeof(my_name);
- if (getsockname(s, &my_name.s, &my_name_len)!=0){
- LOG(L_ERR, "ERROR: tcp_connect: getsockname failed: %s(%d)\n",
- strerror(errno), errno);
- si=0; /* try to go on */
- }
- su2ip_addr(&ip, &my_name);
-#ifdef USE_TLS
- if (type==PROTO_TLS)
- si=find_si(&ip, 0, PROTO_TLS);
- else
-#endif
- si=find_si(&ip, 0, PROTO_TCP);
-
- if (si==0){
- LOG(L_ERR, "ERROR: tcp_connect: could not find corresponding"
- " listening socket, using default...\n");
- if (server->s.sa_family==AF_INET) si=sendipv4_tcp;
-#ifdef USE_IPV6
- else si=sendipv6_tcp;
-#endif
- }
- con=tcpconn_new(s, server, si, type, S_CONN_CONNECT);
- if (con==0){
- LOG(L_ERR, "ERROR: tcp_connect: tcpconn_new failed, closing the "
- " socket\n");
- goto error;
- }
- return con;
- /*FIXME: set sock idx! */
-error:
- if (s!=-1) close(s); /* close the opened socket */
- return 0;
-}
-
-
-
-struct tcp_connection* tcpconn_add(struct tcp_connection *c)
-{
- unsigned hash;
-
- if (c){
- TCPCONN_LOCK;
- /* add it at the begining of the list*/
- hash=tcp_id_hash(c->id);
- c->id_hash=hash;
- tcpconn_listadd(tcpconn_id_hash[hash], c, id_next, id_prev);
-
- hash=tcp_addr_hash(&c->rcv.src_ip, c->rcv.src_port);
- /* set the first alias */
- c->con_aliases[0].port=c->rcv.src_port;
- c->con_aliases[0].hash=hash;
- c->con_aliases[0].parent=c;
- tcpconn_listadd(tcpconn_aliases_hash[hash], &c->con_aliases[0],
- next, prev);
- c->aliases++;
- TCPCONN_UNLOCK;
- DBG("tcpconn_add: hashes: %d, %d\n", hash, c->id_hash);
- return c;
- }else{
- LOG(L_CRIT, "tcpconn_add: BUG: null connection pointer\n");
- return 0;
- }
-}
-
-
-/* unsafe tcpconn_rm version (nolocks) */
-void _tcpconn_rm(struct tcp_connection* c)
-{
- int r;
- tcpconn_listrm(tcpconn_id_hash[c->id_hash], c, id_next, id_prev);
- /* remove all the aliases */
- for (r=0; r<c->aliases; r++)
- tcpconn_listrm(tcpconn_aliases_hash[c->con_aliases[r].hash],
- &c->con_aliases[r], next, prev);
- lock_destroy(&c->write_lock);
-#ifdef USE_TLS
- if (c->type==PROTO_TLS) tls_tcpconn_clean(c);
-#endif
- shm_free(c);
-}
-
-
-
-void tcpconn_rm(struct tcp_connection* c)
-{
- int r;
- TCPCONN_LOCK;
- tcpconn_listrm(tcpconn_id_hash[c->id_hash], c, id_next, id_prev);
- /* remove all the aliases */
- for (r=0; r<c->aliases; r++)
- tcpconn_listrm(tcpconn_aliases_hash[c->con_aliases[r].hash],
- &c->con_aliases[r], next, prev);
- TCPCONN_UNLOCK;
- lock_destroy(&c->write_lock);
-#ifdef USE_TLS
- if ((c->type==PROTO_TLS)&&(c->extra_data)) tls_tcpconn_clean(c);
-#endif
- shm_free(c);
-}
-
-
-/* finds a connection, if id=0 uses the ip addr & port (host byte order)
- * WARNING: unprotected (locks) use tcpconn_get unless you really
- * know what you are doing */
-struct tcp_connection* _tcpconn_find(int id, struct ip_addr* ip, int port)
-{
-
- struct tcp_connection *c;
- struct tcp_conn_alias* a;
- unsigned hash;
-
-#ifdef EXTRA_DEBUG
- DBG("tcpconn_find: %d port %d\n",id, port);
- if (ip) print_ip("tcpconn_find: ip ", ip, "\n");
-#endif
- if (id){
- hash=tcp_id_hash(id);
- for (c=tcpconn_id_hash[hash]; c; c=c->id_next){
-#ifdef EXTRA_DEBUG
- DBG("c=%p, c->id=%d, port=%d\n",c, c->id, c->rcv.src_port);
- print_ip("ip=", &c->rcv.src_ip, "\n");
-#endif
- if ((id==c->id)&&(c->state!=S_CONN_BAD)) return c;
- }
- }else if (ip){
- hash=tcp_addr_hash(ip, port);
- for (a=tcpconn_aliases_hash[hash]; a; a=a->next){
-#ifdef EXTRA_DEBUG
- DBG("a=%p, c=%p, c->id=%d, alias port= %d port=%d\n", a, a->parent,
- a->parent->id, a->port, a->parent->rcv.src_port);
- print_ip("ip=",&a->parent->rcv.src_ip,"\n");
-#endif
- if ( (a->parent->state!=S_CONN_BAD) && (port==a->port) &&
- (ip_addr_cmp(ip, &a->parent->rcv.src_ip)) )
- return a->parent;
- }
- }
- return 0;
-}
-
-
-
-/* _tcpconn_find with locks and timeout */
-struct tcp_connection* tcpconn_get(int id, struct ip_addr* ip, int port,
- int timeout)
-{
- struct tcp_connection* c;
- TCPCONN_LOCK;
- c=_tcpconn_find(id, ip, port);
- if (c){
- c->refcnt++;
- c->timeout=get_ticks()+timeout;
- }
- TCPCONN_UNLOCK;
- return c;
-}
-
-
-
-/* add port as an alias for the "id" connection
- * returns 0 on success,-1 on failure */
-int tcpconn_add_alias(int id, int port, int proto)
-{
- struct tcp_connection* c;
- unsigned hash;
- struct tcp_conn_alias* a;
-
- a=0;
- /* fix the port */
- port=port?port:((proto==PROTO_TLS)?SIPS_PORT:SIP_PORT);
- TCPCONN_LOCK;
- /* check if alias already exists */
- c=_tcpconn_find(id, 0, 0);
- if (c){
- hash=tcp_addr_hash(&c->rcv.src_ip, port);
- /* search the aliases for an already existing one */
- for (a=tcpconn_aliases_hash[hash]; a; a=a->next){
- if ( (a->parent->state!=S_CONN_BAD) && (port==a->port) &&
- (ip_addr_cmp(&c->rcv.src_ip, &a->parent->rcv.src_ip)) ){
- /* found */
- if (a->parent!=c) goto error_sec;
- else goto ok;
- }
- }
- if (c->aliases>=TCP_CON_MAX_ALIASES) goto error_aliases;
- c->con_aliases[c->aliases].parent=c;
- c->con_aliases[c->aliases].port=port;
- c->con_aliases[c->aliases].hash=hash;
- tcpconn_listadd(tcpconn_aliases_hash[hash],
- &c->con_aliases[c->aliases], next, prev);
- c->aliases++;
- }else goto error_not_found;
-ok:
- TCPCONN_UNLOCK;
-#ifdef EXTRA_DEBUG
- if (a) DBG("tcpconn_add_alias: alias already present\n");
- else DBG("tcpconn_add_alias: alias port %d for hash %d, id %d\n",
- port, hash, c->id);
-#endif
- return 0;
-error_aliases:
- TCPCONN_UNLOCK;
- LOG(L_ERR, "ERROR: tcpconn_add_alias: too many aliases for connection %p"
- " (%d)\n", c, c->id);
- return -1;
-error_not_found:
- TCPCONN_UNLOCK;
- LOG(L_ERR, "ERROR: tcpconn_add_alias: no connection found for id %d\n",id);
- return -1;
-error_sec:
- TCPCONN_UNLOCK;
- LOG(L_ERR, "ERROR: tcpconn_add_alias: possible port hijack attempt\n");
- LOG(L_ERR, "ERROR: tcpconn_add_alias: alias already present and points"
- " to another connection (%d : %d and %d : %d)\n",
- a->parent->id, port, c->id, port);
- return -1;
-}
-
-
-
-void tcpconn_ref(struct tcp_connection* c)
-{
- TCPCONN_LOCK;
- c->refcnt++; /* FIXME: atomic_dec */
- TCPCONN_UNLOCK;
-}
-
-
-
-void tcpconn_put(struct tcp_connection* c)
-{
- TCPCONN_LOCK;
- c->refcnt--; /* FIXME: atomic_dec */
- TCPCONN_UNLOCK;
-}
-
-
-
-/* finds a tcpconn & sends on it */
-int tcp_send(int type, char* buf, unsigned len, union sockaddr_union* to,
- int id)
-{
- struct tcp_connection *c;
- struct tcp_connection *tmp;
- struct ip_addr ip;
- int port;
- int fd;
- long response[2];
- int n;
-
- port=0;
- if (to){
- su2ip_addr(&ip, to);
- port=su_getport(to);
- c=tcpconn_get(id, &ip, port, TCP_CON_SEND_TIMEOUT);
- }else if (id){
- c=tcpconn_get(id, 0, 0, TCP_CON_SEND_TIMEOUT);
- }else{
- LOG(L_CRIT, "BUG: tcp_send called with null id & to\n");
- return -1;
- }
-
- if (id){
- if (c==0) {
- if (to){
- /* try again w/o id */
- c=tcpconn_get(0, &ip, port, TCP_CON_SEND_TIMEOUT);
- goto no_id;
- }else{
- LOG(L_ERR, "ERROR: tcp_send: id %d not found, dropping\n",
- id);
- return -1;
- }
- }else goto get_fd;
- }
-no_id:
- if (c==0){
- DBG("tcp_send: no open tcp connection found, opening new one\n");
- /* create tcp connection */
- if ((c=tcpconn_connect(to, type))==0){
- LOG(L_ERR, "ERROR: tcp_send: connect failed\n");
- return -1;
- }
- c->refcnt++; /* safe to do it w/o locking, it's not yet
- available to the rest of the world */
- fd=c->s;
-
- /* send the new tcpconn to "tcp main" */
- response[0]=(long)c;
- response[1]=CONN_NEW;
- n=send_all(unix_tcp_sock, response, sizeof(response));
- if (n<=0){
- LOG(L_ERR, "BUG: tcp_send: failed write: %s (%d)\n",
- strerror(errno), errno);
- n=-1;
- goto end;
- }
- n=send_fd(unix_tcp_sock, &c, sizeof(c), c->s);
- if (n<=0){
- LOG(L_ERR, "BUG: tcp_send: failed send_fd: %s (%d)\n",
- strerror(errno), errno);
- n=-1;
- goto end;
- }
- goto send_it;
- }
-get_fd:
- /* todo: see if this is not the same process holding
- * c and if so send directly on c->fd */
- DBG("tcp_send: tcp connection found (%p), acquiring fd\n", c);
- /* get the fd */
- response[0]=(long)c;
- response[1]=CONN_GET_FD;
- n=send_all(unix_tcp_sock, response, sizeof(response));
- if (n<=0){
- LOG(L_ERR, "BUG: tcp_send: failed to get fd(write):%s (%d)\n",
- strerror(errno), errno);
- n=-1;
- goto release_c;
- }
- DBG("tcp_send, c= %p, n=%d\n", c, n);
- tmp=c;
- n=receive_fd(unix_tcp_sock, &c, sizeof(c), &fd);
- if (n<=0){
- LOG(L_ERR, "BUG: tcp_send: failed to get fd(receive_fd):"
- " %s (%d)\n", strerror(errno), errno);
- n=-1;
- goto release_c;
- }
- if (c!=tmp){
- LOG(L_CRIT, "BUG: tcp_send: get_fd: got different connection:"
- " %p (id= %d, refcnt=%d state=%d != "
- " %p (id= %d, refcnt=%d state=%d (n=%d)\n",
- c, c->id, c->refcnt, c->state,
- tmp, tmp->id, tmp->refcnt, tmp->state, n
- );
- n=-1; /* fail */
- goto end;
- }
- DBG("tcp_send: after receive_fd: c= %p n=%d fd=%d\n",c, n, fd);
-
-
-
-send_it:
- DBG("tcp_send: sending...\n");
- lock_get(&c->write_lock);
-#ifdef USE_TLS
- if (c->type==PROTO_TLS)
- n=tls_blocking_write(c, fd, buf, len);
- else
-#endif
- /* n=tcp_blocking_write(c, fd, buf, len); */
- n=tsend_stream(fd, buf, len, tcp_send_timeout*1000);
- lock_release(&c->write_lock);
- DBG("tcp_send: after write: c= %p n=%d fd=%d\n",c, n, fd);
- DBG("tcp_send: buf=\n%.*s\n", (int)len, buf);
- if (n<0){
- LOG(L_ERR, "ERROR: tcp_send: failed to send\n");
- /* error on the connection , mark it as bad and set 0 timeout */
- c->state=S_CONN_BAD;
- c->timeout=0;
- /* tell "main" it should drop this (optional it will t/o anyway?)*/
- response[0]=(long)c;
- response[1]=CONN_ERROR;
- n=send_all(unix_tcp_sock, response, sizeof(response));
- /* CONN_ERROR will auto-dec refcnt => we must not call tcpconn_put !!*/
- if (n<=0){
- LOG(L_ERR, "BUG: tcp_send: error return failed (write):%s (%d)\n",
- strerror(errno), errno);
- n=-1;
- }
- close(fd);
- return n; /* error return, no tcpconn_put */
- }
-end:
- close(fd);
-release_c:
- tcpconn_put(c); /* release c (lock; dec refcnt; unlock) */
- return n;
-}
-
-
-
-/* very inefficient for now - FIXME*/
-void tcpconn_timeout(fd_set* set)
-{
- struct tcp_connection *c, *next;
- int ticks;
- unsigned h;
- int fd;
-
-
- ticks=get_ticks();
- TCPCONN_LOCK; /* fixme: we can lock only on delete IMO */
- for(h=0; h<TCP_ID_HASH_SIZE; h++){
- c=tcpconn_id_hash[h];
- while(c){
- next=c->id_next;
- if ((c->refcnt==0) && (ticks>c->timeout)) {
- DBG("tcpconn_timeout: timeout for hash=%d - %p (%d > %d)\n",
- h, c, ticks, c->timeout);
- fd=c->s;
-#ifdef USE_TLS
- if (c->type==PROTO_TLS)
- tls_close(c, fd);
-#endif
- _tcpconn_rm(c);
- if (fd>0) {
- FD_CLR(fd, set);
- close(fd);
- }
- }
- c=next;
- }
- }
- TCPCONN_UNLOCK;
-}
-
-
-
-int tcp_init(struct socket_info* sock_info)
-{
- union sockaddr_union* addr;
- int optval;
-#ifdef DISABLE_NAGLE
- int flag;
- struct protoent* pe;
-
- if (tcp_proto_no==-1){ /* if not already set */
- pe=getprotobyname("tcp");
- if (pe==0){
- LOG(L_ERR, "ERROR: tcp_init: could not get TCP protocol number\n");
- tcp_proto_no=-1;
- }else{
- tcp_proto_no=pe->p_proto;
- }
- }
-#endif
-
- addr=&sock_info->su;
- /* sock_info->proto=PROTO_TCP; */
- if (init_su(addr, &sock_info->address, sock_info->port_no)<0){
- LOG(L_ERR, "ERROR: tcp_init: could no init sockaddr_union\n");
- goto error;
- }
- sock_info->socket=socket(AF2PF(addr->s.sa_family), SOCK_STREAM, 0);
- if (sock_info->socket==-1){
- LOG(L_ERR, "ERROR: tcp_init: socket: %s\n", strerror(errno));
- goto error;
- }
-#ifdef DISABLE_NAGLE
- flag=1;
- if ( (tcp_proto_no!=-1) &&
- (setsockopt(sock_info->socket, tcp_proto_no , TCP_NODELAY,
- &flag, sizeof(flag))<0) ){
- LOG(L_ERR, "ERROR: tcp_init: could not disable Nagle: %s\n",
- strerror(errno));
- }
-#endif
-
-
-#if !defined(TCP_DONT_REUSEADDR)
- /* Stevens, "Network Programming", Section 7.5, "Generic Socket
- * Options": "...server started,..a child continues..on existing
- * connection..listening server is restarted...call to bind fails
- * ... ALL TCP servers should specify the SO_REUSEADDRE option
- * to allow the server to be restarted in this situation
- *
- * Indeed, without this option, the server can't restart.
- * -jiri
- */
- optval=1;
- if (setsockopt(sock_info->socket, SOL_SOCKET, SO_REUSEADDR,
- (void*)&optval, sizeof(optval))==-1) {
- LOG(L_ERR, "ERROR: tcp_init: setsockopt %s\n",
- strerror(errno));
- goto error;
- }
-#endif
- /* tos */
- optval=IPTOS_LOWDELAY;
- if (setsockopt(sock_info->socket, IPPROTO_IP, IP_TOS, (void*)&optval,
- sizeof(optval)) ==-1){
- LOG(L_WARN, "WARNING: tcp_init: setsockopt tos: %s\n", strerror(errno));
- /* continue since this is not critical */
- }
- if (bind(sock_info->socket, &addr->s, sockaddru_len(*addr))==-1){
- LOG(L_ERR, "ERROR: tcp_init: bind(%x, %p, %d) on %s: %s\n",
- sock_info->socket, &addr->s,
- (unsigned)sockaddru_len(*addr),
- sock_info->address_str.s,
- strerror(errno));
- goto error;
- }
- if (listen(sock_info->socket, 10)==-1){
- LOG(L_ERR, "ERROR: tcp_init: listen(%x, %p, %d) on %s: %s\n",
- sock_info->socket, &addr->s,
- (unsigned)sockaddru_len(*addr),
- sock_info->address_str.s,
- strerror(errno));
- goto error;
- }
-
- return 0;
-error:
- if (sock_info->socket!=-1){
- close(sock_info->socket);
- sock_info->socket=-1;
- }
- return -1;
-}
-
-
-
-static int send2child(struct tcp_connection* tcpconn)
-{
- int i;
- int min_busy;
- int idx;
-
- min_busy=tcp_children[0].busy;
- idx=0;
- for (i=0; i<tcp_children_no; i++){
- if (!tcp_children[i].busy){
- idx=i;
- min_busy=0;
- break;
- }else if (min_busy>tcp_children[i].busy){
- min_busy=tcp_children[i].busy;
- idx=i;
- }
- }
-
- tcp_children[idx].busy++;
- tcp_children[idx].n_reqs++;
- if (min_busy){
- DBG("WARNING: send2child: no free tcp receiver, "
- " connection passed to the least busy one (%d)\n",
- min_busy);
- }
- DBG("send2child: to tcp child %d %d(%d), %p\n", idx,
- tcp_children[idx].proc_no,
- tcp_children[idx].pid, tcpconn);
- if (send_fd(tcp_children[idx].unix_sock, &tcpconn, sizeof(tcpconn),
- tcpconn->s)<=0){
- LOG(L_ERR, "ERROR: send2child: send_fd failed\n");
- return -1;
- }
-
- return 0;
-}
-
-
-/* handle a new connection, called internally by tcp_main_loop */
-static inline void handle_new_connect(struct socket_info* si,
- fd_set* sel_set, int* n)
-{
- union sockaddr_union su;
- struct tcp_connection* tcpconn;
- socklen_t su_len;
- int new_sock;
-
- if ((FD_ISSET(si->socket, sel_set))){
- /* got a connection on r */
- su_len=sizeof(su);
- new_sock=accept(si->socket, &(su.s), &su_len);
- (*n)--;
- if (new_sock==-1){
- LOG(L_ERR, "WARNING: tcp_main_loop: error while accepting"
- " connection(%d): %s\n", errno, strerror(errno));
- return;
- }
- if (init_sock_opt(new_sock)<0){
- LOG(L_ERR, "ERROR: tcp_main_loop: init_sock_opt failed\n");
- close(new_sock);
- return;
- }
-
- /* add socket to list */
- tcpconn=tcpconn_new(new_sock, &su, si, si->proto, S_CONN_ACCEPT);
- if (tcpconn){
- tcpconn->refcnt++; /* safe, not yet available to the
- outside world */
- tcpconn_add(tcpconn);
- DBG("tcp_main_loop: new connection: %p %d\n",
- tcpconn, tcpconn->s);
- /* pass it to a child */
- if(send2child(tcpconn)<0){
- LOG(L_ERR,"ERROR: tcp_main_loop: no children "
- "available\n");
- TCPCONN_LOCK;
- tcpconn->refcnt--;
- if (tcpconn->refcnt==0){
- close(tcpconn->s);
- _tcpconn_rm(tcpconn);
- }else tcpconn->timeout=0; /* force expire */
- TCPCONN_UNLOCK;
- }
- }else{ /*tcpconn==0 */
- LOG(L_ERR, "ERROR: tcp_main_loop: tcpconn_new failed, "
- "closing socket\n");
- close(new_sock);
- }
- }
-}
-
-
-/* used internally by tcp_main_loop() */
-static void tcpconn_destroy(struct tcp_connection* tcpconn)
-{
- int fd;
-
- TCPCONN_LOCK; /*avoid races w/ tcp_send*/
- tcpconn->refcnt--;
- if (tcpconn->refcnt==0){
- DBG("tcp_main_loop: destroying connection\n");
- fd=tcpconn->s;
-#ifdef USE_TLS
- /*FIXME: lock ->writelock ? */
- if (tcpconn->type==PROTO_TLS)
- tls_close(tcpconn, fd);
-#endif
- _tcpconn_rm(tcpconn);
- close(fd);
- }else{
- /* force timeout */
- tcpconn->timeout=0;
- tcpconn->state=S_CONN_BAD;
- DBG("tcp_main_loop: delaying ...\n");
-
- }
- TCPCONN_UNLOCK;
-}
-
-
-void tcp_main_loop()
-{
- int r;
- int n;
- fd_set master_set;
- fd_set sel_set;
- int maxfd;
- struct tcp_connection* tcpconn;
- unsigned h;
- long response[2];
- int cmd;
- int bytes;
- struct timeval timeout;
- int fd;
- struct socket_info* si;
-
- /*init */
- maxfd=0;
- FD_ZERO(&master_set);
- /* set all the listen addresses */
- for (si=tcp_listen; si; si=si->next){
- if ((si->proto==PROTO_TCP) &&(si->socket!=-1)){
- FD_SET(si->socket, &master_set);
- if (si->socket>maxfd) maxfd=si->socket;
- }else{
- LOG(L_CRIT, "BUG: tcp_main_loop: non tcp address in tcp_listen\n");
- }
- }
-#ifdef USE_TLS
- if (!tls_disable){
- for (si=tls_listen; si; si=si->next){
- if ((si->proto==PROTO_TLS) && (si->socket!=-1)){
- FD_SET(si->socket, &master_set);
- if (si->socket>maxfd) maxfd=si->socket;
- }else{
- LOG(L_CRIT, "BUG: tcp_main_loop: non tls address"
- " in tls_listen\n");
- }
- }
- }
-#endif
- /* set all the unix sockets used for child comm */
- for (r=1; r<process_no; r++){
- if (pt[r].unix_sock>0){ /* we can't have 0, we never close it!*/
- FD_SET(pt[r].unix_sock, &master_set);
- if (pt[r].unix_sock>maxfd) maxfd=pt[r].unix_sock;
- }
- }
- for (r=0; r<tcp_children_no; r++){
- if (tcp_children[r].unix_sock>0){ /* we can't have 0,
- we never close it!*/
- FD_SET(tcp_children[r].unix_sock, &master_set);
- if (tcp_children[r].unix_sock>maxfd)
- maxfd=tcp_children[r].unix_sock;
- }
- }
-
-
- /* main loop*/
-
- while(1){
- sel_set=master_set;
- timeout.tv_sec=TCP_MAIN_SELECT_TIMEOUT;
- timeout.tv_usec=0;
- n=select(maxfd+1, &sel_set, 0 ,0 , &timeout);
- if (n<0){
- if (errno==EINTR) continue; /* just a signal */
- /* errors */
- LOG(L_ERR, "ERROR: tcp_main_loop: select:(%d) %s\n", errno,
- strerror(errno));
- n=0;
- }
-
- for (si=tcp_listen; si && n; si=si->next)
- handle_new_connect(si, &sel_set, &n);
-#ifdef USE_TLS
- if (!tls_disable)
- for (si=tls_listen; si && n; si=si->next)
- handle_new_connect(si, &sel_set, &n);
-#endif
-
- /* check all the read fds (from the tcpconn_addr_hash ) */
- for (h=0; h<TCP_ID_HASH_SIZE; h++){
- for(tcpconn=tcpconn_id_hash[h]; tcpconn && n;
- tcpconn=tcpconn->id_next){
- /* FIXME: is refcnt==0 really necessary? */
- if ((tcpconn->refcnt==0)&&(FD_ISSET(tcpconn->s, &sel_set))){
- /* new data available */
- n--;
- /* pass it to child, so remove it from select list */
- DBG("tcp_main_loop: data available on %p [h:%d] %d\n",
- tcpconn, h, tcpconn->s);
- FD_CLR(tcpconn->s, &master_set);
- tcpconn_ref(tcpconn); /* refcnt ++ */
- if (send2child(tcpconn)<0){
- LOG(L_ERR,"ERROR: tcp_main_loop: no "
- "children available\n");
- TCPCONN_LOCK;
- tcpconn->refcnt--;
- if (tcpconn->refcnt==0){
- fd=tcpconn->s;
- _tcpconn_rm(tcpconn);
- close(fd);
- }else tcpconn->timeout=0; /* force expire*/
- TCPCONN_UNLOCK;
- }
- }
- }
- }
- /* check unix sockets & listen | destroy connections */
- /* tcp_children readers first */
- for (r=0; r<tcp_children_no && n; r++){
- if ( (tcp_children[r].unix_sock>0) &&
- FD_ISSET(tcp_children[r].unix_sock, &sel_set)){
- /* (we can't have a fd==0, 0 is never closed )*/
- n--;
- /* read until sizeof(response)
- * (this is a SOCK_STREAM so read is not atomic */
- bytes=recv_all(tcp_children[r].unix_sock, response,
- sizeof(response));
- if (bytes==0){
- /* EOF -> bad, child has died */
- DBG("DBG: tcp_main_loop: dead tcp child %d"
- " (shutting down?)\n", r);
- /* don't listen on it any more */
- FD_CLR(tcp_children[r].unix_sock, &master_set);
- /*exit(-1);*/
- continue; /* skip this and try the next one */
- }else if (bytes<0){
- LOG(L_CRIT, "ERROR: tcp_main_loop: read from tcp child %d "
- "%s\n", r, strerror(errno));
- /* try to ignore ? */
- continue; /* skip this and try the next one */
- }
-
- DBG("tcp_main_loop: reader response= %lx, %ld from %d \n",
- response[0], response[1], r);
- cmd=response[1];
- tcpconn=(struct tcp_connection*)response[0];
- switch(cmd){
- case CONN_RELEASE:
- tcp_children[r].busy--;
- if (tcpconn){
- if (tcpconn->state==S_CONN_BAD){
- tcpconn_destroy(tcpconn);
- break;
- }
- FD_SET(tcpconn->s, &master_set);
- if (maxfd<tcpconn->s) maxfd=tcpconn->s;
- /* update the timeout*/
- tcpconn->timeout=get_ticks()+TCP_CON_TIMEOUT;
- tcpconn_put(tcpconn);
- DBG("tcp_main_loop: CONN_RELEASE %p"
- " refcnt= %d\n",
- tcpconn, tcpconn->refcnt);
- }
- break;
- case CONN_ERROR:
- case CONN_DESTROY:
- case CONN_EOF:
- /* WARNING: this will auto-dec. refcnt! */
- tcp_children[r].busy--;
- if (tcpconn){
- if (tcpconn->s!=-1)
- FD_CLR(tcpconn->s, &master_set);
- tcpconn_destroy(tcpconn);
- }
- break;
- default:
- LOG(L_CRIT, "BUG: tcp_main_loop: unknown cmd %d"
- " from tcp reader %d\n",
- cmd, r);
- }
- }
- }
- /* check "send" unix sockets & listen | destroy connections */
- /* start from 1, the "main" process does not transmit anything*/
- for (r=1; r<process_no && n; r++){
- if ( (pt[r].unix_sock>0) && FD_ISSET(pt[r].unix_sock, &sel_set)){
- /* (we can't have a fd==0, 0 is never closed )*/
- n--;
- /* read until sizeof(response)
- * (this is a SOCK_STREAM so read is not atomic */
- bytes=recv_all(pt[r].unix_sock, response, sizeof(response));
- if (bytes==0){
- /* EOF -> bad, child has died */
- DBG("DBG: tcp_main_loop: dead child %d"
- " (shutting down?)\n", r);
- /* don't listen on it any more */
- FD_CLR(pt[r].unix_sock, &master_set);
- /*exit(-1);*/
- continue; /* skip this and try the next one */
- }else if (bytes<0){
- LOG(L_CRIT, "ERROR: tcp_main_loop: read from child: %s\n",
- strerror(errno));
- /* try to ignore ? */
- continue; /* skip this and try the next one */
- }
-
- DBG("tcp_main_loop: read response= %lx, %ld from %d (%d)\n",
- response[0], response[1], r, pt[r].pid);
- cmd=response[1];
- tcpconn=(struct tcp_connection*)response[0];
- switch(cmd){
- case CONN_ERROR:
- if (tcpconn){
- if (tcpconn->s!=-1)
- FD_CLR(tcpconn->s, &master_set);
- tcpconn_destroy(tcpconn);
- }
- break;
- case CONN_GET_FD:
- /* send the requested FD */
- /* WARNING: take care of setting refcnt properly to
- * avoid race condition */
- if (tcpconn){
- if (send_fd(pt[r].unix_sock, &tcpconn,
- sizeof(tcpconn), tcpconn->s)<=0){
- LOG(L_ERR, "ERROR: tcp_main_loop:"
- "send_fd failed\n");
- }
- }else{
- LOG(L_CRIT, "BUG: tcp_main_loop: null pointer\n");
- }
- break;
- case CONN_NEW:
- /* update the fd in the requested tcpconn*/
- /* WARNING: take care of setting refcnt properly to
- * avoid race condition */
- if (tcpconn){
- bytes=receive_fd(pt[r].unix_sock, &tcpconn,
- sizeof(tcpconn), &tcpconn->s);
- if (bytes<(int)sizeof(tcpconn)){
- if (bytes<0){
- LOG(L_CRIT, "BUG: tcp_main_loop:"
- " CONN_NEW: receive_fd "
- "failed\n");
- }else{
- LOG(L_CRIT, "BUG: tcp_main_loop:"
- " CONN_NEW: to few bytes "
- "received (%d)\n", bytes );
- }
- break; /* try to ignore */
- }
- /* add tcpconn to the list*/
- tcpconn_add(tcpconn);
- FD_SET(tcpconn->s, &master_set);
- if (maxfd<tcpconn->s) maxfd=tcpconn->s;
- /* update the timeout*/
- tcpconn->timeout=get_ticks()+TCP_CON_TIMEOUT;
- }else{
- LOG(L_CRIT, "BUG: tcp_main_loop: null pointer\n");
- }
- break;
- default:
- LOG(L_CRIT, "BUG: tcp_main_loop: unknown cmd %d\n",
- cmd);
- }
- }
- } /* for */
-
- /* remove old connections */
- tcpconn_timeout(&master_set);
-
- }
-}
-
-
-
-int init_tcp()
-{
- /* init lock */
- tcpconn_lock=lock_alloc();
- if (tcpconn_lock==0){
- LOG(L_CRIT, "ERROR: init_tcp: could not alloc lock\n");
- goto error;
- }
- if (lock_init(tcpconn_lock)==0){
- LOG(L_CRIT, "ERROR: init_tcp: could not init lock\n");
- lock_dealloc((void*)tcpconn_lock);
- tcpconn_lock=0;
- goto error;
- }
- /* init globals */
- connection_id=(int*)shm_malloc(sizeof(int));
- if (connection_id==0){
- LOG(L_CRIT, "ERROR: init_tcp: could not alloc globals\n");
- lock_destroy(tcpconn_lock);
- lock_dealloc((void*)tcpconn_lock);
- tcpconn_lock=0;
- goto error;
- }
- *connection_id=1;
- /* alloc hashtables*/
- tcpconn_aliases_hash=(struct tcp_conn_alias**)
- shm_malloc(TCP_ALIAS_HASH_SIZE* sizeof(struct tcp_conn_alias*));
- if (tcpconn_aliases_hash==0){
- LOG(L_CRIT, "ERROR: init_tcp: could not alloc address hashtable\n");
- shm_free(connection_id);
- connection_id=0;
- lock_destroy(tcpconn_lock);
- lock_dealloc((void*)tcpconn_lock);
- tcpconn_lock=0;
- goto error;
- }
-
- tcpconn_id_hash=(struct tcp_connection**)shm_malloc(TCP_ID_HASH_SIZE*
- sizeof(struct tcp_connection*));
- if (tcpconn_id_hash==0){
- LOG(L_CRIT, "ERROR: init_tcp: could not alloc id hashtable\n");
- shm_free(connection_id);
- connection_id=0;
- shm_free(tcpconn_aliases_hash);
- tcpconn_aliases_hash=0;
- lock_destroy(tcpconn_lock);
- lock_dealloc((void*)tcpconn_lock);
- tcpconn_lock=0;
- goto error;
- }
- /* init hashtables*/
- memset((void*)tcpconn_aliases_hash, 0,
- TCP_ALIAS_HASH_SIZE * sizeof(struct tcp_conn_alias*));
- memset((void*)tcpconn_id_hash, 0,
- TCP_ID_HASH_SIZE * sizeof(struct tcp_connection*));
- return 0;
-error:
- return -1;
-}
-
-
-
-/* cleanup before exit */
-void destroy_tcp()
-{
- if (tcpconn_lock){
- lock_destroy(tcpconn_lock);
- lock_dealloc((void*)tcpconn_lock);
- tcpconn_lock=0;
- }
- if(tcpconn_aliases_hash){
- shm_free(tcpconn_aliases_hash);
- tcpconn_aliases_hash=0;
- }
- if(tcpconn_id_hash){
- shm_free(tcpconn_id_hash);
- tcpconn_id_hash=0;
- }
-
- if(connection_id){
- shm_free(connection_id);
- connection_id=0;
- }
-}
-
-
-
-/* starts the tcp processes */
-int tcp_init_children()
-{
- int r;
- int sockfd[2];
- int reader_fd[2]; /* for comm. with the tcp children read */
- pid_t pid;
-
-
- /* create the tcp sock_info structures */
- /* copy the sockets --moved to main_loop*/
-
- /* fork children & create the socket pairs*/
- for(r=0; r<tcp_children_no; r++){
- if (socketpair(AF_UNIX, SOCK_STREAM, 0, sockfd)<0){
- LOG(L_ERR, "ERROR: tcp_main: socketpair failed: %s\n",
- strerror(errno));
- goto error;
- }
- if (socketpair(AF_UNIX, SOCK_STREAM, 0, reader_fd)<0){
- LOG(L_ERR, "ERROR: tcp_main: socketpair failed: %s\n",
- strerror(errno));
- goto error;
- }
-
- process_no++;
- pid=fork();
- if (pid<0){
- LOG(L_ERR, "ERROR: tcp_main: fork failed: %s\n",
- strerror(errno));
- goto error;
- }else if (pid>0){
- /* parent */
- close(sockfd[1]);
- close(reader_fd[1]);
- tcp_children[r].pid=pid;
- tcp_children[r].proc_no=process_no;
- tcp_children[r].busy=0;
- tcp_children[r].n_reqs=0;
- tcp_children[r].unix_sock=reader_fd[0];
- pt[process_no].pid=pid;
- pt[process_no].unix_sock=sockfd[0];
- pt[process_no].idx=r;
- strncpy(pt[process_no].desc, "tcp receiver", MAX_PT_DESC);
- }else{
- /* child */
- close(sockfd[0]);
- unix_tcp_sock=sockfd[1];
- bind_address=0; /* force a SEGFAULT if someone uses a non-init.
- bind address on tcp */
- if (init_child(r+children_no+1) < 0) {
- LOG(L_ERR, "init_children failed\n");
- goto error;
- }
- tcp_receive_loop(reader_fd[1]);
- }
- }
- return 0;
-error:
- return -1;
-}
-
-#endif
Deleted: ser/trunk/tcp_read.c
===================================================================
--- ser/trunk/tcp_read.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/tcp_read.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,694 +0,0 @@
-/*
- * $Id: tcp_read.c,v 1.27 2004/08/24 08:45:10 janakj Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*
- * History:
- * --------
- * 2002-12-?? created by andrei.
- * 2003-02-10 zero term before calling receive_msg & undo afterward (andrei)
- * 2003-05-13 l: (short form of Content-Length) is now recognized (andrei)
- * 2003-07-01 tcp_read & friends take no a single tcp_connection
- * parameter & they set c->state to S_CONN_EOF on eof (andrei)
- * 2003-07-04 fixed tcp EOF handling (possible infinite loop) (andrei)
- */
-
-#ifdef USE_TCP
-
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-
-
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/select.h>
-#include <sys/socket.h>
-
-#include <unistd.h>
-#include <stdlib.h> /* for abort() */
-
-
-#include "dprint.h"
-#include "tcp_conn.h"
-#include "pass_fd.h"
-#include "globals.h"
-#include "receive.h"
-#include "timer.h"
-#include "ut.h"
-#ifdef USE_TLS
-#include "tls/tls_server.h"
-#endif
-
-
-
-/* reads next available bytes
- * return number of bytes read, 0 on EOF or -1 on error,
- * on EOF it also sets c->state to S_CONN_EOF
- * (to distinguish from reads that would block which could return 0)
- * sets also r->error */
-int tcp_read(struct tcp_connection *c)
-{
- int bytes_free, bytes_read;
- struct tcp_req *r;
- int fd;
-
- r=&c->req;
- fd=c->fd;
- bytes_free=TCP_BUF_SIZE- (int)(r->pos - r->buf);
-
- if (bytes_free==0){
- LOG(L_ERR, "ERROR: tcp_read: buffer overrun, dropping\n");
- r->error=TCP_REQ_OVERRUN;
- return -1;
- }
-again:
- bytes_read=read(fd, r->pos, bytes_free);
-
- if(bytes_read==-1){
- if (errno == EWOULDBLOCK || errno == EAGAIN){
- return 0; /* nothing has been read */
- }else if (errno == EINTR) goto again;
- else{
- LOG(L_ERR, "ERROR: tcp_read: error reading: %s\n",strerror(errno));
- r->error=TCP_READ_ERROR;
- return -1;
- }
- }else if (bytes_read==0){
- c->state=S_CONN_EOF;
- DBG("tcp_read: EOF on %p, FD %d\n", c, fd);
- }
-#ifdef EXTRA_DEBUG
- DBG("tcp_read: read %d bytes:\n%.*s\n", bytes_read, bytes_read, r->pos);
-#endif
- r->pos+=bytes_read;
- return bytes_read;
-}
-
-
-
-/* reads all headers (until double crlf), & parses the content-length header
- * (WARNING: inefficient, tries to reuse receive_msg but will go through
- * the headers twice [once here looking for Content-Length and for the end
- * of the headers and once in receive_msg]; a more speed efficient version will
- * result in either major code duplication or major changes to the receive code)
- * returns number of bytes read & sets r->state & r->body
- * when either r->body!=0 or r->state==H_BODY =>
- * all headers have been read. It should be called in a while loop.
- * returns < 0 if error or 0 if EOF */
-int tcp_read_headers(struct tcp_connection *c)
-{
- int bytes, remaining;
- char *p;
- struct tcp_req* r;
-
- #define crlf_default_skip_case \
- case '\n': \
- r->state=H_LF; \
- break; \
- default: \
- r->state=H_SKIP
-
- #define content_len_beg_case \
- case ' ': \
- case '\t': \
- if (!r->has_content_len) r->state=H_STARTWS; \
- else r->state=H_SKIP; \
- /* not interested if we already found one */ \
- break; \
- case 'C': \
- case 'c': \
- if(!r->has_content_len) r->state=H_CONT_LEN1; \
- else r->state=H_SKIP; \
- break; \
- case 'l': \
- case 'L': \
- /* short form for Content-Length */ \
- if (!r->has_content_len) r->state=H_L_COLON; \
- else r->state=H_SKIP; \
- break
-
- #define change_state(upper, lower, newstate)\
- switch(*p){ \
- case upper: \
- case lower: \
- r->state=(newstate); break; \
- crlf_default_skip_case; \
- }
-
- #define change_state_case(state0, upper, lower, newstate)\
- case state0: \
- change_state(upper, lower, newstate); \
- p++; \
- break
-
-
- r=&c->req;
- /* if we still have some unparsed part, parse it first, don't do the read*/
- if (r->parsed<r->pos){
- bytes=0;
- }else{
-#ifdef USE_TLS
- if (c->type==PROTO_TLS)
- bytes=tls_read(c);
- else
-#endif
- bytes=tcp_read(c);
- if (bytes<=0) return bytes;
- }
- p=r->parsed;
-
- while(p<r->pos && r->error==TCP_REQ_OK){
- switch((unsigned char)r->state){
- case H_BODY: /* read the body*/
- remaining=r->pos-p;
- if (remaining>r->bytes_to_go) remaining=r->bytes_to_go;
- r->bytes_to_go-=remaining;
- p+=remaining;
- if (r->bytes_to_go==0){
- r->complete=1;
- goto skip;
- }
- break;
-
- case H_SKIP:
- /* find lf, we are in this state if we are not interested
- * in anything till end of line*/
- p=q_memchr(p, '\n', r->pos-p);
- if (p){
- p++;
- r->state=H_LF;
- }else{
- p=r->pos;
- }
- break;
-
- case H_LF:
- /* terminate on LF CR LF or LF LF */
- switch (*p){
- case '\r':
- r->state=H_LFCR;
- break;
- case '\n':
- /* found LF LF */
- r->state=H_BODY;
- if (r->has_content_len){
- r->body=p+1;
- r->bytes_to_go=r->content_len;
- if (r->bytes_to_go==0){
- r->complete=1;
- p++;
- goto skip;
- }
- }else{
- DBG("tcp_read_headers: ERROR: no clen, p=%X\n",
- *p);
- r->error=TCP_REQ_BAD_LEN;
- }
- break;
- content_len_beg_case;
- default:
- r->state=H_SKIP;
- }
- p++;
- break;
- case H_LFCR:
- if (*p=='\n'){
- /* found LF CR LF */
- r->state=H_BODY;
- if (r->has_content_len){
- r->body=p+1;
- r->bytes_to_go=r->content_len;
- if (r->bytes_to_go==0){
- r->complete=1;
- p++;
- goto skip;
- }
- }else{
- DBG("tcp_read_headers: ERROR: no clen, p=%X\n",
- *p);
- r->error=TCP_REQ_BAD_LEN;
- }
- }else r->state=H_SKIP;
- p++;
- break;
-
- case H_STARTWS:
- switch (*p){
- content_len_beg_case;
- crlf_default_skip_case;
- }
- p++;
- break;
- case H_SKIP_EMPTY:
- switch (*p){
- case '\n':
- case '\r':
- case ' ':
- case '\t':
- /* skip empty lines */
- break;
- case 'C':
- case 'c':
- r->state=H_CONT_LEN1;
- r->start=p;
- break;
- case 'l':
- case 'L':
- /* short form for Content-Length */
- r->state=H_L_COLON;
- r->start=p;
- break;
- default:
- r->state=H_SKIP;
- r->start=p;
- };
- p++;
- break;
- change_state_case(H_CONT_LEN1, 'O', 'o', H_CONT_LEN2);
- change_state_case(H_CONT_LEN2, 'N', 'n', H_CONT_LEN3);
- change_state_case(H_CONT_LEN3, 'T', 't', H_CONT_LEN4);
- change_state_case(H_CONT_LEN4, 'E', 'e', H_CONT_LEN5);
- change_state_case(H_CONT_LEN5, 'N', 'n', H_CONT_LEN6);
- change_state_case(H_CONT_LEN6, 'T', 't', H_CONT_LEN7);
- change_state_case(H_CONT_LEN7, '-', '_', H_CONT_LEN8);
- change_state_case(H_CONT_LEN8, 'L', 'l', H_CONT_LEN9);
- change_state_case(H_CONT_LEN9, 'E', 'e', H_CONT_LEN10);
- change_state_case(H_CONT_LEN10, 'N', 'n', H_CONT_LEN11);
- change_state_case(H_CONT_LEN11, 'G', 'g', H_CONT_LEN12);
- change_state_case(H_CONT_LEN12, 'T', 't', H_CONT_LEN13);
- change_state_case(H_CONT_LEN13, 'H', 'h', H_L_COLON);
-
- case H_L_COLON:
- switch(*p){
- case ' ':
- case '\t':
- break; /* skip space */
- case ':':
- r->state=H_CONT_LEN_BODY;
- break;
- crlf_default_skip_case;
- };
- p++;
- break;
-
- case H_CONT_LEN_BODY:
- switch(*p){
- case ' ':
- case '\t':
- break; /* eat space */
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- r->state=H_CONT_LEN_BODY_PARSE;
- r->content_len=(*p-'0');
- break;
- /*FIXME: content length on different lines ! */
- crlf_default_skip_case;
- }
- p++;
- break;
-
- case H_CONT_LEN_BODY_PARSE:
- switch(*p){
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- r->content_len=r->content_len*10+(*p-'0');
- break;
- case '\r':
- case ' ':
- case '\t': /* FIXME: check if line contains only WS */
- r->state=H_SKIP;
- r->has_content_len=1;
- break;
- case '\n':
- /* end of line, parse successful */
- r->state=H_LF;
- r->has_content_len=1;
- break;
- default:
- LOG(L_ERR, "ERROR: tcp_read_headers: bad "
- "Content-Length header value, unexpected "
- "char %c in state %d\n", *p, r->state);
- r->state=H_SKIP; /* try to find another?*/
- }
- p++;
- break;
-
- default:
- LOG(L_CRIT, "BUG: tcp_read_headers: unexpected state %d\n",
- r->state);
- abort();
- }
- }
-skip:
- r->parsed=p;
- return bytes;
-}
-
-
-
-int tcp_read_req(struct tcp_connection* con)
-{
- int bytes;
- int resp;
- long size;
- struct tcp_req* req;
- int s;
- char c;
-
- resp=CONN_RELEASE;
- s=con->fd;
- req=&con->req;
-#ifdef USE_TLS
- if (con->type==PROTO_TLS){
- if (tls_fix_read_conn(con)!=0){
- resp=CONN_ERROR;
- goto end_req;
- }
- if(con->state!=S_CONN_OK) goto end_req; /* not enough data */
- }
-#endif
-
-again:
- if(req->error==TCP_REQ_OK){
- bytes=tcp_read_headers(con);
-#ifdef EXTRA_DEBUG
- /* if timeout state=0; goto end__req; */
- DBG("read= %d bytes, parsed=%d, state=%d, error=%d\n",
- bytes, (int)(req->parsed-req->start), req->state,
- req->error );
- DBG("tcp_read_req: last char=%X, parsed msg=\n%.*s\n",
- *(req->parsed-1), (int)(req->parsed-req->start),
- req->start);
-#endif
- if (bytes==-1){
- LOG(L_ERR, "ERROR: tcp_read_req: error reading \n");
- resp=CONN_ERROR;
- goto end_req;
- }
- /* eof check:
- * is EOF if eof on fd and req. not complete yet,
- * if req. is complete we might have a second unparsed
- * request after it, so postpone release_with_eof
- */
- if ((con->state==S_CONN_EOF) && (req->complete==0)) {
- DBG( "tcp_read_req: EOF\n");
- resp=CONN_EOF;
- goto end_req;
- }
-
- }
- if (req->error!=TCP_REQ_OK){
- LOG(L_ERR,"ERROR: tcp_read_req: bad request, state=%d, error=%d "
- "buf:\n%.*s\nparsed:\n%.*s\n", req->state, req->error,
- (int)(req->pos-req->buf), req->buf,
- (int)(req->parsed-req->start), req->start);
- DBG("- received from: port %d\n", con->rcv.src_port);
- print_ip("- received from: ip ",&con->rcv.src_ip, "\n");
- resp=CONN_ERROR;
- goto end_req;
- }
- if (req->complete){
-#ifdef EXTRA_DEBUG
- DBG("tcp_read_req: end of header part\n");
- DBG("- received from: port %d\n", con->rcv.src_port);
- print_ip("- received from: ip ", &con->rcv.src_ip, "\n");
- DBG("tcp_read_req: headers:\n%.*s.\n",
- (int)(req->body-req->start), req->start);
-#endif
- if (req->has_content_len){
- DBG("tcp_read_req: content-length= %d\n", req->content_len);
-#ifdef EXTRA_DEBUG
- DBG("tcp_read_req: body:\n%.*s\n", req->content_len,req->body);
-#endif
- }else{
- req->error=TCP_REQ_BAD_LEN;
- LOG(L_ERR, "ERROR: tcp_read_req: content length not present or"
- " unparsable\n");
- resp=CONN_ERROR;
- goto end_req;
- }
- /* if we are here everything is nice and ok*/
- resp=CONN_RELEASE;
-#ifdef EXTRA_DEBUG
- DBG("calling receive_msg(%p, %d, )\n",
- req->start, (int)(req->parsed-req->start));
-#endif
- /* rcv.bind_address should always be !=0 */
- bind_address=con->rcv.bind_address;
- /* just for debugging use sendipv4 as receiving socket FIXME*/
- /*
- if (con->rcv.dst_ip.af==AF_INET6){
- bind_address=sendipv6_tcp;
- }else{
- bind_address=sendipv4_tcp;
- }
- */
- con->rcv.proto_reserved1=con->id; /* copy the id */
- c=*req->parsed; /* ugly hack: zero term the msg & save the
- previous char, req->parsed should be ok
- because we always alloc BUF_SIZE+1 */
- *req->parsed=0;
- if (receive_msg(req->start, req->parsed-req->start, &con->rcv)<0){
- *req->parsed=c;
- resp=CONN_ERROR;
- goto end_req;
- }
- *req->parsed=c;
-
- /* prepare for next request */
- size=req->pos-req->parsed;
- if (size) memmove(req->buf, req->parsed, size);
-#ifdef EXTRA_DEBUG
- DBG("tcp_read_req: preparing for new request, kept %ld bytes\n",
- size);
-#endif
- req->pos=req->buf+size;
- req->parsed=req->buf;
- req->start=req->buf;
- req->body=0;
- req->error=TCP_REQ_OK;
- req->state=H_SKIP_EMPTY;
- req->complete=req->content_len=req->has_content_len=0;
- req->bytes_to_go=0;
- /* if we still have some unparsed bytes, try to parse them too*/
- if (size) goto again;
- else if (con->state==S_CONN_EOF){
- DBG( "tcp_read_req: EOF after reading complete request\n");
- resp=CONN_EOF;
- }
-
- }
-
-
- end_req:
-
- return resp;
-}
-
-
-
-void release_tcpconn(struct tcp_connection* c, long state, int unix_sock)
-{
- long response[2];
-
- DBG( "releasing con %p, state %ld, fd=%d, id=%d\n",
- c, state, c->fd, c->id);
- DBG(" extra_data %p\n", c->extra_data);
- /* release req & signal the parent */
- if (c->fd!=-1) close(c->fd);
- /* errno==EINTR, EWOULDBLOCK a.s.o todo */
- response[0]=(long)c;
- response[1]=state;
- if (send_all(unix_sock, response, sizeof(response))<=0)
- LOG(L_ERR, "ERROR: release_tcpconn: send_all failed\n");
-}
-
-
-
-void tcp_receive_loop(int unix_sock)
-{
- struct tcp_connection* list; /* list with connections in use */
- struct tcp_connection* con;
- struct tcp_connection* c_next;
- int n;
- int nfds;
- int s;
- long resp;
- fd_set master_set;
- fd_set sel_set;
- int maxfd;
- struct timeval timeout;
- int ticks;
-
-
- /* init */
- list=con=0;
- FD_ZERO(&master_set);
- FD_SET(unix_sock, &master_set);
- maxfd=unix_sock;
-
- /* listen on the unix socket for the fd */
- for(;;){
- timeout.tv_sec=TCP_CHILD_SELECT_TIMEOUT;
- timeout.tv_usec=0;
- sel_set=master_set;
- nfds=select(maxfd+1, &sel_set, 0 , 0 , &timeout);
-#ifdef EXTRA_DEBUG
- for (n=0; n<maxfd; n++){
- if (FD_ISSET(n, &sel_set))
- DBG("tcp receive: FD %d is set\n", n);
- }
-#endif
- if (nfds<0){
- if (errno==EINTR) continue; /* just a signal */
- /* errors */
- LOG(L_ERR, "ERROR: tcp_receive_loop: select:(%d) %s\n", errno,
- strerror(errno));
- continue;
- }
- if (FD_ISSET(unix_sock, &sel_set)){
- nfds--;
- /* a new conn from "main" */
- n=receive_fd(unix_sock, &con, sizeof(con), &s);
- if (n<0){
- if (errno == EWOULDBLOCK || errno == EAGAIN ||
- errno == EINTR){
- goto skip;
- }else{
- LOG(L_CRIT,"BUG: tcp_receive_loop: read_fd: %s\n",
- strerror(errno));
- abort(); /* big error*/
- }
- }
- DBG("received n=%d con=%p, fd=%d\n", n, con, s);
- if (n==0){
- LOG(L_ERR, "WARNING: tcp_receive_loop: 0 bytes read\n");
- goto skip;
- }
- if (con==0){
- LOG(L_CRIT, "BUG: tcp_receive_loop: null pointer\n");
- goto skip;
- }
- con->fd=s;
- if (s==-1) {
- LOG(L_ERR, "ERROR: tcp_receive_loop: read_fd:"
- "no fd read\n");
- resp=CONN_ERROR;
- con->state=S_CONN_BAD;
- release_tcpconn(con, resp, unix_sock);
- goto skip;
- }
- con->timeout=get_ticks()+TCP_CHILD_TIMEOUT;
- FD_SET(s, &master_set);
- if (maxfd<s) maxfd=s;
- if (con==list){
- LOG(L_CRIT, "BUG: tcp_receive_loop: duplicate"
- " connection received: %p, id %d, fd %d, refcnt %d"
- " state %d (n=%d)\n", con, con->id, con->fd,
- con->refcnt, con->state, n);
- resp=CONN_ERROR;
- release_tcpconn(con, resp, unix_sock);
- goto skip; /* try to recover */
- }
- tcpconn_listadd(list, con, c_next, c_prev);
- }
-skip:
- ticks=get_ticks();
- for (con=list; con ; con=c_next){
- c_next=con->c_next; /* safe for removing*/
-#ifdef EXTRA_DEBUG
- DBG("tcp receive: list fd=%d, id=%d, timeout=%d, refcnt=%d\n",
- con->fd, con->id, con->timeout, con->refcnt);
-#endif
- if (con->state<0){
- /* S_CONN_BAD or S_CONN_ERROR, remove it */
- resp=CONN_ERROR;
- FD_CLR(con->fd, &master_set);
- tcpconn_listrm(list, con, c_next, c_prev);
- con->state=S_CONN_BAD;
- release_tcpconn(con, resp, unix_sock);
- continue;
- }
- if (nfds && FD_ISSET(con->fd, &sel_set)){
-#ifdef EXTRA_DEBUG
- DBG("tcp receive: match, fd:isset\n");
-#endif
- nfds--;
- resp=tcp_read_req(con);
-
- if (resp<0){
- FD_CLR(con->fd, &master_set);
- tcpconn_listrm(list, con, c_next, c_prev);
- con->state=S_CONN_BAD;
- release_tcpconn(con, resp, unix_sock);
- }else{
- /* update timeout */
- con->timeout=ticks+TCP_CHILD_TIMEOUT;
- }
- }else{
- /* timeout */
- if (con->timeout<=ticks){
- /* expired, return to "tcp main" */
- DBG("tcp_receive_loop: %p expired (%d, %d)\n",
- con, con->timeout, ticks);
- resp=CONN_RELEASE;
- FD_CLR(con->fd, &master_set);
- tcpconn_listrm(list, con, c_next, c_prev);
- release_tcpconn(con, resp, unix_sock);
- }
- }
- }
-
- }
-}
-
-
-#if 0
-int main(int argv, char** argc )
-{
- printf("starting tests\n");
- tcp_receive_loop();
-}
-
-#endif
-
-#endif
Deleted: ser/trunk/tcp_server.h
===================================================================
--- ser/trunk/tcp_server.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/tcp_server.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,48 +0,0 @@
-/*
- * $Id: tcp_server.h,v 1.5 2004/08/24 08:45:10 janakj Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-#ifndef tcp_server_h
-#define tcp_server_h
-
-
-
-/* "public" functions*/
-
-struct tcp_connection* tcpconn_get(int id, struct ip_addr* ip, int port,
- int timeout);
-void tcpconn_put(struct tcp_connection* c);
-int tcp_send(int type, char* buf, unsigned len, union sockaddr_union* to,
- int id);
-
-int tcpconn_add_alias(int id, int port, int proto);
-
-
-
-
-
-#endif
Deleted: ser/trunk/timer.c
===================================================================
--- ser/trunk/timer.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/timer.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,165 +0,0 @@
-/*
- * $Id: timer.c,v 1.12 2004/08/24 08:45:10 janakj Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/* History:
- * --------
- * 2003-03-19 replaced all the mallocs/frees w/ pkg_malloc/pkg_free (andrei)
- * 2003-03-29 cleaning pkg_mallocs introduced (jiri)
- */
-
-
-#include "timer.h"
-#include "dprint.h"
-#include "error.h"
-#include "config.h"
-#include "mem/mem.h"
-#ifdef SHM_MEM
-#include "mem/shm_mem.h"
-#endif
-
-#include <stdlib.h>
-
-
-struct sr_timer* timer_list=0;
-
-static int* jiffies=0;
-static int timer_id=0;
-
-
-
-/* ret 0 on success, <0 on error*/
-int init_timer()
-{
-#ifdef SHM_MEM
- jiffies=shm_malloc(sizeof(int));
-#else
- /* in this case get_ticks won't work! */
- LOG(L_INFO, "WARNING: no shared memory support compiled in"
- " get_ticks won't work\n");
- jiffies=pkg_malloc(sizeof(int));
-#endif
- if (jiffies==0){
- LOG(L_CRIT, "ERROR: init_timer: could not init jiffies\n");
- return E_OUT_OF_MEM;
- }
- *jiffies=0;
- return 0;
-}
-
-
-
-void destroy_timer()
-{
- struct sr_timer* t, *foo;
-
- if (jiffies){
-#ifdef SHM_MEM
- shm_free(jiffies); jiffies=0;
-#else
- pkg_free(jiffies); jiffies=0;
-#endif
- }
-
- t=timer_list;
- while(t) {
- foo=t->next;
- pkg_free(t);
- t=foo;
- }
-}
-
-
-
-/*register a periodic timer;
- * ret: <0 on error
- * Hint: if you need it in a module, register it from mod_init or it
- * won't work otherwise*/
-int register_timer(timer_function f, void* param, unsigned int interval)
-{
- struct sr_timer* t;
-
- t=pkg_malloc(sizeof(struct sr_timer));
- if (t==0){
- LOG(L_ERR, "ERROR: register_timer: out of memory\n");
- goto error;
- }
- t->id=timer_id++;
- t->timer_f=f;
- t->t_param=param;
- t->interval=interval;
- t->expires=*jiffies+interval;
- /* insert it into the list*/
- t->next=timer_list;
- timer_list=t;
- return t->id;
-
-error:
- return E_OUT_OF_MEM;
-}
-
-
-
-void timer_ticker()
-{
- struct sr_timer* t;
- unsigned int prev_jiffies;
-
- prev_jiffies=*jiffies;
- *jiffies+=TIMER_TICK;
- /* test for overflow (if tick= 1s =>overflow in 136 years)*/
- if (*jiffies<prev_jiffies){
- /*force expire & update every timer, a little buggy but it
- * happens once in 136 years :) */
- for(t=timer_list;t;t=t->next){
- t->expires=*jiffies+t->interval;
- t->timer_f(*jiffies, t->t_param);
- }
- return;
- }
-
- for (t=timer_list;t; t=t->next){
- if (*jiffies>=t->expires){
- t->expires=*jiffies+t->interval;
- t->timer_f(*jiffies, t->t_param);
- }
- }
-}
-
-
-
-unsigned int get_ticks()
-{
- if (jiffies==0){
- LOG(L_CRIT, "BUG: get_ticks: jiffies not initialized\n");
- return 0;
- }
-#ifndef SHM_MEM
- LOG(L_CRIT, "WARNING: get_ticks: no shared memory support compiled in"
- ", returning 0 (probably wrong)");
- return 0;
-#endif
- return *jiffies;
-}
Deleted: ser/trunk/timer.h
===================================================================
--- ser/trunk/timer.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/timer.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,64 +0,0 @@
-/*
- * $Id: timer.h,v 1.6 2004/08/24 08:45:10 janakj Exp $
- *
- *
- * timer related functions
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-
-#ifndef timer_h
-#define timer_h
-
-typedef void (timer_function)(unsigned int ticks, void* param);
-
-
-struct sr_timer{
- int id;
- timer_function* timer_f;
- void* t_param;
- unsigned int interval;
-
- unsigned int expires;
-
- struct sr_timer* next;
-};
-
-
-
-extern struct sr_timer* timer_list;
-
-
-
-int init_timer();
-void destroy_timer();
-/*register a periodic timer;
- * ret: <0 on error*/
-int register_timer(timer_function f, void* param, unsigned int interval);
-unsigned int get_ticks();
-void timer_ticker();
-
-#endif
Deleted: ser/trunk/trim.h
===================================================================
--- ser/trunk/trim.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/trim.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,103 +0,0 @@
-/*
- * $Id: trim.h,v 1.6 2004/08/24 08:45:10 janakj Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-#ifndef TRIM_H
-#define TRIM_H
-
-#include "str.h"
-
-
-/*
- * This switch-case statement is used in
- * trim_leading and trim_trailing. You can
- * define characters that should be skipped
- * here.
- */
-#define TRIM_SWITCH(c) switch(c) { \
- case ' ': \
- case '\t': \
- case '\r': \
- case '\n': \
- break; \
- \
- default: \
- return; \
- }
-
-
-/*
- * Remove any leading whitechars, like spaces,
- * horizontal tabs, carriage returns and line
- * feeds
- *
- * WARNING: String descriptor structure will be
- * modified ! Make a copy otherwise you
- * might be unable to free _s->s for
- * example !
- *
- */
-static inline void trim_leading(str* _s)
-{
- for(; _s->len > 0; _s->len--, _s->s++) {
- TRIM_SWITCH(*(_s->s));
- }
-}
-
-
-/*
- * Remove any trailing white char, like spaces,
- * horizontal tabs, carriage returns and line feeds
- *
- * WARNING: String descriptor structure will be
- * modified ! Make a copy otherwise you
- * might be unable to free _s->s for
- * example !
- */
-static inline void trim_trailing(str* _s)
-{
- for(; _s->len > 0; _s->len--) {
- TRIM_SWITCH(_s->s[_s->len - 1]);
- }
-}
-
-
-/*
- * Do trim_leading and trim_trailing
- *
- * WARNING: String structure will be modified !
- * Make a copy otherwise you might be
- * unable to free _s->s for example !
- */
-static inline void trim(str* _s)
-{
- trim_leading(_s);
- trim_trailing(_s);
-}
-
-
-#endif /* TRIM_H */
Deleted: ser/trunk/tsend.c
===================================================================
--- ser/trunk/tsend.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/tsend.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,170 +0,0 @@
-/*
- * $Id: tsend.c,v 1.4 2004/08/24 08:45:10 janakj Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*
- * send with timeout for stream and datagram sockets
- *
- * History:
- * --------
- * 2004-02-26 created by andrei
- * 2003-03-03 switched to heavy macro use, added tsend_dgram_ev (andrei)
- */
-
-#include <string.h>
-#include <errno.h>
-#include <sys/poll.h>
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/uio.h>
-
-#include "dprint.h"
-
-/* the functions below are very similar => some generic macros */
-#define TSEND_INIT \
- int n; \
- struct pollfd pf; \
- pf.fd=fd; \
- pf.events=POLLOUT
-
-#define TSEND_POLL(f_name) \
-poll_loop: \
- while(1){ \
- n=poll(&pf, 1, timeout); \
- if (n<0){ \
- if (errno==EINTR) continue; /* signal, ignore */ \
- LOG(L_ERR, "ERROR: " f_name ": poll failed: %s [%d]\n", \
- strerror(errno), errno); \
- goto error; \
- }else if (n==0){ \
- /* timeout */ \
- LOG(L_ERR, "ERROR: " f_name ": send timeout (%d)\n", timeout); \
- goto error; \
- } \
- if (pf.revents&POLLOUT){ \
- /* we can write again */ \
- goto again; \
- }else if (pf.revents&(POLLERR|POLLHUP|POLLNVAL)){ \
- LOG(L_ERR, "ERROR: " f_name ": bad poll flags %x\n", \
- pf.revents); \
- goto error; \
- } \
- /* if POLLIN or POLLPRI or other non-harmful events happened, \
- * continue ( although poll should never signal them since we're \
- * not interested in them => we should never reach this point) */ \
- }
-
-
-#define TSEND_ERR_CHECK(f_name)\
- if (n<0){ \
- if (errno==EINTR) goto again; \
- else if (errno!=EAGAIN && errno!=EWOULDBLOCK){ \
- LOG(L_ERR, "ERROR: " f_name ": failed to send: (%d) %s\n", \
- errno, strerror(errno)); \
- goto error; \
- }else goto poll_loop; \
- }
-
-
-
-/* sends on fd (which must be O_NONBLOCK); if it cannot send any data
- * in timeout milliseconds it will return ERROR
- * returns: -1 on error, or number of bytes written
- * (if less than len => couldn't send all)
- * bugs: signals will reset the timer
- */
-int tsend_stream(int fd, char* buf, unsigned int len, int timeout)
-{
- int written;
- TSEND_INIT;
-
- written=0;
-again:
- n=send(fd, buf, len,
-#ifdef HAVE_MSG_NOSIGNAL
- MSG_NOSIGNAL
-#else
- 0
-#endif
- );
- TSEND_ERR_CHECK("tsend_stream");
- written+=n;
- if (n<len){
- /* partial write */
- buf+=n;
- len-=n;
- }else{
- /* successful full write */
- return written;
- }
- TSEND_POLL("tsend_stream");
-error:
- return -1;
-}
-
-
-
-/* sends on dgram fd (which must be O_NONBLOCK); if it cannot send any data
- * in timeout milliseconds it will return ERROR
- * returns: -1 on error, or number of bytes written
- * (if less than len => couldn't send all)
- * bugs: signals will reset the timer
- */
-int tsend_dgram(int fd, char* buf, unsigned int len,
- const struct sockaddr* to, socklen_t tolen, int timeout)
-{
- TSEND_INIT;
-again:
- n=sendto(fd, buf, len, 0, to, tolen);
- TSEND_ERR_CHECK("tsend_dgram");
- /* we don't care about partial writes: they shouldn't happen on
- * a datagram socket */
- return n;
- TSEND_POLL("tsend_datagram");
-error:
- return -1;
-}
-
-
-/* sends on connected datagram fd (which must be O_NONBLOCK);
- * if it cannot send any data in timeout milliseconds it will return ERROR
- * returns: -1 on error, or number of bytes written
- * (if less than len => couldn't send all)
- * bugs: signals will reset the timer
- */
-
-int tsend_dgram_ev(int fd, const struct iovec* v, int count, int timeout)
-{
- TSEND_INIT;
-again:
- n=writev(fd, v, count);
- TSEND_ERR_CHECK("tsend_datagram_ev");
- return n;
- TSEND_POLL("tsend_datagram_ev");
-error:
- return -1;
-}
-
Deleted: ser/trunk/tsend.h
===================================================================
--- ser/trunk/tsend.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/tsend.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,46 +0,0 @@
-/*
- * $Id: tsend.h,v 1.3 2004/08/24 08:45:10 janakj Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*
- * History:
- * --------
- * 2004-02-26 created by andrei
- */
-
-#ifndef __tsend_h
-#define __tsend_h
-
-
-int tsend_stream(int fd, char* buf, unsigned int len, int timeout);
-int tsend_dgram(int fd, char* buf, unsigned int len,
- const struct sockaddr* to, socklen_t tolen, int timeout);
-int tsend_dgram_ev(int fd, const struct iovec* v, int count, int timeout);
-
-
-
-#endif
-
-
Deleted: ser/trunk/types.h
===================================================================
--- ser/trunk/types.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/types.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,35 +0,0 @@
-/*
- * $Id: types.h,v 1.3 2004/08/24 08:45:10 janakj Exp $
- *
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-#ifndef _TYPES_H_
-#define _TYPES_H_
-
-typedef unsigned int process_bm_t;
-
-#endif
Deleted: ser/trunk/udp_server.c
===================================================================
--- ser/trunk/udp_server.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/udp_server.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,524 +0,0 @@
-/*
- * $Id: udp_server.c,v 1.70.2.1 2005/07/26 14:45:46 andrei Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * History
- * --------
- * 2003-01-28 packet zero-termination moved to receive_msg (jiri)
- * 2003-02-10 undoed the above changes (andrei)
- * 2003-03-19 replaced all the mallocs/frees w/ pkg_malloc/pkg_free (andrei)
- * 2003-04-14 set sockopts to TOS low delay (andrei)
- * 2004-05-03 applied multicast support patch from janakj
- * added set multicast ttl support (andrei)
- * 2004-07-05 udp_rcv_loop: drop packets with 0 src port + error msg.
- * cleanups (andrei)
- * 2005-07-26 multicast fixes backported: multicast ttl & loop are set
- * for all the sockets; ipv4 ttl & loop expect a char* (andrei)
- */
-
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <errno.h>
-#include <arpa/inet.h>
-#ifdef __linux__
- #include <linux/types.h>
- #include <linux/errqueue.h>
-#endif
-
-
-#include "udp_server.h"
-#include "globals.h"
-#include "config.h"
-#include "dprint.h"
-#include "receive.h"
-#include "mem/mem.h"
-#include "ip_addr.h"
-
-
-#ifdef DBG_MSG_QA
-/* message quality assurance -- frequently, bugs in ser have
- been indicated by zero characters or long whitespaces
- in generated messages; this debugging option aborts if
- any such message is sighted
-*/
-static int dbg_msg_qa(char *buf, int len)
-{
-#define _DBG_WS_LEN 3
-#define _DBG_WS " "
-
- char *scan;
- int my_len;
- int space_cnt;
- enum { QA_ANY, QA_SPACE, QA_EOL1 } state;
-
-
- /* is there a zero character in there ? */
- if (memchr(buf, 0, len)) {
- LOG(L_CRIT, "BUG: message with 0 in it\n");
- return 0;
- }
-
- my_len=len;
- scan=buf;
- state=QA_ANY;
- space_cnt=0;
-
- while(my_len) {
- switch(*scan) {
- case ' ': if (state==QA_SPACE) {
- space_cnt++;
- if (space_cnt==4) {
- LOG(L_CRIT, "BUG(probably): DBG_MSG_QA: "
- "too many spaces\n");
- return 0;
- }
- } else space_cnt=0;
- state=QA_SPACE;
- break;
-
- case '\r': /* ignore */
- space_cnt=0;
- break;
-
- case '\n': /* don't proceed to body on EoH */
- if (state==QA_EOL1) goto qa_passed;
- space_cnt=0;
- state=QA_EOL1;
- break;
-
- default: space_cnt=0;
- state=QA_ANY;
- break;
- }
- scan++;
- my_len--;
- }
-
-
-qa_passed:
- return 1;
-}
-
-#endif
-
-
-int probe_max_receive_buffer( int udp_sock )
-{
- int optval;
- int ioptval;
- unsigned int ioptvallen;
- int foptval;
- unsigned int foptvallen;
- int voptval;
- unsigned int voptvallen;
- int phase=0;
-
- /* jku: try to increase buffer size as much as we can */
- ioptvallen=sizeof(ioptval);
- if (getsockopt( udp_sock, SOL_SOCKET, SO_RCVBUF, (void*) &ioptval,
- &ioptvallen) == -1 )
- {
- LOG(L_ERR, "ERROR: udp_init: getsockopt: %s\n", strerror(errno));
- return -1;
- }
- if ( ioptval==0 )
- {
- LOG(L_DBG, "DEBUG: udp_init: SO_RCVBUF initially set to 0; resetting to %d\n",
- BUFFER_INCREMENT );
- ioptval=BUFFER_INCREMENT;
- } else LOG(L_INFO, "INFO: udp_init: SO_RCVBUF is initially %d\n", ioptval );
- for (optval=ioptval; ; ) {
- /* increase size; double in initial phase, add linearly later */
- if (phase==0) optval <<= 1; else optval+=BUFFER_INCREMENT;
- if (optval > maxbuffer){
- if (phase==1) break;
- else { phase=1; optval >>=1; continue; }
- }
- LOG(L_DBG, "DEBUG: udp_init: trying SO_RCVBUF: %d\n", optval );
- if (setsockopt( udp_sock, SOL_SOCKET, SO_RCVBUF,
- (void*)&optval, sizeof(optval)) ==-1){
- /* Solaris returns -1 if asked size too big; Linux ignores */
- LOG(L_DBG, "DEBUG: udp_init: SOL_SOCKET failed"
- " for %d, phase %d: %s\n", optval, phase, strerror(errno));
- /* if setting buffer size failed and still in the aggressive
- phase, try less aggressively; otherwise give up
- */
- if (phase==0) { phase=1; optval >>=1 ; continue; }
- else break;
- }
- /* verify if change has taken effect */
- /* Linux note -- otherwise I would never know that; funny thing: Linux
- doubles size for which we asked in setsockopt
- */
- voptvallen=sizeof(voptval);
- if (getsockopt( udp_sock, SOL_SOCKET, SO_RCVBUF, (void*) &voptval,
- &voptvallen) == -1 )
- {
- LOG(L_ERR, "ERROR: udp_init: getsockopt: %s\n", strerror(errno));
- return -1;
- } else {
- LOG(L_DBG, "DEBUG: setting SO_RCVBUF; set=%d,verify=%d\n",
- optval, voptval);
- if (voptval<optval) {
- LOG(L_DBG, "DEBUG: setting SO_RCVBUF has no effect\n");
- /* if setting buffer size failed and still in the aggressive
- phase, try less aggressively; otherwise give up
- */
- if (phase==0) { phase=1; optval >>=1 ; continue; }
- else break;
- }
- }
-
- } /* for ... */
- foptvallen=sizeof(foptval);
- if (getsockopt( udp_sock, SOL_SOCKET, SO_RCVBUF, (void*) &foptval,
- &foptvallen) == -1 )
- {
- LOG(L_ERR, "ERROR: udp_init: getsockopt: %s\n", strerror(errno));
- return -1;
- }
- LOG(L_INFO, "INFO: udp_init: SO_RCVBUF is finally %d\n", foptval );
-
- return 0;
-
- /* EoJKU */
-}
-
-
-#ifdef USE_MCAST
-
-/*
- * Setup multicast receiver
- */
-static int setup_mcast_rcvr(int sock, union sockaddr_union* addr)
-{
- struct ip_mreq mreq;
-#ifdef USE_IPV6
- struct ipv6_mreq mreq6;
-#endif /* USE_IPV6 */
-
- if (addr->s.sa_family==AF_INET){
- memcpy(&mreq.imr_multiaddr, &addr->sin.sin_addr,
- sizeof(struct in_addr));
- mreq.imr_interface.s_addr = htonl(INADDR_ANY);
-
- if (setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP,&mreq,
- sizeof(mreq))==-1){
- LOG(L_ERR, "ERROR: setup_mcast_rcvr: setsockopt: %s\n",
- strerror(errno));
- return -1;
- }
-#ifdef USE_IPV6
- } else if (addr->s.sa_family==AF_INET6){
- memcpy(&mreq6.ipv6mr_multiaddr, &addr->sin6.sin6_addr,
- sizeof(struct in6_addr));
- mreq6.ipv6mr_interface = 0;
-#ifdef __OS_linux
- if (setsockopt(sock, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, &mreq6,
-#else
- if (setsockopt(sock, IPPROTO_IPV6, IPV6_JOIN_GROUP, &mreq6,
-#endif
- sizeof(mreq6))==-1){
- LOG(L_ERR, "ERROR: setup_mcast_rcvr: setsockopt:%s\n",
- strerror(errno));
- return -1;
- }
-
-#endif /* USE_IPV6 */
- } else {
- LOG(L_ERR, "ERROR: setup_mcast_rcvr: Unsupported protocol family\n");
- return -1;
- }
- return 0;
-}
-
-#endif /* USE_MCAST */
-
-
-int udp_init(struct socket_info* sock_info)
-{
- union sockaddr_union* addr;
- int optval;
-#ifdef USE_MCAST
- unsigned char m_ttl, m_loop;
-#endif
- addr=&sock_info->su;
-/*
- addr=(union sockaddr_union*)pkg_malloc(sizeof(union sockaddr_union));
- if (addr==0){
- LOG(L_ERR, "ERROR: udp_init: out of memory\n");
- goto error;
- }
-*/
- sock_info->proto=PROTO_UDP;
- if (init_su(addr, &sock_info->address, sock_info->port_no)<0){
- LOG(L_ERR, "ERROR: udp_init: could not init sockaddr_union\n");
- goto error;
- }
-
- sock_info->socket = socket(AF2PF(addr->s.sa_family), SOCK_DGRAM, 0);
- if (sock_info->socket==-1){
- LOG(L_ERR, "ERROR: udp_init: socket: %s\n", strerror(errno));
- goto error;
- }
- /* set sock opts? */
- optval=1;
- if (setsockopt(sock_info->socket, SOL_SOCKET, SO_REUSEADDR ,
- (void*)&optval, sizeof(optval)) ==-1){
- LOG(L_ERR, "ERROR: udp_init: setsockopt: %s\n", strerror(errno));
- goto error;
- }
- /* tos */
- optval=IPTOS_LOWDELAY;
- if (setsockopt(sock_info->socket, IPPROTO_IP, IP_TOS, (void*)&optval,
- sizeof(optval)) ==-1){
- LOG(L_WARN, "WARNING: udp_init: setsockopt tos: %s\n", strerror(errno));
- /* continue since this is not critical */
- }
-#if defined (__linux__) && defined(UDP_ERRORS)
- optval=1;
- /* enable error receiving on unconnected sockets */
- if(setsockopt(sock_info->socket, SOL_IP, IP_RECVERR,
- (void*)&optval, sizeof(optval)) ==-1){
- LOG(L_ERR, "ERROR: udp_init: setsockopt: %s\n", strerror(errno));
- goto error;
- }
-#endif
-
-#ifdef USE_MCAST
- if ((sock_info->flags & SI_IS_MCAST)
- && (setup_mcast_rcvr(sock_info->socket, addr)<0)){
- goto error;
- }
- /* set the multicast options */
- if (addr->s.sa_family==AF_INET){
- m_loop=mcast_loopback;
- if (setsockopt(sock_info->socket, IPPROTO_IP, IP_MULTICAST_LOOP,
- &m_loop, sizeof(m_loop))==-1){
- LOG(L_WARN, "WARNING: udp_init: setsockopt(IP_MULTICAST_LOOP):"
- " %s\n", strerror(errno));
- /* it's only a warning because we might get this error if the
- network interface doesn't support multicasting -- andrei */
- }
- if (mcast_ttl>=0){
- m_ttl=mcast_ttl;
- if (setsockopt(sock_info->socket, IPPROTO_IP, IP_MULTICAST_TTL,
- &m_ttl, sizeof(m_ttl))==-1){
- LOG(L_WARN, "WARNING: udp_init: setsockopt (IP_MULTICAST_TTL):"
- " %s\n", strerror(errno));
- }
- }
-#ifdef USE_IPV6
- } else if (addr->s.sa_family==AF_INET6){
- if (setsockopt(sock_info->socket, IPPROTO_IPV6, IPV6_MULTICAST_LOOP,
- &mcast_loopback, sizeof(mcast_loopback))==-1){
- LOG(L_WARN, "WARNING: udp_init: setsockopt (IPV6_MULTICAST_LOOP):"
- " %s\n", strerror(errno));
- }
- if (mcast_ttl>=0){
- if (setsockopt(sock_info->socket, IPPROTO_IP, IPV6_MULTICAST_HOPS,
- &mcast_ttl, sizeof(mcast_ttl))==-1){
- LOG(L_WARN, "WARNING: udp_init: setssckopt "
- "(IPV6_MULTICAST_HOPS): %s\n", strerror(errno));
- }
- }
-#endif /* USE_IPV6*/
- } else {
- LOG(L_ERR, "ERROR: udp_init: Unsupported protocol family %d\n",
- addr->s.sa_family);
- goto error;
- }
-#endif /* USE_MCAST */
-
- if ( probe_max_receive_buffer(sock_info->socket)==-1) goto error;
-
- if (bind(sock_info->socket, &addr->s, sockaddru_len(*addr))==-1){
- LOG(L_ERR, "ERROR: udp_init: bind(%x, %p, %d) on %s: %s\n",
- sock_info->socket, &addr->s,
- (unsigned)sockaddru_len(*addr),
- sock_info->address_str.s,
- strerror(errno));
- #ifdef USE_IPV6
- if (addr->s.sa_family==AF_INET6)
- LOG(L_ERR, "ERROR: udp_init: might be caused by using a link "
- " local address, try site local or global\n");
- #endif
- goto error;
- }
-
-/* pkg_free(addr);*/
- return 0;
-
-error:
-/* if (addr) pkg_free(addr);*/
- return -1;
-}
-
-
-
-int udp_rcv_loop()
-{
- unsigned len;
-#ifdef DYN_BUF
- char* buf;
-#else
- static char buf [BUF_SIZE+1];
-#endif
- char *tmp;
- union sockaddr_union* from;
- unsigned int fromlen;
- struct receive_info ri;
-
-
- from=(union sockaddr_union*) pkg_malloc(sizeof(union sockaddr_union));
- if (from==0){
- LOG(L_ERR, "ERROR: udp_rcv_loop: out of memory\n");
- goto error;
- }
- memset(from, 0 , sizeof(union sockaddr_union));
- ri.bind_address=bind_address; /* this will not change, we do it only once*/
- ri.dst_port=bind_address->port_no;
- ri.dst_ip=bind_address->address;
- ri.proto=PROTO_UDP;
- ri.proto_reserved1=ri.proto_reserved2=0;
- for(;;){
-#ifdef DYN_BUF
- buf=pkg_malloc(BUF_SIZE+1);
- if (buf==0){
- LOG(L_ERR, "ERROR: udp_rcv_loop: could not allocate receive"
- " buffer\n");
- goto error;
- }
-#endif
- fromlen=sockaddru_len(bind_address->su);
- len=recvfrom(bind_address->socket, buf, BUF_SIZE, 0, &from->s,
- &fromlen);
- if (len==-1){
- if (errno==EAGAIN){
- DBG("udp_rcv_loop: packet with bad checksum received\n");
- continue;
- }
- LOG(L_ERR, "ERROR: udp_rcv_loop:recvfrom:[%d] %s\n",
- errno, strerror(errno));
- if ((errno==EINTR)||(errno==EWOULDBLOCK)|| (errno==ECONNREFUSED))
- continue; /* goto skip;*/
- else goto error;
- }
- /* we must 0-term the messages, receive_msg expects it */
- buf[len]=0; /* no need to save the previous char */
-
- ri.src_su=*from;
- su2ip_addr(&ri.src_ip, from);
- ri.src_port=su_getport(from);
-
-#ifndef NO_ZERO_CHECKS
- if (len<MIN_UDP_PACKET) {
- tmp=ip_addr2a(&ri.src_ip);
- DBG("udp_rcv_loop: probing packet received from %s %d\n",
- tmp, htons(ri.src_port));
- continue;
- }
- if (buf[len-1]==0) {
- tmp=ip_addr2a(&ri.src_ip);
- LOG(L_WARN, "WARNING: udp_rcv_loop: "
- "upstream bug - 0-terminated packet from %s %d\n",
- tmp, htons(ri.src_port));
- len--;
- }
-#endif
-#ifdef DBG_MSG_QA
- if (!dbg_msg_qa(buf, len)) {
- LOG(L_WARN, "WARNING: an incoming message didn't pass test,"
- " drop it: %.*s\n", len, buf );
- continue;
- }
-#endif
- if (ri.src_port==0){
- tmp=ip_addr2a(&ri.src_ip);
- LOG(L_INFO, "udp_rcv_loop: dropping 0 port packet from %s\n", tmp);
- continue;
- }
-
-
- /* receive_msg must free buf too!*/
- receive_msg(buf, len, &ri);
-
- /* skip: do other stuff */
-
- }
- /*
- if (from) pkg_free(from);
- return 0;
- */
-
-error:
- if (from) pkg_free(from);
- return -1;
-}
-
-
-
-
-/* which socket to use? main socket or new one? */
-int udp_send(struct socket_info *source, char *buf, unsigned len,
- union sockaddr_union* to)
-{
-
- int n;
- int tolen;
-
-#ifdef DBG_MSG_QA
- /* aborts on error, does nothing otherwise */
- if (!dbg_msg_qa( buf, len )) {
- LOG(L_ERR, "ERROR: udp_send: dbg_msg_qa failed\n");
- abort();
- }
-#endif
-
- tolen=sockaddru_len(*to);
-again:
- n=sendto(source->socket, buf, len, 0, &to->s, tolen);
-#ifdef XL_DEBUG
- LOG(L_INFO, "INFO: send status: %d\n", n);
-#endif
- if (n==-1){
- LOG(L_ERR, "ERROR: udp_send: sendto(sock,%p,%d,0,%p,%d): %s(%d)\n",
- buf,len,to,tolen,
- strerror(errno),errno);
- if (errno==EINTR) goto again;
- if (errno==EINVAL) {
- LOG(L_CRIT,"CRITICAL: invalid sendtoparameters\n"
- "one possible reason is the server is bound to localhost and\n"
- "attempts to send to the net\n");
- }
- }
- return n;
-}
Deleted: ser/trunk/udp_server.h
===================================================================
--- ser/trunk/udp_server.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/udp_server.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,46 +0,0 @@
-/*
- * $Id: udp_server.h,v 1.10 2004/08/24 08:45:10 janakj Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-#ifndef udp_server_h
-#define udp_server_h
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include "ip_addr.h"
-
-#define MAX_RECV_BUFFER_SIZE 256*1024
-#define BUFFER_INCREMENT 2048
-
-
-int udp_init(struct socket_info* si);
-int udp_send(struct socket_info* source,char *buf, unsigned len,
- union sockaddr_union* to);
-int udp_rcv_loop();
-
-
-#endif
Deleted: ser/trunk/unixsock_server.c
===================================================================
--- ser/trunk/unixsock_server.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/unixsock_server.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,1029 +0,0 @@
-/*
- * $Id: unixsock_server.c,v 1.17 2004/12/03 19:09:31 andrei Exp $
- *
- * UNIX Domain Socket Server
- *
- * Copyright (C) 2001-2004 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/* History:
- * created by janakj
- * 2004-03-03 added tcp init code (andrei)
- * 2004-04-29 added chmod(sock_perm) & chown(sock_user,sock_group) (andrei)
- */
-
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <signal.h>
-#include <stdarg.h>
-#include <time.h>
-#include <fcntl.h>
-#include "config.h"
-#include "ut.h"
-#include "globals.h"
-#include "trim.h"
-#include "pt.h"
-#include "sr_module.h"
-#include "mem/mem.h"
-#include "fifo_server.h" /* CMD_SEPARATOR */
-#include "unixsock_server.h"
-#include "tsend.h"
-
-
-/* AF_LOCAL is not defined on solaris */
-#if !defined(AF_LOCAL)
-#define AF_LOCAL AF_UNIX
-#endif
-#if !defined(PF_LOCAL)
-#define PF_LOCAL PF_UNIX
-#endif
-
-
-/* solaris doesn't have SUN_LEN */
-#ifndef SUN_LEN
-#define SUN_LEN(sa) ( strlen((sa)->sun_path) + \
- (size_t)(((struct sockaddr_un*)0)->sun_path) )
-#endif
-
-
-#define UNIXSOCK_BUF_SIZE BUF_SIZE
-
-char* unixsock_name = 0;
-int unixsock_children = 1;
-int unixsock_tx_timeout = 2000; /* Timeout for sending replies in milliseconds */
-
-
-static int rx_sock, tx_sock;
-static struct unixsock_cmd* cmd_list = 0;
-static char reply_buf[UNIXSOCK_BUF_SIZE];
-static str reply_pos;
-static struct sockaddr_un reply_addr;
-static unsigned int reply_addr_len;
-
-static time_t up_since;
-static char up_since_ctime[MAX_CTIME_LEN];
-
-
-#define PRINT_CMD "print" /* Diagnostic command */
-#define VERSION_CMD "version" /* Print the version of the server */
-#define UPTIME_CMD "uptime" /* Print server's uptime */
-#define WHICH_CMD "which" /* Print available FIFO commands */
-#define PS_CMD "ps" /* Print server's process table */
-#define ARG_CMD "arg" /* Print server's command line arguments */
-#define PWD_CMD "pwd" /* Get the current working directory */
-#define KILL_CMD "kill" /* Kill the server */
-
-
-/*
- * Diagnostic and hello-world command
- */
-static int print_cmd(str* msg)
-{
- str line;
- int ret;
-
- ret = 0;
-
- if (unixsock_read_line(&line, msg) < 0) {
- unixsock_reply_asciiz("500 Error while reading text\n");
- ret = -1;
- goto end;
- }
-
- if (unixsock_reply_printf("200 OK\n%.*s\n", line.len, ZSW(line.s)) < 0) {
- unixsock_reply_reset();
- unixsock_reply_asciiz("500 Error while sending reply\n");
- ret = -1;
- }
-
- end:
- if (unixsock_reply_send() < 0) ret = -1;
- return ret;
-}
-
-
-/*
- * Print the version of the server
- */
-static int version_cmd(str* msg)
-{
- int ret;
-
- ret = 0;
- if (unixsock_reply_asciiz("200 OK\n" SERVER_HDR CRLF) < 0) ret = -1;
- if (unixsock_reply_send() < 0) ret = -1;
- return ret;
-}
-
-
-static int uptime_cmd(str* msg)
-{
- time_t now;
- int ret;
-
- time(&now);
- ret = 0;
-
- if (unixsock_reply_printf("200 OK\nNow: %sUp Since: %sUp time: %.0f [sec]\n",
- ctime(&now), up_since_ctime, difftime(now, up_since)) < 0) {
- unixsock_reply_reset();
- unixsock_reply_asciiz("500 Error while printing reply\n");
- ret = -1;
- }
-
- if (unixsock_reply_send() < 0) {
- ret = -1;
- }
-
- return ret;
-}
-
-
-static int which_cmd(str* msg)
-{
- struct unixsock_cmd* c;
- int ret;
-
- ret = 0;
- unixsock_reply_asciiz("200 OK\n");
-
- for(c = cmd_list; c; c = c->next) {
- if (unixsock_reply_printf("%s\n", c->name) < 0) {
- unixsock_reply_reset();
- unixsock_reply_asciiz("500 Error while creating reply\n");
- ret = -1;
- break;
- }
- }
-
- if (unixsock_reply_send() < 0) {
- ret = -1;
- }
- return ret;
-}
-
-
-static int ps_cmd(str* msg)
-{
- int p, ret;
-
- ret = 0;
- unixsock_reply_asciiz("200 OK\n");
- for (p = 0; p < process_count(); p++) {
- if (unixsock_reply_printf("%d\t%d\t%s\n", p, pt[p].pid, pt[p].desc) < 0) {
- unixsock_reply_reset();
- unixsock_reply_asciiz("500 Error while printing reply\n");
- ret = -1;
- break;
- }
- }
-
- if (unixsock_reply_send() < 0) {
- ret = -1;
- }
- return ret;
-}
-
-
-static int pwd_cmd(str* msg)
-{
- char *cwd_buf;
- int max_len, ret;
-
- max_len = pathmax();
- cwd_buf = pkg_malloc(max_len);
- ret = 0;
- if (!cwd_buf) {
- LOG(L_ERR, "pwd_cmd: No memory left\n");
- unixsock_reply_asciiz("500 No Memory Left\n");
- ret = -1;
- }
-
- if (getcwd(cwd_buf, max_len)) {
- if (unixsock_reply_printf("200 OK\n%s\n", cwd_buf) < 0) {
- unixsock_reply_reset();
- unixsock_reply_asciiz("500 Error while sending reply\n");
- ret = -1;
- }
- } else {
- unixsock_reply_asciiz("500 getcwd Failed\n");
- ret = -1;
- }
-
- pkg_free(cwd_buf);
- if (unixsock_reply_send() < 0) {
- ret = -1;
- }
- return ret;
-}
-
-
-static int arg_cmd(str* msg)
-{
- int p, ret;
-
- ret = 0;
- unixsock_reply_asciiz("200 OK\n");
- for (p = 0; p < my_argc; p++) {
- if (unixsock_reply_printf("%s\n", my_argv[p]) < 0) {
- unixsock_reply_reset();
- unixsock_reply_asciiz("500 Could not create reply\n");
- ret = -1;
- break;
- }
- }
-
- if (unixsock_reply_send() < 0) {
- ret = -1;
- }
- return ret;
-}
-
-
-static int kill_cmd(str* msg)
-{
- unixsock_reply_asciiz("200 Killing now\n");
- unixsock_reply_send();
- kill(0, SIGTERM);
- return 0;
-}
-
-
-static int register_core_commands(void)
-{
- if (unixsock_register_cmd(PRINT_CMD, print_cmd) < 0) {
- return -1;
- }
-
- if (unixsock_register_cmd(VERSION_CMD, version_cmd) < 0) {
- return -1;
- }
-
- if (unixsock_register_cmd(UPTIME_CMD, uptime_cmd) < 0) {
- return -1;
- }
-
- if (unixsock_register_cmd(WHICH_CMD, which_cmd) < 0) {
- return -1;
- }
-
- if (unixsock_register_cmd(PS_CMD, ps_cmd) < 0) {
- return -1;
- }
-
- if (unixsock_register_cmd(PWD_CMD, pwd_cmd) < 0) {
- return -1;
- }
-
- if (unixsock_register_cmd(ARG_CMD, arg_cmd) < 0) {
- return -1;
- }
-
- if (unixsock_register_cmd(KILL_CMD, kill_cmd) < 0) {
- return -1;
- }
- return 0;
-}
-
-
-/*
- * Create and bind local socket
- */
-int init_unixsock_socket(void)
-{
- struct sockaddr_un addr;
- int len, flags;
-
- if (unixsock_name == 0) {
- DBG("init_unixsock_socket: No unix domain socket"
- " will be opened\n");
- return 1;
- }
-
- len = strlen(unixsock_name);
- if (len == 0) {
- DBG("init_unixsock_socket: Unix domain socket server disabled\n");
- return 1;
- } else if (len > 107) {
- LOG(L_ERR, "ERROR: init_unixsock_socket: Socket name too long\n");
- return -1;
- }
-
- DBG("init_unixsock_socket: Initializing Unix domain socket server @ %s\n",
- unixsock_name);
-
- if (unlink(unixsock_name) == -1) {
- if (errno != ENOENT) {
- LOG(L_ERR, "ERROR: init_unixsock_socket: Error while unlinking "
- "old socket (%s): %s\n", unixsock_name, strerror(errno));
- return -1;
- }
- }
-
- rx_sock = socket(PF_LOCAL, SOCK_DGRAM, 0);
- if (rx_sock == -1) {
- LOG(L_ERR, "ERROR: init_unixsock_socket: Cannot create RX "
- "socket: %s\n", strerror(errno));
- return -1;
- }
-
- memset(&addr, 0, sizeof(addr));
- addr.sun_family = PF_LOCAL;
- memcpy(addr.sun_path, unixsock_name, len);
-
- if (bind(rx_sock, (struct sockaddr*)&addr, SUN_LEN(&addr)) == -1) {
- LOG(L_ERR, "ERROR: init_unixsock_socket: bind: %s\n", strerror(errno));
- goto err_rx;
- }
- /* try to change the permissions */
- if (sock_mode){ /* sock_mode==0 doesn't make sense, nobody can read/write*/
- if (chmod(unixsock_name, sock_mode)<0){
- LOG(L_ERR, "ERROR: init_unixsock_socket: failed to change the"
- " permissions for %s to %04o: %s[%d]\n",
- unixsock_name, sock_mode, strerror(errno), errno);
- goto err_rx;
- }
- }
- /* try to change the ownership */
- if ((sock_uid!=-1) || (sock_gid!=-1)){
- if (chown(unixsock_name, sock_uid, sock_gid)<0){
- LOG(L_ERR, "ERROR: init_unixsock_socket: failed to change the"
- " owner/group for %s to %d.%d; %s[%d]\n",
- unixsock_name, sock_uid, sock_gid, strerror(errno), errno);
- goto err_rx;
- }
- }
-
- tx_sock = socket(PF_LOCAL, SOCK_DGRAM, 0);
- if (tx_sock == -1) {
- LOG(L_ERR, "ERROR: init_unixsock_socket: Cannot create TX socket:"
- " %s\n", strerror(errno));
- goto err_rx;
- }
-
- /* Turn non-blocking mode on */
- flags = fcntl(tx_sock, F_GETFL);
- if (flags == -1){
- LOG(L_ERR, "ERROR: init_unixsock_socket: fcntl failed: %s\n",
- strerror(errno));
- goto err_both;
- }
-
- if (fcntl(tx_sock, F_SETFL, flags | O_NONBLOCK) == -1) {
- LOG(L_ERR, "ERROR: init_unixsock_socket: fcntl: "
- "set non-blocking failed: %s\n", strerror(errno));
- goto err_both;
- }
-
- return 1;
- err_both:
- close(tx_sock);
- err_rx:
- close(rx_sock);
- return -1;
-}
-
-
-static struct unixsock_cmd* lookup_cmd(str* cmd)
-{
- struct unixsock_cmd* c;
-
- for(c = cmd_list; c; c = c->next) {
- if ((cmd->len == c->name.len) &&
- (strncasecmp(c->name.s, cmd->s, cmd->len) == 0)) {
- return c;
- }
- }
- return 0;
-}
-
-
-static int parse_cmd(str* res, str* buffer)
-{
- char* cmd_end;
-
- if (!res || !buffer) {
- LOG(L_ERR, "parse_cmd: Invalid parameter value\n");
- return -1;
- }
-
- if (buffer->len < 3) {
- LOG(L_ERR, "parse_cmd: Message too short\n");
- return -1;
- }
-
- if (buffer->s[0] != CMD_SEPARATOR) {
- LOG(L_ERR, "parse_cmd: Command must start with %c\n",
- CMD_SEPARATOR);
- return -1;
- }
-
- cmd_end = q_memchr(buffer->s + 1, CMD_SEPARATOR, buffer->len - 1);
- if (!cmd_end) {
- LOG(L_ERR, "parse_cmd: Closing '%c' missing\n", CMD_SEPARATOR);
- return -1;
- }
-
- res->s = buffer->s + 1;
- res->len = cmd_end - res->s;
- return 0;
-}
-
-
-static void skip_line(str* buffer)
-{
- if (!buffer) return;
-
- /* Find \n */
- while (buffer->len && (buffer->s[0] != '\n')) {
- buffer->s++;
- buffer->len--;
- }
-
- if (buffer->len) {
- buffer->s++;
- buffer->len--;
- }
-
- /* Skip CR following LF */
- while (buffer->len && (buffer->s[0] == '\r')) {
- buffer->s++;
- buffer->len--;
- }
-}
-
-
-static void unix_server_loop(void)
-{
- int ret;
- str cmd, buffer;
- static char buf[UNIXSOCK_BUF_SIZE];
- struct unixsock_cmd* c;
-
-
- while(1) {
- reply_addr_len = sizeof(reply_addr);
- ret = recvfrom(rx_sock, buf, UNIXSOCK_BUF_SIZE, 0,
- (struct sockaddr*)&reply_addr, &reply_addr_len);
- if (ret == -1) {
- LOG(L_ERR, "unix_server_loop: recvfrom: (%d) %s\n",
- errno, strerror(errno));
- if ((errno == EINTR) ||
- (errno == EAGAIN) ||
- (errno == EWOULDBLOCK) ||
- (errno == ECONNREFUSED)) {
- DBG("unix_server_loop: Got %d (%s), going on\n",
- errno, strerror(errno));
- continue;
- }
- LOG(L_CRIT, "BUG: unix_server_loop: unexpected recvfrom error\n");
- continue;
- }
-
- buffer.s = buf;
- buffer.len = ret;
- unixsock_reply_reset();
-
- if (parse_cmd(&cmd, &buffer) < 0) {
- unixsock_reply_asciiz("400 First line malformed\n");
- unixsock_reply_send();
- continue;
- }
-
- buffer.s = cmd.s + cmd.len + 1;
- buffer.len -= cmd.len + 1 + 1;
- skip_line(&buffer); /* Skip the reply filename */
-
- c = lookup_cmd(&cmd);
- if (c == 0) {
- LOG(L_ERR, "unix_server_loop: Could not find "
- "command '%.*s'\n", cmd.len, ZSW(cmd.s));
- unixsock_reply_printf("500 Command %.*s not found\n", cmd.len, ZSW(cmd.s));
- unixsock_reply_send();
- continue;
- }
-
- ret = c->f(&buffer);
- if (ret < 0) {
- LOG(L_ERR, "unix_server_loop: Command '%.*s' failed with "
- "return value %d\n", cmd.len, ZSW(cmd.s), ret);
- /* Note that we do not send reply here, the
- * function is supposed to do so, it knows the
- * reason of the failure better than us
- */
- }
- }
-}
-
-
-static int get_uptime(void)
-{
- char* t;
-
- time(&up_since);
- t = ctime(&up_since);
- if (strlen(t) + 1 >= MAX_CTIME_LEN) {
- LOG(L_ERR, "get_uptime: Too long date %d\n", (int)strlen(t));
- return -1;
- }
- memcpy(up_since_ctime, t, strlen(t) + 1);
- return 0;
-}
-
-
-/*
- * Spawn listeners
- */
-int init_unixsock_children(void)
-{
- int i;
- pid_t pid;
-#ifdef USE_TCP
- int sockfd[2];
-#endif
-
- if (!unixsock_name || *unixsock_name == '\0') {
- return 1;
- }
-
- if (get_uptime() < 0) {
- return -1;
- }
-
- if (register_core_commands() < 0) {
- close(rx_sock);
- close(tx_sock);
- return -1;
- }
-
- for(i = 0; i < unixsock_children; i++) {
- process_no++;
-#ifdef USE_TCP
- if(!tcp_disable){
- if (socketpair(AF_UNIX, SOCK_STREAM, 0, sockfd)<0){
- LOG(L_ERR, "ERROR: init_unixsock_server: socketpair"
- " failed: %s\n", strerror(errno));
- return -1;
- }
- }
-#endif
- pid = fork();
- if (pid < 0) {
- LOG(L_ERR, "init_unixsock_server: Unable to fork: %s\n",
- strerror(errno));
- close(rx_sock);
- close(tx_sock);
- return -1;
- } else if (pid == 0) { /* child */
-#ifdef USE_TCP
- if (!tcp_disable){
- close(sockfd[0]);
- unix_tcp_sock=sockfd[1];
- }
-#endif
- if (init_child(PROC_UNIXSOCK) < 0) {
- LOG(L_ERR, "init_unixsock_server: Error in "
- "init_child\n");
- close(rx_sock);
- close(tx_sock);
- return -1;
- }
-
- unix_server_loop(); /* Never returns */
- }
-
- /* Parent */
- pt[process_no].pid = pid;
- strncpy(pt[process_no].desc, "unix domain socket server",
- MAX_PT_DESC);
-#ifdef USE_TCP
- if (!tcp_disable){
- close(sockfd[1]);
- pt[process_no].unix_sock=sockfd[0];
- pt[process_no].idx=-1; /* this is not a "tcp"
- process*/
- }
-#endif
-
- }
-
- DBG("init_unixsock_server: Unix domain socket server successfully initialized @ %s\n",
- unixsock_name);
- return 1;
-}
-
-
-/*
- * Clean up
- */
-void close_unixsock_server(void)
-{
- struct unixsock_cmd* c;
- close(rx_sock);
- close(tx_sock);
-
- while(cmd_list) {
- c = cmd_list;
- cmd_list = cmd_list->next;
- pkg_free(c);
- }
-}
-
-
-/*
- * Register a new command
- */
-int unixsock_register_cmd(char* command, unixsock_f* f)
-{
- str cmd;
- struct unixsock_cmd* new_cmd;
-
- cmd.s = command;
- cmd.len = strlen(command);
-
- if (lookup_cmd(&cmd)) {
- LOG(L_ERR, "unixsock_register_cmd: Function already exists\n");
- return -1;
- }
-
- new_cmd = pkg_malloc(sizeof(struct unixsock_cmd));
- if (new_cmd == 0) {
- LOG(L_ERR, "register_unixsock_cmd: Out of mem\n");
- return -1;
- }
-
- new_cmd->name = cmd;
- new_cmd->f = f;
-
- new_cmd->next = cmd_list;
- cmd_list = new_cmd;
-
- DBG("unixsock_register_cmd: New command (%.*s) registered\n",
- cmd.len, ZSW(cmd.s));
- return 1;
-}
-
-
-int unixsock_add_to_reply(const char* buf, size_t len)
-{
- if (reply_pos.len < len) {
- LOG(L_ERR, "unixsock_add_to_reply: Buffer too small\n");
- return -1;
- }
-
- memcpy(reply_pos.s, buf, len);
- reply_pos.s += len;
- reply_pos.len -= len;
- return 0;
-}
-
-
-/*
- * Send a reply
- */
-ssize_t unixsock_reply_send(void)
-{
- return tsend_dgram(tx_sock,
- reply_buf, reply_pos.s - reply_buf,
- (struct sockaddr*)&reply_addr, reply_addr_len,
- unixsock_tx_timeout);
-}
-
-
-/*
- * Send a reply
- */
-ssize_t unixsock_reply_sendto(struct sockaddr_un* to)
-{
- if (!to) {
- LOG(L_ERR, "unixsock_reply_sendto: Invalid parameter value\n");
- return -1;
- }
-
- return tsend_dgram(tx_sock,
- reply_buf, reply_pos.s - reply_buf,
- (struct sockaddr*)to, SUN_LEN(to),
- unixsock_tx_timeout);
-}
-
-
-/*
- * Read a line, the result will be stored in line
- * parameter, the data is not copied, it's just
- * a pointer to an existing buffer
- */
-int unixsock_read_line(str* line, str* source)
-{
- if (!line || !source) {
- LOG(L_ERR, "unixsock_read_line: Invalid parameter value\n");
- return -1;
- }
-
- *line = *source;
- skip_line(source);
- line->len = source->s - line->s;
- trim_trailing(line);
- if (line->len) {
- return 0;
- } else {
- return 1;
- }
-}
-
-
-/*
- * Read body until the closing .CRLF, no CRLF recovery
- * is done so no additional buffer is necessary, body will
- * point to an existing buffer
- */
-int unixsock_read_body(str* body, str* source)
-{
- int i, state, last_dot;
-
- enum states {
- ST_BEGIN,
- ST_CRLF,
- ST_DATA,
- ST_NEWLINE
- };
-
- if (!body || !source) {
- LOG(L_ERR, "unixsock_read_body: Invalid parameter value\n");
- return -1;
- }
-
- if (source->len < 2) {
- LOG(L_ERR, "unixsock_read_body: Not enough input data "
- "(malformed message ?)\n");
- return -1;
- }
-
- state = ST_BEGIN;
- body->s = source->s;
- last_dot = 0;
- for(i = 0; i < source->len; i++) {
- switch(state) {
- case ST_BEGIN:
- if (source->s[i] == '.') {
- last_dot = i;
- state = ST_CRLF;
- } else if (source->s[i] == '\n') {
- state = ST_NEWLINE;
- } else {
- state = ST_DATA;
- }
- break;
-
- case ST_CRLF:
- if (source->s[i] == '\n') {
- body->len = last_dot;
- source->s += i + 1;
- source->len -= i + 1;
- return 0;
- } else if (source->s[i] != '\r') {
- state = ST_DATA;
- }
- break;
-
- case ST_DATA:
- if (source->s[i] == '\n') {
- state = ST_NEWLINE;
- }
- break;
-
- case ST_NEWLINE:
- if (source->s[i] == '.') {
- last_dot = i;
- state = ST_CRLF;
- }
- break;
- }
- }
-
- LOG(L_ERR, "unixsock_read_body: Could not find the end of the body\n");
- return -1;
-}
-
-
-/*
- * Read a set of lines, the functions performs CRLF recovery,
- * therefore lineset must point to an additional buffer
- * to which the data will be copied. Initial lineset->len contains
- * the size of the buffer
- */
-int unixsock_read_lineset(str* lineset, str* source)
-{
- int i, state, len;
-
- enum states {
- ST_BEGIN,
- ST_CRLF,
- ST_DATA,
- ST_NEWLINE
- };
-
- if (!lineset || !source) {
- LOG(L_ERR, "unixsock_read_lineset: Invalid parameter value\n");
- return -1;
- }
-
- if (!lineset->s || !lineset->len) {
- LOG(L_ERR, "unixsock_read_lineset: Buffer too small\n");
- return -1;
- }
-
- if (source->len < 2) {
- LOG(L_ERR, "unixsock_read_lineset: Not enough input "
- "data (malformed message ?)\n");
- return -1;
- }
-
- state = ST_BEGIN;
- len = 0;
- for(i = 0; i < source->len; i++) {
- if (source->s[i] == '\r') {
- /* Filter out CR */
- continue;
- }
-
- switch(state) {
- case ST_BEGIN:
- if (source->s[i] == '.') {
- state = ST_CRLF;
- } else if (source->s[i] == '\n') {
- if (len + 2 > lineset->len) goto buf_err;
- lineset->s[len++] = '\r';
- lineset->s[len++] = '\n';
- state = ST_NEWLINE;
- } else {
- if (len + 1 > lineset->len) goto buf_err;
- lineset->s[len++] = source->s[i];
- }
- break;
-
- case ST_CRLF:
- if (source->s[i] == '\n') {
- lineset->len = len;
- source->s += i + 1;
- source->len -= i + 1;
- return 0;
- } else {
- if (len + 2 > lineset->len) goto buf_err;
- lineset->s[len++] = '.';
- lineset->s[len++] = source->s[i];
- state = ST_DATA;
- }
- break;
-
- case ST_DATA:
- if (source->s[i] == '\n') {
- if (len + 2 > lineset->len) goto buf_err;
- lineset->s[len++] = '\r';
- lineset->s[len++] = '\n';
- state = ST_NEWLINE;
- } else {
- if (len + 1 > lineset->len) goto buf_err;
- lineset->s[len++] = source->s[i];
- }
- break;
-
- case ST_NEWLINE:
- if (source->s[i] == '.') {
- state = ST_CRLF;
- } else {
- if (len + 1 > lineset->len) goto buf_err;
- lineset->s[len++] = source->s[i];
- state = ST_DATA;
- }
- break;
- }
- }
-
- LOG(L_ERR, "unixsock_read_body: Could not find the end of the body\n");
- return -1;
-
- buf_err:
- LOG(L_ERR, "unixsock_read_lineset: Buffer too small\n");
- return -1;
-}
-
-
-/*
- * Reset the reply buffer -- start to write
- * at the beginning
- */
-void unixsock_reply_reset(void)
-{
- reply_pos.s = reply_buf;
- reply_pos.len = UNIXSOCK_BUF_SIZE;
-}
-
-
-/*
- * Add ASCIIZ to the reply buffer
- */
-int unixsock_reply_asciiz(char* str)
-{
- int len;
-
- if (!str) {
- LOG(L_ERR, "unixsock_reply_asciiz: Invalid parameter value\n");
- return -1;
- }
-
- len = strlen(str);
-
- if (reply_pos.len < len) {
- LOG(L_ERR, "unixsock_reply_asciiz: Buffer too small\n");
- return -1;
- }
-
- memcpy(reply_pos.s, str, len);
- reply_pos.s += len;
- reply_pos.len -= len;
- return 0;
-}
-
-
-/*
- * Add a string represented by str structure
- * to the reply buffer
- */
-int unixsock_reply_str(str* s)
-{
- if (!s) {
- LOG(L_ERR, "unixsock_reply_str: Invalid parameter value\n");
- return -1;
- }
-
- if (reply_pos.len < s->len) {
- LOG(L_ERR, "unixsock_reply_str: Buffer too small\n");
- return -1;
- }
-
- memcpy(reply_pos.s, s->s, s->len);
- reply_pos.s += s->len;
- reply_pos.len -= s->len;
- return 0;
-}
-
-
-/*
- * Printf-like reply function
- */
-int unixsock_reply_printf(char* fmt, ...)
-{
- va_list ap;
- int ret;
-
- if (!fmt) {
- LOG(L_ERR, "unixsock_reply_printf: Invalid parameter value\n");
- return -1;
- }
-
- va_start(ap, fmt);
- ret = vsnprintf(reply_pos.s, reply_pos.len, fmt, ap);
- if ((ret < 0) || (ret >= reply_pos.len)) {
- LOG(L_ERR, "unixsock_reply_printf: Buffer too small\n");
- va_end(ap);
- return -1;
- }
-
- va_end(ap);
- reply_pos.s += ret;
- reply_pos.len -= ret;
- return 0;
-}
-
-
-/*
- * Return the address of the sender
- */
-struct sockaddr_un* unixsock_sender_addr(void)
-{
- return &reply_addr;
-}
Deleted: ser/trunk/unixsock_server.h
===================================================================
--- ser/trunk/unixsock_server.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/unixsock_server.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,143 +0,0 @@
-/*
- * $Id: unixsock_server.h,v 1.8 2004/09/12 17:26:59 andrei Exp $
- *
- * UNIX Domain Socket Server
- *
- * Copyright (C) 2001-2004 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _UNIXSOCK_SERVER_H
-#define _UNIXSOCK_SERVER_H
-
-
-#include <sys/types.h>
-#include <sys/un.h>
-#include <unistd.h>
-#include "str.h"
-
-
-typedef int (unixsock_f)(str* msg);
-
-
-struct unixsock_cmd {
- str name; /* The name of the function */
- unixsock_f* f; /* Function to be called */
- struct unixsock_cmd* next; /* Next element in the linked list */
-};
-
-
-/*
- * Initialize Unix domain socket server
- */
-int init_unixsock_socket(void);
-
-
-/*
- * Initialize Unix domain socket server
- */
-int init_unixsock_children(void);
-
-
-/*
- * Clean up
- */
-void close_unixsock_server(void);
-
-
-/*
- * Register a new command
- */
-int unixsock_register_cmd(char* name, unixsock_f* f);
-
-
-/*
- * Reset the reply buffer -- start to write
- * at the beginning
- */
-void unixsock_reply_reset(void);
-
-
-/*
- * Add ASCIIZ to the reply buffer
- */
-int unixsock_reply_asciiz(char* str);
-
-
-/*
- * Add a string represented by str structure
- * to the reply buffer
- */
-int unixsock_reply_str(str* s);
-
-
-/*
- * Printf-like reply function
- */
-int unixsock_reply_printf(char* fmt, ...);
-
-
-/*
- * Send the reply
- */
-ssize_t unixsock_reply_send(void);
-
-
-/*
- * Send the reply to the given destination
- */
-ssize_t unixsock_reply_sendto(struct sockaddr_un* to);
-
-
-/*
- * Read a line, the result will be stored in line
- * parameter, the data is not copied, it's just
- * a pointer to an existing buffer
- */
-int unixsock_read_line(str* line, str* source);
-
-
-/*
- * Read body until the closing .CRLF, no CRLF recovery
- * is done so no additional buffer is necessary, body will
- * point to an existing buffer
- */
-int unixsock_read_body(str* body, str* source);
-
-
-/*
- * Read a set of lines, the functions performs CRLF recovery,
- * therefore lineset must point to an additional buffer
- * to which the data will be copied. Initial lineset->len contains
- * the size of the buffer
- */
-int unixsock_read_lineset(str* lineset, str* source);
-
-
-/*
- * Return the address of the sender
- */
-struct sockaddr_un* unixsock_sender_addr(void);
-
-
-#endif /* _UNIXSOCK_SERVER_H */
Deleted: ser/trunk/usr_avp.c
===================================================================
--- ser/trunk/usr_avp.c 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/usr_avp.c 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,637 +0,0 @@
-/*
- * $Id: usr_avp.c,v 1.15.2.1 2005/06/01 09:30:22 bogdan Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * History:
- * ---------
- * 2004-07-21 created (bogdan)
- * 2004-10-09 interface more flexible - more function available (bogdan)
- * 2004-11-07 AVP string values are kept 0 terminated (bogdan)
- * 2004-11-14 global aliases support added
- */
-
-
-#include <assert.h>
-#include <ctype.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "sr_module.h"
-#include "dprint.h"
-#include "str.h"
-#include "ut.h"
-#include "mem/shm_mem.h"
-#include "mem/mem.h"
-#include "usr_avp.h"
-
-
-/* usr_avp data bodies */
-struct str_int_data {
- str name;
- int val;
-};
-
-struct str_str_data {
- str name;
- str val;
-};
-
-/* avp aliases structs*/
-struct avp_spec {
- int type;
- int_str name;
-};
-
-struct avp_galias {
- str alias;
- struct avp_spec avp;
- struct avp_galias *next;
-};
-
-static struct avp_galias *galiases = 0;
-static struct usr_avp *global_avps = 0;
-static struct usr_avp **crt_avps = &global_avps;
-
-
-
-inline static unsigned short compute_ID( str *name )
-{
- char *p;
- unsigned short id;
-
- id=0;
- for( p=name->s+name->len-1 ; p>=name->s ; p-- )
- id ^= *p;
- return id;
-}
-
-
-int add_avp(unsigned short flags, int_str name, int_str val)
-{
- struct usr_avp *avp;
- str *s;
- struct str_int_data *sid;
- struct str_str_data *ssd;
- int len;
-
- assert( crt_avps!=0 );
-
- if ( name.s==0 ) {
- LOG(L_ERR,"ERROR:avp:add_avp: 0 ID or NULL NAME AVP!");
- goto error;
- }
-
- /* compute the required mem size */
- len = sizeof(struct usr_avp);
- if (flags&AVP_NAME_STR) {
- if ( name.s->s==0 || name.s->len==0) {
- LOG(L_ERR,"ERROR:avp:add_avp: EMPTY NAME AVP!");
- goto error;
- }
- if (flags&AVP_VAL_STR)
- len += sizeof(struct str_str_data)-sizeof(void*) + name.s->len
- + (val.s->len+1);
- else
- len += sizeof(struct str_int_data)-sizeof(void*) + name.s->len;
- } else if (flags&AVP_VAL_STR)
- len += sizeof(str)-sizeof(void*) + (val.s->len+1);
-
- avp = (struct usr_avp*)shm_malloc( len );
- if (avp==0) {
- LOG(L_ERR,"ERROR:avp:add_avp: no more shm mem\n");
- goto error;
- }
-
- avp->flags = flags;
- avp->id = (flags&AVP_NAME_STR)? compute_ID(name.s) : name.n ;
-
- avp->next = *crt_avps;
- *crt_avps = avp;
-
- switch ( flags&(AVP_NAME_STR|AVP_VAL_STR) )
- {
- case 0:
- /* avp type ID, int value */
- avp->data = (void*)(long)val.n;
- break;
- case AVP_NAME_STR:
- /* avp type str, int value */
- sid = (struct str_int_data*)&(avp->data);
- sid->val = val.n;
- sid->name.len =name.s->len;
- sid->name.s = (char*)sid + sizeof(struct str_int_data);
- memcpy( sid->name.s , name.s->s, name.s->len);
- break;
- case AVP_VAL_STR:
- /* avp type ID, str value */
- s = (str*)&(avp->data);
- s->len = val.s->len;
- s->s = (char*)s + sizeof(str);
- memcpy( s->s, val.s->s , s->len);
- s->s[s->len] = 0;
- break;
- case AVP_NAME_STR|AVP_VAL_STR:
- /* avp type str, str value */
- ssd = (struct str_str_data*)&(avp->data);
- ssd->name.len = name.s->len;
- ssd->name.s = (char*)ssd + sizeof(struct str_str_data);
- memcpy( ssd->name.s , name.s->s, name.s->len);
- ssd->val.len = val.s->len;
- ssd->val.s = ssd->name.s + ssd->name.len;
- memcpy( ssd->val.s , val.s->s, val.s->len);
- ssd->val.s[ssd->val.len] = 0;
- break;
- }
-
- return 0;
-error:
- return -1;
-}
-
-
-/* get value functions */
-
-inline str* get_avp_name(struct usr_avp *avp)
-{
- switch ( avp->flags&(AVP_NAME_STR|AVP_VAL_STR) )
- {
- case 0:
- /* avp type ID, int value */
- case AVP_VAL_STR:
- /* avp type ID, str value */
- return 0;
- case AVP_NAME_STR:
- /* avp type str, int value */
- return &((struct str_int_data*)&avp->data)->name;
- case AVP_NAME_STR|AVP_VAL_STR:
- /* avp type str, str value */
- return &((struct str_str_data*)&avp->data)->name;
- }
-
- LOG(L_ERR,"BUG:avp:get_avp_name: unknown avp type (name&val) %d\n",
- avp->flags&(AVP_NAME_STR|AVP_VAL_STR));
- return 0;
-}
-
-
-inline void get_avp_val(struct usr_avp *avp, int_str *val)
-{
- if (avp==0 || val==0)
- return;
-
- switch ( avp->flags&(AVP_NAME_STR|AVP_VAL_STR) ) {
- case 0:
- /* avp type ID, int value */
- val->n = (long)(avp->data);
- break;
- case AVP_NAME_STR:
- /* avp type str, int value */
- val->n = ((struct str_int_data*)(&avp->data))->val;
- break;
- case AVP_VAL_STR:
- /* avp type ID, str value */
- val->s = (str*)(&avp->data);
- break;
- case AVP_NAME_STR|AVP_VAL_STR:
- /* avp type str, str value */
- val->s = &(((struct str_str_data*)(&avp->data))->val);
- break;
- }
-}
-
-
-struct usr_avp** get_avp_list( )
-{
- assert( crt_avps!=0 );
- return crt_avps;
-}
-
-
-
-
-/* search functions */
-
-inline static struct usr_avp *internal_search_ID_avp( struct usr_avp *avp,
- unsigned short id)
-{
- for( ; avp ; avp=avp->next ) {
- if ( id==avp->id && (avp->flags&AVP_NAME_STR)==0 ) {
- return avp;
- }
- }
- return 0;
-}
-
-
-
-inline static struct usr_avp *internal_search_name_avp( struct usr_avp *avp,
- unsigned short id, str *name)
-{
- str * avp_name;
-
- for( ; avp ; avp=avp->next )
- if ( id==avp->id && avp->flags&AVP_NAME_STR &&
- (avp_name=get_avp_name(avp))!=0 && avp_name->len==name->len
- && !strncasecmp( avp_name->s, name->s, name->len) ) {
- return avp;
- }
- return 0;
-}
-
-
-
-struct usr_avp *search_first_avp( unsigned short name_type,
- int_str name, int_str *val)
-{
- struct usr_avp *avp;
-
- assert( crt_avps!=0 );
-
- if (*crt_avps==0)
- return 0;
-
- if ( name.s==0) {
- LOG(L_ERR,"ERROR:avp:search_first_avp: 0 ID or NULL NAME AVP!");
- return 0;
- }
-
- /* search for the AVP by ID (&name) */
- if (name_type&AVP_NAME_STR) {
- if ( name.s->s==0 || name.s->len==0) {
- LOG(L_ERR,"ERROR:avp:search_first_avp: EMPTY NAME AVP!");
- return 0;
- }
- avp = internal_search_name_avp(*crt_avps,compute_ID(name.s),name.s);
- } else {
- avp = internal_search_ID_avp( *crt_avps, name.n );
- }
-
- /* get the value - if required */
- if (avp && val)
- get_avp_val(avp, val);
-
- return avp;
-}
-
-
-
-struct usr_avp *search_next_avp( struct usr_avp *avp, int_str *val )
-{
- if (avp==0 || avp->next==0)
- return 0;
-
- if (avp->flags&AVP_NAME_STR)
- avp = internal_search_name_avp( avp->next, avp->id, get_avp_name(avp));
- else
- avp = internal_search_ID_avp( avp->next, avp->id );
-
- if (avp && val)
- get_avp_val(avp, val);
-
- return avp;
-}
-
-
-
-
-/********* free functions ********/
-
-void destroy_avp( struct usr_avp *avp_del)
-{
- struct usr_avp *avp;
- struct usr_avp *avp_prev;
-
- for( avp_prev=0,avp=*crt_avps ; avp ; avp_prev=avp,avp=avp->next ) {
- if (avp==avp_del) {
- if (avp_prev)
- avp_prev->next=avp->next;
- else
- *crt_avps = avp->next;
- shm_free(avp);
- return;
- }
- }
-}
-
-
-void destroy_avp_list_unsafe( struct usr_avp **list )
-{
- struct usr_avp *avp, *foo;
-
- avp = *list;
- while( avp ) {
- foo = avp;
- avp = avp->next;
- shm_free_unsafe( foo );
- }
- *list = 0;
-}
-
-
-inline void destroy_avp_list( struct usr_avp **list )
-{
- struct usr_avp *avp, *foo;
-
- DBG("DEBUG:destroy_avp_list: destroying list %p\n", *list);
- avp = *list;
- while( avp ) {
- foo = avp;
- avp = avp->next;
- shm_free( foo );
- }
- *list = 0;
-}
-
-
-void reset_avps( )
-{
- assert( crt_avps!=0 );
-
- if ( crt_avps!=&global_avps) {
- crt_avps = &global_avps;
- }
- destroy_avp_list( crt_avps );
-}
-
-
-struct usr_avp** set_avp_list( struct usr_avp **list )
-{
- struct usr_avp **foo;
-
- assert( crt_avps!=0 );
-
- foo = crt_avps;
- crt_avps = list;
- return foo;
-}
-
-
-
-
-/********* global aliases functions ********/
-
-static inline int check_avp_galias(str *alias, int type, int_str avp_name)
-{
- struct avp_galias *ga;
-
- type &= AVP_NAME_STR;
-
- for( ga=galiases ; ga ; ga=ga->next ) {
- /* check for duplicated alias names */
- if ( alias->len==ga->alias.len &&
- (strncasecmp( alias->s, ga->alias.s, alias->len)==0) )
- return -1;
- /*check for duplicated avp names */
- if (type==ga->avp.type) {
- if (type&AVP_NAME_STR){
- if (avp_name.s->len==ga->avp.name.s->len &&
- (strncasecmp(avp_name.s->s, ga->avp.name.s->s,
- avp_name.s->len)==0) )
- return -1;
- } else {
- if (avp_name.n==ga->avp.name.n)
- return -1;
- }
- }
- }
- return 0;
-}
-
-
-int add_avp_galias(str *alias, int type, int_str avp_name)
-{
- struct avp_galias *ga;
-
- if ((type&AVP_NAME_STR && (!avp_name.s || !avp_name.s->s ||
- !avp_name.s->len)) ||!alias || !alias->s ||
- !alias->len ){
- LOG(L_ERR, "ERROR:add_avp_galias: null params received\n");
- goto error;
- }
-
- if (check_avp_galias(alias,type,avp_name)!=0) {
- LOG(L_ERR, "ERROR:add_avp_galias: duplicate alias/avp entry\n");
- goto error;
- }
-
- ga = (struct avp_galias*)pkg_malloc( sizeof(struct avp_galias) );
- if (ga==0) {
- LOG(L_ERR, "ERROR:add_avp_galias: no more pkg memory\n");
- goto error;
- }
-
- ga->alias.s = (char*)pkg_malloc( alias->len+1 );
- if (ga->alias.s==0) {
- LOG(L_ERR, "ERROR:add_avp_galias: no more pkg memory\n");
- goto error1;
- }
- memcpy( ga->alias.s, alias->s, alias->len);
- ga->alias.len = alias->len;
-
- ga->avp.type = type&AVP_NAME_STR;
-
- if (type&AVP_NAME_STR) {
- ga->avp.name.s = (str*)pkg_malloc( sizeof(str)+avp_name.s->len+1 );
- if (ga->avp.name.s==0) {
- LOG(L_ERR, "ERROR:add_avp_galias: no more pkg memory\n");
- goto error2;
- }
- ga->avp.name.s->s = ((char*)ga->avp.name.s)+sizeof(str);
- ga->avp.name.s->len = avp_name.s->len;
- memcpy( ga->avp.name.s->s, avp_name.s->s, avp_name.s->len);
- ga->avp.name.s->s[avp_name.s->len] = 0;
- DBG("DEBUG:add_avp_galias: registering <%s> for avp name <%s>\n",
- ga->alias.s, ga->avp.name.s->s);
- } else {
- ga->avp.name.n = avp_name.n;
- DBG("DEBUG:add_avp_galias: registering <%s> for avp id <%d>\n",
- ga->alias.s, ga->avp.name.n);
- }
-
- ga->next = galiases;
- galiases = ga;
-
- return 0;
-error2:
- pkg_free(ga->alias.s);
-error1:
- pkg_free(ga);
-error:
- return -1;
-}
-
-
-int lookup_avp_galias(str *alias, int *type, int_str *avp_name)
-{
- struct avp_galias *ga;
-
- for( ga=galiases ; ga ; ga=ga->next )
- if (alias->len==ga->alias.len &&
- (strncasecmp( alias->s, ga->alias.s, alias->len)==0) ) {
- *type = ga->avp.type;
- *avp_name = ga->avp.name;
- return 0;
- }
-
- return -1;
-}
-
-
-/* parsing functions */
-
-int parse_avp_name( str *name, int *type, int_str *avp_name)
-{
- unsigned int id;
- char c;
-
- if (name==0 || name->s==0 || name->len==0)
- goto error;
-
- if (name->len>=2 && name->s[1]==':') {
- c = name->s[0];
- name->s += 2;
- name->len -= 2;
- if (name->len==0)
- goto error;
- switch (c) {
- case 's': case 'S':
- *type = AVP_NAME_STR;
- avp_name->s = name;
- break;
- case 'i': case 'I':
- *type = 0;
- if (str2int( name, &id)!=0) {
- LOG(L_ERR, "ERROR:parse_avp_name: invalid ID "
- "<%.*s> - not a number\n", name->len, name->s);
- goto error;
- }
- avp_name->n = (int)id;
- break;
- default:
- LOG(L_ERR, "ERROR:parse_avp_name: unsupported type "
- "[%c]\n", c);
- goto error;
- }
- } else {
- /*default is string name*/
- *type = AVP_NAME_STR;
- avp_name->s = name;
- }
-
- return 0;
-error:
- return -1;
-}
-
-
-int parse_avp_spec( str *name, int *type, int_str *avp_name)
-{
- str alias;
-
- if (name==0 || name->s==0 || name->len==0)
- return -1;
-
- if (name->s[0]==GALIAS_CHAR_MARKER) {
- /* it's an avp alias */
- if (name->len==1) {
- LOG(L_ERR,"ERROR:parse_avp_spec: empty alias\n");
- return -1;
- }
- alias.s = name->s+1;
- alias.len = name->len-1;
- return lookup_avp_galias( &alias, type, avp_name);
- } else {
- return parse_avp_name( name, type, avp_name);
- }
-}
-
-
-int add_avp_galias_str(char *alias_definition)
-{
- int_str avp_name;
- char *s;
- str name;
- str alias;
- int type;
-
- s = alias_definition;
- while(*s && isspace((int)*s))
- s++;
-
- while (*s) {
- /* parse alias name */
- alias.s = s;
- while(*s && *s!=';' && !isspace((int)*s) && *s!='=')
- s++;
- if (alias.s==s || *s==0 || *s==';')
- goto parse_error;
- alias.len = s-alias.s;
- while(*s && isspace((int)*s))
- s++;
- /* equal sign */
- if (*s!='=')
- goto parse_error;
- s++;
- while(*s && isspace((int)*s))
- s++;
- /* avp name */
- name.s = s;
- while(*s && *s!=';' && !isspace((int)*s))
- s++;
- if (name.s==s)
- goto parse_error;
- name.len = s-name.s;
- while(*s && isspace((int)*s))
- s++;
- /* check end */
- if (*s!=0 && *s!=';')
- goto parse_error;
- if (*s==';') {
- for( s++ ; *s && isspace((int)*s) ; s++ );
- if (*s==0)
- goto parse_error;
- }
-
- if (parse_avp_name( &name, &type, &avp_name)!=0) {
- LOG(L_ERR, "ERROR:add_avp_galias_str: <%.*s> not a valid AVP "
- "name\n", name.len, name.s);
- goto error;
- }
-
- if (add_avp_galias( &alias, type, avp_name)!=0) {
- LOG(L_ERR, "ERROR:add_avp_galias_str: add global alias failed\n");
- goto error;
- }
- } /*end while*/
-
- return 0;
-parse_error:
- LOG(L_ERR, "ERROR:add_avp_galias_str: parse error in <%s> around "
- "pos %ld\n", alias_definition, (long)(s-alias_definition));
-error:
- return -1;
-}
-
-
Deleted: ser/trunk/usr_avp.h
===================================================================
--- ser/trunk/usr_avp.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/usr_avp.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,86 +0,0 @@
-/*
- * $Id: usr_avp.h,v 1.7 2004/11/17 00:37:16 andrei Exp $
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * History:
- * ---------
- * 2004-07-21 created (bogdan)
- * 2004-11-14 global aliases support added
- */
-
-#ifndef _SER_URS_AVP_H_
-#define _SER_URS_AVP_H_
-
-
-#include "str.h"
-
-typedef union {
- int n;
- str *s;
-} int_str;
-
-
-struct usr_avp {
- unsigned short id;
- unsigned short flags;
- struct usr_avp *next;
- void *data;
-};
-
-
-#define AVP_NAME_STR (1<<0)
-#define AVP_VAL_STR (1<<1)
-
-#define GALIAS_CHAR_MARKER '$'
-
-/* add functions */
-int add_avp( unsigned short flags, int_str name, int_str val);
-
-/* search functions */
-struct usr_avp *search_first_avp( unsigned short name_type, int_str name,
- int_str *val );
-struct usr_avp *search_next_avp( struct usr_avp *avp, int_str *val );
-
-/* free functions */
-void reset_avps( );
-void destroy_avp( struct usr_avp *avp);
-void destroy_avp_list( struct usr_avp **list );
-void destroy_avp_list_unsafe( struct usr_avp **list );
-
-/* get func */
-void get_avp_val(struct usr_avp *avp, int_str *val );
-str* get_avp_name(struct usr_avp *avp);
-struct usr_avp** set_avp_list( struct usr_avp **list );
-struct usr_avp** get_avp_list( );
-
-/* global alias functions (manipulation and parsing)*/
-int add_avp_galias_str(char *alias_definition);
-int lookup_avp_galias(str *alias, int *type, int_str *avp_name);
-int add_avp_galias(str *alias, int type, int_str avp_name);
-int parse_avp_name( str *name, int *type, int_str *avp_name);
-int parse_avp_spec( str *name, int *type, int_str *avp_name);
-
-#endif
-
Deleted: ser/trunk/ut.h
===================================================================
--- ser/trunk/ut.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/ut.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,401 +0,0 @@
-/*
- *$Id: ut.h,v 1.32.2.2 2005/11/29 19:39:45 andrei Exp $
- *
- * - various general purpose functions
- *
- * Copyright (C) 2001-2003 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * History
- * ------
- * 2003-01-18 un_escape function introduced for convenience of code needing
- * the complex&slow feature of unescaping
- * 2003-01-28 scratchpad removed (jiri)
- * 2003-01-29 pathmax added (jiri)
- * 2003-02-13 strlower added (janakj)
- * 2003-02-28 scratchpad compatibility abandoned (jiri)
- * 2003-03-30 str2int and str2float added (janakj)
- * 2003-04-26 ZSW (jiri)
- * 2004-03-08 updated int2str (64 bits, INT2STR_MAX_LEN used) (andrei)
- */
-
-
-#ifndef ut_h
-#define ut_h
-
-#include "comp_defs.h"
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <limits.h>
-#include <unistd.h>
-#include <ctype.h>
-
-#include "config.h"
-#include "dprint.h"
-#include "str.h"
-
-
-struct sip_msg;
-
-/* zero-string wrapper */
-#define ZSW(_c) ((_c)?(_c):"")
-
-/* returns string beginning and length without insignificant chars */
-#define trim_len( _len, _begin, _mystr ) \
- do{ static char _c; \
- (_len)=(_mystr).len; \
- while ((_len) && ((_c=(_mystr).s[(_len)-1])==0 || _c=='\r' || \
- _c=='\n' || _c==' ' || _c=='\t' )) \
- (_len)--; \
- (_begin)=(_mystr).s; \
- while ((_len) && ((_c=*(_begin))==' ' || _c=='\t')) { \
- (_len)--;\
- (_begin)++; \
- } \
- }while(0)
-
-#define trim_r( _mystr ) \
- do{ static char _c; \
- while( ((_mystr).len) && ( ((_c=(_mystr).s[(_mystr).len-1]))==0 ||\
- _c=='\r' || _c=='\n' ) \
- ) \
- (_mystr).len--; \
- }while(0)
-
-
-#define translate_pointer( _new_buf , _org_buf , _p) \
- ( (_p)?(_new_buf + (_p-_org_buf)):(0) )
-
-#define via_len(_via) \
- ((_via)->bsize-((_via)->name.s-\
- ((_via)->hdr.s+(_via)->hdr.len)))
-
-
-/* char to hex conversion table */
-static char fourbits2char[16] = { '0', '1', '2', '3', '4', '5',
- '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
-
-
-/* converts a str to an u. short, returns the u. short and sets *err on
- * error and if err!=null
- */
-static inline unsigned short str2s(char* s, unsigned int len,
- int *err)
-{
- unsigned short ret;
- int i;
- unsigned char *limit;
- unsigned char *init;
- unsigned char* str;
-
- /*init*/
- str=(unsigned char*)s;
- ret=i=0;
- limit=str+len;
- init=str;
-
- for(;str<limit ;str++){
- if ( (*str <= '9' ) && (*str >= '0') ){
- ret=ret*10+*str-'0';
- i++;
- if (i>5) goto error_digits;
- }else{
- //error unknown char
- goto error_char;
- }
- }
- if (err) *err=0;
- return ret;
-
-error_digits:
- DBG("str2s: ERROR: too many letters in [%.*s]\n", (int)len, init);
- if (err) *err=1;
- return 0;
-error_char:
- DBG("str2s: ERROR: unexpected char %c in %.*s\n", *str, (int)len, init);
- if (err) *err=1;
- return 0;
-}
-
-
-
-static inline int btostr( char *p, unsigned char val)
-{
- unsigned int a,b,i =0;
-
- if ( (a=val/100)!=0 )
- *(p+(i++)) = a+'0'; /*first digit*/
- if ( (b=val%100/10)!=0 || a)
- *(p+(i++)) = b+'0'; /*second digit*/
- *(p+(i++)) = '0'+val%10; /*third digit*/
-
- return i;
-}
-
-
-#define INT2STR_MAX_LEN (19+1+1) /* 2^64~= 16*10^18 => 19+1 digits + \0 */
-
-/* returns a pointer to a static buffer containing l in asciiz & sets len */
-static inline char* int2str(unsigned long l, int* len)
-{
- static char r[INT2STR_MAX_LEN];
- int i;
-
- i=INT2STR_MAX_LEN-2;
- r[INT2STR_MAX_LEN-1]=0; /* null terminate */
- do{
- r[i]=l%10+'0';
- i--;
- l/=10;
- }while(l && (i>=0));
- if (l && (i<0)){
- LOG(L_CRIT, "BUG: int2str: overflow\n");
- }
- if (len) *len=(INT2STR_MAX_LEN-2)-i;
- return &r[i+1];
-}
-
-
-
-/* faster memchr version */
-static inline char* q_memchr(char* p, int c, unsigned int size)
-{
- char* end;
-
- end=p+size;
- for(;p<end;p++){
- if (*p==(unsigned char)c) return p;
- }
- return 0;
-}
-
-
-/* returns -1 on error, 1! on success (consistent with int2reverse_hex) */
-inline static int reverse_hex2int( char *c, int len, unsigned int* res)
-{
- char *pc;
- char mychar;
-
- *res=0;
- for (pc=c+len-1; len>0; pc--, len--) {
- *res <<= 4 ;
- mychar=*pc;
- if ( mychar >='0' && mychar <='9') *res+=mychar -'0';
- else if (mychar >='a' && mychar <='f') *res+=mychar -'a'+10;
- else if (mychar >='A' && mychar <='F') *res+=mychar -'A'+10;
- else return -1;
- }
- return 1;
-}
-
-inline static int int2reverse_hex( char **c, int *size, unsigned int nr )
-{
- unsigned short digit;
-
- if (*size && nr==0) {
- **c = '0';
- (*c)++;
- (*size)--;
- return 1;
- }
-
- while (*size && nr ) {
- digit = nr & 0xf ;
- **c= digit >= 10 ? digit + 'a' - 10 : digit + '0';
- nr >>= 4;
- (*c)++;
- (*size)--;
- }
- return nr ? -1 /* number not processed; too little space */ : 1;
-}
-
-/* double output length assumed ; does NOT zero-terminate */
-inline static int string2hex(
- /* input */ unsigned char *str, int len,
- /* output */ char *hex )
-{
- int orig_len;
-
- if (len==0) {
- *hex='0';
- return 1;
- }
-
- orig_len=len;
- while ( len ) {
-
- *hex=fourbits2char[(*str) >> 4];
- hex++;
- *hex=fourbits2char[(*str) & 0xf];
- hex++;
- len--;
- str++;
-
- }
- return orig_len-len;
-}
-
-/* portable sleep in microseconds (no interrupt handling now) */
-
-inline static void sleep_us( unsigned int nusecs )
-{
- struct timeval tval;
- tval.tv_sec =nusecs/1000000;
- tval.tv_usec=nusecs%1000000;
- select(0, NULL, NULL, NULL, &tval );
-}
-
-
-/* portable determination of max_path */
-inline static int pathmax()
-{
-#ifdef PATH_MAX
- static int pathmax=PATH_MAX;
-#else
- static int pathmax=0;
-#endif
- if (pathmax==0) { /* init */
- pathmax=pathconf("/", _PC_PATH_MAX);
- pathmax=(pathmax<=0)?PATH_MAX_GUESS:pathmax+1;
- }
- return pathmax;
-}
-
-inline static int hex2int(char hex_digit)
-{
- if (hex_digit>='0' && hex_digit<='9')
- return hex_digit-'0';
- if (hex_digit>='a' && hex_digit<='f')
- return hex_digit-'a'+10;
- if (hex_digit>='A' && hex_digit<='F')
- return hex_digit-'A'+10;
- /* no valid hex digit ... */
- LOG(L_ERR, "ERROR: hex2int: '%c' is no hex char\n", hex_digit );
- return -1;
-}
-
-/* Un-escape URI user -- it takes a pointer to original user
- str, as well as the new, unescaped one, which MUST have
- an allocated buffer linked to the 'str' structure ;
- (the buffer can be allocated with the same length as
- the original string -- the output string is always
- shorter (if escaped characters occur) or same-long
- as the original one).
-
- only printable characters are permitted
-
- <0 is returned on an unescaping error, length of the
- unescaped string otherwise
-*/
-inline static int un_escape(str *user, str *new_user )
-{
- int i, j, value;
- int hi, lo;
-
- if( new_user==0 || new_user->s==0) {
- LOG(L_CRIT, "BUG: un_escape: called with invalid param\n");
- return -1;
- }
-
- new_user->len = 0;
- j = 0;
-
- for (i = 0; i < user->len; i++) {
- if (user->s[i] == '%') {
- if (i + 2 >= user->len) {
- LOG(L_ERR, "ERROR: un_escape: escape sequence too short in"
- " '%.*s' @ %d\n",
- user->len, user->s, i );
- goto error;
- }
- hi=hex2int(user->s[i + 1]);
- if (hi<0) {
- LOG(L_ERR, "ERROR: un_escape: non-hex high digit in an escape sequence in"
- " '%.*s' @ %d\n",
- user->len, user->s, i+1 );
- goto error;
- }
- lo=hex2int(user->s[i + 2]);
- if (lo<0) {
- LOG(L_ERR, "ERROR: non-hex low digit in an escape sequence in "
- "'%.*s' @ %d\n",
- user->len, user->s, i+2 );
- goto error;
- }
- value=(hi<<4)+lo;
- if (value < 32 || value > 126) {
- LOG(L_ERR, "ERROR: non-ASCII escaped character in '%.*s' @ %d\n",
- user->len, user->s, i );
- goto error;
- }
- new_user->s[j] = value;
- i+=2; /* consume the two hex digits, for cycle will move to the next char */
- } else {
- new_user->s[j] = user->s[i];
- }
- j++; /* good -- we translated another character */
- }
- new_user->len = j;
- return j;
-
-error:
- new_user->len = j;
- return -1;
-}
-
-
-/*
- * Convert a string to lower case
- */
-static inline void strlower(str* _s)
-{
- int i;
-
- for(i = 0; i < _s->len; i++) {
- _s->s[i] = tolower(_s->s[i]);
- }
-}
-
-
-/*
- * Convert a str into integer
- */
-static inline int str2int(str* _s, unsigned int* _r)
-{
- int i;
-
- *_r = 0;
- for(i = 0; i < _s->len; i++) {
- if ((_s->s[i] >= '0') && (_s->s[i] <= '9')) {
- *_r *= 10;
- *_r += _s->s[i] - '0';
- } else {
- return -1;
- }
- }
-
- return 0;
-}
-
-#endif
Deleted: ser/trunk/version.h
===================================================================
--- ser/trunk/version.h 2006-02-26 17:34:34 UTC (rev 1350)
+++ ser/trunk/version.h 2006-02-26 17:43:32 UTC (rev 1351)
@@ -1,200 +0,0 @@
-/*
- * $Id: version.h,v 1.2 2004/09/28 18:10:08 andrei Exp $
- *
- * version and compile flags macros
- *
- *
- * Copyright (C) 2004 FhG Fokus
- *
- * This file is part of ser, a free SIP server.
- *
- * ser is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version
- *
- * For a license to use the ser software under conditions
- * other than those described here, or to purchase support for this
- * software, please contact iptel.org by e-mail at the following addresses:
- * info at iptel.org
- *
- * ser is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef version_h
-#define version_h
-
-#define SER_FULL_VERSION NAME " " VERSION " (" ARCH "/" OS ")"
-
-
-#ifdef STATS
-#define STATS_STR "STATS: On"
-#else
-#define STATS_STR "STATS: Off"
-#endif
-
-#ifdef USE_IPV6
-#define USE_IPV6_STR ", USE_IPV6"
-#else
-#define USE_IPV6_STR ""
-#endif
-
-#ifdef USE_TCP
-#define USE_TCP_STR ", USE_TCP"
-#else
-#define USE_TCP_STR ""
-#endif
-
-#ifdef USE_TLS
-#define USE_TLS_STR ", USE_TLS"
-#else
-#define USE_TLS_STR ""
-#endif
-
-
-#ifdef DISABLE_NAGLE
-#define DISABLE_NAGLE_STR ", DISABLE_NAGLE"
-#else
-#define DISABLE_NAGLE_STR ""
-#endif
-
-#ifdef USE_MCAST
-#define USE_MCAST_STR ", USE_MCAST"
-#else
-#define USE_MCAST_STR ""
-#endif
-
-
-#ifdef NO_DEBUG
-#define NO_DEBUG_STR ", NO_DEBUG"
-#else
-#define NO_DEBUG_STR ""
-#endif
-
-#ifdef NO_LOG
-#define NO_LOG_STR ", NO_LOG"
-#else
-#define NO_LOG_STR ""
-#endif
-
-#ifdef EXTRA_DEBUG
-#define EXTRA_DEBUG_STR ", EXTRA_DEBUG"
-#else
-#define EXTRA_DEBUG_STR ""
-#endif
-
-#ifdef DNS_IP_HACK
-#define DNS_IP_HACK_STR ", DNS_IP_HACK"
-#else
-#define DNS_IP_HACK_STR ""
-#endif
-
-#ifdef SHM_MEM
-#define SHM_MEM_STR ", SHM_MEM"
-#else
-#define SHM_MEM_STR ""
-#endif
-
-#ifdef SHM_MMAP
-#define SHM_MMAP_STR ", SHM_MMAP"
-#else
-#define SHM_MMAP_STR ""
-#endif
-
-#ifdef PKG_MALLOC
-#define PKG_MALLOC_STR ", PKG_MALLOC"
-#else
-#define PKG_MALLOC_STR ""
-#endif
-
-#ifdef VQ_MALLOC
-#define VQ_MALLOC_STR ", VQ_MALLOC"
-#else
-#define VQ_MALLOC_STR ""
-#endif
-
-#ifdef F_MALLOC
-#define F_MALLOC_STR ", F_MALLOC"
-#else
-#define F_MALLOC_STR ""
-#endif
-
-#ifdef USE_SHM_MEM
-#define USE_SHM_MEM_STR ", USE_SHM_MEM"
-#else
-#define USE_SHM_MEM_STR ""
-#endif
-
-#ifdef DBG_QM_MALLOC
-#define DBG_QM_MALLOC_STR ", DBG_QM_MALLOC"
-#else
-#define DBG_QM_MALLOC_STR ""
-#endif
-
-#ifdef DBG_F_MALLOC
-#define DBG_F_MALLOC_STR ", DBG_F_MALLOC"
-#else
-#define DBG_F_MALLOC_STR ""
-#endif
-
-#ifdef DEBUG_DMALLOC
-#define DEBUG_DMALLOC_STR ", DEBUG_DMALLOC"
-#else
-#define DEBUG_DMALLOC_STR ""
-#endif
-
-#ifdef FAST_LOCK
-#ifdef BUSY_WAIT
-#define FAST_LOCK_STR ", FAST_LOCK-BUSY_WAIT"
-#elif defined (ADAPTIVE_WAIT)
-#define FAST_LOCK_STR ", FAST_LOCK-ADAPTIVE_WAIT"
-#else
-#define FAST_LOCK_STR ", FAST_LOCK"
-#endif
-#else
-#define FAST_LOCK_STR ""
-#endif
-
-#ifdef USE_PTHREAD_MUTEX
-#define USE_PTHREAD_MUTEX_STR ", USE_PTHREAD_MUTEX"
-#else
-#define USE_PTHREAD_MUTEX_STR ""
-#endif
-
-#ifdef USE_POSIX_SEM
-#define USE_POSIX_SEM_STR ", USE_POSIX_SEM"
-#else
-#define USE_POSIX_SEM_STR ""
-#endif
-
-#ifdef USE_SYSV_SEM
-#define USE_SYSV_SEM_STR ", USE_SYSV_SEM"
-#else
-#define USE_SYSV_SEM_STR ""
-#endif
-
-
-#ifdef NOSMP
-#define NOSMP_STR "-NOSMP"
-#else
-#define NOSMP_STR ""
-#endif
-
-
-#define SER_COMPILE_FLAGS \
- STATS_STR EXTRA_DEBUG_STR USE_IPV6_STR USE_TCP_STR USE_TLS_STR \
- DISABLE_NAGLE_STR USE_MCAST_STR NO_DEBUG_STR NO_LOG_STR DNS_IP_HACK_STR \
- SHM_MEM_STR SHM_MMAP_STR PKG_MALLOC_STR VQ_MALLOC_STR F_MALLOC_STR \
- USE_SHM_MEM_STR DBG_QM_MALLOC_STR DBG_F_MALLOC_STR DEBUG_DMALLOC_STR \
- FAST_LOCK_STR NOSMP_STR USE_PTHREAD_MUTEX_STR USE_POSIX_SEM_STR \
- USE_SYSV_SEM_STR
-
-
-#endif
More information about the Pkg-voip-commits
mailing list