Module: sip-router Branch: master Commit: c44685cbcefb8f6ecfa6f11369699906db832c39 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=c44685cb...
Author: Victor Seva linuxmaniac@torreviejawireless.org Committer: Victor Seva linuxmaniac@torreviejawireless.org Date: Sat Jun 7 09:19:03 2014 +0200
core: add route name to action struct
---
cfg.lex | 29 +++++++++++++++++++++-------- cfg.y | 9 +++++++-- route_struct.h | 2 ++ 3 files changed, 30 insertions(+), 10 deletions(-)
diff --git a/cfg.lex b/cfg.lex index 7435bb2..4c5c686 100644 --- a/cfg.lex +++ b/cfg.lex @@ -135,6 +135,9 @@ int startcolumn=1; int startline=1; char *finame = 0; + char *routename = 0; + char *default_routename = 0; + static int ign_lines=0; static int ign_columns=0; char* yy_number_str=0; /* str correspondent for the current NUMBER token */ @@ -155,6 +158,7 @@ int startcolumn; int startline; char *finame; + char *routename; } include_stack[MAX_INCLUDE_DEPTH]; static int include_stack_ptr = 0;
@@ -596,16 +600,24 @@ IMPORTFILE "import_file" <INITIAL>{ISAVPFLAGSET} { count(); yylval.strval=yytext; return ISAVPFLAGSET; } <INITIAL>{AVPFLAGS_DECL} { count(); yylval.strval=yytext; return AVPFLAGS_DECL; } <INITIAL>{MSGLEN} { count(); yylval.strval=yytext; return MSGLEN; } -<INITIAL>{ROUTE} { count(); yylval.strval=yytext; return ROUTE; } -<INITIAL>{ROUTE_REQUEST} { count(); yylval.strval=yytext; return ROUTE_REQUEST; } -<INITIAL>{ROUTE_ONREPLY} { count(); yylval.strval=yytext; +<INITIAL>{ROUTE} { count(); default_routename="DEFAULT_ROUTE"; + yylval.strval=yytext; return ROUTE; } +<INITIAL>{ROUTE_REQUEST} { count(); default_routename="DEFAULT_ROUTE"; + yylval.strval=yytext; return ROUTE_REQUEST; } +<INITIAL>{ROUTE_ONREPLY} { count(); default_routename="DEFAULT_ONREPLY"; + yylval.strval=yytext; return ROUTE_ONREPLY; } -<INITIAL>{ROUTE_REPLY} { count(); yylval.strval=yytext; return ROUTE_REPLY; } -<INITIAL>{ROUTE_FAILURE} { count(); yylval.strval=yytext; +<INITIAL>{ROUTE_REPLY} { count(); default_routename="DEFAULT_ONREPLY"; + yylval.strval=yytext; return ROUTE_REPLY; } +<INITIAL>{ROUTE_FAILURE} { count(); default_routename="DEFAULT_FAILURE"; + yylval.strval=yytext; return ROUTE_FAILURE; } -<INITIAL>{ROUTE_BRANCH} { count(); yylval.strval=yytext; return ROUTE_BRANCH; } -<INITIAL>{ROUTE_SEND} { count(); yylval.strval=yytext; return ROUTE_SEND; } -<INITIAL>{ROUTE_EVENT} { count(); yylval.strval=yytext; return ROUTE_EVENT; } +<INITIAL>{ROUTE_BRANCH} { count(); default_routename="DEFAULT_BRANCH"; + yylval.strval=yytext; return ROUTE_BRANCH; } +<INITIAL>{ROUTE_SEND} { count(); default_routename="DEFAULT_SEND"; + yylval.strval=yytext; return ROUTE_SEND; } +<INITIAL>{ROUTE_EVENT} { count(); default_routename="DEFAULT_EVENT"; + yylval.strval=yytext; return ROUTE_EVENT; } <INITIAL>{EXEC} { count(); yylval.strval=yytext; return EXEC; } <INITIAL>{SET_HOST} { count(); yylval.strval=yytext; return SET_HOST; } <INITIAL>{SET_HOSTPORT} { count(); yylval.strval=yytext; return SET_HOSTPORT; } @@ -1593,6 +1605,7 @@ static int sr_push_yy_state(char *fin, int mode) include_stack[include_stack_ptr].startline = startline; include_stack[include_stack_ptr].startcolumn = startcolumn; include_stack[include_stack_ptr].finame = finame; + include_stack[include_stack_ptr].routename = routename; include_stack_ptr++;
line=1; diff --git a/cfg.y b/cfg.y index 5d140d1..70508f8 100644 --- a/cfg.y +++ b/cfg.y @@ -256,12 +256,15 @@ extern int column; extern int startcolumn; extern int startline; extern char *finame; +extern char *routename; +extern char *default_routename;
#define set_cfg_pos(x) \ do{\ if(x) {\ (x)->cline = line;\ (x)->cfile = (finame!=0)?finame:((cfg_file!=0)?cfg_file:"default");\ + (x)->rname = (routename!=0)?routename:((default_routename!=0)?default_routename:"DEFAULT");\ }\ }while(0)
@@ -1743,9 +1746,10 @@ route_name: NUMBER { memcpy($$, tmp, i_tmp); $$[i_tmp]=0; } + routename = tmp; } - | ID { $$=$1; } - | STRING { $$=$1; } + | ID { routename = $1; $$=$1; } + | STRING { routename = $1; $$=$1; } ;
@@ -3372,6 +3376,7 @@ static void get_cpos(struct cfg_pos* pos) if(finame==0) finame = (cfg_file!=0)?cfg_file:"default"; pos->fname=finame; + pos->rname=(routename!=0)?routename:default_routename; }
diff --git a/route_struct.h b/route_struct.h index e56f4c0..3264a0e 100644 --- a/route_struct.h +++ b/route_struct.h @@ -156,6 +156,7 @@ struct cfg_pos{ unsigned short s_col; unsigned short e_col; char *fname; + char *rname; };
@@ -202,6 +203,7 @@ typedef struct { struct action{ int cline; char *cfile; + char *rname; enum action_type type; /* forward, drop, log, send ...*/ int count; struct action* next;