allow_files.h

00001 /*
00002  * $Id$
00003  *
00004  * PERMISSIONS module
00005  *
00006  * Copyright (C) 2006 iptelorg GmbH
00007  *
00008  * This file is part of ser, a free SIP server.
00009  *
00010  * ser is free software; you can redistribute it and/or modify
00011  * it under the terms of the GNU General Public License as published by
00012  * the Free Software Foundation; either version 2 of the License, or
00013  * (at your option) any later version
00014  *
00015  * For a license to use the ser software under conditions
00016  * other than those described here, or to purchase support for this
00017  * software, please contact iptel.org by e-mail at the following addresses:
00018  *    info@iptel.org
00019  *
00020  * ser is distributed in the hope that it will be useful,
00021  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00022  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00023  * GNU General Public License for more details.
00024  *
00025  * You should have received a copy of the GNU General Public License
00026  * along with this program; if not, write to the Free Software
00027  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00028  *
00029  * History:
00030  * --------
00031  *   2006-08-10: file operation functions are moved here (Miklos)
00032  */
00033 
00034 #ifndef _ALLOW_FILES_H
00035 #define _ALLOW_FILES_H  1
00036 
00037 /*
00038  * loads a config file into the array
00039  * return value:
00040  *   <0:  error
00041  *   >=0: index of the file
00042  *
00043  * _def must be true in case of the default file which
00044  * sets the index to 0
00045  */
00046 int load_file(char *_name, rule_file_t **_table, int *_rules_num, int _def);
00047 
00048 /* free memory allocated for the file container */
00049 void delete_files(rule_file_t **_table, int _num);
00050 
00051 /*
00052  * determines the permission of the call
00053  * return values:
00054  * -1:  deny
00055  * 1:   allow
00056  */
00057 int check_routing(struct sip_msg* msg, int idx);
00058 
00059 /*
00060  * Test of REGISTER messages. Creates To-Contact pairs and compares them
00061  * against rules in allow and deny files passed as parameters. The function
00062  * iterates over all Contacts and creates a pair with To for each contact
00063  * found. That allows to restrict what IPs may be used in registrations, for
00064  * example
00065  */
00066 int check_register(struct sip_msg* msg, int idx);
00067 
00068 /*
00069  * determines the permission to refer to given refer-to uri
00070  * return values:
00071  * -1:  deny
00072  * 1:   allow
00073  */
00074 int check_refer_to(struct sip_msg* msg, int idx);
00075 
00076 #endif /* _ALLOW_FILES_H */