MT#5301 Imported Upstream version 4.1.0

mr3.2.1
Victor Seva 12 years ago
parent a10b7fe02a
commit b9ee1b0b25

16075
ChangeLog

File diff suppressed because it is too large Load Diff

@ -622,6 +622,7 @@ tar: makefile_vars $(auto_gen_keep)
$(TAR) -C .. \
--exclude=$(notdir $(CURDIR))/test* \
--exclude=$(notdir $(CURDIR))/tmp* \
--exclude=$(notdir $(CURDIR))/debian \
--exclude=$(notdir $(CURDIR))/debian/$(MAIN_NAME) \
--exclude=$(notdir $(CURDIR))/debian/$(MAIN_NAME)-* \
--exclude=$(notdir $(CURDIR))/$(MAIN_NAME)_tls* \
@ -1013,6 +1014,50 @@ clean_modules_cfg clean-modules-cfg:
.PHONY: clean_makefile_vars clean-makefile-vars
rm -f Makefile.vars
# clean everything generated - shortcut on maintainer-clean
.PHONY: pure
pure: maintainer-clean
.PHONY: install_initd_debian install-initd-debian
install_initd_debian install-initd-debian:
sed -e "s#DAEMON=/usr/sbin/kamailio#DAEMON=$(bin_prefix)/$(bin_dir)$(NAME)#g" \
-e "s#NAME=kamailio#NAME=$(NAME)#g" \
-e "s#DESC=Kamailio#DESC=$(NAME)#g" \
-e "s#HOMEDIR=/var/run/kamailio#HOMEDIR=/var/run/$(NAME)#g" \
-e "s#DEFAULTS=/etc/default/kamailio#DEFAULTS=/etc/default/$(NAME)#g" \
-e "s#CFGFILE=/etc/kamailio/kamailio.cfg#CFGFILE=$(cfg_prefix)/$(cfg_dir)$(NAME).cfg#g" \
< pkg/kamailio/deb/debian/kamailio.init \
> /etc/init.d/$(NAME)
chmod +x /etc/init.d/$(NAME)
sed -e "s#RUN_KAMAILIO=no#RUN_KAMAILIO=yes#g" \
< pkg/kamailio/deb/debian/kamailio.default \
> /etc/default/$(NAME)
mkdir -p /var/run/$(NAME)
adduser --quiet --system --group --disabled-password \
--shell /bin/false --gecos "$(NAME)" \
--home /var/run/$(NAME) $(NAME)
chown $(NAME):$(NAME) /var/run/$(NAME)
.PHONY: install_initd_centos install-initd-centos
install_initd_centos install-initd-centos:
sed -e "s#KAM=/usr/sbin/kamailio#KAM=$(bin_prefix)/$(bin_dir)$(NAME)#g" \
-e "s#PROG=kamailio#PROG=$(NAME)#g" \
-e "s#DEFAULTS=/etc/default/kamailio#DEFAULTS=/etc/default/$(NAME)#g" \
-e "s#PID_FILE=/var/run/kamailio.pid#PID_FILE=/var/run/$(NAME).pid#g" \
-e "s#LOCK_FILE=/var/lock/subsys/kamailio#LOCK_FILE=/var/lock/subsys/$(NAME)#g" \
-e "s#KAMCFG=/etc/kamailio/kamailio.cfg#KAMCFG=$(cfg_prefix)/$(cfg_dir)$(NAME).cfg#g" \
< pkg/kamailio/rpm/kamailio.init \
> /etc/init.d/$(NAME)
chmod +x /etc/init.d/$(NAME)
sed -e "s#RUN_KAMAILIO=no#RUN_KAMAILIO=yes#g" \
-e "s#USER=kamailio#USER=$(NAME)#g" \
-e "s#GROUP=kamailio#GROUP=$(NAME)#g" \
< pkg/kamailio/rpm/kamailio.default \
> /etc/default/$(NAME)
/usr/sbin/groupadd -r $(NAME)
/usr/sbin/useradd -r -g $(NAME) -s /bin/false -c "Kamailio Daemon" \
-d ${lib_prefix}/${lib_dir} $(NAME)
.PHONY: dbschema
dbschema:
-@echo "Build database schemas"

@ -155,15 +155,17 @@ endif
# application server support on
WITHAS ?= 1
# enable core hooks for SCTP
SCTP ?= 1
# what to install
INSTALL_FLAVOUR=$(FLAVOUR)
#version number
# version number
VERSION = 4
PATCHLEVEL = 0
SUBLEVEL = 4
EXTRAVERSION =
PATCHLEVEL = 1
SUBLEVEL = 0
EXTRAVERSION =
# memory manager switcher
# 0 - f_malloc (fast malloc)
@ -172,7 +174,7 @@ MEMMNG ?= 1
# memory debugger switcher
# 0 - off (no-debug mode)
# 1 - on (debug mode)
MEMDBG ?= 0
MEMDBG ?= 1
SER_VER = $(shell expr $(VERSION) \* 1000000 + $(PATCHLEVEL) \* 1000 + \
$(SUBLEVEL) )
@ -647,8 +649,6 @@ data_target = $(prefix)/$(data_dir)
# -DPROFILING
# if enabled profiling will be enabled for child processes
# Don't forget to set PROFILE (see below)
# -DUSE_STUN
# compiles in stun support
# -DNO_SIG_DEBUG
# turns off debugging messages in signal handlers (which might be
# unsafe)
@ -682,7 +682,6 @@ C_DEFS= $(extra_defs) \
-DPKG_MALLOC \
-DSHM_MEM -DSHM_MMAP \
-DDNS_IP_HACK \
-DUSE_IPV6 \
-DUSE_MCAST \
-DUSE_TCP \
-DDISABLE_NAGLE \
@ -752,10 +751,6 @@ ifeq ($(WITHAS), 1)
C_DEFS+= -DWITH_AS_SUPPORT
endif
ifneq ($(STUN),)
C_DEFS+= -DUSE_STUN
endif
ifeq ($(mode),)
mode = release
endif
@ -843,6 +838,7 @@ endif
ifeq ($(ARCH), arm6)
use_fast_lock=yes
C_DEFS+=-DNOSMP # very unlikely to have an smp arm
endif
ifeq ($(ARCH), ppc)
@ -1765,10 +1761,6 @@ ifeq ($(OS), linux)
LIBS+=-lpthread
endif
endif
ifneq (,$(findstring -DUSE_DNSSEC, $(C_DEFS)))
LIBS+=-lval-threads -lcrypto -lsres -lpthread
$(info "using libval for DNSSEC validation")
endif
# check for >= 2.5.44
ifeq ($(shell [ $(OSREL_N) -ge 2005044 ] && echo has_epoll), has_epoll)
@ -1794,31 +1786,6 @@ $(info "using libval for DNSSEC validation")
ifeq ($(NO_SELECT),)
C_DEFS+=-DHAVE_SELECT
endif
# sctp support
ifeq ($(SCTP),1)
# test to see if the devfiles and lib are installed
sctp_dev_locations := /usr/include/netinet/sctp.h \
$(LOCALBASE)/include/netinet/sctp.h
sctp_lib_locations := /usr/lib/libsctp.so \
/usr/lib64/libsctp.so \
$(LOCALBASE)/usr/local/lib/libsctp.so
sctp_dev_path := $(wildcard $(sctp_dev_locations))
sctp_lib_path := $(wildcard $(sctp_lib_locations))
ifeq ($(sctp_dev_path),)
$(info "sctp development files not installed -- sctp disabled")
override SCTP :=
endif
ifeq ($(sctp_lib_path),)
$(info "sctp libraries not installed -- sctp disabled")
override SCTP :=
endif
ifeq ($(SCTP),1)
# use lksctp
C_DEFS+=-DUSE_SCTP
LIBS+=-lsctp
endif
endif # SCTP
endif
ifeq ($(OS), solaris)
@ -1893,26 +1860,6 @@ ifeq ($(OS), freebsd)
C_DEFS+=-DHAVE_SELECT
endif
YACC=yacc
# sctp support
ifeq ($(SCTP),1)
# test to see if the devfiles and lib are installed
sctp_dev_locations := /usr/include/netinet/sctp.h \
$(LOCALBASE)/include/netinet/sctp.h
sctp_dev_path := $(wildcard $(sctp_dev_locations))
ifeq ($(sctp_dev_path),)
$(info "sctp development files not installed -- sctp disabled")
override SCTP :=
endif
ifeq ($(shell [ $(OSREL_N) -lt 7000 ] && echo sctp), sctp)
$(info "old freebsd version (>= 7.0 needed) -- sctp disabled")
override SCTP :=
endif
ifeq ($(SCTP),1)
C_DEFS+=-DUSE_SCTP
LIBS+= # no extra libs needed on freebsd
endif
endif # SCTP
endif
ifeq ($(OS), dragonfly)
@ -1935,29 +1882,6 @@ ifeq ($(OS), dragonfly)
C_DEFS+=-DHAVE_SELECT
endif
YACC=yacc
# sctp support
ifeq ($(SCTP),1)
# test to see if the devfiles and lib are installed
sctp_dev_locations := /usr/include/netinet/sctp.h \
$(LOCALBASE)/include/netinet/sctp.h
sctp_dev_path := $(wildcard $(sctp_dev_locations))
ifeq ($(sctp_dev_path),)
$(info "sctp development files not installed -- sctp disabled")
override SCTP :=
endif
# FIXME: don't know what's the status of SCTP on dragonfly
# (we suppose the 2.6 version is >= the version in
# in freebsd 7.0)
ifeq ($(shell [ $(OSREL_N) -lt 2006 ] && echo sctp), sctp)
$(info "old dragonfly version (>= 2.6 needed) -- sctp disabled")
override SCTP :=
endif
ifeq ($(SCTP),1)
C_DEFS+=-DUSE_SCTP
LIBS+= # no extra libs needed on freebsd
endif
endif # SCTP
endif
ifeq ($(OS), openbsd)
@ -2064,9 +1988,9 @@ ifeq ($(OS), darwin)
endif
ifneq (,$(findstring cygwin, $(OS)))
# cygwin doesn't support IPV6 and doesn't support fd passing so no TCP
#C_DEFS:=$(filter-out -DUSE_IPV6 -DUSE_TCP, $(C_DEFS))
DEFS_RM+=-DUSE_IPV6 -DUSE_TCP
# cygwin does support IPV6 starting from version 1.7, but (still?) doesn't support fd passing so no TCP
#C_DEFS:=$(filter-out -DUSE_TCP, $(C_DEFS))
DEFS_RM+=-DUSE_TCP
C_DEFS+=-DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD \
-DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H \
-DHAVE_TIMEGM -DHAVE_SCHED_SETSCHEDULER
@ -2100,11 +2024,6 @@ LIBS+= -L$(LOCALBASE)/lib -L$(LOCALBASE)/ssl/lib -lssl -lcrypto \
# E.g.: make CORE_TLS=1 EXTRA_TLS_LIBS="-lz -lkrb5"
endif
ifneq ($(STUN),)
C_INCLUDES+= -I$(LOCALBASE)/ssl/include
LIBS+= -L$(LOCALBASE)/lib -L$(LOCALBASE)/ssl/lib -lcrypto
endif
ifneq ($(found_lock_method), yes)
$(warning No locking method found so far, trying SYS V sems)
C_DEFS+= -DUSE_SYSV_SEM # try sys v sems

@ -13,12 +13,12 @@ mod_list_basic=async auth benchmark blst cfg_rpc cfgutils corex counters \
mediaproxy mi_datagram mi_fifo mi_rpc mqueue \
nat_traversal nathelper path pike pv ratelimit rr rtimer \
rtpproxy sanity sdpops siputils sl statistics textops \
textopsx tm tmx topoh xlog
textopsx tm tmx topoh xlog rtpproxy-ng stun
# - extra used modules, with no extra dependency
mod_list_extra=avp auth_diameter call_control dmq domainpolicy msrp pdb qos \
sca seas sms sst timer tmrec uac_redirect xhttp xhttp_rpc \
xprint
mod_list_extra=avp auth_diameter call_control cnxcc dmq domainpolicy msrp pdb \
qos sca seas sms sst timer tmrec uac_redirect xhttp \
xhttp_rpc xprint
# - common modules depending on database
mod_list_db=acc alias_db auth_db avpops cfg_db db_text db_flatstore \
@ -92,9 +92,18 @@ mod_list_tlsdeps=auth_identity tls
# - modules depending on openssl library
mod_list_outbound=outbound
# - modules depending on unistring library
# - modules depending on openssl and unistring library
mod_list_websocket=websocket
# - modules depending on libval-threads libcrypto libsres libpthread
mod_list_dnssec=dnssec
# - modules depending on libsctp
mod_list_sctp=sctp
# - modules depending on openssl library
mod_list_autheph=auth_ephemeral
# - modules related to SIMPLE presence extensions
mod_list_presence=presence presence_conference presence_dialoginfo \
presence_mwi presence_profile presence_reginfo \
@ -134,11 +143,14 @@ mod_list_mono=app_mono
# - modules related to IMS extensions
mod_list_ims=cdp cdp_avp dialog_ng ims_auth ims_isc ims_icscf ims_qos \
ims_registrar_pcscf ims_registrar_scscf ims_usrloc_pcscf \
ims_usrloc_scscf
ims_usrloc_scscf ims_charging
# - modules depending on osp toolkit library
mod_list_osp=osp
# - modules depending on java library
mod_list_java=app_java
# - modules depending on iptables library
mod_list_iptrtpproxy=iptrtpproxy
@ -161,7 +173,9 @@ mod_list_all=$(sort $(mod_list_basic) $(mod_list_extra) \
$(mod_list_mono) $(mod_list_ims) \
$(mod_list_cassandra) $(mod_list_oracle) \
$(mod_list_iptrtpproxy) $(mod_list_mi_xmlrpc) \
$(mod_list_outbound) $(mod_list_osp) )
$(mod_list_outbound) $(mod_list_osp) \
$(mod_list_java) $(mod_list_dnssec) \
$(mod_list_sctp) $(mod_list_autheph))
@ -307,6 +321,17 @@ module_group_kims=$(mod_list_ims)
# pkg outbound module
module_group_koutbound=$(mod_list_outbound)
# pkg java module
module_group_kjava=$(mod_list_java)
# pkg dnssec module
module_group_kdnssec=$(mod_list_dnssec)
# pkg sctp module
module_group_ksctp=$(mod_list_sctp)
# pkg auth_ephemeral module
module_group_kautheph=$(mod_list_autheph)
# list of static modules
#

@ -1,18 +1,21 @@
$Id$
Welcome to Kamailio v4.0!
Kamailio v4.1
=============
http://www.kamailio.org/
==========================
http://www.kamailio.org
Table of contents
I. About Kamailio
II. Feature List
III. Getting started
IV. About the project
V. Obtaining Help
VI. More Information
I. About Kamailio
II. Feature List
III. Getting started
IV. About the project
V. Obtaining Help
VI. More Information
I. About Kamailio
=================
Kamailio is an industrial-strength, free server for realtime communication,
based on the Session Initiation Protocol (SIP RFC3261).

@ -89,7 +89,7 @@
#include "tcp_server.h"
#endif
#ifdef USE_SCTP
#include "sctp_server.h"
#include "sctp_core.h"
#endif
#include "switch.h"
#include "events.h"
@ -111,7 +111,30 @@
int _last_returned_code = 0;
struct onsend_info* p_onsend=0; /* onsend route send info */
/* current action executed from config file */
static cfg_action_t *_cfg_crt_action = 0;
/* return current action executed from config file */
cfg_action_t *get_cfg_crt_action(void)
{
return _cfg_crt_action;
}
/* return line in config for current executed action */
int get_cfg_crt_line(void)
{
if(_cfg_crt_action==0)
return 0;
return _cfg_crt_action->cline;
}
/* return name of config for current executed action */
char *get_cfg_crt_name(void)
{
if(_cfg_crt_action==0)
return 0;
return _cfg_crt_action->cfile;
}
/* handle the exit code of a module function call.
* (used internally in do_action())
@ -423,9 +446,11 @@ int do_action(struct run_act_ctx* h, struct action* a, struct sip_msg* msg)
case PROTO_UDP:
#ifdef USE_TCP
case PROTO_TCP:
case PROTO_WS:
#endif
#ifdef USE_TLS
case PROTO_TLS:
case PROTO_WSS:
#endif
#ifdef USE_SCTP
case PROTO_SCTP:
@ -509,7 +534,7 @@ int do_action(struct run_act_ctx* h, struct action* a, struct sip_msg* msg)
ret=append_branch(msg, &a->val[0].u.str, &msg->dst_uri,
&msg->path_vec, a->val[1].u.number,
(flag_t)flags, msg->force_send_socket,
0, 0);
0, 0, 0, 0);
/* if the uri is the ruri and q was also not changed, mark
ruri as consumed, to avoid having an identical branch */
if ((a->val[0].u.str.s == 0 || a->val[0].u.str.len == 0) &&
@ -1570,7 +1595,9 @@ int run_actions(struct run_act_ctx* h, struct action* a, struct sip_msg* msg)
for (t=a; t!=0; t=t->next){
if(unlikely(cfg_get(core, core_cfg, latency_limit_action)>0))
ms = TICKS_TO_MS(get_ticks_raw());
_cfg_crt_action = t;
ret=do_action(h, t, msg);
_cfg_crt_action = 0;
if(unlikely(cfg_get(core, core_cfg, latency_limit_action)>0)) {
ms = TICKS_TO_MS(get_ticks_raw()) - ms;
if(ms >= cfg_get(core, core_cfg, latency_limit_action)) {

@ -68,6 +68,9 @@ int run_actions(struct run_act_ctx* c, struct action* a, struct sip_msg* msg);
int run_top_route(struct action* a, sip_msg_t* msg, struct run_act_ctx* c);
cfg_action_t *get_cfg_crt_action(void);
int get_cfg_crt_line(void);
char *get_cfg_crt_name(void);
#ifdef USE_LONGJMP
int run_actions_safe(struct run_act_ctx* c, struct action* a,

@ -2,6 +2,6 @@
* DO NOT EDIT IT
*/
#define REPO_VER "cabe58"
#define REPO_HASH "cabe58"
#define REPO_VER "350d2e"
#define REPO_HASH "350d2e"
#define REPO_STATE ""

@ -337,6 +337,7 @@ AVP_PREF (([ft][rud]?)|g)\.
DEBUG debug
FORK fork
FORK_DELAY fork_delay
MODINIT_DELAY modinit_delay
LOGSTDERROR log_stderror
LOGFACILITY log_facility
LOGNAME log_name
@ -359,6 +360,7 @@ DNS_RETR_NO dns_retr_no
DNS_SERVERS_NO dns_servers_no
DNS_USE_SEARCH dns_use_search_list
DNS_SEARCH_FMATCH dns_search_full_match
DNS_NAPTR_IGNORE_RFC dns_naptr_ignore_rfc
/* dns cache */
DNS_CACHE_INIT dns_cache_init
DNS_USE_CACHE use_dns_cache
@ -392,7 +394,6 @@ CHILDREN children
SOCKET_WORKERS socket_workers
CHECK_VIA check_via
PHONE2TEL phone2tel
SYN_BRANCH syn_branch
MEMLOG "memlog"|"mem_log"
MEMDBG "memdbg"|"mem_dbg"
MEMSUM "mem_summary"
@ -453,25 +454,6 @@ TLS_SEND_TIMEOUT "tls_send_timeout"
DISABLE_SCTP "disable_sctp"
ENABLE_SCTP "enable_sctp"
SCTP_CHILDREN "sctp_children"
SCTP_SOCKET_RCVBUF "sctp_socket_rcvbuf"|"sctp_socket_receive_buffer"
SCTP_SOCKET_SNDBUF "sctp_socket_sndbuf"|"sctp_socket_send_buffer"
SCTP_AUTOCLOSE "sctp_autoclose"
SCTP_SEND_TTL "sctp_send_ttl"
SCTP_SEND_RETRIES "sctp_send_retries"
SCTP_ASSOC_TRACKING "sctp_assoc_tracking"
SCTP_ASSOC_REUSE "sctp_assoc_reuse"
SCTP_MAX_ASSOCS "sctp_max_assocs"
SCTP_SRTO_INITIAL "sctp_srto_initial"
SCTP_SRTO_MAX "sctp_srto_max"
SCTP_SRTO_MIN "sctp_srto_min"
SCTP_ASOCMAXRXT "sctp_asocmaxrxt"
SCTP_INIT_MAX_ATTEMPTS "sctp_init_max_attempts"
SCTP_INIT_MAX_TIMEO "sctp_init_max_timeo"
SCTP_HBINTERVAL "sctp_hbinterval"
SCTP_PATHMAXRXT "sctp_pathmaxrxt"
SCTP_SACK_DELAY "sctp_sack_delay"
SCTP_SACK_FREQ "sctp_sack_freq"
SCTP_MAX_BURST "sctp_max_burst"
ADVERTISED_ADDRESS "advertised_address"
ADVERTISED_PORT "advertised_port"
@ -495,14 +477,9 @@ KILL_TIMEOUT "exit_timeout"|"ser_kill_timeout"
MAX_WLOOPS "max_while_loops"
PVBUFSIZE "pv_buffer_size"
PVBUFSLOTS "pv_buffer_slots"
HTTP_REPLY_HACK "http_reply_hack"
HTTP_REPLY_PARSE "http_reply_hack"|"http_reply_parse"
VERSION_TABLE_CFG "version_table"
/* stun config variables */
STUN_REFRESH_INTERVAL "stun_refresh_interval"
STUN_ALLOW_STUN "stun_allow_stun"
STUN_ALLOW_FP "stun_allow_fp"
SERVER_ID "server_id"
LATENCY_LOG latency_log
@ -561,10 +538,10 @@ COLON ":"
STAR \*
DOT \.
CR \n
EVENT_RT_NAME [a-zA-Z][0-9a-zA-Z-]*":"[a-zA-Z][0-9a-zA-Z-]*
EVENT_RT_NAME [a-zA-Z][0-9a-zA-Z-]*(":"[a-zA-Z][0-9a-zA-Z-]*)+
COM_LINE #
COM_LINE "#"|"//"
COM_START "/\*"
COM_END "\*/"
@ -712,6 +689,7 @@ IMPORTFILE "import_file"
<INITIAL>{DEBUG} { count(); yylval.strval=yytext; return DEBUG_V; }
<INITIAL>{FORK} { count(); yylval.strval=yytext; return FORK; }
<INITIAL>{FORK_DELAY} { count(); yylval.strval=yytext; return FORK_DELAY; }
<INITIAL>{MODINIT_DELAY} { count(); yylval.strval=yytext; return MODINIT_DELAY; }
<INITIAL>{LOGSTDERROR} { yylval.strval=yytext; return LOGSTDERROR; }
<INITIAL>{LOGFACILITY} { yylval.strval=yytext; return LOGFACILITY; }
<INITIAL>{LOGNAME} { yylval.strval=yytext; return LOGNAME; }
@ -747,6 +725,8 @@ IMPORTFILE "import_file"
return DNS_USE_SEARCH; }
<INITIAL>{DNS_SEARCH_FMATCH} { count(); yylval.strval=yytext;
return DNS_SEARCH_FMATCH; }
<INITIAL>{DNS_NAPTR_IGNORE_RFC} { count(); yylval.strval=yytext;
return DNS_NAPTR_IGNORE_RFC; }
<INITIAL>{DNS_CACHE_INIT} { count(); yylval.strval=yytext;
return DNS_CACHE_INIT; }
<INITIAL>{DNS_USE_CACHE} { count(); yylval.strval=yytext;
@ -795,7 +775,6 @@ IMPORTFILE "import_file"
<INITIAL>{SOCKET_WORKERS} { count(); yylval.strval=yytext; return SOCKET_WORKERS; }
<INITIAL>{CHECK_VIA} { count(); yylval.strval=yytext; return CHECK_VIA; }
<INITIAL>{PHONE2TEL} { count(); yylval.strval=yytext; return PHONE2TEL; }
<INITIAL>{SYN_BRANCH} { count(); yylval.strval=yytext; return SYN_BRANCH; }
<INITIAL>{MEMLOG} { count(); yylval.strval=yytext; return MEMLOG; }
<INITIAL>{MEMDBG} { count(); yylval.strval=yytext; return MEMDBG; }
<INITIAL>{MEMSUM} { count(); yylval.strval=yytext; return MEMSUM; }
@ -886,44 +865,6 @@ IMPORTFILE "import_file"
<INITIAL>{ENABLE_SCTP} { count(); yylval.strval=yytext; return ENABLE_SCTP;}
<INITIAL>{SCTP_CHILDREN} { count(); yylval.strval=yytext;
return SCTP_CHILDREN; }
<INITIAL>{SCTP_SOCKET_RCVBUF} { count(); yylval.strval=yytext;
return SCTP_SOCKET_RCVBUF; }
<INITIAL>{SCTP_SOCKET_SNDBUF} { count(); yylval.strval=yytext;
return SCTP_SOCKET_SNDBUF; }
<INITIAL>{SCTP_AUTOCLOSE} { count(); yylval.strval=yytext;
return SCTP_AUTOCLOSE; }
<INITIAL>{SCTP_SEND_TTL} { count(); yylval.strval=yytext;
return SCTP_SEND_TTL; }
<INITIAL>{SCTP_SEND_RETRIES} { count(); yylval.strval=yytext;
return SCTP_SEND_RETRIES; }
<INITIAL>{SCTP_ASSOC_TRACKING} { count(); yylval.strval=yytext;
return SCTP_ASSOC_TRACKING; }
<INITIAL>{SCTP_ASSOC_REUSE} { count(); yylval.strval=yytext;
return SCTP_ASSOC_REUSE; }
<INITIAL>{SCTP_MAX_ASSOCS} { count(); yylval.strval=yytext;
return SCTP_MAX_ASSOCS; }
<INITIAL>{SCTP_SRTO_INITIAL} { count(); yylval.strval=yytext;
return SCTP_SRTO_INITIAL; }
<INITIAL>{SCTP_SRTO_MAX} { count(); yylval.strval=yytext;
return SCTP_SRTO_MAX; }
<INITIAL>{SCTP_SRTO_MIN} { count(); yylval.strval=yytext;
return SCTP_SRTO_MIN; }
<INITIAL>{SCTP_ASOCMAXRXT} { count(); yylval.strval=yytext;
return SCTP_ASOCMAXRXT; }
<INITIAL>{SCTP_INIT_MAX_ATTEMPTS} { count(); yylval.strval=yytext;
return SCTP_INIT_MAX_ATTEMPTS; }
<INITIAL>{SCTP_INIT_MAX_TIMEO} { count(); yylval.strval=yytext;
return SCTP_INIT_MAX_TIMEO; }
<INITIAL>{SCTP_HBINTERVAL} { count(); yylval.strval=yytext;
return SCTP_HBINTERVAL; }
<INITIAL>{SCTP_PATHMAXRXT} { count(); yylval.strval=yytext;
return SCTP_PATHMAXRXT; }
<INITIAL>{SCTP_SACK_DELAY} { count(); yylval.strval=yytext;
return SCTP_SACK_DELAY; }
<INITIAL>{SCTP_SACK_FREQ} { count(); yylval.strval=yytext;
return SCTP_SACK_FREQ; }
<INITIAL>{SCTP_MAX_BURST} { count(); yylval.strval=yytext;
return SCTP_MAX_BURST; }
<INITIAL>{SERVER_SIGNATURE} { count(); yylval.strval=yytext; return SERVER_SIGNATURE; }
<INITIAL>{SERVER_HEADER} { count(); yylval.strval=yytext; return SERVER_HEADER; }
<INITIAL>{USER_AGENT_HEADER} { count(); yylval.strval=yytext; return USER_AGENT_HEADER; }
@ -972,8 +913,8 @@ IMPORTFILE "import_file"
return PVBUFSIZE; }
<INITIAL>{PVBUFSLOTS} { count(); yylval.strval=yytext;
return PVBUFSLOTS; }
<INITIAL>{HTTP_REPLY_HACK} { count(); yylval.strval=yytext;
return HTTP_REPLY_HACK; }
<INITIAL>{HTTP_REPLY_PARSE} { count(); yylval.strval=yytext;
return HTTP_REPLY_PARSE; }
<INITIAL>{VERSION_TABLE_CFG} { count(); yylval.strval=yytext; return VERSION_TABLE_CFG;}
<INITIAL>{SERVER_ID} { count(); yylval.strval=yytext; return SERVER_ID;}
<INITIAL>{LATENCY_LOG} { count(); yylval.strval=yytext; return LATENCY_LOG;}
@ -985,10 +926,6 @@ IMPORTFILE "import_file"
<INITIAL>{LOADPATH} { count(); yylval.strval=yytext; return LOADPATH; }
<INITIAL>{MODPARAM} { count(); yylval.strval=yytext; return MODPARAM; }
<INITIAL>{STUN_REFRESH_INTERVAL} { count(); yylval.strval=yytext; return STUN_REFRESH_INTERVAL;}
<INITIAL>{STUN_ALLOW_STUN} { count(); yylval.strval=yytext; return STUN_ALLOW_STUN;}
<INITIAL>{STUN_ALLOW_FP} { count(); yylval.strval=yytext; return STUN_ALLOW_FP;}
<INITIAL>{EQUAL} { count(); return EQUAL; }
<INITIAL>{ADDEQ} { count(); return ADDEQ; }
<INITIAL>{EQUAL_T} { count(); return EQUAL_T; }
@ -1167,11 +1104,7 @@ IMPORTFILE "import_file"
<INITIAL>{INET} { count(); yylval.intval=AF_INET;
yy_number_str=yytext; return NUMBER; }
<INITIAL>{INET6} { count();
#ifdef USE_IPV6
yylval.intval=AF_INET6;
#else
yylval.intval=-1; /* no match*/
#endif
yylval.intval=AF_INET6;
yy_number_str=yytext;
return NUMBER; }
<INITIAL>{SSLv23} { count(); yylval.strval=yytext; return SSLv23; }

237
cfg.y

@ -135,7 +135,7 @@
#include "flags.h"
#include "tcp_init.h"
#include "tcp_options.h"
#include "sctp_options.h"
#include "sctp_core.h"
#include "pvar.h"
#include "lvalue.h"
#include "rvalue.h"
@ -165,11 +165,7 @@
if (rt!=ONSEND_ROUTE) yyerror( s " allowed only in onsend_routes");\
}while(0)
#ifdef USE_IPV6
#define IF_AUTO_BIND_IPV6(x) x
#else
#define IF_AUTO_BIND_IPV6(x) warn("IPV6 support not compiled");
#endif
#ifdef USE_DNS_CACHE
#define IF_DNS_CACHE(x) x
@ -195,12 +191,6 @@
#define IF_DST_BLACKLIST(x) warn("dst blacklist support not compiled in")
#endif
#ifdef USE_STUN
#define IF_STUN(x) x
#else
#define IF_STUN(x) warn("stun support not compiled in")
#endif
#ifdef USE_SCTP
#define IF_SCTP(x) x
#else
@ -396,6 +386,7 @@ extern char *finame;
%token DEBUG_V
%token FORK
%token FORK_DELAY
%token MODINIT_DELAY
%token LOGSTDERROR
%token LOGFACILITY
%token LOGNAME
@ -418,6 +409,7 @@ extern char *finame;
%token DNS_SERVERS_NO
%token DNS_USE_SEARCH
%token DNS_SEARCH_FMATCH
%token DNS_NAPTR_IGNORE_RFC
%token DNS_CACHE_INIT
%token DNS_USE_CACHE
%token DNS_USE_FAILOVER
@ -449,7 +441,6 @@ extern char *finame;
%token SOCKET_WORKERS
%token CHECK_VIA
%token PHONE2TEL
%token SYN_BRANCH
%token MEMLOG
%token MEMDBG
%token MEMSUM
@ -519,25 +510,6 @@ extern char *finame;
%token DISABLE_SCTP
%token ENABLE_SCTP
%token SCTP_CHILDREN
%token SCTP_SOCKET_RCVBUF
%token SCTP_SOCKET_SNDBUF
%token SCTP_AUTOCLOSE
%token SCTP_SEND_TTL
%token SCTP_SEND_RETRIES
%token SCTP_ASSOC_TRACKING
%token SCTP_ASSOC_REUSE
%token SCTP_MAX_ASSOCS
%token SCTP_SRTO_INITIAL
%token SCTP_SRTO_MAX
%token SCTP_SRTO_MIN
%token SCTP_ASOCMAXRXT
%token SCTP_INIT_MAX_ATTEMPTS
%token SCTP_INIT_MAX_TIMEO
%token SCTP_HBINTERVAL
%token SCTP_PATHMAXRXT
%token SCTP_SACK_DELAY
%token SCTP_SACK_FREQ
%token SCTP_MAX_BURST
%token ADVERTISED_ADDRESS
%token ADVERTISED_PORT
%token DISABLE_CORE
@ -560,7 +532,7 @@ extern char *finame;
%token MAX_WLOOPS
%token PVBUFSIZE
%token PVBUFSLOTS
%token HTTP_REPLY_HACK
%token HTTP_REPLY_PARSE
%token VERSION_TABLE_CFG
%token CFG_DESCRIPTION
%token SERVER_ID
@ -586,10 +558,6 @@ extern char *finame;
%token ADDEQ
%token STUN_REFRESH_INTERVAL
%token STUN_ALLOW_STUN
%token STUN_ALLOW_FP
/*pre-processor*/
%token SUBST
%token SUBSTDEF
@ -852,6 +820,8 @@ assign_stm:
| FORK EQUAL error { yyerror("boolean value expected"); }
| FORK_DELAY EQUAL NUMBER { set_fork_delay($3); }
| FORK_DELAY EQUAL error { yyerror("number expected"); }
| MODINIT_DELAY EQUAL NUMBER { set_modinit_delay($3); }
| MODINIT_DELAY EQUAL error { yyerror("number expected"); }
| LOGSTDERROR EQUAL NUMBER { if (!config_check) /* if set from cmd line, don't overwrite from yyparse()*/
if(log_stderr == 0) log_stderr=$3;
}
@ -896,6 +866,8 @@ assign_stm:
| DNS_USE_SEARCH error { yyerror("boolean value expected"); }
| DNS_SEARCH_FMATCH EQUAL NUMBER { default_core_cfg.dns_search_fmatch=$3; }
| DNS_SEARCH_FMATCH error { yyerror("boolean value expected"); }
| DNS_NAPTR_IGNORE_RFC EQUAL NUMBER { default_core_cfg.dns_naptr_ignore_rfc=$3; }
| DNS_NAPTR_IGNORE_RFC error { yyerror("boolean value expected"); }
| DNS_CACHE_INIT EQUAL NUMBER { IF_DNS_CACHE(dns_cache_init=$3); }
| DNS_CACHE_INIT error { yyerror("boolean value expected"); }
| DNS_USE_CACHE EQUAL NUMBER { IF_DNS_CACHE(default_core_cfg.use_dns_cache=$3); }
@ -969,8 +941,6 @@ assign_stm:
| CHECK_VIA EQUAL error { yyerror("boolean value expected"); }
| PHONE2TEL EQUAL NUMBER { phone2tel=$3; }
| PHONE2TEL EQUAL error { yyerror("boolean value expected"); }
| SYN_BRANCH EQUAL NUMBER { syn_branch=$3; }
| SYN_BRANCH EQUAL error { yyerror("boolean value expected"); }
| MEMLOG EQUAL intno { default_core_cfg.memlog=$3; }
| MEMLOG EQUAL error { yyerror("int value expected"); }
| MEMDBG EQUAL intno { default_core_cfg.memdbg=$3; }
@ -1131,12 +1101,8 @@ assign_stm:
| TCP_SOURCE_IPV4 EQUAL error { yyerror("IPv4 address expected"); }
| TCP_SOURCE_IPV6 EQUAL ipv6 {
#ifdef USE_TCP
#ifdef USE_IPV6
if (tcp_set_src_addr($3)<0)
warn("tcp_source_ipv6 failed");
#else
warn("IPv6 support not compiled in");
#endif
#else
warn("tcp support not compiled in");
#endif
@ -1426,122 +1392,6 @@ assign_stm:
#endif
}
| SCTP_CHILDREN EQUAL error { yyerror("number expected"); }
| SCTP_SOCKET_RCVBUF EQUAL NUMBER {
#ifdef USE_SCTP
sctp_default_cfg.so_rcvbuf=$3;
#else
warn("sctp support not compiled in");
#endif
}
| SCTP_SOCKET_RCVBUF EQUAL error { yyerror("number expected"); }
| SCTP_SOCKET_SNDBUF EQUAL NUMBER {
#ifdef USE_SCTP
sctp_default_cfg.so_sndbuf=$3;
#else
warn("sctp support not compiled in");
#endif
}
| SCTP_SOCKET_SNDBUF EQUAL error { yyerror("number expected"); }
| SCTP_AUTOCLOSE EQUAL NUMBER {
#ifdef USE_SCTP
sctp_default_cfg.autoclose=$3;
#else
warn("sctp support not compiled in");
#endif
}
| SCTP_AUTOCLOSE EQUAL error { yyerror("number expected"); }
| SCTP_SEND_TTL EQUAL NUMBER {
#ifdef USE_SCTP
sctp_default_cfg.send_ttl=$3;
#else
warn("sctp support not compiled in");
#endif
}
| SCTP_SEND_TTL EQUAL error { yyerror("number expected"); }
| SCTP_SEND_RETRIES EQUAL NUMBER {
#ifdef USE_SCTP
sctp_default_cfg.send_retries=$3;
#else
warn("sctp support not compiled in");
#endif
}
| SCTP_SEND_RETRIES EQUAL error { yyerror("number expected"); }
| SCTP_ASSOC_TRACKING EQUAL NUMBER {
#ifdef USE_SCTP
#ifdef SCTP_CONN_REUSE
sctp_default_cfg.assoc_tracking=$3;
#else
if ($3)
warn("sctp association tracking/reuse (SCTP_CONN_REUSE) "
"support not compiled in");
#endif /* SCTP_CONN_REUSE */
#else
warn("sctp support not compiled in");
#endif /* USE_SCTP */
}
| SCTP_ASSOC_TRACKING EQUAL error { yyerror("number expected"); }
| SCTP_ASSOC_REUSE EQUAL NUMBER {
#ifdef USE_SCTP
#ifdef SCTP_CONN_REUSE
sctp_default_cfg.assoc_reuse=$3;
#else
if ($3)
warn("sctp association reuse (SCTP_CONN_REUSE) support"
" not compiled in");
#endif /* SCTP_CONN_REUSE */
#else
warn("sctp support not compiled in");
#endif /* USE_SCTP */
}
| SCTP_ASSOC_REUSE EQUAL error { yyerror("number expected"); }
| SCTP_MAX_ASSOCS EQUAL intno {
IF_SCTP(sctp_default_cfg.max_assocs=$3);
}
| SCTP_MAX_ASSOCS EQUAL error { yyerror("number expected"); }
| SCTP_SRTO_INITIAL EQUAL NUMBER {
IF_SCTP(sctp_default_cfg.srto_initial=$3);
}
| SCTP_SRTO_INITIAL EQUAL error { yyerror("number expected"); }
| SCTP_SRTO_MAX EQUAL NUMBER {
IF_SCTP(sctp_default_cfg.srto_max=$3);
}
| SCTP_SRTO_MAX EQUAL error { yyerror("number expected"); }
| SCTP_SRTO_MIN EQUAL NUMBER {
IF_SCTP(sctp_default_cfg.srto_min=$3);
}
| SCTP_SRTO_MIN EQUAL error { yyerror("number expected"); }
| SCTP_ASOCMAXRXT EQUAL NUMBER {
IF_SCTP(sctp_default_cfg.asocmaxrxt=$3);
}
| SCTP_ASOCMAXRXT EQUAL error { yyerror("number expected"); }
| SCTP_INIT_MAX_ATTEMPTS EQUAL NUMBER {
IF_SCTP(sctp_default_cfg.init_max_attempts=$3);
}
| SCTP_INIT_MAX_ATTEMPTS EQUAL error { yyerror("number expected"); }
| SCTP_INIT_MAX_TIMEO EQUAL NUMBER {
IF_SCTP(sctp_default_cfg.init_max_timeo=$3);
}
| SCTP_INIT_MAX_TIMEO EQUAL error { yyerror("number expected"); }
| SCTP_HBINTERVAL EQUAL intno {
IF_SCTP(sctp_default_cfg.hbinterval=$3);
}
| SCTP_HBINTERVAL EQUAL error { yyerror("number expected"); }
| SCTP_PATHMAXRXT EQUAL NUMBER {
IF_SCTP(sctp_default_cfg.pathmaxrxt=$3);
}
| SCTP_PATHMAXRXT EQUAL error { yyerror("number expected"); }
| SCTP_SACK_DELAY EQUAL NUMBER {
IF_SCTP(sctp_default_cfg.sack_delay=$3);
}
| SCTP_SACK_DELAY EQUAL error { yyerror("number expected"); }
| SCTP_SACK_FREQ EQUAL NUMBER {
IF_SCTP(sctp_default_cfg.sack_freq=$3);
}
| SCTP_SACK_FREQ EQUAL error { yyerror("number expected"); }
| SCTP_MAX_BURST EQUAL NUMBER {
IF_SCTP(sctp_default_cfg.max_burst=$3);
}
| SCTP_MAX_BURST EQUAL error { yyerror("number expected"); }
| SERVER_SIGNATURE EQUAL NUMBER { server_signature=$3; }
| SERVER_SIGNATURE EQUAL error { yyerror("boolean value expected"); }
| SERVER_HEADER EQUAL STRING { server_hdr.s=$3;
@ -1706,14 +1556,8 @@ assign_stm:
| PVBUFSIZE EQUAL error { yyerror("number expected"); }
| PVBUFSLOTS EQUAL NUMBER { pv_set_buffer_slots($3); }
| PVBUFSLOTS EQUAL error { yyerror("number expected"); }
| HTTP_REPLY_HACK EQUAL NUMBER { http_reply_hack=$3; }
| HTTP_REPLY_HACK EQUAL error { yyerror("boolean value expected"); }
| STUN_REFRESH_INTERVAL EQUAL NUMBER { IF_STUN(stun_refresh_interval=$3); }
| STUN_REFRESH_INTERVAL EQUAL error{ yyerror("number expected"); }
| STUN_ALLOW_STUN EQUAL NUMBER { IF_STUN(stun_allow_stun=$3); }
| STUN_ALLOW_STUN EQUAL error{ yyerror("number expected"); }
| STUN_ALLOW_FP EQUAL NUMBER { IF_STUN(stun_allow_fp=$3) ; }
| STUN_ALLOW_FP EQUAL error{ yyerror("number expected"); }
| HTTP_REPLY_PARSE EQUAL NUMBER { http_reply_parse=$3; }
| HTTP_REPLY_PARSE EQUAL error { yyerror("boolean value expected"); }
| SERVER_ID EQUAL NUMBER { server_id=$3; }
| LATENCY_LOG EQUAL NUMBER { default_core_cfg.latency_log=$3; }
| LATENCY_LOG EQUAL error { yyerror("number expected"); }
@ -1869,17 +1713,12 @@ ipv6addr:
if ($$==0) {
LOG(L_CRIT, "ERROR: cfg. parser: out of memory.\n");
} else {
#ifdef USE_IPV6
memset($$, 0, sizeof(struct ip_addr));
$$->af=AF_INET6;
$$->len=16;
if (inet_pton(AF_INET6, $1, $$->u.addr)<=0) {
yyerror("bad ipv6 address");
}
#else
yyerror("ipv6 address & no ipv6 support compiled in");
YYABORT;
#endif
}
}
;
@ -2256,10 +2095,8 @@ exp_elem:
}
if (s_tmp.s){
ip_tmp=str2ip(&s_tmp);
#ifdef USE_IPV6
if (ip_tmp==0)
ip_tmp=str2ip6(&s_tmp);
#endif
pkg_free(s_tmp.s);
if (ip_tmp) {
$$=mk_elem($2, $1, 0, NET_ST,
@ -2777,17 +2614,10 @@ attr_id_any_str:
;
pvar: PVAR {
pv_spec=pkg_malloc(sizeof(*pv_spec));
if (!pv_spec) {
yyerror("Not enough memory");
YYABORT;
}
memset(pv_spec, 0, sizeof(*pv_spec));
s_tmp.s=$1; s_tmp.len=strlen($1);
if (pv_parse_spec(&s_tmp, pv_spec)==0){
yyerror("unknown script pseudo variable %s", $1 );
pkg_free(pv_spec);
pv_spec=0;
pv_spec=pv_cache_get(&s_tmp);
if (!pv_spec) {
yyerror("Can't get from cache: %s", $1);
YYABORT;
}
$$=pv_spec;
@ -2802,12 +2632,8 @@ avp_pvar: AVP_OR_PVAR {
}
memset(lval_tmp, 0, sizeof(*lval_tmp));
s_tmp.s=$1; s_tmp.len=strlen(s_tmp.s);
if (pv_parse_spec2(&s_tmp, &lval_tmp->lv.pvs, 1)==0){
/* not a pvar, try avps */
/* lval_tmp might be partially filled by the failed
pv_parse_spec2() (especially if the avp name is the
same as a pv class) => clean it again */
memset(lval_tmp, 0, sizeof(*lval_tmp));
lval_tmp->lv.pvs = pv_cache_get(&s_tmp);
if (lval_tmp->lv.pvs==NULL){
lval_tmp->lv.avps.type|= AVP_NAME_STR;
lval_tmp->lv.avps.name.s.s = s_tmp.s+1;
lval_tmp->lv.avps.name.s.len = s_tmp.len-1;
@ -2854,15 +2680,14 @@ lval: attr_id_ass {
yyerror("Not enough memory");
YYABORT;
}
lval_tmp->type=LV_PVAR; lval_tmp->lv.pvs=*($1);
pkg_free($1); /* free the pvar spec we just copied */
lval_tmp->type=LV_PVAR; lval_tmp->lv.pvs=$1;
$$=lval_tmp;
}
| avp_pvar {
if (($1)->type==LV_PVAR){
if (!pv_is_w(&($1)->lv.pvs))
if (!pv_is_w($1->lv.pvs))
yyerror("read only pvar in assignment left side");
if ($1->lv.pvs.trans!=0)
if ($1->lv.pvs->trans!=0)
yyerror("pvar with transformations in assignment"
" left side");
}
@ -2874,14 +2699,14 @@ rval: intno {$$=mk_rve_rval(RV_INT, (void*)$1); }
| STRING { s_tmp.s=$1; s_tmp.len=strlen($1);
$$=mk_rve_rval(RV_STR, &s_tmp); }
| attr_id_any {$$=mk_rve_rval(RV_AVP, $1); pkg_free($1); }
| pvar {$$=mk_rve_rval(RV_PVAR, $1); pkg_free($1); }
| pvar {$$=mk_rve_rval(RV_PVAR, $1); }
| avp_pvar {
switch($1->type){
case LV_AVP:
$$=mk_rve_rval(RV_AVP, &$1->lv.avps);
break;
case LV_PVAR:
$$=mk_rve_rval(RV_PVAR, &$1->lv.pvs);
$$=mk_rve_rval(RV_PVAR, $1->lv.pvs);
break;
default:
yyerror("BUG: invalid lvalue type ");
@ -2934,8 +2759,24 @@ rval_expr: rval { $$=$1;
| rval_expr BIN_LSHIFT rval_expr {$$=mk_rve2(RVE_BLSHIFT_OP, $1, $3);}
| rval_expr BIN_RSHIFT rval_expr {$$=mk_rve2(RVE_BRSHIFT_OP, $1, $3);}
| rval_expr rve_cmpop rval_expr %prec GT { $$=mk_rve2( $2, $1, $3);}
| rval_expr rve_equalop rval_expr %prec EQUAL_T
{ $$=mk_rve2( $2, $1, $3);}
| rval_expr rve_equalop rval_expr %prec EQUAL_T {
/* comparing with $null => treat as defined or !defined */
if($3->op==RVE_RVAL_OP && $3->left.rval.type==RV_PVAR
&& $3->left.rval.v.pvs.type==PVT_NULL) {
if($2==RVE_DIFF_OP || $2==RVE_IDIFF_OP
|| $2==RVE_STRDIFF_OP) {
DBG("comparison with $null switched to notdefined operator\n");
$$=mk_rve1(RVE_DEFINED_OP, $1);
} else {
DBG("comparison with $null switched to defined operator\n");
$$=mk_rve1(RVE_NOTDEFINED_OP, $1);
}
/* free rve struct for $null */
rve_destroy($3);
} else {
$$=mk_rve2($2, $1, $3);
}
}
| rval_expr LOG_AND rval_expr { $$=mk_rve2(RVE_LAND_OP, $1, $3);}
| rval_expr LOG_OR rval_expr { $$=mk_rve2(RVE_LOR_OP, $1, $3);}
| LPAREN rval_expr RPAREN { $$=$2;}
@ -3173,7 +3014,7 @@ cmd:
}
| FORWARD_SCTP error { $$=0; yyerror("missing '(' or ')' ?"); }
| FORWARD_SCTP LPAREN error RPAREN { $$=0;
yyerror("bad forward_tls argument"); }
yyerror("bad forward_sctp argument"); }
| LOG_TOK LPAREN STRING RPAREN {$$=mk_action(LOG_T, 2, NUMBER_ST,
(void*)(L_DBG+1), STRING_ST, $3);
set_cfg_pos($$); }

@ -36,10 +36,10 @@
#define CFG_VAR_STR 3U
#define CFG_VAR_POINTER 4U
/* number of bits required for the variable type */
/*! \brief number of bits required for the variable type */
#define CFG_INPUT_SHIFT 3
/* input type */
/*! \brief input types */
#define CFG_INPUT_INT (CFG_VAR_INT << CFG_INPUT_SHIFT)
#define CFG_INPUT_STRING (CFG_VAR_STRING << CFG_INPUT_SHIFT)
#define CFG_INPUT_STR (CFG_VAR_STR << CFG_INPUT_SHIFT)
@ -47,28 +47,25 @@
#define CFG_VAR_MASK(x) ((x)&((1U<<CFG_INPUT_SHIFT)-1))
#define CFG_INPUT_MASK(x) ((x)&((1U<<(2*CFG_INPUT_SHIFT))-(1U<<CFG_INPUT_SHIFT)))
/* atomic change is allowed */
#define CFG_ATOMIC (1U<<(2*CFG_INPUT_SHIFT))
/* variable is read-only */
#define CFG_READONLY (1U<<(2*CFG_INPUT_SHIFT+1))
/* per-child process callback needs to be called only once */
#define CFG_CB_ONLY_ONCE (1U<<(2*CFG_INPUT_SHIFT+2))
#define CFG_ATOMIC (1U<<(2*CFG_INPUT_SHIFT)) /*!< atomic change is allowed */
#define CFG_READONLY (1U<<(2*CFG_INPUT_SHIFT+1)) /*!< variable is read-only */
#define CFG_CB_ONLY_ONCE (1U<<(2*CFG_INPUT_SHIFT+2)) /*!< per-child process callback needs to be called only once */
typedef int (*cfg_on_change)(void *, str *, str *, void **);
typedef void (*cfg_on_set_child)(str *, str *);
/* strutrure to be used by the module interface */
/*! \brief structrure to be used by the module interface */
typedef struct _cfg_def {
char *name;
unsigned int type;
int min;
int max;
cfg_on_change on_change_cb;
cfg_on_change on_change_cb;
cfg_on_set_child on_set_child_cb;
char *descr;
} cfg_def_t;
/* declares a new cfg group
/*! \brief declares a new cfg group
* handler is set to the memory area where the variables are stored
* return value is -1 on error
*/
@ -81,33 +78,33 @@ int cfg_declare(char *group_name, cfg_def_t *def, void *values, int def_size,
#define cfg_get(gname, handle, var) \
((struct cfg_group_##gname *)handle)->var
/* declares a single variable with integer type */
/*! \brief declares a single variable with integer type */
int cfg_declare_int(char *group_name, char *var_name,
int val, int min, int max, char *descr);
/* declares a single variable with str type */
/*! \brief declares a single variable with str type */
int cfg_declare_str(char *group_name, char *var_name, char *val, char *descr);
/* Add a varibale to a group instance with integer type.
/*! \brief Add a variable to a group instance with integer type.
* The group instance is created if it does not exist.
* wrapper function for new_add_var()
*/
int cfg_ginst_var_int(char *group_name, unsigned int group_id, char *var_name,
int val);
/* Add a varibale to a group instance with string type.
/*! \brief Add a variable to a group instance with string type.
* The group instance is created if it does not exist.
* wrapper function for new_add_var()
*/
int cfg_ginst_var_string(char *group_name, unsigned int group_id, char *var_name,
char *val);
/* Create a new group instance.
/*! \brief Create a new group instance.
* wrapper function for new_add_var()
*/
int cfg_new_ginst(char *group_name, unsigned int group_id);
/* returns the handle of a cfg group */
/*! \brief returns the handle of a cfg group */
void **cfg_get_handle(char *gname);
#endif /* _CFG_H */

@ -76,11 +76,7 @@ struct cfg_group_core default_core_cfg = {
0, /* blst_sctp_imask */
#endif
/* resolver */
#ifdef USE_IPV6
1, /*!< dns_try_ipv6 -- on by default */
#else
0, /*!< dns_try_ipv6 -- off, if no ipv6 support */
#endif
0, /*!< dns_try_naptr -- off by default */
30, /*!< udp transport preference (for naptr) */
20, /*!< tcp transport preference (for naptr) */
@ -92,6 +88,7 @@ struct cfg_group_core default_core_cfg = {
1, /*!< dns_search_list */
1, /*!< dns_search_fmatch */
0, /*!< dns_reinit */
1, /*!< dns_naptr_ignore_rfc */
/* DNS cache */
#ifdef USE_DNS_CACHE
1, /*!< use_dns_cache -- on by default */
@ -220,13 +217,13 @@ cfg_def_t core_cfg_def[] = {
{"dns_try_naptr", CFG_VAR_INT, 0, 1, 0, 0,
#endif
"enable/disable NAPTR DNS lookups"},
{"dns_udp_pref", CFG_VAR_INT, 0, 0, 0, reinit_naptr_proto_prefs,
{"dns_udp_pref", CFG_VAR_INT, 0, 0, 0, reinit_proto_prefs,
"udp protocol preference when doing NAPTR lookups"},
{"dns_tcp_pref", CFG_VAR_INT, 0, 0, 0, reinit_naptr_proto_prefs,
{"dns_tcp_pref", CFG_VAR_INT, 0, 0, 0, reinit_proto_prefs,
"tcp protocol preference when doing NAPTR lookups"},
{"dns_tls_pref", CFG_VAR_INT, 0, 0, 0, reinit_naptr_proto_prefs,
{"dns_tls_pref", CFG_VAR_INT, 0, 0, 0, reinit_proto_prefs,
"tls protocol preference when doing NAPTR lookups"},
{"dns_sctp_pref", CFG_VAR_INT, 0, 0, 0, reinit_naptr_proto_prefs,
{"dns_sctp_pref", CFG_VAR_INT, 0, 0, 0, reinit_proto_prefs,
"sctp protocol preference when doing NAPTR lookups"},
{"dns_retr_time", CFG_VAR_INT, 0, 0, 0, resolv_reinit,
"time in s before retrying a dns request"},
@ -243,6 +240,8 @@ cfg_def_t core_cfg_def[] = {
{"dns_reinit", CFG_VAR_INT|CFG_INPUT_INT, 1, 1, dns_reinit_fixup,
resolv_reinit,
"set to 1 in order to reinitialize the DNS resolver"},
{"dns_naptr_ignore_rfc", CFG_VAR_INT, 0, 0, 0, reinit_proto_prefs,
"ignore the Order field required by RFC 2915"},
/* DNS cache */
#ifdef USE_DNS_CACHE
{"use_dns_cache", CFG_VAR_INT, 0, 1, use_dns_cache_fixup, 0,

@ -80,6 +80,7 @@ struct cfg_group_core {
int dns_search_list;
int dns_search_fmatch;
int dns_reinit;
int dns_naptr_ignore_rfc;
/* DNS cache */
#ifdef USE_DNS_CACHE
int use_dns_cache;

@ -75,6 +75,10 @@
#define MAX_INSTANCE_SIZE 256 /*!< Maximum length of +sip.instance contact header param value buffer */
#define MAX_RUID_SIZE 65 /*!< Maximum length of ruid for location records */
#define MAX_UA_SIZE 255 /*!< Maximum length of user-agent for location records */
#define MY_VIA "Via: SIP/2.0/UDP "
#define MY_VIA_LEN (sizeof(MY_VIA) - 1)

@ -47,10 +47,6 @@
#include "tcp_options.h"
#include "core_cmd.h"
#include "cfg_core.h"
#ifdef USE_SCTP
#include "sctp_options.h"
#include "sctp_server.h"
#endif
#ifdef USE_DNS_CACHE
void dns_cache_debug(rpc_t* rpc, void* ctx);
@ -765,6 +761,11 @@ static void core_tcp_list(rpc_t* rpc, void* c)
struct tcp_connection* con;
int i, len, timeout;
if (tcp_disable) {
rpc->fault(c, 500, "tcp support disabled");
return;
}
TCPCONN_LOCK;
for(i = 0; i < TCP_ID_HASH_SIZE; i++) {
for (con = tcpconn_id_hash[i]; con; con = con->id_next) {
@ -834,133 +835,6 @@ static void core_tcp_list(rpc_t* rpc, void* c)
}
static const char* core_sctp_options_doc[] = {
"Returns active sctp options. With one parameter"
" it returns the sctp options set in the kernel for a specific socket"
"(debugging), with 0 filled in for non-kernel related options."
" The parameter can be: \"default\" | \"first\" | address[:port] ."
" With no parameters it returns ser's idea of the current sctp options"
" (intended non-debugging use).",
/* Documentation string */
0 /* Method signature(s) */
};
static void core_sctp_options(rpc_t* rpc, void* c)
{
#ifdef USE_SCTP
void *handle;
struct cfg_group_sctp t;
char* param;
struct socket_info* si;
char* host;
str hs;
int hlen;
int port;
int proto;
param=0;
if (!sctp_disable){
/* look for optional socket parameter */
if (rpc->scan(c, "*s", &param)>0){
si=0;
if (strcasecmp(param, "default")==0){
si=sendipv4_sctp?sendipv4_sctp:sendipv6_sctp;
}else if (strcasecmp(param, "first")==0){
si=sctp_listen;
}else{
if (parse_phostport(param, &host, &hlen, &port, &proto)!=0){
rpc->fault(c, 500, "bad param (use address, address:port,"
" default or first)");
return;
}
if (proto && proto!=PROTO_SCTP){
rpc->fault(c, 500, "bad protocol in param (only SCTP"
" allowed)");
return;
}
hs.s=host;
hs.len=hlen;
si=grep_sock_info(&hs, port, PROTO_SCTP);
if (si==0){
rpc->fault(c, 500, "not listening on sctp %s", param);
return;
}
}
if (si==0 || si->socket==-1){
rpc->fault(c, 500, "could not find a sctp socket");
return;
}
memset(&t, 0, sizeof(t));
if (sctp_get_cfg_from_sock(si->socket, &t)!=0){
rpc->fault(c, 500, "failed to get socket options");
return;
}
}else{
sctp_options_get(&t);
}
rpc->add(c, "{", &handle);
rpc->struct_add(handle, "ddddddddddddddddddd",
"sctp_socket_rcvbuf", t.so_rcvbuf,
"sctp_socket_sndbuf", t.so_sndbuf,
"sctp_autoclose", t.autoclose,
"sctp_send_ttl", t.send_ttl,
"sctp_send_retries", t.send_retries,
"sctp_assoc_tracking", t.assoc_tracking,
"sctp_assoc_reuse", t.assoc_reuse,
"sctp_max_assocs", t.max_assocs,
"sctp_srto_initial", t.srto_initial,
"sctp_srto_max", t.srto_max,
"sctp_srto_min", t.srto_min,
"sctp_asocmaxrxt", t.asocmaxrxt,
"sctp_init_max_attempts", t.init_max_attempts,
"sctp_init_max_timeo",t.init_max_timeo,
"sctp_hbinterval", t.hbinterval,
"sctp_pathmaxrxt", t.pathmaxrxt,
"sctp_sack_delay", t.sack_delay,
"sctp_sack_freq", t.sack_freq,
"sctp_max_burst", t.max_burst
);
}else{
rpc->fault(c, 500, "sctp support disabled");
}
#else
rpc->fault(c, 500, "sctp support not compiled");
#endif
}
static const char* core_sctpinfo_doc[] = {
"Returns sctp related info.", /* Documentation string */
0 /* Method signature(s) */
};
static void core_sctpinfo(rpc_t* rpc, void* c)
{
#ifdef USE_SCTP
void *handle;
struct sctp_gen_info i;
if (!sctp_disable){
sctp_get_info(&i);
rpc->add(c, "{", &handle);
rpc->struct_add(handle, "ddd",
"opened_connections", i.sctp_connections_no,
"tracked_connections", i.sctp_tracked_no,
"total_connections", i.sctp_total_connections
);
}else{
rpc->fault(c, 500, "sctp support disabled");
}
#else
rpc->fault(c, 500, "sctp support not compiled");
#endif
}
static const char* core_udp4rawinfo_doc[] = {
"Returns udp4_raw related info.", /* Documentation string */
0 /* Method signature(s) */
@ -1106,9 +980,6 @@ static rpc_export_t core_rpc_methods[] = {
{"core.tcp_info", core_tcpinfo, core_tcpinfo_doc, 0},
{"core.tcp_options", core_tcp_options, core_tcp_options_doc,0},
{"core.tcp_list", core_tcp_list, core_tcp_list_doc,0},
{"core.sctp_options", core_sctp_options, core_sctp_options_doc,
0},
{"core.sctp_info", core_sctpinfo, core_sctpinfo_doc, 0},
{"core.udp4_raw_info", core_udp4rawinfo, core_udp4rawinfo_doc,
0},
{"core.aliases_list", core_aliases_list, core_aliases_list_doc, 0},

@ -89,12 +89,20 @@ static int grp_no; /* number of groups */
/** counters array. a[proc_no][counter_id] =>
_cnst_vals[proc_no*cnts_no+counter_id] */
counter_array_t* _cnts_vals;
counter_array_t* _cnts_vals = 0;
int _cnts_row_len; /* number of elements per row */
static int cnts_no; /* number of registered counters */
static int cnts_max_rows; /* set to 0 if not yet fully init */
int counters_initialized(void)
{
if (unlikely(_cnts_vals == 0)) {
/* not init yet */
return 0;
}
return 1;
}
/** init the coutner hash table(s).
* @return 0 on success, -1 on error.

@ -87,6 +87,7 @@ extern int _cnts_row_len; /* number of elements per row */
int counters_initialized(void);
int init_counters(void);
void destroy_counters(void);
int counters_prefork_init(int max_process_no);

@ -75,11 +75,11 @@ struct lump* insert_cond_lump_after(struct lump* after, enum lump_conditions c,
struct lump* insert_cond_lump_before(struct lump* after, enum lump_conditions c,
enum _hdr_types_t type);
/*! \brief removes an already existing header */
/* set an anchor if there is no existing one at the given offset,
* otherwise return the existing anchor */
struct lump* anchor_lump2(struct sip_msg* msg, int offset, int len, enum _hdr_types_t type,
int *is_ref);
/*! \brief removes an already existing header */
struct lump* del_lump(struct sip_msg* msg, int offset, int len, enum _hdr_types_t type);
/*! \brief set an anchor */
struct lump* anchor_lump(struct sip_msg* msg, int offset, int len, enum _hdr_types_t type);

@ -1891,10 +1891,8 @@ inline static struct dns_hash_entry* dns_cache_do_request(str* name, int type)
#endif /* USE_DNS_CACHE_STATS */
if (type==T_A){
#ifdef USE_IPV6
if (str2ip6(name)!=0)
goto end;
#endif /* USE_IPV6 */
if ((ip=str2ip(name))!=0){
e=dns_cache_mk_ip_entry(name, ip);
if (likely(e))
@ -1902,7 +1900,6 @@ inline static struct dns_hash_entry* dns_cache_do_request(str* name, int type)
goto end; /* we do not cache obvious stuff */
}
}
#ifdef USE_IPV6
else if (type==T_AAAA){
if (str2ip(name)!=0)
goto end;
@ -1913,7 +1910,6 @@ inline static struct dns_hash_entry* dns_cache_do_request(str* name, int type)
goto end;/* we do not cache obvious stuff */
}
}
#endif /* USE_IPV6 */
#ifdef DNS_WATCHDOG_SUPPORT
if (atomic_get(dns_servers_up)==0)
goto end; /* the servers are down, needless to perform the query */
@ -2412,16 +2408,9 @@ inline static struct hostent* dns_entry2he(struct dns_hash_entry* e)
len=4;
break;
case T_AAAA:
#ifdef USE_IPV6
af=AF_INET6;
len=16;
break;
#else /* USE_IPV6 */
LOG(L_ERR, "ERROR: dns_entry2he: IPv6 dns cache entry, but "
"IPv6 support disabled at compile time"
" (recompile with -DUSE_IPV6)\n");
return 0;
#endif /* USE_IPV6 */
default:
LOG(L_CRIT, "BUG: dns_entry2he: wrong entry type %d for %.*s\n",
e->type, e->name_len, e->name);
@ -2472,10 +2461,8 @@ inline static struct hostent* dns_a_get_he(str* name)
struct hostent* he;
e=0;
#ifdef USE_IPV6
if (str2ip6(name)!=0)
return 0;
#endif
if ((ip=str2ip(name))!=0){
return ip_addr2he(name, ip);
}
@ -2488,7 +2475,6 @@ inline static struct hostent* dns_a_get_he(str* name)
}
#ifdef USE_IPV6
/* gethostbyname compatibility: performs an aaaa_lookup and returns a pointer
* to a statical internal hostent structure
* returns 0 on success, <0 on error (see the error codes)
@ -2512,7 +2498,6 @@ inline static struct hostent* dns_aaaa_get_he(str* name)
dns_hash_put(e);
return he;
}
#endif
@ -2527,16 +2512,10 @@ inline static int dns_rr2ip(int type, struct dns_rr* rr, struct ip_addr* ip)
return 0;
break;
case T_AAAA:
#ifdef USE_IPV6
ip->af=AF_INET6;
ip->len=16;
memcpy(ip->u.addr, ((struct aaaa_rdata*)rr->rdata)->ip6, 16);
return 0;
#else /* USE_IPV6 */
LOG(L_ERR, "ERROR: dns_rr2ip: IPv6 dns rr, but IPv6 support"
"disabled at compile time (recompile with "
"-DUSE_IPV6)\n" );
#endif /*USE_IPV6 */
break;
}
return -1;
@ -2554,7 +2533,6 @@ inline static int dns_rr2ip(int type, struct dns_rr* rr, struct ip_addr* ip)
*/
struct hostent* dns_get_he(str* name, int flags)
{
#ifdef USE_IPV6
struct hostent* he;
if ((flags&(DNS_IPV6_FIRST|DNS_IPV6_ONLY))){
@ -2570,9 +2548,6 @@ struct hostent* dns_get_he(str* name, int flags)
he=dns_aaaa_get_he(name);
}
return he;
#else /* USE_IPV6 */
return dns_a_get_he(name);
#endif /* USE_IPV6 */
}
@ -2624,7 +2599,8 @@ struct hostent* dns_resolvehost(char* name)
ret = _resolvehost(name);
if(unlikely(!ret)){
/* increment dns error counter */
counter_inc(dns_cnts_h.failed_dns_req);
if(counters_initialized())
counter_inc(dns_cnts_h.failed_dns_req);
}
return ret;
}
@ -2705,42 +2681,23 @@ struct hostent* dns_srv_sip_resolvehost(str* name, unsigned short* port,
}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);
}
if(srv_proto==PROTO_WS || srv_proto==PROTO_WS) {
/* no srv records for web sockets */
return 0;
}
switch(srv_proto){
case PROTO_NONE: /* no proto specified, use udp */
if (proto)
*proto=PROTO_UDP;
/* no break */
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';
len=SRV_UDP_PREFIX_LEN + name->len;
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';
len=SRV_TCP_PREFIX_LEN + name->len;
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';
len=SRV_TLS_PREFIX_LEN + name->len;
break;
case PROTO_SCTP:
memcpy(tmp, SRV_SCTP_PREFIX, SRV_SCTP_PREFIX_LEN);
memcpy(tmp+SRV_SCTP_PREFIX_LEN, name->s, name->len);
tmp[SRV_SCTP_PREFIX_LEN + name->len] = '\0';
len=SRV_SCTP_PREFIX_LEN + name->len;
create_srv_name(srv_proto, name, tmp);
break;
default:
LOG(L_CRIT, "BUG: sip_resolvehost: unknown proto %d\n",
@ -2871,17 +2828,13 @@ struct hostent* dns_naptr_sip_resolvehost(str* name, unsigned short* port,
*proto=PROTO_UDP; /* just in case we don't find another */
/* check if it's an ip address */
if ( ((tmp_ip=str2ip(name))!=0)
#ifdef USE_IPV6
|| ((tmp_ip=str2ip6(name))!=0)
#endif
){
/* we are lucky, this is an ip address */
#ifdef USE_IPV6
if (((dns_flags&DNS_IPV4_ONLY) && (tmp_ip->af==AF_INET6))||
((dns_flags&DNS_IPV6_ONLY) && (tmp_ip->af==AF_INET))){
return 0;
}
#endif
*port=SIP_PORT;
return ip_addr2he(name, tmp_ip);
}
@ -2984,10 +2937,8 @@ inline static int dns_a_resolve( struct dns_hash_entry** e,
ret=-E_DNS_NO_IP;
if (*e==0){ /* do lookup */
/* if ip don't set *e */
#ifdef USE_IPV6
if (str2ip6(name)!=0)
goto error;
#endif
if ((tmp=str2ip(name))!=0){
*ip=*tmp;
*rr_no=0;
@ -3017,7 +2968,6 @@ error:
}
#ifdef USE_IPV6
/* lookup, fills the dns_entry pointer and the ip addr.
* (with the first good ip). if *e ==0 does the a lookup, and changes it
* to the result, if not it uses the current value and tries to use
@ -3064,7 +3014,6 @@ inline static int dns_aaaa_resolve( struct dns_hash_entry** e,
error:
return ret;
}
#endif /* USE_IPV6 */
@ -3089,7 +3038,6 @@ inline static int dns_ip_resolve( struct dns_hash_entry** e,
ret=-E_DNS_NO_IP;
if (*e==0){ /* first call */
#ifdef USE_IPV6
if ((flags&(DNS_IPV6_FIRST|DNS_IPV6_ONLY))){
ret=dns_aaaa_resolve(e, rr_no, name, ip);
if (ret>=0) return ret;
@ -3102,9 +3050,6 @@ inline static int dns_ip_resolve( struct dns_hash_entry** e,
}else if (!(flags&(DNS_IPV6_ONLY|DNS_IPV4_ONLY))){
ret=dns_aaaa_resolve(e, rr_no, name, ip);
}
#else /* USE_IPV6 */
ret=dns_a_resolve(e, rr_no, name, ip);
#endif /* USE_IPV6 */
}else if ((*e)->type==T_A){
/* continue A resolving */
/* retrieve host name from the hash entry (ignore name which might
@ -3112,7 +3057,6 @@ inline static int dns_ip_resolve( struct dns_hash_entry** e,
host.s=(*e)->name;
host.len=(*e)->name_len;
ret=dns_a_resolve(e, rr_no, &host, ip);
#ifdef USE_IPV6
if (ret>=0) return ret;
if (!(flags&(DNS_IPV6_ONLY|DNS_IPV6_FIRST|DNS_IPV4_ONLY))){
/* not found, try with AAAA */
@ -3123,13 +3067,11 @@ inline static int dns_ip_resolve( struct dns_hash_entry** e,
/* delay original record release until we're finished with host*/
dns_hash_put(orig);
}
#endif /* USE_IPV6 */
}else if ((*e)->type==T_AAAA){
/* retrieve host name from the hash entry (ignore name which might
be null when continuing a srv lookup) */
host.s=(*e)->name;
host.len=(*e)->name_len;
#ifdef USE_IPV6
/* continue AAAA resolving */
ret=dns_aaaa_resolve(e, rr_no, &host, ip);
if (ret>=0) return ret;
@ -3142,15 +3084,6 @@ inline static int dns_ip_resolve( struct dns_hash_entry** e,
/* delay original record release until we're finished with host*/
dns_hash_put(orig);
}
#else /* USE_IPV6 */
/* ipv6 disabled, try with A */
orig=*e;
*e=0;
*rr_no=0;
ret=dns_a_resolve(e, rr_no, &host, ip);
/* delay original record release until we're finished with host*/
dns_hash_put(orig);
#endif /* USE_IPV6 */
}else{
LOG(L_CRIT, "BUG: dns_ip_resolve: invalid record type %d\n",
(*e)->type);
@ -3282,23 +3215,24 @@ error:
* h must be initialized prior to calling this function and can be used to
* get the subsequent ips
* returns: <0 on error
* 0 on success and it fills *ip, *port, dns_sip_resolve_h
* WARNING: when finished, dns_sip_resolve_put(h) must be called!
* 0 on success and it fills *ip, *port, *h
*/
inline static int dns_srv_sip_resolve(struct dns_srv_handle* h, str* name,
struct ip_addr* ip, unsigned short* port, char* proto,
int flags)
{
struct dns_srv_proto srv_proto_list[PROTO_LAST];
static char tmp[MAX_DNS_NAME]; /* tmp. buff. for SRV lookups */
int len;
str srv_name;
struct ip_addr* tmp_ip;
int ret;
struct hostent* he;
char srv_proto;
size_t i,list_len;
char origproto;
origproto = *proto;
if (dns_hash==0){ /* not init => use normal, non-cached version */
LOG(L_WARN, "WARNING: dns_sip_resolve: called before dns cache"
LOG(L_WARN, "WARNING: dns_srv_sip_resolve: called before dns cache"
" initialization\n");
h->srv=h->a=0;
he=_sip_resolvehost(name, port, proto);
@ -3308,92 +3242,63 @@ inline static int dns_srv_sip_resolve(struct dns_srv_handle* h, str* name,
}
return -E_DNS_NO_SRV;
}
len=0;
if ((h->srv==0) && (h->a==0)){ /* first call */
if (proto){ /* makes sure we have a protocol set*/
if (*proto==0)
*proto=srv_proto=PROTO_UDP; /* default */
else
srv_proto=*proto;
}else{
srv_proto=PROTO_UDP;
if (proto && *proto==0){ /* makes sure we have a protocol set*/
*proto=PROTO_UDP; /* default */
}
h->port=(srv_proto==PROTO_TLS)?SIPS_PORT:SIP_PORT; /* just in case we
h->port=(*proto==PROTO_TLS)?SIPS_PORT:SIP_PORT; /* just in case we
don't find another */
h->proto=srv_proto; /* store initial protocol */
h->proto=*proto; /* store initial protocol */
if (port){
if (*port==0){
/* try SRV if initial call & no port specified
* (draft-ietf-sip-srv-06) */
if ((name->len+SRV_MAX_PREFIX_LEN+1)>MAX_DNS_NAME){
LOG(L_WARN, "WARNING: dns_sip_resolvehost: domain name too"
LOG(L_WARN, "WARNING: dns_srv_sip_resolve: domain name too"
" long (%d), unable to perform SRV lookup\n",
name->len);
}else{
/* check if it's an ip address */
if ( ((tmp_ip=str2ip(name))!=0)
#ifdef USE_IPV6
|| ((tmp_ip=str2ip6(name))!=0)
#endif
){
/* we are lucky, this is an ip address */
#ifdef USE_IPV6
if (((flags&DNS_IPV4_ONLY) && (tmp_ip->af==AF_INET6))||
((flags&DNS_IPV6_ONLY) && (tmp_ip->af==AF_INET))){
return -E_DNS_AF_MISMATCH;
}
#endif
*ip=*tmp_ip;
*port=h->port;
/* proto already set */
return 0;
}
switch(srv_proto){
case PROTO_NONE: /* no proto specified, use udp */
if (proto)
*proto=PROTO_UDP;
/* no break */
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';
len=SRV_UDP_PREFIX_LEN + name->len;
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';
len=SRV_TCP_PREFIX_LEN + name->len;
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';
len=SRV_TLS_PREFIX_LEN + name->len;
break;
case PROTO_SCTP:
memcpy(tmp, SRV_SCTP_PREFIX, SRV_SCTP_PREFIX_LEN);
memcpy(tmp+SRV_SCTP_PREFIX_LEN, name->s, name->len);
tmp[SRV_SCTP_PREFIX_LEN + name->len] = '\0';
len=SRV_SCTP_PREFIX_LEN + name->len;
break;
default:
LOG(L_CRIT, "BUG: sip_resolvehost: "
"unknown proto %d\n", (int)srv_proto);
return -E_DNS_CRITICAL;
}
srv_name.s=tmp;
srv_name.len=len;
if ((ret=dns_srv_resolve_ip(h, &srv_name, ip,
port, flags))>=0)
{
/* looping on the ordered list until we found a protocol what has srv record */
list_len = create_srv_pref_list(&origproto, srv_proto_list);
for (i=0; i<list_len;i++) {
switch (srv_proto_list[i].proto) {
case PROTO_UDP:
case PROTO_TCP:
case PROTO_TLS:
case PROTO_SCTP:
create_srv_name(srv_proto_list[i].proto, name, tmp);
break;
default:
LOG(L_CRIT, "BUG: dns_srv_sip_resolve: "
"unknown proto %d\n", (int)srv_proto_list[i].proto);
return -E_DNS_CRITICAL;
}
srv_name.s=tmp;
srv_name.len=strlen(tmp);
if ((ret=dns_srv_resolve_ip(h, &srv_name, ip, port, flags))>=0)
{
h->proto = *proto = srv_proto_list[i].proto;
#ifdef DNS_CACHE_DEBUG
DBG("dns_sip_resolve(%.*s, %d, %d), srv0, ret=%d\n",
name->len, name->s, h->srv_no, h->ip_no, ret);
DBG("dns_srv_sip_resolve(%.*s, %d, %d), srv0, ret=%d\n",
name->len, name->s, h->srv_no, h->ip_no, ret);
#endif
/* proto already set */
return ret;
return ret;
}
}
}
}else{ /* if (*port==0) */
@ -3408,13 +3313,12 @@ inline static int dns_srv_sip_resolve(struct dns_srv_handle* h, str* name,
ret=dns_srv_resolve_ip(h, &srv_name, ip, port, flags);
if (proto)
*proto=h->proto;
DBG("dns_sip_resolve(%.*s, %d, %d), srv, ret=%d\n",
DBG("dns_srv_sip_resolve(%.*s, %d, %d), srv, ret=%d\n",
name->len, name->s, h->srv_no, h->ip_no, ret);
return ret;
}
/*skip_srv:*/
if (name->len >= MAX_DNS_NAME) {
LOG(L_ERR, "dns_sip_resolve: domain name too long\n");
LOG(L_ERR, "dns_srv_sip_resolve: domain name too long\n");
return -E_DNS_NAME_TOO_LONG;
}
ret=dns_ip_resolve(&h->a, &h->ip_no, name, ip, flags);
@ -3423,7 +3327,7 @@ inline static int dns_srv_sip_resolve(struct dns_srv_handle* h, str* name,
if (proto)
*proto=h->proto;
#ifdef DNS_CACHE_DEBUG
DBG("dns_sip_resolve(%.*s, %d, %d), ip, ret=%d\n",
DBG("dns_srv_sip_resolve(%.*s, %d, %d), ip, ret=%d\n",
name->len, name->s, h->srv_no, h->ip_no, ret);
#endif
return ret;
@ -3453,11 +3357,12 @@ inline static int dns_naptr_sip_resolve(struct dns_srv_handle* h, str* name,
struct ip_addr* tmp_ip;
naptr_bmp_t tried_bmp;
struct dns_hash_entry* e;
char n_proto;
char n_proto, origproto;
str srv_name;
int ret;
ret=-E_DNS_NO_NAPTR;
origproto=*proto;
if (dns_hash==0){ /* not init => use normal, non-cached version */
LOG(L_WARN, "WARNING: dns_sip_resolve: called before dns cache"
" initialization\n");
@ -3475,17 +3380,13 @@ inline static int dns_naptr_sip_resolve(struct dns_srv_handle* h, str* name,
/* check if it's an ip address */
if ( ((tmp_ip=str2ip(name))!=0)
#ifdef USE_IPV6
|| ((tmp_ip=str2ip6(name))!=0)
#endif
){
/* we are lucky, this is an ip address */
#ifdef USE_IPV6
if (((flags&DNS_IPV4_ONLY) && (tmp_ip->af==AF_INET6))||
((flags&DNS_IPV6_ONLY) && (tmp_ip->af==AF_INET))){
return -E_DNS_AF_MISMATCH;
}
#endif
*ip=*tmp_ip;
h->port=SIP_PORT;
h->proto=*proto;
@ -3517,6 +3418,7 @@ inline static int dns_naptr_sip_resolve(struct dns_srv_handle* h, str* name,
from previous dns_srv_sip_resolve calls */
}
naptr_not_found:
*proto=origproto;
return dns_srv_sip_resolve(h, name, ip, port, proto, flags);
}
#endif /* USE_NAPTR */
@ -3534,7 +3436,6 @@ naptr_not_found:
* get the subsequent ips
* returns: <0 on error
* 0 on success and it fills *ip, *port, dns_sip_resolve_h
* WARNING: when finished, dns_sip_resolve_put(h) must be called!
*/
int dns_sip_resolve(struct dns_srv_handle* h, str* name,
struct ip_addr* ip, unsigned short* port, char* proto,
@ -3564,7 +3465,6 @@ inline static int dns_a_get_ip(str* name, struct ip_addr* ip)
}
#ifdef USE_IPV6
inline static int dns_aaaa_get_ip(str* name, struct ip_addr* ip)
{
struct dns_hash_entry* e;
@ -3577,7 +3477,6 @@ inline static int dns_aaaa_get_ip(str* name, struct ip_addr* ip)
if (e) dns_hash_put(e);
return ret;
}
#endif /* USE_IPV6 */
@ -4288,7 +4187,6 @@ int dns_cache_add_record(unsigned short type,
}
break;
case T_AAAA:
#ifdef USE_IPV6
ip_addr = str2ip6(value);
if (!ip_addr) {
LOG(L_ERR, "ERROR: Malformed ip address: %.*s\n",
@ -4296,10 +4194,6 @@ int dns_cache_add_record(unsigned short type,
return -1;
}
break;
#else /* USE_IPV6 */
LOG(L_ERR, "ERROR: IPv6 support is disabled\n");
return -1;
#endif /* USE_IPV6 */
case T_SRV:
rr_name = *value;
break;
@ -4596,7 +4490,6 @@ int dns_cache_delete_single_record(unsigned short type,
}
break;
case T_AAAA:
#ifdef USE_IPV6
ip_addr = str2ip6(value);
if (!ip_addr) {
LOG(L_ERR, "ERROR: Malformed ip address: %.*s\n",
@ -4604,10 +4497,6 @@ int dns_cache_delete_single_record(unsigned short type,
return -1;
}
break;
#else /* USE_IPV6 */
LOG(L_ERR, "ERROR: IPv6 support is disabled\n");
return -1;
#endif /* USE_IPV6 */
case T_SRV:
rr_name = *value;
break;

@ -0,0 +1,55 @@
/*
* $Id$
*
* Copyright (C) 2013 mariuszbi@gmail.com
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*
* DNS wrappers
*/
/*
* History:
* --------
* 2013-03 initial version (marius)
*/
#include "dns_func.h"
#include <netinet/in.h>
#include <resolv.h>
#include <sys/types.h>
#include <netdb.h>
struct hostent;
struct dns_func_t dns_func = {
res_init,
res_search,
gethostbyname,
#ifdef HAVE_GETHOSTBYNAME2
gethostbyname2
#else
NULL
#endif
};
void load_dnsfunc(struct dns_func_t *d) {
dns_func.sr_res_init = d->sr_res_init;
dns_func.sr_res_search = d->sr_res_search;
dns_func.sr_gethostbyname = d->sr_gethostbyname;
dns_func.sr_gethostbyname2 = d->sr_gethostbyname2;
}

@ -0,0 +1,55 @@
/*
* $Id$
*
* Copyright (C) 2013 mariuszbi@gmail.com
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*
* DNS Wrapper functions
*/
/*
* History:
* --------
* 2013-03 initial version (marius)
*/
#ifndef DNS_FUNC_H
#define DNS_FUNC_H
#include <sys/socket.h>
struct hostent;
typedef int (*res_init_t)(void);
typedef int (*res_search_t)(const char*, int, int, unsigned char*, int);
typedef struct hostent* (*gethostbyname_t)(const char*);
typedef struct hostent* (*gethostbyname2_t)(const char*, int);
struct dns_func_t {
res_init_t sr_res_init;
res_search_t sr_res_search;
gethostbyname_t sr_gethostbyname;
gethostbyname2_t sr_gethostbyname2;
};
/*
* initiate structure with system values
*/
//extern struct dns_func_t dns_func;
extern
void load_dnsfunc(struct dns_func_t *d);
#endif

@ -22,20 +22,22 @@ files_list= \
$(COREPATH)/sctp_options.c:sctp \
$(COREPATH)/tcp_options.c:tcp \
$(COREPATH)/modules/tm/config.c:tm \
$(COREPATH)/modules_k/registrar/config.c:registrar \
$(COREPATH)/modules_k/siputils/config.c:siputils \
$(COREPATH)/modules_s/maxfwd/maxfwd.c:maxfwd \
$(COREPATH)/modules/registrar/config.c:registrar \
$(COREPATH)/modules/siputils/config.c:siputils \
$(COREPATH)/modules/maxfwd/maxfwd.c:maxfwd \
$(COREPATH)/modules/carrierroute/config.c:carrierroute \
$(COREPATH)/modules/malloc_test/malloc_test.c:malloc_test \
$(COREPATH)/modules/tls/tls_cfg.c:tls \
$(COREPATH)/modules_k/dispatcher/config.c:dispatcher
$(COREPATH)/modules/dispatcher/config.c:dispatcher \
$(COREPATH)/modules/websocket/config.c:websocket \
$(COREPATH)/modules/outbound/config.c:outbound \
$(COREPATH)/modules/stun/config.c:stun
# list of excluded groups
grp_exclude=pa
# list of file prefixes to exclude (full path needed)
file_exclude= $(COREPATH)/modules_s/tls/
file_exclude= $(COREPATH)/modules/tls/
# special per file group overrides
# format= grp_filename=... ,where filename does not contain the extension
@ -61,7 +63,7 @@ gcc=gcc
# defines used by gcc
c_defs=-D__CPU_i386 -D__OS_linux -DSER_VER=2099099 -DPKG_MALLOC -DSHM_MEM \
-DSHM_MMAP -DDNS_IP_HACK -DUSE_IPV6 -DUSE_MCAST -DUSE_TCP \
-DSHM_MMAP -DDNS_IP_HACK -DUSE_MCAST -DUSE_TCP \
-DUSE_DNS_CACHE -DUSE_DNS_FAILOVER -DUSE_DST_BLACKLIST -DUSE_NAPTR \
-DUSE_TLS -DTLS_HOOKS -DFAST_LOCK -DCC_GCC_LIKE_ASM \
-DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD \

@ -254,8 +254,39 @@ Configuration Variables for core
memory debugging information displayed on exit (flags): 0 -
off, 1 - dump all the pkg used blocks (status), 2 - dump all
the shm used blocks (status), 4 - summary of pkg used blocks, 8
- summary of shm used blocks.
- summary of shm used blocks, 16 - short status instead of
dump.
Default: 3.
Range: 0 - 15.
Range: 0 - 31.
Type: integer.
44. core.mem_safety
safety level for memory operations.
Default: 0.
Type: integer.
45. core.mem_join
join free memory fragments.
Default: 0.
Type: integer.
46. core.corelog
log level for non-critical core error messages.
Default: -1.
Type: integer.
47. core.latency_log
log level for latency limits alert messages.
Default: -1.
Type: integer.
48. core.latency_limit_db
limit is ms for alerting on time consuming db commands.
Default: 0.
Type: integer.
49. core.latency_limit_action
limit is ms for alerting on time consuming config actions.
Default: 0.
Type: integer.

@ -4,62 +4,63 @@ Configuration Variables for registrar
[ this file is autogenerated, do not edit ]
1. registrar.default_expires
1. registrar.realm_pref
Realm prefix to be removed. Default is "".
Default: <unknown:str>.
Type: string.
2. registrar.default_expires
Contains number of second to expire if no expire hf or contact
expire present.
Default: 3600.
Type: integer.
2. registrar.default_expires_range
3. registrar.default_expires_range
Percent from default_expires that will be used in generating
the range for the expire interval.
Default: 0.
Range: 0 - 100.
Type: integer.
3. registrar.min_expires
4. registrar.min_expires
The minimum expires value of a Contact. Value 0 disables the
checking. .
Default: 60.
Type: integer.
4. registrar.max_expires
5. registrar.max_expires
The maximum expires value of a Contact. Value 0 disables the
checking. .
Default: 0.
Type: integer.
5. registrar.max_contacts
6. registrar.max_contacts
The maximum number of Contacts for an AOR. Value 0 disables the
checking. .
Default: 0.
Type: integer.
6. registrar.retry_after
7. registrar.retry_after
If you want to add the Retry-After header field in 5xx replies,
set this parameter to a value grater than zero.
Default: 0.
Type: integer.
7. registrar.case_sensitive
8. registrar.case_sensitive
If set to 1 then AOR comparison will be case sensitive.
Recommended and default is 0, case insensitive.
Default: 0.
Type: integer.
8. registrar.default_q
9. registrar.default_q
The parameter represents default q value for new contacts..
Default: -1.
Range: -1 - 1000.
Type: integer.
9. registrar.append_branches
10. registrar.append_branches
If set to 1(default), lookup will put all contacts found in msg
structure.
Default: 1.
Type: integer.
10. registrar.realm_pref
Realm prefix to be removed. Default is "".
Type: string.

@ -20,121 +20,126 @@ Configuration Variables for tcp
Type: integer.
4. tcp.max_connections
maximum connection number, soft limit.
maximum tcp connections number, soft limit.
Range: 0 - 2147483647.
Type: integer.
5. tcp.no_connect
5. tcp.max_tls_connections
maximum tls connections number, soft limit.
Range: 0 - 2147483647.
Type: integer.
6. tcp.no_connect
if set only accept new connections, never actively open new
ones.
Range: 0 - 1.
Type: integer.
6. tcp.fd_cache
7. tcp.fd_cache
file descriptor cache for tcp_send.
Range: 0 - 1.
Type: integer. Read-only.
7. tcp.async
8. tcp.async
async mode for writes and connects.
Range: 0 - 1.
Type: integer. Read-only.
8. tcp.connect_wait
9. tcp.connect_wait
parallel simultaneous connects to the same dst. (0) or one
connect.
Range: 0 - 1.
Type: integer. Read-only.
9. tcp.conn_wq_max
10. tcp.conn_wq_max
maximum bytes queued for write per connection (depends on
async).
Range: 0 - 1048576.
Type: integer.
10. tcp.wq_max
11. tcp.wq_max
maximum bytes queued for write allowed globally (depends on
async).
Range: 0 - 1073741824.
Type: integer.
11. tcp.defer_accept
12. tcp.defer_accept
0/1 on linux, seconds on freebsd (see docs).
Range: 0 - 3600.
Type: integer. Read-only.
12. tcp.delayed_ack
13. tcp.delayed_ack
initial ack will be delayed and sent with the first data
segment.
Range: 0 - 1.
Type: integer.
13. tcp.syncnt
14. tcp.syncnt
number of syn retransmissions before aborting a connect (0=not
set).
Range: 0 - 1024.
Type: integer.
14. tcp.linger2
15. tcp.linger2
lifetime of orphaned sockets in FIN_WAIT2 state in s (0=not
set).
Range: 0 - 3600.
Type: integer.
15. tcp.keepalive
16. tcp.keepalive
enables/disables keepalives for tcp.
Range: 0 - 1.
Type: integer.
16. tcp.keepidle
17. tcp.keepidle
time before sending a keepalive if the connection is idle
(linux).
Range: 0 - 86400.
Type: integer.
17. tcp.keepintvl
18. tcp.keepintvl
time interval between keepalive probes on failure (linux).
Range: 0 - 86400.
Type: integer.
18. tcp.keepcnt
19. tcp.keepcnt
number of failed keepalives before dropping the connection
(linux).
Range: 0 - 1024.
Type: integer.
19. tcp.crlf_ping
20. tcp.crlf_ping
enable responding to CRLF SIP-level keepalives .
Range: 0 - 1.
Type: integer.
20. tcp.accept_aliases
21. tcp.accept_aliases
turn on/off tcp aliases (see tcp_accept_aliases) .
Range: 0 - 1.
Type: integer.
21. tcp.alias_flags
22. tcp.alias_flags
flags used for adding new aliases (FORCE_ADD:1 , REPLACE:2) .
Range: 0 - 2.
Type: integer.
22. tcp.new_conn_alias_flags
23. tcp.new_conn_alias_flags
flags for the def. aliases for a new conn. (FORCE_ADD:1,
REPLACE:2 .
Range: 0 - 2.
Type: integer.
23. tcp.accept_no_cl
accept TCP messges without Content-Lenght .
24. tcp.accept_no_cl
accept TCP messges without Content-Length .
Range: 0 - 1.
Type: integer.
24. tcp.rd_buf_size
25. tcp.rd_buf_size
internal read buffer size (should be > max. expected datagram).
Range: 512 - 65536.
Range: 512 - 16777216.
Type: integer.
25. tcp.wq_blk_size
26. tcp.wq_blk_size
internal async write block size (debugging use only for now).
Range: 1 - 65535.
Type: integer.

@ -16,95 +16,100 @@ Configuration Variables for tm
Range: 0 - 1.
Type: integer.
3. tm.fr_timer
3. tm.callid_matching
perform callid check in transaction matching.
Default: 0.
Type: integer.
4. tm.fr_timer
timer which hits if no final reply for a request or ACK for a
negative INVITE reply arrives (in milliseconds).
Default: 30000.
Type: integer.
4. tm.fr_inv_timer
5. tm.fr_inv_timer
timer which hits if no final reply for an INVITE arrives after
a provisional message was received (in milliseconds).
Default: 120000.
Type: integer.
5. tm.fr_inv_timer_next
6. tm.fr_inv_timer_next
The value [ms] of fr_inv_timer for subsequent branches during
serial forking..
Default: 30000.
Type: integer.
6. tm.wt_timer
7. tm.wt_timer
time for which a transaction stays in memory to absorb delayed
messages after it completed.
Default: 5000.
Type: integer.
7. tm.delete_timer
8. tm.delete_timer
time after which a to-be-deleted transaction currently ref-ed
by a process will be tried to be deleted again..
Default: 200.
Type: integer.
8. tm.retr_timer1
9. tm.retr_timer1
initial retransmission period (in milliseconds).
Default: 500.
Type: integer.
9. tm.retr_timer2
10. tm.retr_timer2
maximum retransmission period (in milliseconds).
Default: 4000.
Type: integer.
10. tm.max_inv_lifetime
11. tm.max_inv_lifetime
maximum time an invite transaction can live from the moment of
creation.
Default: 180000.
Type: integer.
11. tm.max_noninv_lifetime
12. tm.max_noninv_lifetime
maximum time a non-invite transaction can live from the moment
of creation.
Default: 32000.
Type: integer.
12. tm.noisy_ctimer
13. tm.noisy_ctimer
if set, INVITE transactions that time-out (FR INV timer) will
be always replied.
Default: 1.
Range: 0 - 1.
Type: integer.
13. tm.auto_inv_100
14. tm.auto_inv_100
automatically send 100 to an INVITE.
Default: 1.
Range: 0 - 1.
Type: integer.
14. tm.auto_inv_100_reason
15. tm.auto_inv_100_reason
reason text of the automatically send 100 to an INVITE.
Default: trying -- your call is important to us.
Type: string.
15. tm.unix_tx_timeout
16. tm.unix_tx_timeout
Unix socket transmission timeout, in milliseconds.
Default: 500.
Type: integer.
16. tm.restart_fr_on_each_reply
17. tm.restart_fr_on_each_reply
restart final response timer on each provisional reply.
Default: 1.
Range: 0 - 1.
Type: integer.
17. tm.pass_provisional_replies
18. tm.pass_provisional_replies
enable/disable passing of provisional replies to
TMCB_LOCAL_RESPONSE_OUT callbacks.
Default: 0.
Range: 0 - 1.
Type: integer.
18. tm.aggregate_challenges
19. tm.aggregate_challenges
if the final response is a 401 or a 407, aggregate all the
authorization headers (challenges) (rfc3261 requires this to be
on).
@ -112,27 +117,27 @@ Configuration Variables for tm
Range: 0 - 1.
Type: integer.
19. tm.unmatched_cancel
20. tm.unmatched_cancel
determines how CANCELs with no matching transaction are handled
(0: statefull forwarding, 1: stateless forwarding, 2: drop).
Default: 0.
Range: 0 - 2.
Type: integer.
20. tm.default_code
21. tm.default_code
default SIP response code sent by t_reply(), if the function
cannot retrieve its parameters.
Default: 500.
Range: 400 - 699.
Type: integer.
21. tm.default_reason
22. tm.default_reason
default SIP reason phrase sent by t_reply(), if the function
cannot retrieve its parameters.
Default: Server Internal Error.
Type: string.
22. tm.reparse_invite
23. tm.reparse_invite
if set to 1, the CANCEL and negative ACK requests are
constructed from the INVITE message which was sent out instead
of building them from the received request.
@ -140,55 +145,55 @@ Configuration Variables for tm
Range: 0 - 1.
Type: integer.
23. tm.ac_extra_hdrs
24. tm.ac_extra_hdrs
header fields prefixed by this parameter value are included in
the CANCEL and negative ACK messages if they were present in
the outgoing INVITE (depends on reparse_invite).
Default: <unknown:str>.
Type: string.
24. tm.blst_503
25. tm.blst_503
if set to 1, blacklist 503 SIP response sources.
Default: 0.
Range: 0 - 1.
Type: integer.
25. tm.blst_503_def_timeout
26. tm.blst_503_def_timeout
default 503 blacklist time (in s), when no Retry-After header
is present.
Default: 0.
Type: integer.
26. tm.blst_503_min_timeout
27. tm.blst_503_min_timeout
minimum 503 blacklist time (in s).
Default: 0.
Type: integer.
27. tm.blst_503_max_timeout
28. tm.blst_503_max_timeout
maximum 503 blacklist time (in s).
Default: 3600.
Type: integer.
28. tm.blst_methods_add
29. tm.blst_methods_add
bitmap of method types that trigger blacklisting on transaction
timeouts.
Default: 1.
Type: integer.
29. tm.blst_methods_lookup
30. tm.blst_methods_lookup
Bitmap of method types that are looked-up in the blacklist
before statefull forwarding.
Default: -9.
Type: integer.
30. tm.cancel_b_method
31. tm.cancel_b_method
How to cancel branches on which no replies were received: 0 -
fake reply, 1 - retransmitting the request, 2 - send cancel.
Default: 1.
Range: 0 - 2.
Type: integer.
31. tm.reparse_on_dns_failover
32. tm.reparse_on_dns_failover
if set to 1, the SIP message after a DNS failover is
constructed from the outgoing message buffer of the failed
branch instead of from the received request.
@ -196,13 +201,13 @@ Configuration Variables for tm
Range: 0 - 1.
Type: integer.
32. tm.disable_6xx_block
33. tm.disable_6xx_block
if set to 1, 6xx is treated like a normal reply (breaks rfc).
Default: 0.
Range: 0 - 1.
Type: integer.
33. tm.local_ack_mode
34. tm.local_ack_mode
if set to 1 or 2, local 200 ACKs are sent to the same address
as the corresponding INVITE (1) or the source of the 200 reply
(2) instead of using the contact and the route set (it breaks
@ -212,14 +217,14 @@ Configuration Variables for tm
Range: 0 - 2.
Type: integer.
34. tm.local_cancel_reason
35. tm.local_cancel_reason
if set to 1, a Reason header is added to locally generated
CANCELs (see RFC3326).
Default: 1.
Range: 0 - 1.
Type: integer.
35. tm.e2e_cancel_reason
36. tm.e2e_cancel_reason
if set to 1, Reason headers from received CANCELs are copied
into the corresponding generated hop-by-hop CANCELs.
Default: 1.

@ -57,7 +57,7 @@ gcc=gcc
# defines used by gcc
c_defs=-D__CPU_i386 -D__OS_linux -DSER_VER=2099099 -DPKG_MALLOC -DSHM_MEM \
-DSHM_MMAP -DDNS_IP_HACK -DUSE_IPV6 -DUSE_MCAST -DUSE_TCP \
-DSHM_MMAP -DDNS_IP_HACK -DUSE_MCAST -DUSE_TCP \
-DUSE_DNS_CACHE -DUSE_DNS_FAILOVER -DUSE_DST_BLACKLIST -DUSE_NAPTR \
-DUSE_TLS -DTLS_HOOKS -DFAST_LOCK -DCC_GCC_LIKE_ASM \
-DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD \

@ -22,35 +22,52 @@ docbook_output_dir=docbook
#
files_list= \
$(COREPATH)/core_cmd.c:core \
$(COREPATH)/modules/app_lua/app_lua_mod.c:app_lua \
$(COREPATH)/modules/carrierroute/carrierroute.c:carrierroute \
$(COREPATH)/modules/cfg_rpc/cfg_rpc.c:cfg_rpc \
$(COREPATH)/modules/cnxcc/cnxcc_mod.c:cnxcc \
$(COREPATH)/modules/corex/corex_rpc.c:corex \
$(COREPATH)/modules/counters/counters.c:counters \
$(COREPATH)/modules/ctl/ctl.c:ctl \
$(COREPATH)/modules/db_flatstore/flat_rpc.c:db_flatstore \
$(COREPATH)/modules/db_flatstore/km_flatstore_mod.c:db_flatstore \
$(COREPATH)/modules/db_text/dbtext.c:db_text \
$(COREPATH)/modules/debugger/debugger_api.c:debugger \
$(COREPATH)/modules/dialog/dialog.c:dialog \
$(COREPATH)/modules/dialog_ng/dialog.c:dialog_ng \
$(COREPATH)/modules/dialplan/dialplan.c:dialplan \
$(COREPATH)/modules/dispatcher/dispatcher.c:dispatcher \
$(COREPATH)/modules/domain/domain_mod.c:domain \
$(COREPATH)/modules/drouting/drouting.c:drouting \
$(COREPATH)/modules/htable/htable.c:htable \
$(COREPATH)/modules/ims_usrloc_pcscf/ul_rpc.c:ims_usrloc_pcscf \
$(COREPATH)/modules/ims_usrloc_scscf/ul_rpc.c:ims_usrloc_scscf \
$(COREPATH)/modules/kex/pkg_stats.c:kex \
$(COREPATH)/modules/lcr/lcr_rpc.c:lcr \
$(COREPATH)/modules/malloc_test/malloc_test.c:malloc_test \
$(COREPATH)/modules/mi_rpc/mi_rpc_mod.c:mi_rpc \
$(COREPATH)/modules/msrp/msrp_cmap.c:msrp \
$(COREPATH)/modules/mtree/mtree_mod.c:mtree \
$(COREPATH)/modules/pdt/pdt.c:pdt \
$(COREPATH)/modules/permissions/permissions.c:permissions \
$(COREPATH)/modules/pike/pike_rpc.c:pike \
$(COREPATH)/modules/pipelimit/pipelimit.c:pipelimit \
$(COREPATH)/modules/prefix_route/pr_rpc.c:prefix_route \
$(COREPATH)/modules/presence/presence.c:presence \
$(COREPATH)/modules/pv/pv.c:pv \
$(COREPATH)/modules/ratelimit/ratelimit.c:ratelimit \
$(COREPATH)/modules/sca/sca.c:sca \
$(COREPATH)/modules/sctp/sctp_rpc.c:sctp \
$(COREPATH)/modules/sipcapture/sipcapture.c:sipcapture \
$(COREPATH)/modules/siptrace/siptrace.c:siptrace \
$(COREPATH)/modules/sl/sl_stats.c:sl \
$(COREPATH)/modules/tls/tls_rpc.c:tls \
$(COREPATH)/modules/tm/tm.c:tm \
$(COREPATH)/modules_k/dialog/dialog.c:dialog \
$(COREPATH)/modules_k/dispatcher/dispatcher.c:dispatcher \
$(COREPATH)/modules_k/domain/domain_mod.c:domain \
$(COREPATH)/modules_k/htable/htable.c:htable \
$(COREPATH)/modules_k/kex/pkg_stats.c:kex \
$(COREPATH)/modules_k/uac/uac_reg.c:uac \
$(COREPATH)/modules_k/usrloc/ul_rpc.c:usrloc \
$(COREPATH)/modules_s/cpl-c/cpl_rpc.c:cpl-c \
$(COREPATH)/modules_s/dispatcher/ds_rpc.c:dispatcher_s \
$(COREPATH)/modules_s/domain/domain_rpc.c:domain_s \
$(COREPATH)/modules_s/gflags/gflags.c:gflags \
$(COREPATH)/modules_s/pdt/pdt.c:pdt \
$(COREPATH)/modules_s/pike/rpc.c:pike \
$(COREPATH)/modules_s/presence_b2b/rpc.c:presence_b2b \
$(COREPATH)/modules_s/usrloc/ul_rpc.c:usrloc_s
$(COREPATH)/modules/uac/uac_reg.c:uac \
$(COREPATH)/modules/uid_domain/domain_rpc.c:uid_domain \
$(COREPATH)/modules/uid_gflags/uid_gflags.c:uid_gflags \
$(COREPATH)/modules/usrloc/ul_rpc.c:usrloc \
$(COREPATH)/modules/xhttp_pi/xhttp_pi.c:xhttp_pi
# list of excluded groups
grp_exclude=pa
@ -84,7 +101,7 @@ gcc=gcc
# -D__CPU_i386 -DARCH="i386"
c_defsX= -D__CPU_x86_64 -D__OS_linux -DSER_VER=3003000 -DPKG_MALLOC -DSHM_MEM \
-DVERSION='\"3.3.0-dev2\"' -DARCH='\"x86_64\"' -DOS=linux_ -DOS_QUOTED='\"linux\"' \
-DSHM_MMAP -DDNS_IP_HACK -DUSE_IPV6 -DUSE_MCAST -DUSE_TCP \
-DSHM_MMAP -DDNS_IP_HACK -DUSE_MCAST -DUSE_TCP \
-DUSE_DNS_CACHE -DUSE_DNS_FAILOVER -DUSE_DST_BLACKLIST -DUSE_NAPTR \
-DUSE_TLS -DTLS_HOOKS -DFAST_LOCK -DCC_GCC_LIKE_ASM \
-DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD \

@ -2,23 +2,23 @@
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.dispatcher_s">
<chapter id="rpc_exports.app_lua">
<title>
RPC Exports for dispatcher_s
RPC Exports for app_lua
</title>
<section id="dispatcher.dump"><title>dispatcher.dump</title>
<section id="app_lua.reload"><title>app_lua.reload</title>
<para>
Dump dispatcher set configuration
Reload lua script
</para>
<para>
</para>
</section>
<section id="dispatcher.reload"><title>dispatcher.reload</title>
<section id="app_lua.list"><title>app_lua.list</title>
<para>
Reload dispatcher list from file
list lua scripts
</para>
<para>
</para>

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.carrierroute">
<title>
RPC Exports for carrierroute
</title>
<section id="cr.reload_routes"><title>cr.reload_routes</title>
<para>
Reload routes
</para>
<para>
</para>
</section>
</chapter>

@ -2,31 +2,31 @@
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.cpl-c">
<chapter id="rpc_exports.cnxcc">
<title>
RPC Exports for cpl-c
RPC Exports for cnxcc
</title>
<section id="cpl.load"><title>cpl.load</title>
<section id="cnxcc.active_clients"><title>cnxcc.active_clients</title>
<para>
Load a CPL script to the server.
List of clients with active calls
</para>
<para>
</para>
</section>
<section id="cpl.remove"><title>cpl.remove</title>
<section id="cnxcc.check_client"><title>cnxcc.check_client</title>
<para>
Remove a CPL script from server.
Check specific client calls
</para>
<para>
</para>
</section>
<section id="cpl.get"><title>cpl.get</title>
<section id="cnxcc.kill_call"><title>cnxcc.kill_call</title>
<para>
Return a CPL script.
Kill call using its call ID
</para>
<para>
</para>

@ -163,31 +163,33 @@ RPC Exports for core
</para>
</section>
<section id="core.sctp_options"><title>core.sctp_options</title>
<section id="core.tcp_list"><title>core.tcp_list</title>
<para>
Returns active sctp options. With one parameter it returns the
sctp options set in the kernel for a specific
socket(debugging), with 0 filled in for non-kernel related
options. The parameter can be: &quot;default&quot; |
&quot;first&quot; | address[:port] . With no parameters it
returns ser&apos;s idea of the current sctp options (intended
non-debugging use).
Returns tcp connections details.
</para>
<para>
</para>
</section>
<section id="core.sctp_info"><title>core.sctp_info</title>
<section id="core.udp4_raw_info"><title>core.udp4_raw_info</title>
<para>
Returns sctp related info.
Returns udp4_raw related info.
</para>
<para>
</para>
</section>
<section id="core.udp4_raw_info"><title>core.udp4_raw_info</title>
<section id="core.aliases_list"><title>core.aliases_list</title>
<para>
Returns udp4_raw related info.
List local SIP server host aliases
</para>
<para>
</para>
</section>
<section id="core.sockets_list"><title>core.sockets_list</title>
<para>
List local SIP server listen sockets
</para>
<para>
</para>

@ -2,23 +2,23 @@
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.presence_b2b">
<chapter id="rpc_exports.corex">
<title>
RPC Exports for presence_b2b
RPC Exports for corex
</title>
<section id="presence_b2b.test"><title>presence_b2b.test</title>
<section id="corex.list_sockets"><title>corex.list_sockets</title>
<para>
Testing events.
List listening sockets
</para>
<para>
</para>
</section>
<section id="presence_b2b.trace"><title>presence_b2b.trace</title>
<section id="corex.list_aliases"><title>corex.list_aliases</title>
<para>
Trace events.
List socket aliases
</para>
<para>
</para>

@ -8,9 +8,9 @@ RPC Exports for db_flatstore
</title>
<section id="flatstore.rotate"><title>flatstore.rotate</title>
<section id="flatstore.k_rotate"><title>flatstore.k_rotate</title>
<para>
Documentation missing (flat_rotate_doc).
Close and reopen flatrotate files during log rotation.
</para>
<para>
</para>

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.db_text">
<title>
RPC Exports for db_text
</title>
<section id="db_text.dump"><title>db_text.dump</title>
<para>
Write back to disk modified tables
</para>
<para>
</para>
</section>
</chapter>

@ -10,7 +10,7 @@ RPC Exports for debugger
<section id="dbg.bp"><title>dbg.bp</title>
<para>
Documentation missing (dbg_rpc_bp_doc).
Breakpoint command
</para>
<para>
</para>
@ -32,4 +32,20 @@ RPC Exports for debugger
</para>
</section>
<section id="dbg.mod_level"><title>dbg.mod_level</title>
<para>
Specify module log level
</para>
<para>
</para>
</section>
<section id="dbg.reset_msgid"><title>dbg.reset_msgid</title>
<para>
Reset msgid on all process
</para>
<para>
</para>
</section>
</chapter>

@ -2,15 +2,15 @@
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.usrloc_k">
<chapter id="rpc_exports.dialog_ng">
<title>
RPC Exports for usrloc_k
RPC Exports for dialog_ng
</title>
<section id="ul.dump"><title>ul.dump</title>
<section id="dlg2.list"><title>dlg2.list</title>
<para>
Dump user location tables
Print all dialogs
</para>
<para>
</para>

@ -16,7 +16,7 @@ RPC Exports for dialplan
</para>
</section>
<section id="dialplan.dump"><title>dialplan.dump</title>
<section id="dialplan.translate"><title>dialplan.translate</title>
<para>
Perform dialplan translation
</para>

@ -10,7 +10,7 @@ RPC Exports for domain
<section id="domain.reload"><title>domain.reload</title>
<para>
Reload domain table from database
Reload domain tables from database
</para>
<para>
</para>
@ -18,7 +18,7 @@ RPC Exports for domain
<section id="domain.dump"><title>domain.dump</title>
<para>
Return the contents of domain table
Return the contents of domain and domain_attrs tables
</para>
<para>
</para>

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.drouting">
<title>
RPC Exports for drouting
</title>
<section id="drouting.reload"><title>drouting.reload</title>
<para>
Write back to disk modified tables
</para>
<para>
</para>
</section>
</chapter>

@ -16,4 +16,60 @@ RPC Exports for htable
</para>
</section>
<section id="htable.delete"><title>htable.delete</title>
<para>
Delete one key from a hash table.
</para>
<para>
</para>
</section>
<section id="htable.get"><title>htable.get</title>
<para>
Get one key from a hash table.
</para>
<para>
</para>
</section>
<section id="htable.sets"><title>htable.sets</title>
<para>
Set one key in a hash table to a string value.
</para>
<para>
</para>
</section>
<section id="htable.seti"><title>htable.seti</title>
<para>
Set one key in a hash table to an integer value.
</para>
<para>
</para>
</section>
<section id="htable.listTables"><title>htable.listTables</title>
<para>
List all htables.
</para>
<para>
</para>
</section>
<section id="htable.reload"><title>htable.reload</title>
<para>
Reload hash table.
</para>
<para>
</para>
</section>
<section id="htable.stats"><title>htable.stats</title>
<para>
Statistics about htables.
</para>
<para>
</para>
</section>
</chapter>

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.ims_usrloc_pcscf">
<title>
RPC Exports for ims_usrloc_pcscf
</title>
<section id="ulpcscf.status"><title>ulpcscf.status</title>
<para>
Dump PCSCF contacts and associated identitites
</para>
<para>
</para>
</section>
</chapter>

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.ims_usrloc_scscf">
<title>
RPC Exports for ims_usrloc_scscf
</title>
<section id="ulscscf.status"><title>ulscscf.status</title>
<para>
Dump SCSCF user location tables
</para>
<para>
</para>
</section>
<section id="ulscscf.showimpu"><title>ulscscf.showimpu</title>
<para>
Dump SCSCF IMPU information
</para>
<para>
</para>
</section>
</chapter>

@ -32,4 +32,12 @@ RPC Exports for lcr
</para>
</section>
<section id="lcr.defunct_gw"><title>lcr.defunct_gw</title>
<para>
Defunct gateway until specified time (Unix timestamp).
</para>
<para>
</para>
</section>
</chapter>

@ -8,41 +8,58 @@
<book id="rpc_list" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>RPC Exports List</title>
<bookinfo><revhistory><revision>
<revnumber>sip-router git-0ea931</revnumber>
<date>Fri, 25 Nov 2011 23:59:50 +0100</date>
<revnumber>sip-router git-99c4af</revnumber>
<date>Wed, 04 Dec 2013 14:45:52 +0100</date>
<revremark>
Automatically generated by:
make -C doc/rpc_list all
</revremark>
</revision></revhistory></bookinfo>
<xi:include href="rpc_core.xml"/>
<xi:include href="rpc_app_lua.xml"/>
<xi:include href="rpc_carrierroute.xml"/>
<xi:include href="rpc_cfg_rpc.xml"/>
<xi:include href="rpc_cnxcc.xml"/>
<xi:include href="rpc_corex.xml"/>
<xi:include href="rpc_counters.xml"/>
<xi:include href="rpc_ctl.xml"/>
<xi:include href="rpc_db_flatstore.xml"/>
<xi:include href="rpc_db_flatstore.xml"/>
<xi:include href="rpc_db_text.xml"/>
<xi:include href="rpc_debugger.xml"/>
<xi:include href="rpc_dialog.xml"/>
<xi:include href="rpc_dialog_ng.xml"/>
<xi:include href="rpc_dialplan.xml"/>
<xi:include href="rpc_dispatcher.xml"/>
<xi:include href="rpc_domain.xml"/>
<xi:include href="rpc_drouting.xml"/>
<xi:include href="rpc_htable.xml"/>
<xi:include href="rpc_ims_usrloc_pcscf.xml"/>
<xi:include href="rpc_ims_usrloc_scscf.xml"/>
<xi:include href="rpc_kex.xml"/>
<xi:include href="rpc_lcr.xml"/>
<xi:include href="rpc_malloc_test.xml"/>
<xi:include href="rpc_mi_rpc.xml"/>
<xi:include href="rpc_msrp.xml"/>
<xi:include href="rpc_mtree.xml"/>
<xi:include href="rpc_pdt.xml"/>
<xi:include href="rpc_permissions.xml"/>
<xi:include href="rpc_pike.xml"/>
<xi:include href="rpc_pipelimit.xml"/>
<xi:include href="rpc_prefix_route.xml"/>
<xi:include href="rpc_presence.xml"/>
<xi:include href="rpc_pv.xml"/>
<xi:include href="rpc_ratelimit.xml"/>
<xi:include href="rpc_sca.xml"/>
<xi:include href="rpc_sctp.xml"/>
<xi:include href="rpc_sipcapture.xml"/>
<xi:include href="rpc_siptrace.xml"/>
<xi:include href="rpc_sl.xml"/>
<xi:include href="rpc_tls.xml"/>
<xi:include href="rpc_tm.xml"/>
<xi:include href="rpc_dialog.xml"/>
<xi:include href="rpc_dispatcher.xml"/>
<xi:include href="rpc_domain.xml"/>
<xi:include href="rpc_htable.xml"/>
<xi:include href="rpc_kex.xml"/>
<xi:include href="rpc_uac.xml"/>
<xi:include href="rpc_uid_domain.xml"/>
<xi:include href="rpc_uid_gflags.xml"/>
<xi:include href="rpc_usrloc.xml"/>
<xi:include href="rpc_cpl-c.xml"/>
<xi:include href="rpc_dispatcher_s.xml"/>
<xi:include href="rpc_domain_s.xml"/>
<xi:include href="rpc_gflags.xml"/>
<xi:include href="rpc_pdt.xml"/>
<xi:include href="rpc_pike.xml"/>
<xi:include href="rpc_presence_b2b.xml"/>
<xi:include href="rpc_usrloc_s.xml"/>
<xi:include href="rpc_xhttp_pi.xml"/>
</book>

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.msrp">
<title>
RPC Exports for msrp
</title>
<section id="msrp.cmaplist"><title>msrp.cmaplist</title>
<para>
Return the content of dispatcher sets
</para>
<para>
</para>
</section>
</chapter>

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.mtree">
<title>
RPC Exports for mtree
</title>
<section id="mtree.summary"><title>mtree.summary</title>
<para>
Print summary of loaded mtree tables
</para>
<para>
</para>
</section>
<section id="mtree.reload"><title>mtree.reload</title>
<para>
Reload mtrees from database to memory
</para>
<para>
</para>
</section>
</chapter>

@ -8,17 +8,9 @@ RPC Exports for pdt
</title>
<section id="pdt.add"><title>pdt.add</title>
<section id="pdt.reload"><title>pdt.reload</title>
<para>
Add new prefix/domain translation rule.
</para>
<para>
</para>
</section>
<section id="pdt.delete"><title>pdt.delete</title>
<para>
Delete prefix/domain translation rule.
Reload PDT database records
</para>
<para>
</para>
@ -26,10 +18,9 @@ RPC Exports for pdt
<section id="pdt.list"><title>pdt.list</title>
<para>
List existin prefix/domain translation rules
List PDT memory records
</para>
<para>
Returns an array.
</para>
</section>

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.permissions">
<title>
RPC Exports for permissions
</title>
<section id="permissions.trustedReload"><title>permissions.trustedReload</title>
<para>
Reload permissions trusted table
</para>
<para>
</para>
</section>
<section id="permissions.addressReload"><title>permissions.addressReload</title>
<para>
Reload permissions address table
</para>
<para>
</para>
</section>
<section id="permissions.trustedDump"><title>permissions.trustedDump</title>
<para>
Dump permissions trusted table
</para>
<para>
</para>
</section>
<section id="permissions.addressDump"><title>permissions.addressDump</title>
<para>
Dump permissions address table
</para>
<para>
</para>
</section>
<section id="permissions.subnetDump"><title>permissions.subnetDump</title>
<para>
Dump permissions subnet table
</para>
<para>
</para>
</section>
<section id="permissions.domainDump"><title>permissions.domainDump</title>
<para>
Dump permissions domain name table
</para>
<para>
</para>
</section>
<section id="permissions.testUri"><title>permissions.testUri</title>
<para>
Tests if (URI, Contact) pair is allowed according to allow/deny
files
</para>
<para>
</para>
</section>
</chapter>

@ -10,7 +10,7 @@ RPC Exports for pike
<section id="pike.top"><title>pike.top</title>
<para>
pike.top doc.
pike.top Dump parts of the pike table
</para>
<para>
</para>

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.pipelimit">
<title>
RPC Exports for pipelimit
</title>
<section id="pl.stats"><title>pl.stats</title>
<para>
Print pipelimit statistics: &lt;id&gt; &lt;load&gt;
&lt;counter&gt;
</para>
<para>
</para>
</section>
<section id="pl.get_pipes"><title>pl.get_pipes</title>
<para>
Print pipes info: &lt;id&gt; &lt;algorithm&gt; &lt;limit&gt;
&lt;counter&gt;
</para>
<para>
</para>
</section>
<section id="pl.set_pipe"><title>pl.set_pipe</title>
<para>
Sets a pipe params: &lt;pipe_id&gt; &lt;pipe_algorithm&gt;
&lt;pipe_limit&gt;
</para>
<para>
</para>
</section>
<section id="pl.get_pid"><title>pl.get_pid</title>
<para>
Print PID Controller parameters for the FEEDBACK algorithm:
&lt;ki&gt; &lt;kp&gt; &lt;kd&gt;
</para>
<para>
</para>
</section>
<section id="pl.set_pid"><title>pl.set_pid</title>
<para>
Sets the PID Controller parameters for the FEEDBACK algorithm:
&lt;ki&gt; &lt;kp&gt; &lt;kd&gt;
</para>
<para>
</para>
</section>
<section id="pl.push_load"><title>pl.push_load</title>
<para>
Force the value of the load parameter for FEEDBACK algorithm:
&lt;load&gt;
</para>
<para>
</para>
</section>
</chapter>

@ -10,7 +10,7 @@ RPC Exports for prefix_route
<section id="prefix_route.reload"><title>prefix_route.reload</title>
<para>
Documentation missing (rpc_reload_doc).
Reload prefix routes from DB
</para>
<para>
</para>
@ -18,7 +18,7 @@ RPC Exports for prefix_route
<section id="prefix_route.dump"><title>prefix_route.dump</title>
<para>
Documentation missing (rpc_dump_doc).
Dump the prefix route tree
</para>
<para>
</para>

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.presence">
<title>
RPC Exports for presence
</title>
<section id="presence.cleanup"><title>presence.cleanup</title>
<para>
Manually triggers the cleanup functions for the
active_watchers, presentity, and watchers tables.
</para>
<para>
</para>
</section>
</chapter>

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.pv">
<title>
RPC Exports for pv
</title>
<section id="pv.shvSet"><title>pv.shvSet</title>
<para>
Set a shared variable (args: name type value)
</para>
<para>
</para>
</section>
<section id="pv.shvGet"><title>pv.shvGet</title>
<para>
Get the value of a shared variable. If no argument, dumps all
</para>
<para>
</para>
</section>
</chapter>

@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.sca">
<title>
RPC Exports for sca
</title>
<section id="sca.all_subscriptions"><title>sca.all_subscriptions</title>
<para>
Documentation missing (sca_rpc_show_all_subscriptions_doc).
</para>
<para>
</para>
</section>
<section id="sca.subscription_count"><title>sca.subscription_count</title>
<para>
Documentation missing (sca_rpc_subscription_count_doc).
</para>
<para>
</para>
</section>
<section id="sca.show_subscription"><title>sca.show_subscription</title>
<para>
Documentation missing (sca_rpc_show_subscription_doc).
</para>
<para>
</para>
</section>
<section id="sca.subscribers"><title>sca.subscribers</title>
<para>
Documentation missing (sca_rpc_show_subscribers_doc).
</para>
<para>
</para>
</section>
<section id="sca.deactivate_all_subscriptions"><title>sca.deactivate_all_subscriptions</title>
<para>
Documentation missing
(sca_rpc_deactivate_all_subscriptions_doc).
</para>
<para>
</para>
</section>
<section id="sca.deactivate_subscription"><title>sca.deactivate_subscription</title>
<para>
Documentation missing (sca_rpc_deactivate_subscription_doc).
</para>
<para>
</para>
</section>
<section id="sca.all_appearances"><title>sca.all_appearances</title>
<para>
Documentation missing (sca_rpc_show_all_appearances_doc).
</para>
<para>
</para>
</section>
<section id="sca.show_appearance"><title>sca.show_appearance</title>
<para>
Documentation missing (sca_rpc_show_appearance_doc).
</para>
<para>
</para>
</section>
<section id="sca.seize_appearance"><title>sca.seize_appearance</title>
<para>
Documentation missing (sca_rpc_seize_appearance_doc).
</para>
<para>
</para>
</section>
<section id="sca.update_appearance"><title>sca.update_appearance</title>
<para>
Documentation missing (sca_rpc_update_appearance_doc).
</para>
<para>
</para>
</section>
<section id="sca.release_appearance"><title>sca.release_appearance</title>
<para>
Documentation missing (sca_rpc_release_appearance_doc).
</para>
<para>
</para>
</section>
</chapter>

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.sctp">
<title>
RPC Exports for sctp
</title>
<section id="sctp.options"><title>sctp.options</title>
<para>
Returns active sctp options. With one parameter it returns the
sctp options set in the kernel for a specific
socket(debugging), with 0 filled in for non-kernel related
options. The parameter can be: &quot;default&quot; |
&quot;first&quot; | address[:port] . With no parameters it
returns ser&apos;s idea of the current sctp options (intended
non-debugging use).
</para>
<para>
</para>
</section>
<section id="sctp.info"><title>sctp.info</title>
<para>
Returns sctp related info.
</para>
<para>
</para>
</section>
</chapter>

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.sipcapture">
<title>
RPC Exports for sipcapture
</title>
<section id="sipcapture.status"><title>sipcapture.status</title>
<para>
Get status or turn on/off sipcapture.
</para>
<para>
</para>
</section>
</chapter>

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.siptrace">
<title>
RPC Exports for siptrace
</title>
<section id="siptrace.status"><title>siptrace.status</title>
<para>
Get status or turn on/off siptrace. Parameters: on, off or
check.
</para>
<para>
</para>
</section>
</chapter>

@ -10,7 +10,7 @@ RPC Exports for sl
<section id="sl.stats"><title>sl.stats</title>
<para>
Documentation missing (rpc_stats_doc).
Print reply statistics.
</para>
<para>
</para>

@ -10,7 +10,7 @@ RPC Exports for tls
<section id="tls.reload"><title>tls.reload</title>
<para>
Documentation missing (tls_reload_doc).
Reload TLS configuration file
</para>
<para>
</para>
@ -18,7 +18,7 @@ RPC Exports for tls
<section id="tls.list"><title>tls.list</title>
<para>
Documentation missing (tls_list_doc).
List currently open TLS connections
</para>
<para>
Returns an array.
@ -27,7 +27,7 @@ RPC Exports for tls
<section id="tls.info"><title>tls.info</title>
<para>
Documentation missing (tls_info_doc).
Returns internal tls related info.
</para>
<para>
</para>
@ -35,7 +35,7 @@ RPC Exports for tls
<section id="tls.options"><title>tls.options</title>
<para>
Documentation missing (tls_options_doc).
Dumps all the tls config options.
</para>
<para>
</para>

@ -10,7 +10,7 @@ RPC Exports for tm
<section id="tm.cancel"><title>tm.cancel</title>
<para>
Documentation missing (rpc_cancel_doc).
Cancel a pending transaction
</para>
<para>
</para>
@ -18,7 +18,7 @@ RPC Exports for tm
<section id="tm.reply"><title>tm.reply</title>
<para>
Documentation missing (rpc_reply_doc).
Reply transaction
</para>
<para>
</para>
@ -26,7 +26,7 @@ RPC Exports for tm
<section id="tm.stats"><title>tm.stats</title>
<para>
Documentation missing (tm_rpc_stats_doc).
Print transaction statistics.
</para>
<para>
</para>
@ -34,7 +34,8 @@ RPC Exports for tm
<section id="tm.hash_stats"><title>tm.hash_stats</title>
<para>
Documentation missing (tm_rpc_hash_stats_doc).
Prints hash table statistics (can be used only if tm is
compiled with -DTM_HASH_STATS).
</para>
<para>
</para>
@ -42,7 +43,9 @@ RPC Exports for tm
<section id="tm.t_uac_start"><title>tm.t_uac_start</title>
<para>
Documentation missing (rpc_t_uac_start_doc).
starts a tm uac using a list of string parameters: method,
ruri, dst_uri, send_sock, headers (CRLF separated) and body
(optional)
</para>
<para>
</para>
@ -50,7 +53,9 @@ RPC Exports for tm
<section id="tm.t_uac_wait"><title>tm.t_uac_wait</title>
<para>
Documentation missing (rpc_t_uac_wait_doc).
starts a tm uac and waits for the final reply, using a list of
string parameters: method, ruri, dst_uri send_sock, headers
(CRLF separated) and body (optional)
</para>
<para>
Returns an array.

@ -2,9 +2,9 @@
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.domain_s">
<chapter id="rpc_exports.uid_domain">
<title>
RPC Exports for domain_s
RPC Exports for uid_domain
</title>

@ -2,9 +2,9 @@
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.gflags">
<chapter id="rpc_exports.uid_gflags">
<title>
RPC Exports for gflags
RPC Exports for uid_gflags
</title>

@ -16,4 +16,71 @@ RPC Exports for usrloc
</para>
</section>
<section id="ul.lookup"><title>ul.lookup</title>
<para>
Lookup one AOR in the usrloc location table
</para>
<para>
</para>
</section>
<section id="ul.rm"><title>ul.rm</title>
<para>
Delete a address of record including its contacts
</para>
<para>
</para>
</section>
<section id="ul.rm_contact"><title>ul.rm_contact</title>
<para>
Delete a contact from an AOR record
</para>
<para>
</para>
</section>
<section id="ul.flush"><title>ul.flush</title>
<para>
Flush the usrloc memory cache to DB
</para>
<para>
</para>
</section>
<section id="ul.add"><title>ul.add</title>
<para>
Add a new contact for an address of record
</para>
<para>
</para>
</section>
<section id="ul.db_users"><title>ul.db_users</title>
<para>
Tell number of different unexpired users (AoRs) in database
table (db_mode!=0 only)
</para>
<para>
</para>
</section>
<section id="ul.db_contacts"><title>ul.db_contacts</title>
<para>
Tell number of unexpired contacts in database table (db_mode=3
only)
</para>
<para>
</para>
</section>
<section id="ul.db_expired_contacts"><title>ul.db_expired_contacts</title>
<para>
Tell number of expired contacts in database table (db_mode=3
only)
</para>
<para>
</para>
</section>
</chapter>

@ -1,77 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.usrloc_s">
<title>
RPC Exports for usrloc_s
</title>
<section id="usrloc.stats"><title>usrloc.stats</title>
<para>
Documentation missing (rpc_stats_doc).
</para>
<para>
Returns an array.
</para>
</section>
<section id="usrloc.delete_uid"><title>usrloc.delete_uid</title>
<para>
Documentation missing (rpc_delete_uid_doc).
</para>
<para>
</para>
</section>
<section id="usrloc.delete_contact"><title>usrloc.delete_contact</title>
<para>
Documentation missing (rpc_delete_contact_doc).
</para>
<para>
</para>
</section>
<section id="usrloc.dump"><title>usrloc.dump</title>
<para>
Documentation missing (rpc_dump_doc).
</para>
<para>
</para>
</section>
<section id="usrloc.dump_file"><title>usrloc.dump_file</title>
<para>
Documentation missing (rpc_dump_file_doc).
</para>
<para>
</para>
</section>
<section id="usrloc.flush"><title>usrloc.flush</title>
<para>
Documentation missing (rpc_flush_doc).
</para>
<para>
</para>
</section>
<section id="usrloc.add_contact"><title>usrloc.add_contact</title>
<para>
Documentation missing (rpc_add_contact_doc).
</para>
<para>
</para>
</section>
<section id="usrloc.show_contacts"><title>usrloc.show_contacts</title>
<para>
Documentation missing (rpc_show_contacts_doc).
</para>
<para>
Returns an array.
</para>
</section>
</chapter>

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- this file is autogenerated, do not edit! -->
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<chapter id="rpc_exports.xhttp_pi">
<title>
RPC Exports for xhttp_pi
</title>
<section id="xhttp_pi.reload"><title>xhttp_pi.reload</title>
<para>
Reload the xml framework
</para>
<para>
</para>
</section>
</chapter>

@ -0,0 +1,12 @@
RPC Exports for app_lua
=======================
[ this file is autogenerated, do not edit ]
1. app_lua.reload
Reload lua script
2. app_lua.list
list lua scripts

@ -0,0 +1,9 @@
RPC Exports for carrierroute
============================
[ this file is autogenerated, do not edit ]
1. cr.reload_routes
Reload routes

@ -0,0 +1,15 @@
RPC Exports for cnxcc
=====================
[ this file is autogenerated, do not edit ]
1. cnxcc.active_clients
List of clients with active calls
2. cnxcc.check_client
Check specific client calls
3. cnxcc.kill_call
Kill call using its call ID

@ -69,88 +69,86 @@ RPC Exports for core
18. core.tcp_options
Returns active tcp options.
19. core.sctp_options
Returns active sctp options. With one parameter it returns the
sctp options set in the kernel for a specific
socket(debugging), with 0 filled in for non-kernel related
options. The parameter can be: "default" | "first" |
address[:port] . With no parameters it returns ser's idea of
the current sctp options (intended non-debugging use).
20. core.sctp_info
Returns sctp related info.
21. core.udp4_raw_info
19. core.tcp_list
Returns tcp connections details.
20. core.udp4_raw_info
Returns udp4_raw related info.
22. dns.mem_info
21. core.aliases_list
List local SIP server host aliases
22. core.sockets_list
List local SIP server listen sockets
23. dns.mem_info
dns cache memory info.
23. dns.debug
24. dns.debug
dns debug info.
24. dns.debug_all
25. dns.debug_all
complete dns debug dump
25. dns.view
26. dns.view
dns cache dump in a human-readable format
26. dns.lookup
27. dns.lookup
perform a dns lookup
27. dns.delete_all
28. dns.delete_all
deletes all the non-permanent entries from the DNS cache
28. dns.delete_all_force
29. dns.delete_all_force
deletes all the entries from the DNS cache including the
permanent ones
29. dns.add_a
30. dns.add_a
adds an A record to the DNS cache
30. dns.add_aaaa
31. dns.add_aaaa
adds an AAAA record to the DNS cache
31. dns.add_srv
32. dns.add_srv
adds an SRV record to the DNS cache
32. dns.delete_a
33. dns.delete_a
deletes an A record from the DNS cache
33. dns.delete_aaaa
34. dns.delete_aaaa
deletes an AAAA record from the DNS cache
34. dns.delete_srv
35. dns.delete_srv
deletes an SRV record from the DNS cache
35. dns.delete_naptr
36. dns.delete_naptr
deletes a NAPTR record from the DNS cache
36. dns.delete_cname
37. dns.delete_cname
deletes a CNAME record from the DNS cache
37. dns.delete_txt
38. dns.delete_txt
deletes a TXT record from the DNS cache
38. dns.delete_ebl
39. dns.delete_ebl
deletes an EBL record from the DNS cache
39. dns.delete_ptr
40. dns.delete_ptr
deletes an PTR record from the DNS cache
40. dst_blacklist.mem_info
41. dst_blacklist.mem_info
dst blacklist memory usage info.
41. dst_blacklist.debug
42. dst_blacklist.debug
dst blacklist debug info.
42. dst_blacklist.view
43. dst_blacklist.view
dst blacklist dump in human-readable format.
43. dst_blacklist.delete_all
44. dst_blacklist.delete_all
Deletes all the entries from the dst blacklist except the
permanent ones.
44. dst_blacklist.add
45. dst_blacklist.add
Adds a new entry to the dst blacklist.

@ -0,0 +1,12 @@
RPC Exports for corex
=====================
[ this file is autogenerated, do not edit ]
1. corex.list_sockets
List listening sockets
2. corex.list_aliases
List socket aliases

@ -1,15 +0,0 @@
RPC Exports for cpl-c
=====================
[ this file is autogenerated, do not edit ]
1. cpl.load
Load a CPL script to the server.
2. cpl.remove
Remove a CPL script from server.
3. cpl.get
Return a CPL script.

@ -4,6 +4,6 @@ RPC Exports for db_flatstore
[ this file is autogenerated, do not edit ]
1. flatstore.rotate
Documentation missing (flat_rotate_doc).
1. flatstore.k_rotate
Close and reopen flatrotate files during log rotation.

@ -0,0 +1,9 @@
RPC Exports for db_text
=======================
[ this file is autogenerated, do not edit ]
1. db_text.dump
Write back to disk modified tables

@ -5,7 +5,7 @@ RPC Exports for debugger
1. dbg.bp
Documentation missing (dbg_rpc_bp_doc).
Breakpoint command
2. dbg.ls
List debugging process array
@ -13,3 +13,9 @@ RPC Exports for debugger
3. dbg.trace
Config trace command
4. dbg.mod_level
Specify module log level
5. dbg.reset_msgid
Reset msgid on all process

@ -0,0 +1,9 @@
RPC Exports for dialog_ng
=========================
[ this file is autogenerated, do not edit ]
1. dlg2.list
Print all dialogs

@ -7,6 +7,6 @@ RPC Exports for dialplan
1. dialplan.reload
Reload dialplan table from database
2. dialplan.dump
2. dialplan.translate
Perform dialplan translation

@ -1,12 +0,0 @@
RPC Exports for dispatcher_s
============================
[ this file is autogenerated, do not edit ]
1. dispatcher.dump
Dump dispatcher set configuration
2. dispatcher.reload
Reload dispatcher list from file

@ -5,8 +5,8 @@ RPC Exports for domain
1. domain.reload
Reload domain table from database
Reload domain tables from database
2. domain.dump
Return the contents of domain table
Return the contents of domain and domain_attrs tables

@ -0,0 +1,9 @@
RPC Exports for drouting
========================
[ this file is autogenerated, do not edit ]
1. drouting.reload
Write back to disk modified tables

@ -7,3 +7,24 @@ RPC Exports for htable
1. htable.dump
Dump the contents of hash table.
2. htable.delete
Delete one key from a hash table.
3. htable.get
Get one key from a hash table.
4. htable.sets
Set one key in a hash table to a string value.
5. htable.seti
Set one key in a hash table to an integer value.
6. htable.listTables
List all htables.
7. htable.reload
Reload hash table.
8. htable.stats
Statistics about htables.

@ -0,0 +1,9 @@
RPC Exports for ims_usrloc_pcscf
================================
[ this file is autogenerated, do not edit ]
1. ulpcscf.status
Dump PCSCF contacts and associated identitites

@ -0,0 +1,12 @@
RPC Exports for ims_usrloc_scscf
================================
[ this file is autogenerated, do not edit ]
1. ulscscf.status
Dump SCSCF user location tables
2. ulscscf.showimpu
Dump SCSCF IMPU information

@ -13,3 +13,6 @@ RPC Exports for lcr
3. lcr.dump_rules
Dump the contents of the lcr_rules table.
4. lcr.defunct_gw
Defunct gateway until specified time (Unix timestamp).

@ -0,0 +1,9 @@
RPC Exports for msrp
====================
[ this file is autogenerated, do not edit ]
1. msrp.cmaplist
Return the content of dispatcher sets

@ -0,0 +1,12 @@
RPC Exports for mtree
=====================
[ this file is autogenerated, do not edit ]
1. mtree.summary
Print summary of loaded mtree tables
2. mtree.reload
Reload mtrees from database to memory

@ -4,13 +4,9 @@ RPC Exports for pdt
[ this file is autogenerated, do not edit ]
1. pdt.add
Add new prefix/domain translation rule.
1. pdt.reload
Reload PDT database records
2. pdt.delete
Delete prefix/domain translation rule.
3. pdt.list
List existin prefix/domain translation rules
Returns an array.
2. pdt.list
List PDT memory records

@ -0,0 +1,28 @@
RPC Exports for permissions
===========================
[ this file is autogenerated, do not edit ]
1. permissions.trustedReload
Reload permissions trusted table
2. permissions.addressReload
Reload permissions address table
3. permissions.trustedDump
Dump permissions trusted table
4. permissions.addressDump
Dump permissions address table
5. permissions.subnetDump
Dump permissions subnet table
6. permissions.domainDump
Dump permissions domain name table
7. permissions.testUri
Tests if (URI, Contact) pair is allowed according to allow/deny
files

@ -5,5 +5,5 @@ RPC Exports for pike
1. pike.top
pike.top doc.
pike.top Dump parts of the pike table

@ -0,0 +1,27 @@
RPC Exports for pipelimit
=========================
[ this file is autogenerated, do not edit ]
1. pl.stats
Print pipelimit statistics: <id> <load> <counter>
2. pl.get_pipes
Print pipes info: <id> <algorithm> <limit> <counter>
3. pl.set_pipe
Sets a pipe params: <pipe_id> <pipe_algorithm> <pipe_limit>
4. pl.get_pid
Print PID Controller parameters for the FEEDBACK algorithm:
<ki> <kp> <kd>
5. pl.set_pid
Sets the PID Controller parameters for the FEEDBACK algorithm:
<ki> <kp> <kd>
6. pl.push_load
Force the value of the load parameter for FEEDBACK algorithm:
<load>

@ -5,8 +5,8 @@ RPC Exports for prefix_route
1. prefix_route.reload
Documentation missing (rpc_reload_doc).
Reload prefix routes from DB
2. prefix_route.dump
Documentation missing (rpc_dump_doc).
Dump the prefix route tree

@ -0,0 +1,10 @@
RPC Exports for presence
========================
[ this file is autogenerated, do not edit ]
1. presence.cleanup
Manually triggers the cleanup functions for the
active_watchers, presentity, and watchers tables.

@ -1,12 +0,0 @@
RPC Exports for presence_b2b
============================
[ this file is autogenerated, do not edit ]
1. presence_b2b.test
Testing events.
2. presence_b2b.trace
Trace events.

@ -0,0 +1,12 @@
RPC Exports for pv
==================
[ this file is autogenerated, do not edit ]
1. pv.shvSet
Set a shared variable (args: name type value)
2. pv.shvGet
Get the value of a shared variable. If no argument, dumps all

@ -0,0 +1,40 @@
RPC Exports for sca
===================
[ this file is autogenerated, do not edit ]
1. sca.all_subscriptions
Documentation missing (sca_rpc_show_all_subscriptions_doc).
2. sca.subscription_count
Documentation missing (sca_rpc_subscription_count_doc).
3. sca.show_subscription
Documentation missing (sca_rpc_show_subscription_doc).
4. sca.subscribers
Documentation missing (sca_rpc_show_subscribers_doc).
5. sca.deactivate_all_subscriptions
Documentation missing
(sca_rpc_deactivate_all_subscriptions_doc).
6. sca.deactivate_subscription
Documentation missing (sca_rpc_deactivate_subscription_doc).
7. sca.all_appearances
Documentation missing (sca_rpc_show_all_appearances_doc).
8. sca.show_appearance
Documentation missing (sca_rpc_show_appearance_doc).
9. sca.seize_appearance
Documentation missing (sca_rpc_seize_appearance_doc).
10. sca.update_appearance
Documentation missing (sca_rpc_update_appearance_doc).
11. sca.release_appearance
Documentation missing (sca_rpc_release_appearance_doc).

@ -0,0 +1,17 @@
RPC Exports for sctp
====================
[ this file is autogenerated, do not edit ]
1. sctp.options
Returns active sctp options. With one parameter it returns the
sctp options set in the kernel for a specific
socket(debugging), with 0 filled in for non-kernel related
options. The parameter can be: "default" | "first" |
address[:port] . With no parameters it returns ser's idea of
the current sctp options (intended non-debugging use).
2. sctp.info
Returns sctp related info.

@ -0,0 +1,9 @@
RPC Exports for sipcapture
==========================
[ this file is autogenerated, do not edit ]
1. sipcapture.status
Get status or turn on/off sipcapture.

@ -0,0 +1,10 @@
RPC Exports for siptrace
========================
[ this file is autogenerated, do not edit ]
1. siptrace.status
Get status or turn on/off siptrace. Parameters: on, off or
check.

@ -5,5 +5,5 @@ RPC Exports for sl
1. sl.stats
Documentation missing (rpc_stats_doc).
Print reply statistics.

@ -5,15 +5,15 @@ RPC Exports for tls
1. tls.reload
Documentation missing (tls_reload_doc).
Reload TLS configuration file
2. tls.list
Documentation missing (tls_list_doc).
List currently open TLS connections
Returns an array.
3. tls.info
Documentation missing (tls_info_doc).
Returns internal tls related info.
4. tls.options
Documentation missing (tls_options_doc).
Dumps all the tls config options.

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save