void Rule::add_suboption(std::string keyword, std::string val)
{ options.back()->add_suboption(keyword, val); }
-void Rule::set_curr_options_buffer(std::string new_buffer)
+void Rule::set_curr_options_buffer(std::string new_buffer, bool add_option)
{
/* set the buffer if
* 1) No buffer has been set and this is not the default "pkt_data" buffer
(!sticky_buffer.empty() && sticky_buffer.compare(new_buffer)) )
{
RuleOption* new_opt = new RuleOption(new_buffer);
- options.insert(options.end() - 1, new_opt);
+ if ( add_option )
+ options.push_back(new_opt);
+ else
+ options.insert(options.end() - 1, new_opt);
sticky_buffer = new_buffer;
}
}
void add_option(std::string keyword, std::string data);
void add_suboption(std::string keyword);
void add_suboption(std::string keyword, std::string val);
- void set_curr_options_buffer(std::string buffer);
+ void set_curr_options_buffer(std::string buffer, bool add_option);
void update_rule_action(std::string);
void add_comment(std::string comment);
DataApi::developer_error("Add some header data before adding content!!");
}
-void RuleApi::set_curr_options_buffer(std::string buffer)
+void RuleApi::set_curr_options_buffer(std::string buffer, bool add_option)
{
if (curr_rule)
- curr_rule->set_curr_options_buffer(buffer);
+ curr_rule->set_curr_options_buffer(buffer, add_option);
else
DataApi::developer_error("Add some header data before adding content!!");
}
void add_option(std::string keyword, std::string val);
void add_suboption(std::string keyword);
void add_suboption(std::string keyword, std::string val);
- void set_curr_options_buffer(std::string buffer);
+ void set_curr_options_buffer(std::string buffer, bool add_option=false);
void add_comment(std::string coment);
void make_rule_a_comment();
class Content : public ConversionState
{
public:
- Content(Converter& c) : ConversionState(c), sticky_buffer_set(false) { }
+ Content(Converter& c, bool val) : ConversionState(c), sticky_buffer_set(val) { }
virtual ~Content() { }
virtual bool convert(std::istringstream& data);
template<const std::string* rule_name>
static ConversionState* content_ctor(Converter& c)
{
- return new Content<rule_name>(c);
+ return new Content<rule_name>(c, false);
}
static const std::string content = "content";
// So, just add the 'http_uri' option first, then parse as if content
static ConversionState* uricontent_ctor(Converter& c)
{
- c.get_rule_api().add_option("http_uri");
c.get_rule_api().add_comment("uricontent deprecated --> 'http_uri: content:'foo'");
- return new Content<& content>(c);
+ c.get_rule_api().set_curr_options_buffer("http_uri", true);
+ return new Content<& content>(c, true);
}
static const ConvertMap rule_content_api =