[SR-Dev] [PATCH 1/2] port from kamailio, r68
Jan Janak
jan at iptel.org
Fri Apr 3 12:40:12 CEST 2009
There is already support for loadpath in the sr core.
Jan.
On 03-04 12:20, Henning Westerholt wrote:
> - add support for 'mpath' argument, to avoid specifying a common module path
> over and over again
> - small adaption because of different structure in the sr cfg parser
>
> ---
> cfg.lex | 2 ++
> cfg.y | 28 ++++++++++++++++++++++++++--
> 2 files changed, 28 insertions(+), 2 deletions(-)
>
> diff --git a/cfg.lex b/cfg.lex
> index 9f42697..229c2b2 100644
> --- a/cfg.lex
> +++ b/cfg.lex
> @@ -394,6 +394,7 @@ SERVER_ID "server_id"
>
> CFG_DESCRIPTION "description"|"descr"|"desc"
>
> +MPATH mpath
> LOADMODULE loadmodule
> LOADPATH loadpath
> MODPARAM modparam
> @@ -741,6 +742,7 @@ EAT_ABLE [\ \t\b\r]
> return MAX_WLOOPS; }
> <INITIAL>{SERVER_ID} { count(); yylval.strval=yytext; return SERVER_ID;}
> <INITIAL>{CFG_DESCRIPTION} { count(); yylval.strval=yytext; return
> CFG_DESCRIPTION; }
> +<INITIAL>{MPATH} { count(); yylval.strval=yytext; return MPATH; }
> <INITIAL>{LOADMODULE} { count(); yylval.strval=yytext; return LOADMODULE; }
> <INITIAL>{LOADPATH} { count(); yylval.strval=yytext; return LOADPATH; }
> <INITIAL>{MODPARAM} { count(); yylval.strval=yytext; return MODPARAM; }
> diff --git a/cfg.y b/cfg.y
> index de7643d..44074ab 100644
> --- a/cfg.y
> +++ b/cfg.y
> @@ -223,6 +223,9 @@ static struct case_stms* mk_case_stm(struct rval_expr* ct,
> int is_re,
> static int case_check_type(struct case_stms* stms);
> static int case_check_default(struct case_stms* stms);
>
> +static char *mpath=NULL;
> +static char mpath_buf[256];
> +static int mpath_len = 0;
>
> %}
>
> @@ -376,6 +379,7 @@ static int case_check_default(struct case_stms* stms);
> %token SERVER_SIGNATURE
> %token REPLY_TO_VIA
> %token LOADMODULE
> +%token MPATH
> %token LOADPATH
> %token MODPARAM
> %token MAXBUFFER
> @@ -1346,6 +1350,16 @@ assign_stm:
> | UDP_MTU_TRY_PROTO EQUAL error
> { yyerror("TCP, TLS, SCTP or UDP expected"); }
> | cfg_var
> + | MPATH EQUAL STRING { mpath=$3; strcpy(mpath_buf, $3);
> + mpath_len=strlen($3);
> + if(mpath_buf[mpath_len-1]!='/') {
> + mpath_buf[mpath_len]='/';
> + mpath_len++;
> + mpath_buf[mpath_len]='\0';
> + }
> + }
> + | MPATH EQUAL error { yyerror("string value expected"); }
> +
> | error EQUAL { yyerror("unknown config variable"); }
> ;
> cfg_var:
> @@ -1373,10 +1387,20 @@ cfg_var:
> ;
> module_stm:
> LOADMODULE STRING {
> - DBG("loading module %s\n", $2);
> - if (load_module($2)!=0) {
> + if(*$2!='/' && mpath!=NULL && strlen($2)+mpath_len<255)
> + {
> + strcpy(mpath_buf+mpath_len, $2);
> + DBG("loading module %s\n", mpath_buf);
> + if (load_module(mpath_buf)!=0){
> yyerror("failed to load module");
> }
> + mpath_buf[mpath_len]='\0';
> + } else {
> + DBG("loading module %s\n", $2);
> + if (load_module($2)!=0){
> + yyerror("failed to load module");
> + }
> + }
> }
> | LOADMODULE error { yyerror("string expected"); }
> | LOADPATH STRING {
More information about the sr-dev
mailing list