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