k/maxfwd/api.h

00001 /*
00002  * $Id$
00003  *
00004  * Copyright (C) 2001-2003 FhG Fokus
00005  *
00006  * This file is part of Kamailio, a free SIP server.
00007  *
00008  * Kamailio is free software; you can redistribute it and/or modify
00009  * it under the terms of the GNU General Public License as published by
00010  * the Free Software Foundation; either version 2 of the License, or
00011  * (at your option) any later version
00012  *
00013  * Kamailio is distributed in the hope that it will be useful,
00014  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016  * GNU General Public License for more details.
00017  *
00018  * You should have received a copy of the GNU General Public License 
00019  * along with this program; if not, write to the Free Software 
00020  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00021  */
00022 
00023 
00024 #ifndef _MAXFWD_API_H_
00025 #define _MAXFWD_API_H_
00026 
00027 #include "../../sr_module.h"
00028 #include "../../parser/msg_parser.h"
00029 
00030 typedef int (*process_maxfwd_f)(struct sip_msg *msg, int limit);
00031 
00035 typedef struct maxfwd_api {
00036         process_maxfwd_f process_maxfwd;
00037 } maxfwd_api_t;
00038 
00039 typedef int (*bind_maxfwd_f)(maxfwd_api_t* api);
00040 
00044 static inline int maxfwd_load_api(maxfwd_api_t *api)
00045 {
00046         bind_maxfwd_f bindmaxfwd;
00047 
00048         bindmaxfwd = (bind_maxfwd_f)find_export("bind_maxfwd", 0, 0);
00049         if(bindmaxfwd == 0) {
00050                 LM_ERR("cannot find bind_maxfwd\n");
00051                 return -1;
00052         }
00053         if (bindmaxfwd(api)==-1)
00054         {
00055                 LM_ERR("cannot bind maxfwd api\n");
00056                 return -1;
00057         }
00058         return 0;
00059 }
00060 
00061 #endif
00062