}
}
+void Rule::set_rule_old_action(const std::string &action)
+{
+ old_action = action;
+}
+
+std::string& Rule::get_rule_old_action()
+{
+ return old_action;
+}
+
void Rule::update_rule_action(const std::string& new_type)
{ hdr_data[0] = new_type; }
void add_suboption(const std::string& keyword, const std::string& val);
void set_curr_options_buffer(const std::string& buffer, bool add_option);
void update_rule_action(const std::string&);
+ void set_rule_old_action(const std::string&);
+ std::string& get_rule_old_action();
void add_comment(const std::string& comment);
void bad_rule();
private:
std::vector<std::string> comments;
+ std::string old_action;
std::array<std::string, 7> hdr_data;
std::vector<RuleOption*> options;
std::string sticky_buffer;
}
}
+void RuleApi::set_rule_old_action(const std::string &action)
+{
+ if (!curr_rule)
+ begin_rule();
+
+ curr_rule->set_rule_old_action(action);
+}
+
void RuleApi::add_hdr_data(const std::string& data)
{
if (!curr_rule)
curr_rule->add_hdr_data(data);
}
+std::string& RuleApi::get_rule_old_action()
+{
+ std::string res = "";
+ if (!curr_rule)
+ return res;
+
+ return (curr_rule->get_rule_old_action());
+}
+
void RuleApi::update_rule_action(const std::string& new_type)
{
if (!curr_rule)
void add_suboption(const std::string& keyword);
void add_suboption(const std::string& keyword, const std::string& val);
void set_curr_options_buffer(const std::string& buffer, bool add_option=false);
+ void set_rule_old_action(const std::string&);
+ std::string& get_rule_old_action();
void add_comment(const std::string& comment);
void make_rule_a_comment();
#include "helpers/util_binder.h"
#include "init_state.h"
+#define GID_REPUTATION "136"
+
TableDelegation table_delegation =
{
{ "binder", true },
{ "network", true },
{ "normalizer", true},
{ "stream_tcp", true},
+ { "suppress", true},
};
std::string Converter::ips_pattern;
break;
}
}
+
+ std::string gid = rule_api.get_option("gid");
+ if (0 == gid.compare(GID_REPUTATION) && 0 == rule_api.get_rule_old_action().compare("sdrop"))
+ {
+ std::string sid = rule_api.get_option("sid");
+ table_api.open_table("suppress");
+ table_api.add_diff_option_comment("gen_id", "gid");
+ table_api.add_diff_option_comment("sid_id", "sid");
+ table_api.open_table();
+ table_api.add_option("gid", std::stoi(gid));
+ table_api.add_option("sid", std::stoi(sid));
+ table_api.close_table();
+ table_api.close_table();
+ }
+
if (commented_rule)
rule_api.make_rule_a_comment();
static ConversionState* conv_rule_ctor(Converter& c)
{
c.get_rule_api().add_hdr_data(*name);
+
+ if (*old == "sdrop")
+ c.get_rule_api().set_rule_old_action(*old);
+
c.get_rule_api().add_comment(
"The '" + *old + "' ruletype is no longer supported, using " + *name);
return new RuleHeader(c);
retval = false;
}
}
+ table_api.close_table();
+ table_api.close_table();
return retval;
}
{
std::string gid = util::get_rule_option_args(data_stream);
- const std::string old_http_gid("120");
+ const std::string old_http_gid("120");
if (gid.compare(old_http_gid) == 0)
{
const std::string nhi_gid("119");
rule_api.update_option("sid", sid);
}
}
+
rule_api.add_option("gid", gid);
return set_next_rule_state(data_stream);
}