00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __PARSER_H__
00022 #define __PARSER_H__
00023
00024
00025 #ifdef HAVE_CONFIG_H
00026 #include "config.h"
00027 #endif
00028
00029 #include "rules.h"
00030 #include "decode.h"
00031
00032 #include <stdio.h>
00033
00034
00035 #define ONE_CHECK(_onevar,xxx) \
00036 (_onevar)++; \
00037 if ((_onevar) > 1) \
00038 { \
00039 FatalError("%s(%d) => Only one '%s' option per rule\n",\
00040 file_name, file_line, xxx); \
00041 }
00042
00043
00044 extern char *file_name;
00045 extern int file_line;
00046
00047
00048 void ParseRulesFile(char *, int);
00049 int ContinuationCheck(char *);
00050 void ParseRule(FILE*, char *, int);
00051 void ParsePreprocessor(char *);
00052 void ParseOutputPlugin(char *);
00053 void ParseRuleOptions(char *, int, int);
00054 void ParseMessage(char *);
00055 void ParseLogto(char *);
00056 void DumpRuleChains();
00057 struct VarEntry *VarDefine(char *, char *);
00058 void VarDelete(char *);
00059 void IntegrityCheckRules();
00060 void ParseListFile(char *, char *);
00061 void LinkDynamicRules();
00062 void ParseActivatedBy(char *);
00063 void ParseActivates(char *);
00064 void ParseCount(char *);
00065 char *VarSearch(char *name);
00066
00067 void CreateDefaultRules();
00068 void OrderRuleLists(char *);
00069 void printRuleOrder();
00070
00071
00072
00073 int CheckRule(char *);
00074 int RuleType(char *);
00075 int WhichProto(char *);
00076 #if 0
00077 int ParseIP(char *, IpAddrSet *);
00078 #endif
00079 int ParsePort(char *, u_short *, u_short *, char *, int *);
00080 int ConvPort(char *, char *);
00081
00082 char *VarGet(char *);
00083 char *ExpandVars(char *);
00084 char *CreateRule(char *, char *, char *);
00085
00086 struct VarEntry *VarAlloc();
00087
00088
00089 ListHead *CreateRuleType(char *, int, int, ListHead *);
00090
00091 void ProcessAlertFileOption(char *);
00092 char *ProcessFileOption(char *);
00093 void ParseConfig(char *);
00094 void ParseRuleTypeDeclaration(FILE*, char *);
00095
00096 char *ReadLine(FILE *);
00097 int checkKeyowrd(char *);
00098
00099 #endif
00100