1 //--------------------------------------------------------------------------
2 // Copyright (C) 2021-2021 Cisco and/or its affiliates. All rights reserved.
3 //
4 // This program is free software; you can redistribute it and/or modify it
5 // under the terms of the GNU General Public License Version 2 as published
6 // by the Free Software Foundation.  You may not use, modify or distribute
7 // this program under any other version of the GNU General Public License.
8 //
9 // This program is distributed in the hope that it will be useful, but
10 // WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 // General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License along
15 // with this program; if not, write to the Free Software Foundation, Inc.,
16 // 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
17 //--------------------------------------------------------------------------
18 // policy_selector_manager.h author Ron Dempster <rdempste@cisco.com>
19 
20 #ifndef POLICY_SELECTOR_MANAGER_H
21 #define POLICY_SELECTOR_MANAGER_H
22 
23 // Policy selectors are used in a multi-tenant configuration to select all policies
24 // based on layer 1 criteria. This is the manager for a given policy selector.
25 // Only one selector is permitted in the configuration and it must be at the top level.
26 
27 namespace snort
28 {
29 struct PolicySelectorApi;
30 class Module;
31 struct SnortConfig;
32 }
33 
34 //-------------------------------------------------------------------------
35 
36 class PolicySelectorManager
37 {
38 public:
39     static void add_plugin(const snort::PolicySelectorApi* api);
40     static void dump_plugins();
41     static void release_plugins();
42 
43     static void instantiate(const snort::PolicySelectorApi*, snort::Module*, snort::SnortConfig*);
44     static void print_config(const snort::SnortConfig*);
45 };
46 
47 #endif
48 
49