[SR-Dev] first kamailio module ran on the sip-router core

Jan Janak jan at iptel.org
Fri Nov 21 01:44:39 CET 2008


On 21-11 00:59, Andrei Pelinescu-Onciul wrote:
> On Nov 20, 2008 at 23:44, Daniel-Constantin Mierla <miconda at gmail.com> wrote:
> > 
> > 
> > On 11/20/08 22:36, Andrei Pelinescu-Onciul wrote:
> > >siputils is the first kamailio module that did succesfully run on
> > >sip-core.
> > >
> > >I did only 2 small changes:
> > >- added DEFS+=-DKAMAILIO_MOD_INTERFACE to the Makefile
> > >- s/MIN/MIN_int 
> > >
> > >There are a few modules that would need a little bit more changes, like
> > >everything using core send functions (they changed a bit in ser),
> > >do_action() and build_*, but in all this cases these are minor updates.
> > >
> > >More will be compileable as soon as we unify the fixups, but I think the
> > >biggest problem right now is the DB interface (from a module point
> > >of view, we still  haven't unified the config file).
> > >  
> > I think both of them can co-exists. I see no other conflicts than naming 
> > space -- so we need at least renaming of the db directory. Also they can 
> > be moved as library.
> 
> I did some quick experimental work: 
> - copied kamailio db/* to sip-router/lib/sk_dbk
> - edited the lib/print Makefile: changed name to sk_dbk and
>  added INCLUDES=-I.. (hack so I don'thave to change all the includes
>  , like ../str.h to ../../str.h)
> 
> - modifiedkamailio db_mysql:
>  - Makefile - added:
>  DEFS+=-DKAMAILIO_MOD_INTERFACE
>  SERLIBPATH=../../lib
>  SER_LIBS=$(SERLIBPATH)/sr_dbk/sr_dbk
> 
>  - changed all the ../../db/*.h includes to ../../lib/sk_dbk/*.h :
>   perl -i.bak -pe "s#/db/#/lib/sr_dbk/#" *.[ch]
> 
>  
>  and then it compiled! It even loads (I haven't tested if it actually
>  works but probably it does).
> 
> Next I tried speeddial:
>  - same Makefile changes as above
>  - same perl: perl -i.bak -pe "s#/db/#/lib/sr_dbk/#" *.[ch]
>  - replace act.elem[] with act.val[]
>  - update do_action() call:
>    + struct run_act_ctx h;
>    + init_run_actions_ctx(&h);
>    - if (do_action(&act, _m) < 0)
>    + if (do_action(&h, &act, _m) < 0)
> 
> So with very little work (add 3 lines to the makefile and run perl one
> liner) one can convert a kamailio db module to libsr_dbk
>  (kamailio db interface in a library form).
> 
> Luckily there don't seem to be any symbol name conflicts between the 
> ser db api and the kamailio db api so they could coexist in theory
>  (e.g. load both ser mysql and k db_mysql and then you could mix ser db
>  using modules with k db using module).
> 
> Shall I commit the lib, or do we try the hard part and write a 
>  wrapper for kamailio db api using ser db api?

  Heh :-), I actually tried the same thing today on my train ride back. I
  converted both the SER db api and the k. db api into libraries and loaded
  them at the same time.

  I then started working on migrating our ser mysql module with k. db_mysql
  module, but that already takes some changes because there are conflicts
  in headers, but these changes are minor.

  Please commit what you have, I like this approach myself and I was thinking
  about doing the same, this way we can make modules from both projects work
  quickly. I then start working on unifying the db drivers.

     Jan.



More information about the sr-dev mailing list