00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00016 #ifndef KRE_CONFIG_H
00017 #define KRE_CONFIG_H
00018 
00019 #include <linux/types.h> 
00020 #include <linux/slab.h> 
00021 #include "kre_list.h"
00022 #include "kre_debug.h"
00023 
00024 #include "kre_options.h"
00025 
00030 typedef kre_list_head kre_config;
00031 
00034 struct kre_config_entry {
00035     kre_list_head   list;       
00036     char            *req;       
00037     size_t          req_size;   
00038     char            *host;      
00039     size_t          host_size;  
00040     u8          dst_host[4];    
00041     int         dst_port;       
00042 };
00043 
00044 
00045 
00049 extern void kre_config_register( kre_config * );
00050 
00051 
00056 extern int  kre_config_unregister( kre_config * );
00057 
00058 
00069 extern struct kre_config_entry * kre_config_new_entry(   
00070                                         const char *req,
00071                                         size_t      req_size,
00072                                         const char *host,
00073                                         size_t      host_size,
00074                                         u8          dst_host[], 
00075                                         int dst_port );
00076 
00077 
00083 extern int kre_config_add_entry_tail( struct kre_config_entry *new, kre_config *conf );
00084 
00085 
00097 extern int kre_config_add_entry( kre_config *c, const char *uri, size_t us, const char *host, size_t hs, u8 dst_host[], int dst_port);
00098 
00107 extern int kre_config_add_default_entry( kre_config *c, u8 dst_host[], int dst_port);
00108 
00119 extern int kre_config_is_uri_equal( const char *u1, size_t s1, const char *u2, size_t s2);
00120 
00121 
00131 extern int kre_config_is_host_equal( const char *h1, size_t s1, const char *h2, size_t s2);
00132 
00133 
00143 extern struct kre_config_entry * kre_config_find( kre_config *c, const char *uri, size_t us, const char *host, size_t hs);
00144 
00145 
00146 
00147 #endif