if ( other_map )
clone(other_map);
else
+ {
add_shell(new Shell);
+ empty_ips_policy = new IpsPolicy(ips_policy.size());
+ ips_policy.emplace_back(empty_ips_policy);
+ }
set_inspection_policy(inspection_policy[0]);
set_ips_policy(ips_policy[0]);
for ( auto p : network_policy )
delete p;
+
}
shells.clear();
shells = other_map->shells;
ips_policy = other_map->ips_policy;
network_policy = other_map->network_policy;
+ empty_ips_policy = other_map->empty_ips_policy;
for ( unsigned i = 0; i < (other_map->inspection_policy.size()); i++)
{
return sc->policy_map->get_user_ips(policy_id);
}
+IpsPolicy* get_empty_ips_policy(SnortConfig* sc)
+{
+ return sc->policy_map->get_empty_ips();
+}
+
NetworkPolicy* get_user_network_policy(SnortConfig* sc, unsigned policy_id)
{
return sc->policy_map->get_user_network(policy_id);
IpsPolicy* get_ips_policy(unsigned i = 0)
{ return i < ips_policy.size() ? ips_policy[i] : nullptr; }
+ IpsPolicy* get_empty_ips()
+ { return empty_ips_policy; }
+
NetworkPolicy* get_network_policy(unsigned i = 0)
{ return i < network_policy.size() ? network_policy[i] : nullptr; }
std::vector<InspectionPolicy*> inspection_policy;
std::vector<IpsPolicy*> ips_policy;
std::vector<NetworkPolicy*> network_policy;
+ IpsPolicy* empty_ips_policy;
std::unordered_map<Shell*, std::shared_ptr<PolicyTuple>> shell_map;
std::unordered_map<unsigned, InspectionPolicy*> user_inspection;
std::unordered_map<unsigned, IpsPolicy*> user_ips;
SO_PUBLIC void set_ips_policy(IpsPolicy* p);
SO_PUBLIC void set_network_policy(NetworkPolicy* p);
SO_PUBLIC IpsPolicy* get_user_ips_policy(snort::SnortConfig* sc, unsigned policy_id);
+SO_PUBLIC IpsPolicy* get_empty_ips_policy(snort::SnortConfig* sc);
SO_PUBLIC NetworkPolicy* get_user_network_policy(snort::SnortConfig* sc, unsigned policy_id);
}