#include <iostream>
#include <sstream>
+#include <unordered_map>
#include <vector>
#include "conversion_state.h"
}
unsigned rule_id;
- if ( data_stream >> rule_id ) // is this a or config
+ if ( data_stream >> rule_id ) // is this a comment or config
{
std::string action;
std::string src_zone, src_net, src_netmask, src_port;
return false;
}
- auto& bind = cv.make_pending_binder(policy_id);
+ auto seen = rule_map.find(rule_id);
+ auto& bind = seen == rule_map.end() ? cv.make_pending_binder(policy_id) : *seen->second;
bind.set_priority(order++);
if ( protocol != "any" )
bind.set_when_proto(protocol);
+
+ rule_map[rule_id] = &bind;
}
else
{
private:
unsigned order = 0;
+ std::unordered_map<unsigned, Binder*> rule_map;
};
class NapSelectorState : public ConversionState