Module: sip-router
Branch: master
Commit: c44685cbcefb8f6ecfa6f11369699906db832c39
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=c44685cbcefb8f6ecfa6f11369699906db832c39

Author: Victor Seva <[email protected]>
Committer: Victor Seva <[email protected]>
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;


_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to