1 /*
2 
3                           Firewall Builder
4 
5                  Copyright (C) 2000 NetCitadel, LLC
6 
7   Author:  Vadim Kurland     vadim@fwbuilder.org
8 
9   $Id$
10 
11 
12   This program is free software which we release under the GNU General Public
13   License. You may redistribute and/or modify this program under the terms
14   of that license as published by the Free Software Foundation; either
15   version 2 of the License, or (at your option) any later version.
16 
17   This program is distributed in the hope that it will be useful,
18   but WITHOUT ANY WARRANTY; without even the implied warranty of
19   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20   GNU General Public License for more details.
21 
22   To get a copy of the GNU General Public License, write to the Free Software
23   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
24 
25 */
26 
27 #ifndef  __FWOPTINS_HH_FLAG__
28 #define  __FWOPTINS_HH_FLAG__
29 
30 #include "fwbuilder/XMLTools.h"
31 #include "fwbuilder/FWObject.h"
32 
33 namespace libfwbuilder
34 {
35 
36 class FWOptions : public FWObject
37 {
38     public:
39     FWOptions();
40 
41     DECLARE_FWOBJECT_SUBTYPE(FWOptions);
42     DECLARE_DISPATCH_METHODS(FWOptions);
43     virtual void fromXML(xmlNodePtr parent) throw(FWException);
44     virtual xmlNodePtr toXML(xmlNodePtr parent) throw(FWException);
isPrimaryObject()45     virtual bool isPrimaryObject() const { return false; }
46 };
47 
48 class HostOptions : public FWOptions
49 {
50     public:
51     HostOptions();
52 
53     DECLARE_FWOBJECT_SUBTYPE(HostOptions);
54     DECLARE_DISPATCH_METHODS(HostOptions);
55 };
56 
57 class FirewallOptions : public FWOptions
58 {
59     public:
60     FirewallOptions();
61 
62     DECLARE_FWOBJECT_SUBTYPE(FirewallOptions);
63     DECLARE_DISPATCH_METHODS(FirewallOptions);
64 };
65 
66 class InterfaceOptions : public FWOptions
67 {
68     public:
69     InterfaceOptions();
70 
71     DECLARE_FWOBJECT_SUBTYPE(InterfaceOptions);
72     DECLARE_DISPATCH_METHODS(InterfaceOptions);
73 };
74 
75 class RuleSetOptions : public FWOptions
76 {
77     public:
78 
79     RuleSetOptions();
80 
81     DECLARE_FWOBJECT_SUBTYPE(RuleSetOptions);
82     DECLARE_DISPATCH_METHODS(RuleSetOptions);
83 };
84 
85 class PolicyRuleOptions : public FWOptions
86 {
87     public:
88 
89     PolicyRuleOptions();
90 
91     DECLARE_FWOBJECT_SUBTYPE(PolicyRuleOptions);
92     DECLARE_DISPATCH_METHODS(PolicyRuleOptions);
93 };
94 
95 class NATRuleOptions : public FWOptions
96 {
97     public:
98 
99     NATRuleOptions();
100 
101     DECLARE_FWOBJECT_SUBTYPE(NATRuleOptions);
102     DECLARE_DISPATCH_METHODS(NATRuleOptions);
103 };
104 
105 class RoutingRuleOptions : public FWOptions
106 {
107     public:
108 
109     RoutingRuleOptions();
110 
111     DECLARE_FWOBJECT_SUBTYPE(RoutingRuleOptions);
112     DECLARE_DISPATCH_METHODS(RoutingRuleOptions);
113 };
114 
115 class ClusterGroupOptions : public FWOptions
116 {
117     public:
118     ClusterGroupOptions();
119 
120     DECLARE_FWOBJECT_SUBTYPE(ClusterGroupOptions);
121     DECLARE_DISPATCH_METHODS(ClusterGroupOptions);
122 };
123 
124 }
125 
126 #endif // __FWOPTINS_HH_FLAG
127