00001 /* 00002 * $Id$ 00003 * 00004 * PERMISSIONS module 00005 * 00006 * Copyright (C) 2003 Miklós Tirpák (mtirpak@sztaki.hu) 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 */ 00030 00031 #ifndef RULE_H 00032 #define RULE_H 1 00033 00034 #include <regex.h> 00035 00036 #define EXPRESSION_LENGTH 100 /* maximum length of an expression */ 00037 #define LINE_LENGTH 500 /* maximum length of lines in the config file */ 00038 00039 00040 struct rule_struct; 00041 typedef struct rule_struct rule; 00042 00043 struct expression_struct; 00044 typedef struct expression_struct expression; 00045 00046 rule *new_rule(void); 00047 void free_rule(rule *r); 00048 void print_rule(rule *r); 00049 int search_rule(rule *r, char *left, char *right); 00050 00051 expression *new_expression(char *str); 00052 void free_expression(expression *e); 00053 void print_expression(expression *e); 00054 int search_expression(expression *e, char *value); 00055 00056 /* 00057 * stores an expression 00058 * value represents the string, and reg_value is the compiled string to POSIX regular expression 00059 */ 00060 struct expression_struct { 00061 char value[EXPRESSION_LENGTH+1]; 00062 regex_t *reg_value; 00063 struct expression_struct *next; 00064 }; 00065 00066 00067 /* 00068 * stores 4 lists of expressions in the following way: 00069 * 00070 * a, b, c EXCEPT d, e : f, g EXCEPT h 00071 * left = a, b, c 00072 * left_exceptions = d, e 00073 * right = f, g 00074 * right_exceptions = h 00075 */ 00076 struct rule_struct { 00077 expression *left, *left_exceptions, *right, *right_exceptions; 00078 struct rule_struct *next; 00079 }; 00080 00081 00082 #endif /* RULE_H */
1.7.1