Branch data Line data Source code
1 : : // $Id: RuleAction.h 5880 2008-06-30 17:42:45Z vern $
2 : :
3 : : #ifndef ruleaction_h
4 : : #define ruleaction_h
5 : :
6 : : #include "AnalyzerTags.h"
7 : : #include "BroString.h"
8 : : #include "List.h"
9 : : #include "util.h"
10 : :
11 : : class Rule;
12 : : class RuleEndpointState;
13 : :
14 : : // Base class of all rule actions.
15 : : class RuleAction {
16 : : public:
17 : 11 : RuleAction() { }
18 [ # # ][ # # ]: 0 : virtual ~RuleAction() { }
[ # # ]
19 : :
20 : : virtual void DoAction(const Rule* parent, RuleEndpointState* state,
21 : : const u_char* data, int len) = 0;
22 : : virtual void PrintDebug() = 0;
23 : : };
24 : :
25 : : // Implements the "event" keyword.
26 : : class RuleActionEvent : public RuleAction {
27 : : public:
28 : 0 : RuleActionEvent(const char* arg_msg) { msg = copy_string(arg_msg); }
29 [ # # ][ # # ]: 0 : virtual ~RuleActionEvent() { delete [] msg; }
[ # # ][ # # ]
30 : :
31 : : virtual void DoAction(const Rule* parent, RuleEndpointState* state,
32 : : const u_char* data, int len);
33 : :
34 : : virtual void PrintDebug();
35 : :
36 : : private:
37 : : const char* msg;
38 : : };
39 : :
40 : : // Base class for DPM enable/disable actions.
41 [ # # ][ # # ]: 0 : class RuleActionDPM : public RuleAction {
[ # # ]
42 : : public:
43 : : RuleActionDPM(const char* analyzer);
44 : :
45 : : virtual void DoAction(const Rule* parent, RuleEndpointState* state,
46 : : const u_char* data, int len) = 0;
47 : :
48 : : virtual void PrintDebug();
49 : :
50 : 0 : AnalyzerTag::Tag Analyzer() const { return analyzer; }
51 : 0 : AnalyzerTag::Tag ChildAnalyzer() const { return child_analyzer; }
52 : :
53 : : private:
54 : : // FIXME: This is in fact an AnalyzerID but we can't include "Analyzer.h"
55 : : // at this point due to circular dependenides. Fix that!
56 : : AnalyzerTag::Tag analyzer;
57 : : AnalyzerTag::Tag child_analyzer;
58 : : };
59 : :
60 [ # # ][ # # ]: 0 : class RuleActionEnable : public RuleActionDPM {
61 : : public:
62 : 11 : RuleActionEnable(const char* analyzer) : RuleActionDPM(analyzer) {}
63 : :
64 : : virtual void DoAction(const Rule* parent, RuleEndpointState* state,
65 : : const u_char* data, int len);
66 : :
67 : : virtual void PrintDebug();
68 : : };
69 : :
70 [ # # ][ # # ]: 0 : class RuleActionDisable : public RuleActionDPM {
71 : : public:
72 : 0 : RuleActionDisable(const char* analyzer) : RuleActionDPM(analyzer) {}
73 : :
74 : : virtual void DoAction(const Rule* parent, RuleEndpointState* state,
75 : : const u_char* data, int len);
76 : :
77 : : virtual void PrintDebug();
78 : : };
79 : :
80 : : #endif
|