Merge commit 'origin/ser_core_cvs'
[sip-router] / route_struct.h
index 701326a..ea4dd96 100644 (file)
@@ -66,12 +66,15 @@ enum { EQUAL_OP=10, MATCH_OP, GT_OP, LT_OP, GTE_OP, LTE_OP, DIFF_OP, NO_OP };
 enum { METHOD_O=1, URI_O, FROM_URI_O, TO_URI_O, SRCIP_O, SRCPORT_O,
           DSTIP_O, DSTPORT_O, PROTO_O, AF_O, MSGLEN_O, DEFAULT_O, ACTION_O,
           NUMBER_O, AVP_O, SNDIP_O, SNDPORT_O, TOIP_O, TOPORT_O, SNDPROTO_O,
-          SNDAF_O, RETCODE_O, SELECT_O};
+          SNDAF_O, RETCODE_O, SELECT_O, PVAR_O, RVEXP_O};
 
 enum { FORWARD_T=1, SEND_T, DROP_T, LOG_T, ERROR_T, ROUTE_T, EXEC_T,
                SET_HOST_T, SET_HOSTPORT_T, SET_USER_T, SET_USERPASS_T,
-               SET_PORT_T, SET_URI_T, SET_HOSTPORTTRANS_T, SET_USERPHONE_T,
-               IF_T, MODULE_T,
+               SET_PORT_T, SET_URI_T, SET_HOSTPORTTRANS_T, SET_HOSTALL_T,
+               SET_USERPHONE_T,
+               IF_T, SWITCH_T /* only until fixup*/,
+               BLOCK_T, EVAL_T, SWITCH_JT_T, SWITCH_COND_T, MATCH_COND_T, WHILE_T,
+               MODULE_T, MODULE3_T, MODULE4_T, MODULE5_T, MODULE6_T, MODULEX_T,
                SETFLAG_T, RESETFLAG_T, ISFLAGSET_T ,
                AVPFLAG_OPER_T,
                LEN_GT_T, PREFIX_T, STRIP_T,STRIP_TAIL_T,
@@ -95,12 +98,26 @@ enum { FORWARD_T=1, SEND_T, DROP_T, LOG_T, ERROR_T, ROUTE_T, EXEC_T,
 };
 enum { NOSUBTYPE=0, STRING_ST, NET_ST, NUMBER_ST, IP_ST, RE_ST, PROXY_ST,
                EXPR_ST, ACTIONS_ST, MODEXP_ST, MODFIXUP_ST, URIHOST_ST, URIPORT_ST,
-               MYSELF_ST, STR_ST, SOCKID_ST, SOCKETINFO_ST, ACTION_ST, AVP_ST, SELECT_ST,
-               RETCODE_ST};
+               MYSELF_ST, STR_ST, SOCKID_ST, SOCKETINFO_ST, ACTION_ST, AVP_ST,
+               SELECT_ST, PVAR_ST,
+               LVAL_ST,  RVE_ST,
+               RETCODE_ST, CASE_ST,
+               BLOCK_ST, JUMPTABLE_ST, CONDTABLE_ST, MATCH_CONDTABLE_ST
+};
 
 /* run flags */
 #define EXIT_R_F   1
 #define RETURN_R_F 2
+#define BREAK_R_F  4
+
+
+struct cfg_pos{
+       int s_line;
+       int e_line;
+       unsigned short s_col;
+       unsigned short e_col;
+};
+
 
 /* Expression operand */
 union exp_op {
@@ -135,13 +152,17 @@ typedef struct {
        } u;
 } action_u_t;
 
-#define MAX_ACTIONS 4
+/* maximum internal array/params
+ * for module function calls val[0] and val[1] store a pointer to the
+ * function and the number of params, the rest are the function params 
+ */
+#define MAX_ACTIONS (2+6)
 
 struct action{
        int type;  /* forward, drop, log, send ...*/
        int count;
-       action_u_t val[MAX_ACTIONS];
        struct action* next;
+       action_u_t val[MAX_ACTIONS];
 };
 
 struct expr* mk_exp(int op, struct expr* left, struct expr* right);
@@ -154,5 +175,8 @@ void print_action(struct action* a);
 void print_actions(struct action* a);
 void print_expr(struct expr* exp);
 
+/** joins to cfg file positions into a new one. */
+void cfg_pos_join(struct cfg_pos* res,
+                                                       struct cfg_pos* pos1, struct cfg_pos* pos2);
 #endif