Mercurial > syslog2iptables
annotate src/syslogconfig.h @ 51:206448c00b55 stable1012
Allow multiple contexts with independent add/remove commands.
author  Carl Byington <carl@fivetensg.com> 

date  Sat, 24 Jan 2009 15:52:20 0800 
parents  ba0259c9e411 
children  b45dddebe8fc 
rev  line source 

36  1 /* 
2  
3 Copyright (c) 2007 Carl Byington  510 Software Group, released under  
4 the GPL version 3 or any later version at your choice available at  
5 http://www.gnu.org/licenses/gpl3.0.txt  
6  
7 */  
1  8 
9  
10 class SYSLOGCONFIG;  
51
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

11 class CONTEXT; 
3  12 class CONFIG; 
13  
14 struct IPPAIR {  
48
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

15 int first; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

16 int last; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

17 int cidr; 
3  18 }; 
19  
20 class PATTERN {  
48
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

21 const char * pattern; // owned by the string table 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

22 regex_t re; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

23 int index; // zero based substring of the regex match that contains the ip address or hostname 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

24 int amount; // count to add to the ip address leaky bucket 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

25 const char * message; // for logging, owned by the string table 
3  26 public: 
48
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

27 ~PATTERN(); 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

28 PATTERN(TOKEN &tok, const char *pattern_, int index_, int amount_, const char *msg_); 
51
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

29 bool process(char *buf, CONTEXT &con, const char *file_name, int pattern_index); 
48
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

30 void dump(int level); 
3  31 }; 
1  32 
51
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

33 struct ltint 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

34 { 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

35 bool operator()(const int s1, const int s2) const 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

36 { 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

37 return (unsigned)s1 < (unsigned)s2; 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

38 } 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

39 }; 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

40 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

41 struct bucket { 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

42 int count; 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

43 bool latch; // true iff ever count>threshold 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

44 }; 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

45 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

46 typedef map<int, bucket, ltint> ip_buckets; 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

47 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

48 class IPR { 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

49 int reference_count; // number of contexts using this recorder 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

50 ip_buckets violations; 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

51 public: 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

52 IPR(); 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

53 int reference(int delta) {reference_count += delta; return reference_count;}; 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

54 void add(int ip, int amount, CONTEXT &con, const char *file_name, int pattern_index, const char *message); 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

55 void leak(int amount, CONTEXT &con); 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

56 void free_all(CONTEXT &con); 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

57 void update(int ip, bool added, const char *file_name, int pattern_index, const char *message); 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

58 void changed(CONTEXT &con, int ip, bool added); 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

59 static IPR* find(const char* name); 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

60 static void release(const char* name); 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

61 }; 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

62 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

63 
48
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

64 typedef SYSLOGCONFIG * SYSLOGCONFIGP; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

65 typedef PATTERN * PATTERNP; 
51
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

66 typedef CONTEXT * CONTEXTP; 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

67 typedef map<const char *, IPR*> recorder_map; 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

68 typedef list<CONTEXTP> context_list; 
48
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

69 typedef list<SYSLOGCONFIGP> syslogconfig_list; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

70 typedef list<IPPAIR> ippair_list; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

71 typedef list<PATTERNP> pattern_list; 
2  72 const int buflen = 1024; 
1  73 
74 class SYSLOGCONFIG {  
48
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

75 TOKEN * tokp; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

76 const char * file_name; // name of the syslog file 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

77 pattern_list patterns; // owns the patterns 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

78 int fd; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

79 struct stat openfdstat; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

80 int len; // bytes in the buffer 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

81 char buf[buflen]; 
1  82 public: 
48
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

83 SYSLOGCONFIG(TOKEN &tok, const char *file_name_); 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

84 ~SYSLOGCONFIG(); 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

85 bool failed() { return (fd == 1); }; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

86 void open(bool msg); 
51
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

87 bool read(CONTEXT &con); 
48
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

88 void close(); 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

89 void add_pattern(PATTERNP pat); 
51
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

90 void process(CONTEXT &con); 
48
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

91 void dump(int level); 
1  92 }; 
93  
51
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

94 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

95 class CONTEXT { 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

96 public: 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

97 const char * name; // name of this context 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

98 int threshold; 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

99 ippair_list ignore; // owns all the ippairs 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

100 const char * add_command; // owned by the string table 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

101 const char * remove_command; // "" 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

102 IPR * recorder; // used to record violations 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

103 syslogconfig_list syslogconfigs; // owns all the syslogconfigs 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

104 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

105 CONTEXT(const char *nam); 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

106 ~CONTEXT(); 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

107 void set_add(const char *add) { add_command = add; }; 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

108 void set_remove(const char *remove) { remove_command = remove; }; 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

109 void set_threshold(int threshold_) { threshold = threshold_; }; 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

110 int get_threshold() { return threshold; }; 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

111 void add_syslogconfig(SYSLOGCONFIGP con); 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

112 void add_pair(IPPAIR pair); 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

113 void dump(); 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

114 void read(CONFIG &con); 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

115 void free_all(); 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

116 void leak(int delta); 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

117 bool looking(int ip); 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

118 }; 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

119 
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

120 
3  121 class CONFIG { 
122 public:  
48
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

123 // the only mutable stuff once it has been loaded from the config file 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

124 int reference_count; // protected by the global config_mutex 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

125 // all the rest is constant after loading from the config file 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

126 int generation; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

127 time_t load_time; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

128 string_set config_files; 
51
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

129 context_list contexts; 
1  130 
48
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

131 CONFIG(); 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

132 ~CONFIG(); 
51
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

133 void add_context(CONTEXTP con) {contexts.push_back(con);} ; 
48
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

134 void dump(); 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

135 void read(); 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

136 void sleep(int duration, time_t &previous); 
36  137 void free_all(); 
1  138 }; 
139  
48
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

140 void discard(string_set &s); 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

141 const char* register_string(string_set &s, const char *name); 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

142 const char* register_string(const char *name); 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

143 void clear_strings(); 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

144 int ip_address(const char *have); 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

145 bool load_conf(CONFIG &dc, const char *fn); 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

146 void token_init(); 
1  147 
48
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

148 extern const char *token_add; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

149 extern const char *token_bucket; 
51
206448c00b55
Allow multiple contexts with independent add/remove commands.
Carl Byington <carl@fivetensg.com>
parents:
48
diff
changeset

150 extern const char *token_context; 
48
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

151 extern const char *token_file; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

152 extern const char *token_ignore; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

153 extern const char *token_include; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

154 extern const char *token_index; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

155 extern const char *token_lbrace; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

156 extern const char *token_pattern; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

157 extern const char *token_rbrace; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

158 extern const char *token_remove; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

159 extern const char *token_semi; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

160 extern const char *token_slash; 
ba0259c9e411
Fixes to compile on Fedora 9 and for const correctness
Carl Byington <carl@fivetensg.com>
parents:
38
diff
changeset

161 extern const char *token_threshold; 
1  162 