Module: sip-router Branch: master Commit: 61f5f6a63409f856a03b48e9ced22ad5c724acb2 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=61f5f6a6...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@gmail.com Date: Sat May 25 15:41:27 2013 +0200
sctp: register sctp core api
- done in mod_register() function - initialize the sctp options before modparams
---
modules/sctp/sctp_mod.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 47 insertions(+), 0 deletions(-)
diff --git a/modules/sctp/sctp_mod.c b/modules/sctp/sctp_mod.c index 2d71244..1469e6d 100644 --- a/modules/sctp/sctp_mod.c +++ b/modules/sctp/sctp_mod.c @@ -27,13 +27,18 @@
#include "../../sr_module.h" #include "../../dprint.h" +#include "../../shm_init.h" +#include "../../sctp_core.h"
#include "sctp_options.h" +#include "sctp_server.h" #include "sctp_rpc.h"
MODULE_VERSION
static int mod_init(void); +static int sctp_mod_pre_init(void); +
static cmd_export_t cmds[]={ {0, 0, 0, 0, 0, 0} @@ -78,10 +83,30 @@ struct module_exports exports = { 0 /* per child init function */ };
+int mod_register(char *path, int *dlflags, void *p1, void *p2) +{ + if(!shm_initialized() && init_shm()<0) + return -1; + +#ifdef USE_SCTP + /* shm is used, be sure it is initialized */ + if(sctp_mod_pre_init()<0) + return -1; + return 0; +#else + LOG(L_CRIT, "sctp core support not enabled\n"); + return -1; +#endif +}
static int mod_init(void) { #ifdef USE_SCTP + char tmp[256]; + if (sctp_check_compiled_sockopts(tmp, 256)!=0){ + LM_WARN("sctp unsupported socket options: %s\n", tmp); + } + if (sctp_register_cfg()){ LOG(L_CRIT, "could not register the sctp configuration\n"); return -1; @@ -96,3 +121,25 @@ static int mod_init(void) return -1; #endif /* USE_SCTP */ } + +static int sctp_mod_pre_init(void) +{ + sctp_srapi_t api; + + /* set defaults before the config mod params */ + init_sctp_options(); + + memset(&api, 0, sizeof(sctp_srapi_t)); + api.init = init_sctp; + api.destroy = destroy_sctp; + api.init_sock = sctp_init_sock; + api.check_support = sctp_check_support; + api.rcv_loop = sctp_rcv_loop; + api.msg_send = sctp_msg_send; + + if(sctp_core_register_api(&api)<0) { + LM_ERR("cannot regiser sctp core api\n"); + return -1; + } + return 0; +}