action.h
4ac74c03
 /*
53c7e0f1
  * Copyright (C) 2001-2003 FhG Fokus
7dd0b342
  *
02ca141b
  * This file is part of Kamailio, a free SIP server.
7dd0b342
  *
02ca141b
  * Kamailio is free software; you can redistribute it and/or modify
7dd0b342
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version
  *
02ca141b
  * Kamailio is distributed in the hope that it will be useful,
7dd0b342
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
d766c020
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
9e1ff448
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
4ac74c03
  */
 
5a03489e
 /*!
  * \file
6806e46a
  * \brief Kamailio core :: Actions
5a03489e
  * \ingroup core
  * Module: \ref core
  */
 
7dd0b342
 
4ac74c03
 #ifndef action_h
 #define action_h
 
20fded1f
 #define USE_LONGJMP
 
4ac74c03
 #include "route_struct.h"
 
20fded1f
 #include "parser/msg_parser.h"
 
 #ifdef USE_LONGJMP
 #include <setjmp.h>
 #endif
 
 
 struct run_act_ctx{
 	int rec_lev;
 	int run_flags;
 	int last_retcode; /* return from last route */
 #ifdef USE_LONGJMP
 	jmp_buf jmp_env;
 #endif
 };
 
 
 #define init_run_actions_ctx(ph) \
 	do{\
 		(ph)->rec_lev=(ph)->run_flags=(ph)->last_retcode=0; \
 	}while(0)
01dea124
 
20fded1f
 int do_action(struct run_act_ctx* c, struct action* a, struct sip_msg* msg);
 int run_actions(struct run_act_ctx* c, struct action* a, struct sip_msg* msg);
4ac74c03
 
4ce1715d
 int run_top_route(struct action* a, sip_msg_t* msg, struct run_act_ctx* c);
4ac74c03
 
4294b7bf
 cfg_action_t *get_cfg_crt_action(void);
ca568ee6
 int get_cfg_crt_line(void);
 char *get_cfg_crt_name(void);
28a88287
 
d1c60718
 void set_max_recursive_level(unsigned int lev);
 
28a88287
 #ifdef USE_LONGJMP
 int run_actions_safe(struct run_act_ctx* c, struct action* a,
 						struct sip_msg* msg);
 #else /*! USE_LONGJMP */
 #define run_actions_safe(c, a, m) run_actions(c, a, m)
 #endif /* USE_LONGJMP */
 
35e94c97
 void log_prefix_set(sip_msg_t *msg);
 
4ac74c03
 #endif