sip-router
10 years agodebugger: update the module functions types
Andrei Pelinescu-Onciul [Wed, 11 Aug 2010 20:24:46 +0000 (22:24 +0200)]
debugger: update the module functions types

Updated to the current module function types (MODULE*_T), after
the rve_f_params merge.
Removed MODULE_T and added MODULE0_T, MODULE1_T, MODULE2_T,
MODULE1_RVE_T, MODULE2_RVE_T, MODULE3_RVE_T, MODULE4_RVE_T,
MODULE5_RVE_T, MODULE6_RVE_T, MODULEX_RVE_T.

10 years agoMerge remote branch 'origin/andrei/rve_f_params'
Andrei Pelinescu-Onciul [Wed, 11 Aug 2010 20:18:06 +0000 (22:18 +0200)]
Merge remote branch 'origin/andrei/rve_f_params'

Automatic support for expressions or variables in lots of module
functions. It applies to all the module functions declared without
a fixup, with a fixup and the corresponding free_fixup function or
with a compatible ser or kamailio style standard fixup (declared
in sr_module.h or mod_fix.h).
E.g.:  f($a, "b = " + $b);  t_set_fr($v + 2 + $x).
       t_set_fr($foo) (equivalent now with t_set_fr("$foo")).

If the expression is constant, then there is no restriction, all the
module functions can take it as parameter.
E.g.: f("7 *" +" 6 = " + 7 * 6) # equivalent to f("7 * 6 = 42")

* origin/andrei/rve_f_params: (21 commits)
  NEWS: notes about expressions in function parameters
  core: enable RVE fixup support when fixup_free is present
  core: automatically fill known fixup_free functions
  core: functions to get a fixup corresp. fixup_free function
  core: k style fixup_free fixes
  core: added generic fparam fixup_free functions
  core: pvapi: added pv_spec_free_contents()
  core: fix "unsigned" bug in sint2str*()
  core: fix auto-deref. for vars in fparam fixups
  perl(k): use sr31_cmd_export_t
  app_python: use sr31_cmd_export_t
  core: internal module interface changes
  print(s): fparam fixup example
  core: support for RVEs in fparam fixups
  core: rval - don't use static buffer for int conversions
  core: ut.* - BSD licence
  core: ut.h: added sint2strbuf()
  perl(k): update api calls:  s/MODULE_T/MODULE2_T/
  app_python: update api calls:  s/MODULE_T/MODULE2_T
  print(s): more module function examples
  core: support for expressions/variables in function parameters

Conflicts:
NEWS
action.c
modules/app_python/python_msgobj.c
modules_k/perl/openserxs.xs
pkg/kamailio/debian-lenny
pvapi.c
route.c
route_struct.h
sr_module.c

10 years agokamctl: fix make use and make install
Andrei Pelinescu-Onciul [Wed, 11 Aug 2010 17:49:09 +0000 (19:49 +0200)]
kamctl: fix make use and make install

- use $(MAKE) instead of directly using make.
- added targets for the install dirs (create bin_dir, cfg_dir and
  man_dirs if missing). This fixes make -C utils/kamctl install
  (allows installing only kamctl).

10 years agopresence_dialoginfo(k): fix bsd compilation
Andrei Pelinescu-Onciul [Wed, 11 Aug 2010 17:31:14 +0000 (19:31 +0200)]
presence_dialoginfo(k): fix bsd compilation

On FreeBSD don't define _XOPEN_SOURCE (define it only on linux).
It's not needed for strptime() and worse will cause some other
defines to be missing, like INADDR_LOOPBACK ( if_XOPEN_SOURCE
 is defined, __BSD_VISIBLE will be undefined => lots of missing
 defines).

Reported-by: Reported-by: Olle E. Johansson oej edvina net
10 years agoxmlrpc: fix includes and libs
Andrei Pelinescu-Onciul [Wed, 11 Aug 2010 16:56:57 +0000 (18:56 +0200)]
xmlrpc: fix includes and libs

Reported-by: Olle E. Johansson oej edvina net
10 years agosercmd: fix LIBS - don't link -lresolv if not needed
Andrei Pelinescu-Onciul [Wed, 11 Aug 2010 16:51:09 +0000 (18:51 +0200)]
sercmd: fix LIBS - don't link -lresolv if not needed

- link with libresolv only on linux, solaris and darwin
- on solaris link also witl -lxnet and -lnsl

(bugs introduced in b0f00c3348b9)

10 years agoNEWS: notes about Dragonfly BSD support
Andrei Pelinescu-Onciul [Wed, 11 Aug 2010 15:04:14 +0000 (17:04 +0200)]
NEWS: notes about Dragonfly BSD support

10 years agomakefile: Dragonfly BSD support
Vincent Stemen [Wed, 11 Aug 2010 14:58:04 +0000 (16:58 +0200)]
makefile: Dragonfly BSD support

This also simplifies the platform directory path settings so that
the ifeq() statements are not nested 5 levels deep.

Signed-off-by: Andrei Pelinescu-Onciul <andrei@iptel.org>
10 years agosercmd: Patch to add Dragonfly BSD support (makefile)
Vincent Stemen [Wed, 11 Aug 2010 14:49:40 +0000 (16:49 +0200)]
sercmd: Patch to add Dragonfly BSD support (makefile)

Signed-off-by: Andrei Pelinescu-Onciul <andrei@iptel.org>
10 years agodb_text(k) makefile: fix make use
Vincent Stemen [Wed, 11 Aug 2010 14:45:05 +0000 (16:45 +0200)]
db_text(k) makefile: fix make use

This fixes a bug.  It called make directly which breaks on
platforms where it is being compiled under gmake.

Signed-off-by: Andrei Pelinescu-Onciul <andrei@iptel.org>
10 years agomakefile: fix $DESTDIR
Vincent Stemen [Wed, 11 Aug 2010 14:40:41 +0000 (16:40 +0200)]
makefile: fix $DESTDIR

This fixes Makefile.defs to properly handle $DESTDIR as a base
installation directory for packaging, etc (equivalent to BASEDIR).

Signed-off-by: Andrei Pelinescu-Onciul <andrei@iptel.org>
10 years agoNEWS: notes about expressions in function parameters
Andrei Pelinescu-Onciul [Wed, 11 Aug 2010 14:16:54 +0000 (16:16 +0200)]
NEWS: notes about expressions in function parameters

10 years agoMerge remote branch 'origin/andrei/counters'
Andrei Pelinescu-Onciul [Tue, 10 Aug 2010 23:32:07 +0000 (01:32 +0200)]
Merge remote branch 'origin/andrei/counters'

* origin/andrei/counters:
  counters: 2nd parameter of cnt.get rpc is now optional
  snmp(k): fix direct access to stat vars
  counters: doc update
  counters: extended declaration syntax
  sercmd: cnt.help command line completion support
  counters: cnt.help and api update
  sctp: switched to counter arrays + more stats
  tcp: switched to counter arrays + more stats
  core: k statistics counter api update
  core: counters arrays and counters descriptions
  doc: NEWS counters/stats update
  sctp: enable statistics
  tcp: enable tcp statistics
  kex(k): updated to the lastest statistics changes
  kcore stats: rewrote in terms of the counters api
  sercmd: added command line completion for counters
  counters: added docs
  counters: new modules for counters manipulations
  core: counters / statistics support
  sercmd: fix cfg. var name completion

10 years agocounters: 2nd parameter of cnt.get rpc is now optional
Andrei Pelinescu-Onciul [Tue, 10 Aug 2010 23:27:46 +0000 (01:27 +0200)]
counters: 2nd parameter of cnt.get rpc is now optional

If the counter name is missing cnt.get will display the whole
group (equivalent to cnt.grp_get_all).
E.g.:
$ sercmd cnt.get tcp
{
con_reset: 0
con_timeout: 0
connect_failed: 0
connect_success: 0
current_opened_connections: 0
current_write_queue_size: 0
established: 0
local_reject: 0
passive_open: 0
send_timeout: 0
sendq_full: 0
}

$ sercmd cnt.get tcp current_opened_connections
0

10 years agocore: sdp parser - cosmetic fixes (replacing 0 with NULL)
Ovidiu Sas [Mon, 9 Aug 2010 21:58:22 +0000 (17:58 -0400)]
core: sdp parser - cosmetic fixes (replacing 0 with NULL)

10 years agocore: sdp parser - added suport for fmtp attributes
Ovidiu Sas [Mon, 9 Aug 2010 20:38:09 +0000 (16:38 -0400)]
core: sdp parser - added suport for fmtp attributes

10 years agosnmp(k): fix direct access to stat vars
Andrei Pelinescu-Onciul [Mon, 9 Aug 2010 17:05:46 +0000 (19:05 +0200)]
snmp(k): fix direct access to stat vars

The snmp modules used to access directly some stat vars values,
instead of using get_stat_val() (because the kamailio stats are
now a wrapper over sr counters, the stats var definition changed
and it's not possible to access its value directly).

10 years agocounters: doc update
Andrei Pelinescu-Onciul [Mon, 9 Aug 2010 15:41:25 +0000 (17:41 +0200)]
counters: doc update

- document the new format used by the script_counter modparam and
  by the script functions.
- document the new cnt.help rpc.

10 years agosiputils(k): fix bug introduced in the sl unification
Henning Westerholt [Mon, 9 Aug 2010 15:25:14 +0000 (17:25 +0200)]
siputils(k): fix bug introduced in the sl unification

10 years agocounters: extended declaration syntax
Andrei Pelinescu-Onciul [Mon, 9 Aug 2010 15:13:40 +0000 (17:13 +0200)]
counters: extended declaration syntax

Counters declarations can now include a group and a description.
E.g.:
modparam("counters", "script_counter", "test.foo example counter)
(declares counter foo in group test with the description
 "example counter")

The format for the declarations is: [grp.]name[( |:)desc]
'.' separates the group from the counter name and ' ' or ':' the
name from the description.
If the group is missing, the group defined by script_cnt_grp_name
will be used (default "script"). If the description is missing,
 "custom script counter." will be used.

Counter manipulating script functions can now include a group.
The format for the script functions counter parameters is:
 [grp.]name.
E.g.:
cnt.inc("test.foo")

10 years agosercmd: cnt.help command line completion support
Andrei Pelinescu-Onciul [Mon, 9 Aug 2010 15:12:08 +0000 (17:12 +0200)]
sercmd: cnt.help command line completion support

Command line completion support for counter groups and names when
using cnt.help.

10 years agocounters: cnt.help and api update
Andrei Pelinescu-Onciul [Mon, 9 Aug 2010 15:09:03 +0000 (17:09 +0200)]
counters: cnt.help and api update

- new RPC for displaying a counter description, e.g.:
  $ sercmd  cnt.help tcp local_reject
  number of rejected incoming connections.

- counter_register() update (takes an extra parameter: the counter
  description)

10 years agosctp: switched to counter arrays + more stats
Andrei Pelinescu-Onciul [Mon, 9 Aug 2010 15:04:41 +0000 (17:04 +0200)]
sctp: switched to counter arrays + more stats

- use counters arrays
- added counters descriptions
- don't attempt to compile if sctp support or sctp stats support
  are disabled
- more stats: current_opened_connections and
  current_tracked_connections.

10 years agotcp: switched to counter arrays + more stats
Andrei Pelinescu-Onciul [Mon, 9 Aug 2010 15:01:11 +0000 (17:01 +0200)]
tcp: switched to counter arrays + more stats

- use counters arrays
- added counters description/doc
- don't attempt to compile if tcp support or tcp stats support are
  disabled.
- more stats: current_opened_connections and
  current_write_queue_size.

10 years agocore: k statistics counter api update
Andrei Pelinescu-Onciul [Mon, 9 Aug 2010 14:59:57 +0000 (16:59 +0200)]
core: k statistics counter api update

counter_register() takes now an extra parameter (description).

10 years agocore: counters arrays and counters descriptions
Andrei Pelinescu-Onciul [Mon, 9 Aug 2010 14:51:36 +0000 (16:51 +0200)]
core: counters arrays and counters descriptions

- each counter must have a description / help string.
- allow null handles in counter_register().
- counters arrays can be used to conveniently describe and
  register several counters in the same time.
  E.g.:
counter_def_t my_counters_defs[] = {
{&h1, "counter1", 0, 0, 0, "test counter1"},
{&h2, "counter2", 0, 0, 0, "test counter2"},
{0,   "counter3", 0, get_cbk, 0, "counter with callback"},
{0, 0, 0, 0, 0, 0}
};

counter_register_array("my_counters", my_counters_defs);

10 years agodoc: NEWS counters/stats update
Andrei Pelinescu-Onciul [Sun, 8 Aug 2010 22:40:40 +0000 (00:40 +0200)]
doc: NEWS counters/stats update

10 years agosctp: enable statistics
Andrei Pelinescu-Onciul [Sun, 8 Aug 2010 22:35:04 +0000 (00:35 +0200)]
sctp: enable statistics

sctp statistics implemented using the counters api.
Enabled by default (unless compiles with -DNO_SCTP_STATS).
E.g.:
$ sercmd cnt.grp_get_all sctp
{
assoc_shutdown: 1
comm_lost: 0
connect_failed: 1
established: 1
local_reject: 0
remote_shutdown: 1
send_force_retry: 0
sendq_full: 0
}

10 years agotcp: enable tcp statistics
Andrei Pelinescu-Onciul [Sun, 8 Aug 2010 22:16:54 +0000 (00:16 +0200)]
tcp: enable tcp statistics

tcp statistics implemented using the counters api.
Enabled by default (unless compiles with -DNO_TCP_STATS).
E.g.:
$ sercmd cnt.grp_get_all tcp
{
con_reset: 4
con_timeout: 0
connect_failed: 6
connect_success: 1
established: 12
local_reject: 0
passive_open: 11
send_timeout: 0
sendq_full: 0
}

10 years agokex(k): updated to the lastest statistics changes
Andrei Pelinescu-Onciul [Sun, 8 Aug 2010 17:47:06 +0000 (19:47 +0200)]
kex(k): updated to the lastest statistics changes

kex used some lower-level statistics access (some of the functions
and data types that were deleted) and required some minor updates.

10 years agokcore stats: rewrote in terms of the counters api
Andrei Pelinescu-Onciul [Sun, 8 Aug 2010 17:36:48 +0000 (19:36 +0200)]
kcore stats: rewrote in terms of the counters api

Most of the original kamailio statistics functions and data types are now
wrappers over sr counters.
The only important usage difference is that sr counters are
uniquely identified by group and name (one can have counters with
the same name if they are in different groups), while kamailio
stats vars had unique names. This means that when using the
kamailio get_stat(name) the first counter matching that name will
be returned (in the future this kind of usage should be
obsoleted).

Removed functions (not needed):
 get_stats_collector()
 destroy_stats_collector()
Removed data types:
 stats_collector
 module_stats
New functions:
 stats_support() - partially replaces get_stats_collector().
 get_stat_name() - returns the name of a stat_var.
 get_stat_module() - returns the module of a stat_var.

10 years agosercmd: added command line completion for counters
Andrei Pelinescu-Onciul [Sun, 8 Aug 2010 17:33:32 +0000 (19:33 +0200)]
sercmd: added command line completion for counters

Command line completion for counters groups and names, for all the
 counters RPCs defined in the counters module.

10 years agocounters: added docs
Andrei Pelinescu-Onciul [Sun, 8 Aug 2010 17:32:03 +0000 (19:32 +0200)]
counters: added docs

10 years agocounters: new modules for counters manipulations
Andrei Pelinescu-Onciul [Sun, 8 Aug 2010 17:25:07 +0000 (19:25 +0200)]
counters: new modules for counters manipulations

New module for manipulating counters via the script, or RPCs.

Script functions:
cnt_inc(name)
cnt_add(name, val)
cnt_reset(name)

Before using a counter in the script it must be declared using:
modparam("counters", "script_counter", counter_name)

RPCs:
cnt.get grp name    - get counter value
cnt.reset grp name  - reset counter
cnt.grps_list       - list all the counter groups
cnt.var_list grp    - list all the counters names in a group
cnt.grp_get_all grp - list all the counters and their value, in a
                      group

10 years agocore: counters / statistics support
Andrei Pelinescu-Onciul [Sun, 8 Aug 2010 16:41:30 +0000 (18:41 +0200)]
core: counters / statistics support

Efficient counters support (api).
Incrementing or adding a value to a defined counter is extremely
fast at the cost of slower reading (each process has its own
set of counters => no cacheline ping-pong and no expensive atomic
operations).
All counters must be defined before forking (in a module this
means from mod_init() or init_child(rank==PROC_INIT)).
A counter is uniquely identified by its group and its name
(and not only by its name like in kamailio stats).

Example (error checking skipped):
/* before forking, e.g. mod_init() */
counter_handle_t h;
/* declare the counter my_grp.foo */
counter_register(&h, "my_grp", "foo", 0, 0, 0, 0);

/* after forking */
counter_inc(h);

/* getting a counter value, knowing its group and name*/
counter_lookup(&h, "my_grp", "foo");
val = counter_get(h);

10 years agosercmd: fix cfg. var name completion
Andrei Pelinescu-Onciul [Sun, 8 Aug 2010 16:09:17 +0000 (18:09 +0200)]
sercmd: fix cfg. var name completion

In some rare cases cfg. variable name completion did not work properly
(e.g. reusing a command from history, editing it, changing the
 group and attempting command completion again).
This was due to an assumption that the state would be re-initialized
on new commands (which is mostly not true).

10 years agonathelper(k): Core SDP parser integrated into nathelper
Ovidiu Sas [Thu, 5 Aug 2010 22:40:53 +0000 (18:40 -0400)]
nathelper(k): Core SDP parser integrated into nathelper

The nathelper (k version) is using the core SDP parser to
extract the IP and port from the received message.

10 years agocore: enable RVE fixup support when fixup_free is present
Andrei Pelinescu-Onciul [Thu, 5 Aug 2010 22:22:05 +0000 (00:22 +0200)]
core: enable RVE fixup support when fixup_free is present

RVEs can now be used transparently in all module functions that
have registered free_fixup function or that have standard fixup
functions with known corresponding free_fixups. This means all the
module functions that use ser-like fparam style fixups
(sr_module.h) or kamailio style fixups (mod_fix.h).

E.g.:
texops(k):
$del="From";
remove_hf_re("^"+$del);
set_body($body, $content_type);

10 years agocore: automatically fill known fixup_free functions
Andrei Pelinescu-Onciul [Thu, 5 Aug 2010 21:13:12 +0000 (23:13 +0200)]
core: automatically fill known fixup_free functions

When a module is loaded, for each fixup with a missing fixup_free
function fill the fixup_free function if known.
This way if a module uses one of the known standard fixups, the
core will fill the corresponding free fixup function even if it's
missing in the original module or the module uses a ser style
interface (that does not have a way to define free fixups).

10 years agocore: functions to get a fixup corresp. fixup_free function
Andrei Pelinescu-Onciul [Thu, 5 Aug 2010 21:09:26 +0000 (23:09 +0200)]
core: functions to get a fixup corresp. fixup_free function

Added functions  that given a known fixup, returns its
corresponding fixup_free function.
The known fixups are the fparam style fixups and the kamailio
style fixups (from mod_fix.h).

10 years agocore: k style fixup_free fixes
Andrei Pelinescu-Onciul [Thu, 5 Aug 2010 20:55:18 +0000 (22:55 +0200)]
core: k style fixup_free fixes

- always restore the original parameter pointer value in
  fixup_free function.
- fixup_uint_*() re-written (don't use fparam and hence avoid
  a pkg_malloc()).
- remove fixup_free_uint_*(): since the fixup_uint_*() functions
  replace the original string pointer directly with an integer,
  it's never possible to restore the original value => it's not
  possible to have a proper fixup_free_uint_*().
- fixup_regexp_null() and fixup_free_regexp_null() fixed &
  re-written. fixup_regexp_null() now uses a hack to save the
  original pointer so that fixup_free_regexp_null() can restore
  it (now fixup_free_regexp_null() works).
- fixup_pvar_*() and fixup_free_pvar_*() fixed & re-written
  (similar with fixup_regexp_null()).
- fixup_igp_pvar(), fixup_igp_pvar_pvar(), fixup_free_igp_pvar()
  and fixup_free_igp_pvar_pvar() fixed & re-written
  (similar with fixup_regexp_null()).
- added missing fixup_free_* declarations.

10 years agocore: added generic fparam fixup_free functions
Andrei Pelinescu-Onciul [Thu, 5 Aug 2010 20:47:29 +0000 (22:47 +0200)]
core: added generic fparam fixup_free functions

Added generic fparam fixup_free functions that can be used to
clean up after a fparam fixup:

void fparam_free_restore(void** param);
int fixup_free_fparam_all(void** param, int param_no);
int fixup_free_fparam_1(void** param, int param_no);
int fixup_free_fparam_2(void** param, int param_no);

They will free anything that was allocated by the fixup and
restore the parameter pointer to the saved original value.

10 years agocore: pvapi: added pv_spec_free_contents()
Andrei Pelinescu-Onciul [Thu, 5 Aug 2010 20:38:24 +0000 (22:38 +0200)]
core: pvapi: added pv_spec_free_contents()

Added pv_spec_free_contents() that behaves like pv_spec_free(),
but frees only the contents of the pv_spec and not the pv_spec
itself (good for cleaning up pv_specs that are part of other
structures).

10 years agomodules_k/dialog: Remove trailing whitespace.
Timo Reimann [Thu, 5 Aug 2010 16:17:01 +0000 (18:17 +0200)]
modules_k/dialog: Remove trailing whitespace.

10 years agomodules_k/dialog: Provide new fix to prevent "unable to find
Timo Reimann [Thu, 5 Aug 2010 15:48:30 +0000 (17:48 +0200)]
modules_k/dialog: Provide new fix to prevent "unable to find
dialog" WARN messages caused by accessing a dialog in the
"deleted" state (often happens with simultaneous BYE requests when
both UAs hang up at the same time).

This commit uses a different approach where a "deleted" flag is
set in get_dlg() and lookup_dlg() which callers may evaluate.
Callers who only care about existing dialogs can ignore the flag
by passing a NULL argument.

The commit "replaces" 9b7f25d7 and follows up 0723496c.

10 years agomodules_k/dialog: Revert "Prevent 'unable to find dialog' WARN
Timo Reimann [Thu, 5 Aug 2010 15:23:34 +0000 (17:23 +0200)]
modules_k/dialog: Revert "Prevent 'unable to find dialog' WARN
messages caused by accessing a dialog in the "deleted" state".

The approach chosen was incomplete as it requires extending checks
of return values for all calls to get_dlg() and lookup_dlg()
against POINTER_CLOSED_MARKER. Otherwise, it may lead to server
crashes when code mistakes POINTER_CLOSED_MARKER for an existing
dialog. However, having to check against two return values
requires a lot of logic changes.

Therefore, a better approach will be taken in a follow-up commit.

This reverts commit 9b7f25d7196e41cbcc77c1d6e316cb1a8664ed81.

10 years agoMerge branch 'master' of ssh://mariusbucur@git.sip-router.org/sip-router
Marius Bucur [Thu, 5 Aug 2010 08:50:11 +0000 (10:50 +0200)]
Merge branch 'master' of ssh://mariusbucur@git.sip-router.org/sip-router

10 years agoadded missing database files for dbtext and berkley
Marius Bucur [Thu, 5 Aug 2010 08:48:23 +0000 (10:48 +0200)]
added missing database files for dbtext and berkley

10 years agomodules/carrierroute Fixed resource leak in case of error
Marius Zbihlei [Thu, 5 Aug 2010 08:08:17 +0000 (11:08 +0300)]
modules/carrierroute Fixed resource leak in case of error

2 FILE* where leaked(fclose was not called) in file mode on the  error paths.

10 years agoadd new module "matrix" for array lookups
Marius Bucur [Wed, 4 Aug 2010 16:35:31 +0000 (18:35 +0200)]
add new module "matrix" for array lookups

10 years agocore: fix "unsigned" bug in sint2str*()
Andrei Pelinescu-Onciul [Wed, 4 Aug 2010 14:22:11 +0000 (16:22 +0200)]
core: fix "unsigned" bug in sint2str*()

Due to a typo, the sint2str*() functions did not include the sign
most of the times.

10 years agocore: fix auto-deref. for vars in fparam fixups
Andrei Pelinescu-Onciul [Wed, 4 Aug 2010 13:51:46 +0000 (15:51 +0200)]
core: fix auto-deref. for vars in fparam fixups

When an expression was fixed-up at runtime by the core and the
module had fparam-type fixup, the fparam fixup  re-evaluated
the result, e.g.:
$bar=test;
$foo="$bar";
f($foo) => "test" instead of "$bar".

Now all the RVE-enabled fparam fixups will avoid this case.

10 years agoperl(k): use sr31_cmd_export_t
Andrei Pelinescu-Onciul [Wed, 4 Aug 2010 13:50:30 +0000 (15:50 +0200)]
perl(k): use sr31_cmd_export_t

Use the new cmd export interface when calling other modules
functions.

10 years agoapp_python: use sr31_cmd_export_t
Andrei Pelinescu-Onciul [Wed, 4 Aug 2010 13:49:14 +0000 (15:49 +0200)]
app_python: use sr31_cmd_export_t

Use the new command export interface when trying to call other
modules functions.

10 years agocore: internal module interface changes
Andrei Pelinescu-Onciul [Wed, 4 Aug 2010 13:38:58 +0000 (15:38 +0200)]
core: internal module interface changes

Use a new internal representation for the module interface, that
combines the ser & kamailio module interfaces plus some extra
internal stuff.
This allows using extra flags (e.g. the new internal fixup_flags)
and also simplifies all the functions dealing with the module
interface or cmd_exports (since now there is a single internal
interface there's no need to check its version and access it
differently depending on it).
The ser or kamailio module interfaces are converted to the new
sr31 mod interface when the modules are loaded
(register_module()).

10 years agomodules/tm: Fixed memory leak related to several tm function exports
Marius Zbihlei [Mon, 2 Aug 2010 14:26:20 +0000 (17:26 +0300)]
modules/tm: Fixed memory leak related to several tm function exports

Mk_proxy() call allocates a new proxy_t* structure. The free_proxy() call does
not free this structure, it frees only the content. Another pkg_free is necessary
in this case.

10 years agopresence_dialoginfo(k): don't exeed array size in error case
Daniel-Constantin Mierla [Fri, 30 Jul 2010 21:29:43 +0000 (23:29 +0200)]
presence_dialoginfo(k): don't exeed array size in error case

- error handling could get to the size of array as index, resulting in
  out of bounds operation
- patch by Marius-Ovidiu Bucur

10 years agopresence(k): set properly db updated flag
Daniel-Constantin Mierla [Fri, 30 Jul 2010 21:26:35 +0000 (23:26 +0200)]
presence(k): set properly db updated flag

- patch by Marius-Ovidiu Bucur

10 years agopua(k): use the outbound proxy on updates
Daniel-Constantin Mierla [Fri, 30 Jul 2010 18:25:52 +0000 (20:25 +0200)]
pua(k): use the outbound proxy on updates

- patch by Alex Hermann, SF#3035780

10 years agopv: fixed tobody.params transformation
Daniel-Constantin Mierla [Fri, 30 Jul 2010 18:15:13 +0000 (20:15 +0200)]
pv: fixed tobody.params transformation

- len was wrong when having quoted parameters
- patch by Alex Hermann, closes SF#3035382

10 years agocore: fix parsing quoted paramers in To header
Daniel-Constantin Mierla [Fri, 30 Jul 2010 18:07:45 +0000 (20:07 +0200)]
core: fix parsing quoted paramers in To header

- fix off-by-one bug for quoted parameter values in parse_to
- patch by Alex Hermann, SF#3035382

10 years agoregistrar(k): reset local contact holder
Daniel-Constantin Mierla [Fri, 30 Jul 2010 17:40:50 +0000 (19:40 +0200)]
registrar(k): reset local contact holder

- when an UA fetches the bindings for a user and the user isn't
  registered, properly return an empty contact.
- closes SF#3035778, patch by Alex Hermann

10 years agoxmlops: new module for xml operations
Daniel-Constantin Mierla [Thu, 29 Jul 2010 18:37:50 +0000 (20:37 +0200)]
xmlops: new module for xml operations

- implements $xml(name=>spec) pseudo-variable (previously was in
  presence_xml)
- new parameter buf_size to control the max size of internal buffer for xml
  document management

10 years agopresence_xml: xml PV moved to xmlops module
Daniel-Constantin Mierla [Thu, 29 Jul 2010 18:23:19 +0000 (20:23 +0200)]
presence_xml: xml PV moved to xmlops module

10 years agomodules_k/sst: Setting AVPs from integer values requires the
Timo Reimann [Thu, 29 Jul 2010 17:09:51 +0000 (19:09 +0200)]
modules_k/sst: Setting AVPs from integer values requires the
PV_TYPE_INT flag to be set.

10 years agotextopsx: new module for text operations
Daniel-Constantin Mierla [Thu, 29 Jul 2010 16:59:47 +0000 (18:59 +0200)]
textopsx: new module for text operations

- it collects functions that have no kamailio or ser
  specific dependecies
- moved here: msg_apply_changes() and change_reply_status()

10 years agotextops(s): change_reply_status() moved to textopsx
Daniel-Constantin Mierla [Thu, 29 Jul 2010 16:54:53 +0000 (18:54 +0200)]
textops(s): change_reply_status() moved to textopsx

10 years agotextops(k): msg_apply_changes() moved to textops
Daniel-Constantin Mierla [Thu, 29 Jul 2010 16:53:42 +0000 (18:53 +0200)]
textops(k): msg_apply_changes() moved to textops

10 years agoreg(k): only store path if indicated by the configuration
Henning Westerholt [Thu, 29 Jul 2010 16:42:27 +0000 (18:42 +0200)]
reg(k): only store path if indicated by the configuration

10 years agoacc_radius(k): new module for RADIUS accounting
Daniel-Constantin Mierla [Thu, 29 Jul 2010 12:48:21 +0000 (14:48 +0200)]
acc_radius(k): new module for RADIUS accounting

- the modules is built out of acc module radius part
- acc module still has the RADIUS accounting inside, available with
  RAD_ACC define like so far - subject to be removed if everyone agrees
- this module can be used together with acc avoiding to recompile acc
  module to enable RAD_ACC, making at least packaging easier
- same cfg parameters and functions used for radius accounting in acc
  module are available in acc_radius

10 years agoacc(k): exported acc API
Daniel-Constantin Mierla [Thu, 29 Jul 2010 12:45:23 +0000 (14:45 +0200)]
acc(k): exported acc API

- internal functions and structures were exported as API to be
  available for new acc engines out of acc module

10 years agocore: new param -A to add cfg preprocesor directives
Daniel-Constantin Mierla [Tue, 27 Jul 2010 21:46:48 +0000 (23:46 +0200)]
core: new param -A to add cfg preprocesor directives

- defines can be specified from command line with option -A
- these defines are available from begining of parsing the config
- examples:
- '-A WITH_AUTH' is like having '#!define WITH_AUTH' at top of cfg
- '-A LISTENIP=127.0.0.1' is like '#!define LISTENIP=127.0.0.1'

10 years agocore: added option '-a' to control auto aliases
Daniel-Constantin Mierla [Tue, 27 Jul 2010 21:20:24 +0000 (23:20 +0200)]
core: added option '-a' to control auto aliases

- enable auto aliases with '-a yes' or -'-a on'
- disable auto aliases with '-a no' or -'-a off'
- the option overwirtes config value of global parameter auto_aliases

10 years agomodules_k/dialog: Add support for spiral detection.
Timo Reimann [Tue, 27 Jul 2010 16:50:31 +0000 (18:50 +0200)]
modules_k/dialog: Add support for spiral detection.

- Introduce module parameter "detect_spirals" which controls
  whether spiraling messages should be detected or not.
- If that flag is set, dlg_onreq() will check incoming message's
  dialog identifier (except for not yet existing To tag) against
  its local set of dialogs. If a match is found, the generation of
  a new dialog will be suppressed.
- New dialog callback DLGCB_SPIRALED may be registered to allow
  custom module actions on occurrence of a spiraling event.

10 years agoauth_db(k): proper initialization for the default column
Henning Westerholt [Tue, 27 Jul 2010 16:51:07 +0000 (18:51 +0200)]
auth_db(k): proper initialization for the default column

10 years agomodules_k/dialog: Prevent "unable to find dialog" WARN messages
Timo Reimann [Tue, 27 Jul 2010 12:37:06 +0000 (14:37 +0200)]
modules_k/dialog: Prevent "unable to find dialog" WARN messages
caused by accessing a dialog in the "deleted" state (often happens
with simultaneous BYE requests when both UAs hang up at the same
time).

- Move POINTER_CLOSED_MARKER from dlg_cb.c into dlg_hash.h for
  common usage.
- in lookup_dlg() and internal_get_dlg(), return
  POINTER_CLOSED_MARKER when dialog is found but in the
  DLG_STATE_DELETED state.
- in dlg_onroute(), abort request processing if dialog is found to
  be in the "deleted" state.

10 years agoreg(k): extend notes about the case_sensitive parameter
Henning Westerholt [Tue, 27 Jul 2010 12:53:57 +0000 (14:53 +0200)]
reg(k): extend notes about the case_sensitive parameter

10 years agomodules_k/dialog: Move comment regarding dialog-destroying
Timo Reimann [Tue, 27 Jul 2010 12:06:11 +0000 (14:06 +0200)]
modules_k/dialog: Move comment regarding dialog-destroying
unreference operation to proper new location.

10 years agoRevert "db_postgres(old API) FS#77: fix BLOBs with postgres"
Henning Westerholt [Mon, 26 Jul 2010 17:01:06 +0000 (19:01 +0200)]
Revert "db_postgres(old API) FS#77: fix BLOBs with postgres"

This reverts commit 2e56720769913c55cacc83fe3a31f44f072e7590.

10 years agomodules_k/presence and modules_k/rls Fixed parse_to() usage
Marius Zbihlei [Mon, 26 Jul 2010 14:39:18 +0000 (17:39 +0300)]
modules_k/presence and modules_k/rls Fixed parse_to() usage

In case of error parse_to returns a pointer to the last parsed character. This is not a strict
error check, as several other modules provide a relaxed way of parsing To header (the uri is still
parseable even if the TO headers are not).

10 years agoauth_db(k): use fixup_var_str_12() for realm param
Daniel-Constantin Mierla [Sun, 25 Jul 2010 20:44:27 +0000 (22:44 +0200)]
auth_db(k): use fixup_var_str_12() for realm param

10 years agoauth_db(k): use post_auth() via auth api
Daniel-Constantin Mierla [Sun, 25 Jul 2010 20:26:14 +0000 (22:26 +0200)]
auth_db(k): use post_auth() via auth api

10 years agoauth(k): module removed
Daniel-Constantin Mierla [Sun, 25 Jul 2010 20:14:12 +0000 (22:14 +0200)]
auth(k): module removed

- use modules/auth insted of this one

10 years agoauth(k) and siputils: moved rpid operations
Daniel-Constantin Mierla [Sun, 25 Jul 2010 20:10:00 +0000 (22:10 +0200)]
auth(k) and siputils: moved rpid operations

- rpid operations moved to siputils module
- it is not much relation between authentication and rpid
- auth(k) is to be removed, functionality replaced by modules/auth

10 years agoosp(k): use siputils api for rpid operations
Daniel-Constantin Mierla [Sun, 25 Jul 2010 20:08:50 +0000 (22:08 +0200)]
osp(k): use siputils api for rpid operations

- rpid operations were moved from auth(k) to siputils module

10 years agokamailio.cfg: updates due to last auth changes
Daniel-Constantin Mierla [Sun, 25 Jul 2010 19:11:14 +0000 (21:11 +0200)]
kamailio.cfg: updates due to last auth changes

10 years agoauth: aaa_avps.h removed
Daniel-Constantin Mierla [Sun, 25 Jul 2010 19:06:54 +0000 (21:06 +0200)]
auth: aaa_avps.h removed

- the file was included only by modules_s/auth_db
- its content was sync'ed to modules_s/auth_db/aaa_avps.h
- this file was no longer needed

10 years agoauth_db(s): updated local aaa_avps.h
Daniel-Constantin Mierla [Sun, 25 Jul 2010 19:05:11 +0000 (21:05 +0200)]
auth_db(s): updated local aaa_avps.h

- local aaa_avps.h was not used, instead was modules/auth/aaa_avps.h
- aaa_avps.h content is taken from modules/auth/aaa_avps.h and now local
  file is used

10 years agoosp(s): removed unused auth/api.h
Daniel-Constantin Mierla [Sun, 25 Jul 2010 18:54:24 +0000 (20:54 +0200)]
osp(s): removed unused auth/api.h

10 years agoauth_radius(s): updated to use modules/auth
Daniel-Constantin Mierla [Sun, 25 Jul 2010 18:53:55 +0000 (20:53 +0200)]
auth_radius(s): updated to use modules/auth

10 years agoauth_db(s): updated to use modules/auth
Daniel-Constantin Mierla [Sun, 25 Jul 2010 18:53:28 +0000 (20:53 +0200)]
auth_db(s): updated to use modules/auth

10 years agoauth_radius(k): updated to use modules/auth
Daniel-Constantin Mierla [Sun, 25 Jul 2010 18:52:59 +0000 (20:52 +0200)]
auth_radius(k): updated to use modules/auth

10 years agoauth_diameter(k): updated to use modules/auth
Daniel-Constantin Mierla [Sun, 25 Jul 2010 18:52:30 +0000 (20:52 +0200)]
auth_diameter(k): updated to use modules/auth

10 years agoauth_db(k): updated to use modules/auth
Daniel-Constantin Mierla [Sun, 25 Jul 2010 18:52:07 +0000 (20:52 +0200)]
auth_db(k): updated to use modules/auth

10 years agoauth(s): module moved to modules/auth
Daniel-Constantin Mierla [Sun, 25 Jul 2010 18:26:38 +0000 (20:26 +0200)]
auth(s): module moved to modules/auth

10 years agoosp(s): update Makefile for libosptk
Daniel-Constantin Mierla [Sun, 25 Jul 2010 13:58:14 +0000 (15:58 +0200)]
osp(s): update Makefile for libosptk

10 years agoauth_db(k): updated to use auth(s) module
Daniel-Constantin Mierla [Sun, 25 Jul 2010 13:48:43 +0000 (15:48 +0200)]
auth_db(k): updated to use auth(s) module

- aliased {www,proxy}_authorize to {www,proxy}_authenticate since they
  perform user authentication
- use the API provided by modules_s/auth, improved functionality and
  security protection comparing with modules_k/auth

10 years agoauth(s): documentation updated
Daniel-Constantin Mierla [Sun, 25 Jul 2010 13:44:38 +0000 (15:44 +0200)]
auth(s): documentation updated

10 years agoauth(s): added enum for cfg return codes
Daniel-Constantin Mierla [Sun, 25 Jul 2010 12:45:32 +0000 (14:45 +0200)]
auth(s): added enum for cfg return codes

- useful to detect if user does not exists or password is wrong
- pv_{www,proxy}_authenticate() functions updated to use them

10 years agoauth(s): new cfg functions
Daniel-Constantin Mierla [Sun, 25 Jul 2010 10:47:25 +0000 (12:47 +0200)]
auth(s): new cfg functions

- pv_www_authenticate(real, passwd, flags)
- pv_proxy_authenticate(real, passwd, flags)
- perform Digest authentication taking password from a parameter
  (can be cfg var)
- username is taken from Auth header
- realm and passwd must have values
- $td (To URI domain) can be used for REGISTER
- $fd (From URI domain) can be used for other SIP requests
- flags - bitmask of
- 1 - the content of password param is HA1/HA1b
- 2 - build challenge header (no qop) and add it in an avp
- 4 - build challenge header (qop=auth) and add it in an avp
- 8 - build challenge header (qop=auth-int) and add it in an avp
- when challenge header is built, append_to_reply() and sl reply
  functions can be used to send appropriate SIP reply to challenge
  for authentication
- www_challenge(realm, flags)
- proxy_challenge(realm, flags)
- send Digest authentication challenge (401 or 407 replies)
- realm must have value
- $td (To URI domain) can be used for REGISTER
- $fd (From URI domain) can be used for other SIP requests
- flags - bitmask of
- 1 - build challenge header (qop=auth) and add it in an avp
- 2 - build challenge header (qop=auth-int) and add it in an avp
- 4 - do not send '500 Internal Server Error' reply
  automatically in failure cases (error code is returned to config)