Initial revision
[sip-router] / route.h
1 /*
2  * $Id$
3  */
4
5 #ifndef route_h
6 #define route_h
7
8 #include <sys/types.h>
9 #include <regex.h>
10 #include <netdb.h>
11
12 #include "cfg_parser.h"
13
14 #define E_OUT_OF_MEM  -2
15 #define E_BAD_RE      -3
16 #define E_BAD_ADDRESS -4
17
18 struct route_elem{
19         struct route_elem* next;
20         regex_t method;
21         regex_t uri;
22         struct hostent host;
23         int current_addr_idx;
24         int ok; /* set to 0 if an error was found sendig a pkt*/
25         /*counters*/
26         int errors;
27         int tx;
28         int tx_bytes;
29 };
30
31 /* main "routing table" */
32 extern struct route_elem* rlist;
33
34
35 void free_re(struct route_elem* re);
36 struct route_elem* init_re();
37 void push(struct route_elem* re, struct route_elem** head);
38 void clear_rlist(struct route_elem** rl);
39 int add_rule(struct cfg_line* cl, struct route_elem** head);
40 struct route_elem* route_match(char* method, char* uri, struct route_elem** rl);void print_rl();
41
42
43
44
45
46 #endif