// A Bison parser, made by GNU Bison 3.0.4.
// Skeleton implementation for Bison LALR(1) parsers in C++
// Copyright (C) 2002-2015 Free Software Foundation, Inc.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
// As a special exception, you may create a larger work that contains
// part or all of the Bison parser skeleton and distribute that work
// under terms of your choice, so long as that work isn't itself a
// parser generator using the skeleton or a modified version thereof
// as a parser skeleton. Alternatively, if you modify or redistribute
// the parser skeleton itself, you may (at your option) remove this
// special exception, which will cause the skeleton and the resulting
// Bison output files to be licensed under the GNU General Public
// License without this special exception.
// This special exception was added by the Free Software Foundation in
// version 2.2 of Bison.
// First part of user declarations.
#line 37 "seclang-parser.cc" // lalr1.cc:404
# ifndef YY_NULLPTR
# if defined __cplusplus && 201103L <= __cplusplus
# define YY_NULLPTR nullptr
# else
# define YY_NULLPTR 0
# endif
# endif
#include "seclang-parser.hh"
// User implementation prologue.
#line 51 "seclang-parser.cc" // lalr1.cc:412
// Unqualified %code blocks.
#line 357 "seclang-parser.yy" // lalr1.cc:413
#include "src/parser/driver.h"
#line 57 "seclang-parser.cc" // lalr1.cc:413
#ifndef YY_
# if defined YYENABLE_NLS && YYENABLE_NLS
# if ENABLE_NLS
# include // FIXME: INFRINGES ON USER NAME SPACE.
# define YY_(msgid) dgettext ("bison-runtime", msgid)
# endif
# endif
# ifndef YY_
# define YY_(msgid) msgid
# endif
#endif
#define YYRHSLOC(Rhs, K) ((Rhs)[K].location)
/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
If N is 0, then set CURRENT to the empty location which ends
the previous symbol: RHS[0] (always defined). */
# ifndef YYLLOC_DEFAULT
# define YYLLOC_DEFAULT(Current, Rhs, N) \
do \
if (N) \
{ \
(Current).begin = YYRHSLOC (Rhs, 1).begin; \
(Current).end = YYRHSLOC (Rhs, N).end; \
} \
else \
{ \
(Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \
} \
while (/*CONSTCOND*/ false)
# endif
// Suppress unused-variable warnings by "using" E.
#define YYUSE(E) ((void) (E))
// Enable debugging if requested.
#if YYDEBUG
// A pseudo ostream that takes yydebug_ into account.
# define YYCDEBUG if (yydebug_) (*yycdebug_)
# define YY_SYMBOL_PRINT(Title, Symbol) \
do { \
if (yydebug_) \
{ \
*yycdebug_ << Title << ' '; \
yy_print_ (*yycdebug_, Symbol); \
*yycdebug_ << std::endl; \
} \
} while (false)
# define YY_REDUCE_PRINT(Rule) \
do { \
if (yydebug_) \
yy_reduce_print_ (Rule); \
} while (false)
# define YY_STACK_PRINT() \
do { \
if (yydebug_) \
yystack_print_ (); \
} while (false)
#else // !YYDEBUG
# define YYCDEBUG if (false) std::cerr
# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE(Symbol)
# define YY_REDUCE_PRINT(Rule) static_cast(0)
# define YY_STACK_PRINT() static_cast(0)
#endif // !YYDEBUG
#define yyerrok (yyerrstatus_ = 0)
#define yyclearin (yyla.clear ())
#define YYACCEPT goto yyacceptlab
#define YYABORT goto yyabortlab
#define YYERROR goto yyerrorlab
#define YYRECOVERING() (!!yyerrstatus_)
namespace yy {
#line 143 "seclang-parser.cc" // lalr1.cc:479
/* Return YYSTR after stripping away unnecessary quotes and
backslashes, so that it's suitable for yyerror. The heuristic is
that double-quoting is unnecessary unless the string contains an
apostrophe, a comma, or backslash (other than backslash-backslash).
YYSTR is taken from yytname. */
std::string
seclang_parser::yytnamerr_ (const char *yystr)
{
if (*yystr == '"')
{
std::string yyr = "";
char const *yyp = yystr;
for (;;)
switch (*++yyp)
{
case '\'':
case ',':
goto do_not_strip_quotes;
case '\\':
if (*++yyp != '\\')
goto do_not_strip_quotes;
// Fall through.
default:
yyr += *yyp;
break;
case '"':
return yyr;
}
do_not_strip_quotes: ;
}
return yystr;
}
/// Build a parser object.
seclang_parser::seclang_parser (modsecurity::Parser::Driver& driver_yyarg)
:
#if YYDEBUG
yydebug_ (false),
yycdebug_ (&std::cerr),
#endif
driver (driver_yyarg)
{}
seclang_parser::~seclang_parser ()
{}
/*---------------.
| Symbol types. |
`---------------*/
// by_state.
inline
seclang_parser::by_state::by_state ()
: state (empty_state)
{}
inline
seclang_parser::by_state::by_state (const by_state& other)
: state (other.state)
{}
inline
void
seclang_parser::by_state::clear ()
{
state = empty_state;
}
inline
void
seclang_parser::by_state::move (by_state& that)
{
state = that.state;
that.clear ();
}
inline
seclang_parser::by_state::by_state (state_type s)
: state (s)
{}
inline
seclang_parser::symbol_number_type
seclang_parser::by_state::type_get () const
{
if (state == empty_state)
return empty_symbol;
else
return yystos_[state];
}
inline
seclang_parser::stack_symbol_type::stack_symbol_type ()
{}
inline
seclang_parser::stack_symbol_type::stack_symbol_type (state_type s, symbol_type& that)
: super_type (s, that.location)
{
switch (that.type_get ())
{
case 106: // "Accuracy"
case 107: // "Allow"
case 108: // "Append"
case 109: // "AuditLog"
case 110: // "Block"
case 111: // "Capture"
case 112: // "Chain"
case 113: // "ACTION_CTL_AUDIT_ENGINE"
case 114: // "ACTION_CTL_AUDIT_LOG_PARTS"
case 115: // "ACTION_CTL_BDY_JSON"
case 116: // "ACTION_CTL_BDY_XML"
case 117: // "ACTION_CTL_FORCE_REQ_BODY_VAR"
case 118: // "ACTION_CTL_REQUEST_BODY_ACCESS"
case 119: // "ACTION_CTL_RULE_REMOVE_BY_ID"
case 120: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID"
case 121: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG"
case 122: // "Deny"
case 123: // "DeprecateVar"
case 124: // "Drop"
case 125: // "Exec"
case 126: // "ExpireVar"
case 127: // "Id"
case 128: // "InitCol"
case 129: // "Log"
case 130: // "LogData"
case 131: // "Maturity"
case 132: // "Msg"
case 133: // "MultiMatch"
case 134: // "NoAuditLog"
case 135: // "NoLog"
case 136: // "Pass"
case 137: // "Pause"
case 138: // "Phase"
case 139: // "Prepend"
case 140: // "Proxy"
case 141: // "Redirect"
case 142: // "Rev"
case 143: // "SanatiseArg"
case 144: // "SanatiseMatched"
case 145: // "SanatiseMatchedBytes"
case 146: // "SanatiseRequestHeader"
case 147: // "SanatiseResponseHeader"
case 148: // "SetEnv"
case 149: // "SetRsc"
case 150: // "SetSid"
case 151: // "SetUID"
case 152: // "Severity"
case 153: // "Skip"
case 154: // "SkipAfter"
case 155: // "Status"
case 156: // "Tag"
case 157: // "ACTION_TRANSFORMATION_CMD_LINE"
case 158: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE"
case 159: // "ACTION_TRANSFORMATION_CSS_DECODE"
case 160: // "ACTION_TRANSFORMATION_HEX_ENCODE"
case 161: // "ACTION_TRANSFORMATION_HEX_DECODE"
case 162: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE"
case 163: // "ACTION_TRANSFORMATION_JS_DECODE"
case 164: // "ACTION_TRANSFORMATION_LENGTH"
case 165: // "ACTION_TRANSFORMATION_LOWERCASE"
case 166: // "ACTION_TRANSFORMATION_MD5"
case 167: // "ACTION_TRANSFORMATION_NONE"
case 168: // "ACTION_TRANSFORMATION_NORMALISE_PATH"
case 169: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN"
case 170: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT"
case 171: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT"
case 172: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT"
case 173: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS"
case 174: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR"
case 175: // "ACTION_TRANSFORMATION_REMOVE_NULLS"
case 176: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE"
case 177: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS"
case 178: // "ACTION_TRANSFORMATION_REPLACE_NULLS"
case 179: // "ACTION_TRANSFORMATION_SHA1"
case 180: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE"
case 181: // "ACTION_TRANSFORMATION_TRIM"
case 182: // "ACTION_TRANSFORMATION_UPPERCASE"
case 183: // "ACTION_TRANSFORMATION_URL_DECODE"
case 184: // "ACTION_TRANSFORMATION_URL_DECODE_UNI"
case 185: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE"
case 186: // "Ver"
case 187: // "xmlns"
case 188: // "CONFIG_COMPONENT_SIG"
case 189: // "CONFIG_SEC_ARGUMENT_SEPARATOR"
case 190: // "CONFIG_SEC_WEB_APP_ID"
case 191: // "CONFIG_SEC_SERVER_SIG"
case 192: // "CONFIG_DIR_AUDIT_DIR"
case 193: // "CONFIG_DIR_AUDIT_DIR_MOD"
case 194: // "CONFIG_DIR_AUDIT_ENG"
case 195: // "CONFIG_DIR_AUDIT_FLE_MOD"
case 196: // "CONFIG_DIR_AUDIT_LOG"
case 197: // "CONFIG_DIR_AUDIT_LOG2"
case 198: // "CONFIG_DIR_AUDIT_LOG_P"
case 199: // "CONFIG_DIR_AUDIT_STS"
case 200: // "CONFIG_DIR_AUDIT_TPE"
case 201: // "CONFIG_DIR_DEBUG_LOG"
case 202: // "CONFIG_DIR_DEBUG_LVL"
case 203: // "CONFIG_SEC_CACHE_TRANSFORMATIONS"
case 204: // "CONFIG_DIR_GEO_DB"
case 205: // "CONFIG_DIR_PCRE_MATCH_LIMIT"
case 206: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION"
case 207: // "CONFIG_DIR_REQ_BODY"
case 208: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT"
case 209: // "CONFIG_DIR_REQ_BODY_LIMIT"
case 210: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION"
case 211: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT"
case 212: // "CONFIG_DIR_RES_BODY"
case 213: // "CONFIG_DIR_RES_BODY_LIMIT"
case 214: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION"
case 215: // "CONFIG_DIR_RULE_ENG"
case 216: // "CONFIG_DIR_SEC_ACTION"
case 217: // "CONFIG_DIR_SEC_DEFAULT_ACTION"
case 218: // "CONFIG_DIR_SEC_MARKER"
case 219: // "CONFIG_DIR_UNICODE_MAP_FILE"
case 220: // "CONFIG_SEC_COLLECTION_TIMEOUT"
case 221: // "CONFIG_SEC_HTTP_BLKEY"
case 222: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION"
case 223: // "CONFIG_SEC_RULE_REMOVE_BY_ID"
case 224: // "CONFIG_SEC_RULE_REMOVE_BY_MSG"
case 225: // "CONFIG_SEC_RULE_REMOVE_BY_TAG"
case 226: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG"
case 227: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG"
case 228: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID"
case 229: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID"
case 230: // "CONFIG_UPDLOAD_KEEP_FILES"
case 231: // "CONFIG_UPDLOAD_SAVE_TMP_FILES"
case 232: // "CONFIG_UPLOAD_DIR"
case 233: // "CONFIG_UPLOAD_FILE_LIMIT"
case 234: // "CONFIG_UPLOAD_FILE_MODE"
case 235: // "CONFIG_VALUE_ABORT"
case 236: // "CONFIG_VALUE_DETC"
case 237: // "CONFIG_VALUE_HTTPS"
case 238: // "CONFIG_VALUE_OFF"
case 239: // "CONFIG_VALUE_ON"
case 240: // "CONFIG_VALUE_PARALLEL"
case 241: // "CONFIG_VALUE_PROCESS_PARTIAL"
case 242: // "CONFIG_VALUE_REJECT"
case 243: // "CONFIG_VALUE_RELEVANT_ONLY"
case 244: // "CONFIG_VALUE_SERIAL"
case 245: // "CONFIG_VALUE_WARN"
case 246: // "CONFIG_XML_EXTERNAL_ENTITY"
case 247: // "CONGIG_DIR_RESPONSE_BODY_MP"
case 248: // "CONGIG_DIR_SEC_ARG_SEP"
case 249: // "CONGIG_DIR_SEC_COOKIE_FORMAT"
case 250: // "CONGIG_DIR_SEC_DATA_DIR"
case 251: // "CONGIG_DIR_SEC_STATUS_ENGINE"
case 252: // "CONGIG_DIR_SEC_TMP_DIR"
case 253: // "DIRECTIVE"
case 254: // "DIRECTIVE_SECRULESCRIPT"
case 255: // "FREE_TEXT"
case 256: // "FREE_TEXT_QUOTE_MACRO_EXPANSION"
case 257: // "OPERATOR"
case 258: // "OPERATOR_BEGINS_WITH"
case 259: // "OPERATOR_CONTAINS"
case 260: // "OPERATOR_CONTAINS_WORD"
case 261: // "OPERATOR_DETECT_SQLI"
case 262: // "OPERATOR_DETECT_XSS"
case 263: // "OPERATOR_ENDS_WITH"
case 264: // "OPERATOR_EQ"
case 265: // "OPERATOR_FUZZY_HASH"
case 266: // "OPERATOR_GE"
case 267: // "OPERATOR_GEOLOOKUP"
case 268: // "OPERATOR_GSB_LOOKUP"
case 269: // "OPERATOR_GT"
case 270: // "OPERATOR_INSPECT_FILE"
case 271: // "OPERATOR_IP_MATCH"
case 272: // "OPERATOR_IP_MATCH_FROM_FILE"
case 273: // "OPERATOR_LE"
case 274: // "OPERATOR_LT"
case 275: // "OPERATOR_PM"
case 276: // "OPERATOR_PM_FROM_FILE"
case 277: // "OPERATOR_RBL"
case 278: // "OPERATOR_RSUB"
case 279: // "OPERATOR_RX"
case 280: // "Operator RX (content only)"
case 281: // "OPERATOR_STR_EQ"
case 282: // "OPERATOR_STR_MATCH"
case 283: // "OPERATOR_UNCONDITIONAL_MATCH"
case 284: // "OPERATOR_VALIDATE_BYTE_RANGE"
case 285: // "OPERATOR_VALIDATE_DTD"
case 286: // "OPERATOR_VALIDATE_HASH"
case 287: // "OPERATOR_VALIDATE_SCHEMA"
case 288: // "OPERATOR_VALIDATE_URL_ENCODING"
case 289: // "OPERATOR_VALIDATE_UTF8_ENCODING"
case 290: // "OPERATOR_VERIFY_CC"
case 291: // "OPERATOR_VERIFY_CPF"
case 292: // "OPERATOR_VERIFY_SSN"
case 293: // "OPERATOR_WITHIN"
case 294: // "OP_QUOTE"
case 295: // "QUOTATION_MARK"
case 296: // "RUN_TIME_VAR_BLD"
case 297: // "RUN_TIME_VAR_DUR"
case 298: // "RUN_TIME_VAR_HSV"
case 299: // "RUN_TIME_VAR_REMOTE_USER"
case 300: // "RUN_TIME_VAR_TIME"
case 301: // "RUN_TIME_VAR_TIME_DAY"
case 302: // "RUN_TIME_VAR_TIME_EPOCH"
case 303: // "RUN_TIME_VAR_TIME_HOUR"
case 304: // "RUN_TIME_VAR_TIME_MIN"
case 305: // "RUN_TIME_VAR_TIME_MON"
case 306: // "RUN_TIME_VAR_TIME_SEC"
case 307: // "RUN_TIME_VAR_TIME_WDAY"
case 308: // "RUN_TIME_VAR_TIME_YEAR"
case 309: // "SETVAR_VARIABLE_PART"
case 310: // "SETVAR_CONTENT_PART"
case 311: // "VARIABLE"
case 312: // "Dictionary element"
case 313: // "Dictionary element, selected by regexp"
case 328: // setvar_variable
case 329: // setvar_content
value.move< std::string > (that.value);
break;
case 320: // op
case 321: // op_before_init
value.move< std::unique_ptr > (that.value);
break;
case 330: // run_time_string
value.move< std::unique_ptr > (that.value);
break;
case 325: // var
value.move< std::unique_ptr > (that.value);
break;
case 326: // act
case 327: // setvar_action
value.move< std::unique_ptr > (that.value);
break;
case 323: // variables
case 324: // variables_may_be_quoted
value.move< std::unique_ptr > > > (that.value);
break;
case 318: // actions
case 319: // actions_may_quoted
value.move< std::unique_ptr > > > (that.value);
break;
default:
break;
}
// that is emptied.
that.type = empty_symbol;
}
inline
seclang_parser::stack_symbol_type&
seclang_parser::stack_symbol_type::operator= (const stack_symbol_type& that)
{
state = that.state;
switch (that.type_get ())
{
case 106: // "Accuracy"
case 107: // "Allow"
case 108: // "Append"
case 109: // "AuditLog"
case 110: // "Block"
case 111: // "Capture"
case 112: // "Chain"
case 113: // "ACTION_CTL_AUDIT_ENGINE"
case 114: // "ACTION_CTL_AUDIT_LOG_PARTS"
case 115: // "ACTION_CTL_BDY_JSON"
case 116: // "ACTION_CTL_BDY_XML"
case 117: // "ACTION_CTL_FORCE_REQ_BODY_VAR"
case 118: // "ACTION_CTL_REQUEST_BODY_ACCESS"
case 119: // "ACTION_CTL_RULE_REMOVE_BY_ID"
case 120: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID"
case 121: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG"
case 122: // "Deny"
case 123: // "DeprecateVar"
case 124: // "Drop"
case 125: // "Exec"
case 126: // "ExpireVar"
case 127: // "Id"
case 128: // "InitCol"
case 129: // "Log"
case 130: // "LogData"
case 131: // "Maturity"
case 132: // "Msg"
case 133: // "MultiMatch"
case 134: // "NoAuditLog"
case 135: // "NoLog"
case 136: // "Pass"
case 137: // "Pause"
case 138: // "Phase"
case 139: // "Prepend"
case 140: // "Proxy"
case 141: // "Redirect"
case 142: // "Rev"
case 143: // "SanatiseArg"
case 144: // "SanatiseMatched"
case 145: // "SanatiseMatchedBytes"
case 146: // "SanatiseRequestHeader"
case 147: // "SanatiseResponseHeader"
case 148: // "SetEnv"
case 149: // "SetRsc"
case 150: // "SetSid"
case 151: // "SetUID"
case 152: // "Severity"
case 153: // "Skip"
case 154: // "SkipAfter"
case 155: // "Status"
case 156: // "Tag"
case 157: // "ACTION_TRANSFORMATION_CMD_LINE"
case 158: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE"
case 159: // "ACTION_TRANSFORMATION_CSS_DECODE"
case 160: // "ACTION_TRANSFORMATION_HEX_ENCODE"
case 161: // "ACTION_TRANSFORMATION_HEX_DECODE"
case 162: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE"
case 163: // "ACTION_TRANSFORMATION_JS_DECODE"
case 164: // "ACTION_TRANSFORMATION_LENGTH"
case 165: // "ACTION_TRANSFORMATION_LOWERCASE"
case 166: // "ACTION_TRANSFORMATION_MD5"
case 167: // "ACTION_TRANSFORMATION_NONE"
case 168: // "ACTION_TRANSFORMATION_NORMALISE_PATH"
case 169: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN"
case 170: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT"
case 171: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT"
case 172: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT"
case 173: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS"
case 174: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR"
case 175: // "ACTION_TRANSFORMATION_REMOVE_NULLS"
case 176: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE"
case 177: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS"
case 178: // "ACTION_TRANSFORMATION_REPLACE_NULLS"
case 179: // "ACTION_TRANSFORMATION_SHA1"
case 180: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE"
case 181: // "ACTION_TRANSFORMATION_TRIM"
case 182: // "ACTION_TRANSFORMATION_UPPERCASE"
case 183: // "ACTION_TRANSFORMATION_URL_DECODE"
case 184: // "ACTION_TRANSFORMATION_URL_DECODE_UNI"
case 185: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE"
case 186: // "Ver"
case 187: // "xmlns"
case 188: // "CONFIG_COMPONENT_SIG"
case 189: // "CONFIG_SEC_ARGUMENT_SEPARATOR"
case 190: // "CONFIG_SEC_WEB_APP_ID"
case 191: // "CONFIG_SEC_SERVER_SIG"
case 192: // "CONFIG_DIR_AUDIT_DIR"
case 193: // "CONFIG_DIR_AUDIT_DIR_MOD"
case 194: // "CONFIG_DIR_AUDIT_ENG"
case 195: // "CONFIG_DIR_AUDIT_FLE_MOD"
case 196: // "CONFIG_DIR_AUDIT_LOG"
case 197: // "CONFIG_DIR_AUDIT_LOG2"
case 198: // "CONFIG_DIR_AUDIT_LOG_P"
case 199: // "CONFIG_DIR_AUDIT_STS"
case 200: // "CONFIG_DIR_AUDIT_TPE"
case 201: // "CONFIG_DIR_DEBUG_LOG"
case 202: // "CONFIG_DIR_DEBUG_LVL"
case 203: // "CONFIG_SEC_CACHE_TRANSFORMATIONS"
case 204: // "CONFIG_DIR_GEO_DB"
case 205: // "CONFIG_DIR_PCRE_MATCH_LIMIT"
case 206: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION"
case 207: // "CONFIG_DIR_REQ_BODY"
case 208: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT"
case 209: // "CONFIG_DIR_REQ_BODY_LIMIT"
case 210: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION"
case 211: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT"
case 212: // "CONFIG_DIR_RES_BODY"
case 213: // "CONFIG_DIR_RES_BODY_LIMIT"
case 214: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION"
case 215: // "CONFIG_DIR_RULE_ENG"
case 216: // "CONFIG_DIR_SEC_ACTION"
case 217: // "CONFIG_DIR_SEC_DEFAULT_ACTION"
case 218: // "CONFIG_DIR_SEC_MARKER"
case 219: // "CONFIG_DIR_UNICODE_MAP_FILE"
case 220: // "CONFIG_SEC_COLLECTION_TIMEOUT"
case 221: // "CONFIG_SEC_HTTP_BLKEY"
case 222: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION"
case 223: // "CONFIG_SEC_RULE_REMOVE_BY_ID"
case 224: // "CONFIG_SEC_RULE_REMOVE_BY_MSG"
case 225: // "CONFIG_SEC_RULE_REMOVE_BY_TAG"
case 226: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG"
case 227: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG"
case 228: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID"
case 229: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID"
case 230: // "CONFIG_UPDLOAD_KEEP_FILES"
case 231: // "CONFIG_UPDLOAD_SAVE_TMP_FILES"
case 232: // "CONFIG_UPLOAD_DIR"
case 233: // "CONFIG_UPLOAD_FILE_LIMIT"
case 234: // "CONFIG_UPLOAD_FILE_MODE"
case 235: // "CONFIG_VALUE_ABORT"
case 236: // "CONFIG_VALUE_DETC"
case 237: // "CONFIG_VALUE_HTTPS"
case 238: // "CONFIG_VALUE_OFF"
case 239: // "CONFIG_VALUE_ON"
case 240: // "CONFIG_VALUE_PARALLEL"
case 241: // "CONFIG_VALUE_PROCESS_PARTIAL"
case 242: // "CONFIG_VALUE_REJECT"
case 243: // "CONFIG_VALUE_RELEVANT_ONLY"
case 244: // "CONFIG_VALUE_SERIAL"
case 245: // "CONFIG_VALUE_WARN"
case 246: // "CONFIG_XML_EXTERNAL_ENTITY"
case 247: // "CONGIG_DIR_RESPONSE_BODY_MP"
case 248: // "CONGIG_DIR_SEC_ARG_SEP"
case 249: // "CONGIG_DIR_SEC_COOKIE_FORMAT"
case 250: // "CONGIG_DIR_SEC_DATA_DIR"
case 251: // "CONGIG_DIR_SEC_STATUS_ENGINE"
case 252: // "CONGIG_DIR_SEC_TMP_DIR"
case 253: // "DIRECTIVE"
case 254: // "DIRECTIVE_SECRULESCRIPT"
case 255: // "FREE_TEXT"
case 256: // "FREE_TEXT_QUOTE_MACRO_EXPANSION"
case 257: // "OPERATOR"
case 258: // "OPERATOR_BEGINS_WITH"
case 259: // "OPERATOR_CONTAINS"
case 260: // "OPERATOR_CONTAINS_WORD"
case 261: // "OPERATOR_DETECT_SQLI"
case 262: // "OPERATOR_DETECT_XSS"
case 263: // "OPERATOR_ENDS_WITH"
case 264: // "OPERATOR_EQ"
case 265: // "OPERATOR_FUZZY_HASH"
case 266: // "OPERATOR_GE"
case 267: // "OPERATOR_GEOLOOKUP"
case 268: // "OPERATOR_GSB_LOOKUP"
case 269: // "OPERATOR_GT"
case 270: // "OPERATOR_INSPECT_FILE"
case 271: // "OPERATOR_IP_MATCH"
case 272: // "OPERATOR_IP_MATCH_FROM_FILE"
case 273: // "OPERATOR_LE"
case 274: // "OPERATOR_LT"
case 275: // "OPERATOR_PM"
case 276: // "OPERATOR_PM_FROM_FILE"
case 277: // "OPERATOR_RBL"
case 278: // "OPERATOR_RSUB"
case 279: // "OPERATOR_RX"
case 280: // "Operator RX (content only)"
case 281: // "OPERATOR_STR_EQ"
case 282: // "OPERATOR_STR_MATCH"
case 283: // "OPERATOR_UNCONDITIONAL_MATCH"
case 284: // "OPERATOR_VALIDATE_BYTE_RANGE"
case 285: // "OPERATOR_VALIDATE_DTD"
case 286: // "OPERATOR_VALIDATE_HASH"
case 287: // "OPERATOR_VALIDATE_SCHEMA"
case 288: // "OPERATOR_VALIDATE_URL_ENCODING"
case 289: // "OPERATOR_VALIDATE_UTF8_ENCODING"
case 290: // "OPERATOR_VERIFY_CC"
case 291: // "OPERATOR_VERIFY_CPF"
case 292: // "OPERATOR_VERIFY_SSN"
case 293: // "OPERATOR_WITHIN"
case 294: // "OP_QUOTE"
case 295: // "QUOTATION_MARK"
case 296: // "RUN_TIME_VAR_BLD"
case 297: // "RUN_TIME_VAR_DUR"
case 298: // "RUN_TIME_VAR_HSV"
case 299: // "RUN_TIME_VAR_REMOTE_USER"
case 300: // "RUN_TIME_VAR_TIME"
case 301: // "RUN_TIME_VAR_TIME_DAY"
case 302: // "RUN_TIME_VAR_TIME_EPOCH"
case 303: // "RUN_TIME_VAR_TIME_HOUR"
case 304: // "RUN_TIME_VAR_TIME_MIN"
case 305: // "RUN_TIME_VAR_TIME_MON"
case 306: // "RUN_TIME_VAR_TIME_SEC"
case 307: // "RUN_TIME_VAR_TIME_WDAY"
case 308: // "RUN_TIME_VAR_TIME_YEAR"
case 309: // "SETVAR_VARIABLE_PART"
case 310: // "SETVAR_CONTENT_PART"
case 311: // "VARIABLE"
case 312: // "Dictionary element"
case 313: // "Dictionary element, selected by regexp"
case 328: // setvar_variable
case 329: // setvar_content
value.copy< std::string > (that.value);
break;
case 320: // op
case 321: // op_before_init
value.copy< std::unique_ptr > (that.value);
break;
case 330: // run_time_string
value.copy< std::unique_ptr > (that.value);
break;
case 325: // var
value.copy< std::unique_ptr > (that.value);
break;
case 326: // act
case 327: // setvar_action
value.copy< std::unique_ptr > (that.value);
break;
case 323: // variables
case 324: // variables_may_be_quoted
value.copy< std::unique_ptr > > > (that.value);
break;
case 318: // actions
case 319: // actions_may_quoted
value.copy< std::unique_ptr > > > (that.value);
break;
default:
break;
}
location = that.location;
return *this;
}
template
inline
void
seclang_parser::yy_destroy_ (const char* yymsg, basic_symbol& yysym) const
{
if (yymsg)
YY_SYMBOL_PRINT (yymsg, yysym);
}
#if YYDEBUG
template
void
seclang_parser::yy_print_ (std::ostream& yyo,
const basic_symbol& yysym) const
{
std::ostream& yyoutput = yyo;
YYUSE (yyoutput);
symbol_number_type yytype = yysym.type_get ();
// Avoid a (spurious) G++ 4.8 warning about "array subscript is
// below array bounds".
if (yysym.empty ())
std::abort ();
yyo << (yytype < yyntokens_ ? "token" : "nterm")
<< ' ' << yytname_[yytype] << " ("
<< yysym.location << ": ";
YYUSE (yytype);
yyo << ')';
}
#endif
inline
void
seclang_parser::yypush_ (const char* m, state_type s, symbol_type& sym)
{
stack_symbol_type t (s, sym);
yypush_ (m, t);
}
inline
void
seclang_parser::yypush_ (const char* m, stack_symbol_type& s)
{
if (m)
YY_SYMBOL_PRINT (m, s);
yystack_.push (s);
}
inline
void
seclang_parser::yypop_ (unsigned int n)
{
yystack_.pop (n);
}
#if YYDEBUG
std::ostream&
seclang_parser::debug_stream () const
{
return *yycdebug_;
}
void
seclang_parser::set_debug_stream (std::ostream& o)
{
yycdebug_ = &o;
}
seclang_parser::debug_level_type
seclang_parser::debug_level () const
{
return yydebug_;
}
void
seclang_parser::set_debug_level (debug_level_type l)
{
yydebug_ = l;
}
#endif // YYDEBUG
inline seclang_parser::state_type
seclang_parser::yy_lr_goto_state_ (state_type yystate, int yysym)
{
int yyr = yypgoto_[yysym - yyntokens_] + yystate;
if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
return yytable_[yyr];
else
return yydefgoto_[yysym - yyntokens_];
}
inline bool
seclang_parser::yy_pact_value_is_default_ (int yyvalue)
{
return yyvalue == yypact_ninf_;
}
inline bool
seclang_parser::yy_table_value_is_error_ (int yyvalue)
{
return yyvalue == yytable_ninf_;
}
int
seclang_parser::parse ()
{
// State.
int yyn;
/// Length of the RHS of the rule being reduced.
int yylen = 0;
// Error handling.
int yynerrs_ = 0;
int yyerrstatus_ = 0;
/// The lookahead symbol.
symbol_type yyla;
/// The locations where the error started and ended.
stack_symbol_type yyerror_range[3];
/// The return value of parse ().
int yyresult;
// FIXME: This shoud be completely indented. It is not yet to
// avoid gratuitous conflicts when merging into the master branch.
try
{
YYCDEBUG << "Starting parse" << std::endl;
// User initialization code.
#line 350 "/home/zimmerle/core-trustwave/ModSecurity/src/parser/seclang-parser.yy" // lalr1.cc:741
{
// Initialize the initial location.
yyla.location.begin.filename = yyla.location.end.filename = &driver.file;
}
#line 899 "seclang-parser.cc" // lalr1.cc:741
/* Initialize the stack. The initial state will be set in
yynewstate, since the latter expects the semantical and the
location values to have been already stored, initialize these
stacks with a primary value. */
yystack_.clear ();
yypush_ (YY_NULLPTR, 0, yyla);
// A new symbol was pushed on the stack.
yynewstate:
YYCDEBUG << "Entering state " << yystack_[0].state << std::endl;
// Accept?
if (yystack_[0].state == yyfinal_)
goto yyacceptlab;
goto yybackup;
// Backup.
yybackup:
// Try to take a decision without lookahead.
yyn = yypact_[yystack_[0].state];
if (yy_pact_value_is_default_ (yyn))
goto yydefault;
// Read a lookahead token.
if (yyla.empty ())
{
YYCDEBUG << "Reading a token: ";
try
{
symbol_type yylookahead (yylex (driver));
yyla.move (yylookahead);
}
catch (const syntax_error& yyexc)
{
error (yyexc);
goto yyerrlab1;
}
}
YY_SYMBOL_PRINT ("Next token is", yyla);
/* If the proper action on seeing token YYLA.TYPE is to reduce or
to detect an error, take that action. */
yyn += yyla.type_get ();
if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.type_get ())
goto yydefault;
// Reduce or error.
yyn = yytable_[yyn];
if (yyn <= 0)
{
if (yy_table_value_is_error_ (yyn))
goto yyerrlab;
yyn = -yyn;
goto yyreduce;
}
// Count tokens shifted since error; after three, turn off error status.
if (yyerrstatus_)
--yyerrstatus_;
// Shift the lookahead token.
yypush_ ("Shifting", yyn, yyla);
goto yynewstate;
/*-----------------------------------------------------------.
| yydefault -- do the default action for the current state. |
`-----------------------------------------------------------*/
yydefault:
yyn = yydefact_[yystack_[0].state];
if (yyn == 0)
goto yyerrlab;
goto yyreduce;
/*-----------------------------.
| yyreduce -- Do a reduction. |
`-----------------------------*/
yyreduce:
yylen = yyr2_[yyn];
{
stack_symbol_type yylhs;
yylhs.state = yy_lr_goto_state_(yystack_[yylen].state, yyr1_[yyn]);
/* Variants are always initialized to an empty instance of the
correct type. The default '$$ = $1' action is NOT applied
when using variants. */
switch (yyr1_[yyn])
{
case 106: // "Accuracy"
case 107: // "Allow"
case 108: // "Append"
case 109: // "AuditLog"
case 110: // "Block"
case 111: // "Capture"
case 112: // "Chain"
case 113: // "ACTION_CTL_AUDIT_ENGINE"
case 114: // "ACTION_CTL_AUDIT_LOG_PARTS"
case 115: // "ACTION_CTL_BDY_JSON"
case 116: // "ACTION_CTL_BDY_XML"
case 117: // "ACTION_CTL_FORCE_REQ_BODY_VAR"
case 118: // "ACTION_CTL_REQUEST_BODY_ACCESS"
case 119: // "ACTION_CTL_RULE_REMOVE_BY_ID"
case 120: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID"
case 121: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG"
case 122: // "Deny"
case 123: // "DeprecateVar"
case 124: // "Drop"
case 125: // "Exec"
case 126: // "ExpireVar"
case 127: // "Id"
case 128: // "InitCol"
case 129: // "Log"
case 130: // "LogData"
case 131: // "Maturity"
case 132: // "Msg"
case 133: // "MultiMatch"
case 134: // "NoAuditLog"
case 135: // "NoLog"
case 136: // "Pass"
case 137: // "Pause"
case 138: // "Phase"
case 139: // "Prepend"
case 140: // "Proxy"
case 141: // "Redirect"
case 142: // "Rev"
case 143: // "SanatiseArg"
case 144: // "SanatiseMatched"
case 145: // "SanatiseMatchedBytes"
case 146: // "SanatiseRequestHeader"
case 147: // "SanatiseResponseHeader"
case 148: // "SetEnv"
case 149: // "SetRsc"
case 150: // "SetSid"
case 151: // "SetUID"
case 152: // "Severity"
case 153: // "Skip"
case 154: // "SkipAfter"
case 155: // "Status"
case 156: // "Tag"
case 157: // "ACTION_TRANSFORMATION_CMD_LINE"
case 158: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE"
case 159: // "ACTION_TRANSFORMATION_CSS_DECODE"
case 160: // "ACTION_TRANSFORMATION_HEX_ENCODE"
case 161: // "ACTION_TRANSFORMATION_HEX_DECODE"
case 162: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE"
case 163: // "ACTION_TRANSFORMATION_JS_DECODE"
case 164: // "ACTION_TRANSFORMATION_LENGTH"
case 165: // "ACTION_TRANSFORMATION_LOWERCASE"
case 166: // "ACTION_TRANSFORMATION_MD5"
case 167: // "ACTION_TRANSFORMATION_NONE"
case 168: // "ACTION_TRANSFORMATION_NORMALISE_PATH"
case 169: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN"
case 170: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT"
case 171: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT"
case 172: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT"
case 173: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS"
case 174: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR"
case 175: // "ACTION_TRANSFORMATION_REMOVE_NULLS"
case 176: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE"
case 177: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS"
case 178: // "ACTION_TRANSFORMATION_REPLACE_NULLS"
case 179: // "ACTION_TRANSFORMATION_SHA1"
case 180: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE"
case 181: // "ACTION_TRANSFORMATION_TRIM"
case 182: // "ACTION_TRANSFORMATION_UPPERCASE"
case 183: // "ACTION_TRANSFORMATION_URL_DECODE"
case 184: // "ACTION_TRANSFORMATION_URL_DECODE_UNI"
case 185: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE"
case 186: // "Ver"
case 187: // "xmlns"
case 188: // "CONFIG_COMPONENT_SIG"
case 189: // "CONFIG_SEC_ARGUMENT_SEPARATOR"
case 190: // "CONFIG_SEC_WEB_APP_ID"
case 191: // "CONFIG_SEC_SERVER_SIG"
case 192: // "CONFIG_DIR_AUDIT_DIR"
case 193: // "CONFIG_DIR_AUDIT_DIR_MOD"
case 194: // "CONFIG_DIR_AUDIT_ENG"
case 195: // "CONFIG_DIR_AUDIT_FLE_MOD"
case 196: // "CONFIG_DIR_AUDIT_LOG"
case 197: // "CONFIG_DIR_AUDIT_LOG2"
case 198: // "CONFIG_DIR_AUDIT_LOG_P"
case 199: // "CONFIG_DIR_AUDIT_STS"
case 200: // "CONFIG_DIR_AUDIT_TPE"
case 201: // "CONFIG_DIR_DEBUG_LOG"
case 202: // "CONFIG_DIR_DEBUG_LVL"
case 203: // "CONFIG_SEC_CACHE_TRANSFORMATIONS"
case 204: // "CONFIG_DIR_GEO_DB"
case 205: // "CONFIG_DIR_PCRE_MATCH_LIMIT"
case 206: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION"
case 207: // "CONFIG_DIR_REQ_BODY"
case 208: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT"
case 209: // "CONFIG_DIR_REQ_BODY_LIMIT"
case 210: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION"
case 211: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT"
case 212: // "CONFIG_DIR_RES_BODY"
case 213: // "CONFIG_DIR_RES_BODY_LIMIT"
case 214: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION"
case 215: // "CONFIG_DIR_RULE_ENG"
case 216: // "CONFIG_DIR_SEC_ACTION"
case 217: // "CONFIG_DIR_SEC_DEFAULT_ACTION"
case 218: // "CONFIG_DIR_SEC_MARKER"
case 219: // "CONFIG_DIR_UNICODE_MAP_FILE"
case 220: // "CONFIG_SEC_COLLECTION_TIMEOUT"
case 221: // "CONFIG_SEC_HTTP_BLKEY"
case 222: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION"
case 223: // "CONFIG_SEC_RULE_REMOVE_BY_ID"
case 224: // "CONFIG_SEC_RULE_REMOVE_BY_MSG"
case 225: // "CONFIG_SEC_RULE_REMOVE_BY_TAG"
case 226: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG"
case 227: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG"
case 228: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID"
case 229: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID"
case 230: // "CONFIG_UPDLOAD_KEEP_FILES"
case 231: // "CONFIG_UPDLOAD_SAVE_TMP_FILES"
case 232: // "CONFIG_UPLOAD_DIR"
case 233: // "CONFIG_UPLOAD_FILE_LIMIT"
case 234: // "CONFIG_UPLOAD_FILE_MODE"
case 235: // "CONFIG_VALUE_ABORT"
case 236: // "CONFIG_VALUE_DETC"
case 237: // "CONFIG_VALUE_HTTPS"
case 238: // "CONFIG_VALUE_OFF"
case 239: // "CONFIG_VALUE_ON"
case 240: // "CONFIG_VALUE_PARALLEL"
case 241: // "CONFIG_VALUE_PROCESS_PARTIAL"
case 242: // "CONFIG_VALUE_REJECT"
case 243: // "CONFIG_VALUE_RELEVANT_ONLY"
case 244: // "CONFIG_VALUE_SERIAL"
case 245: // "CONFIG_VALUE_WARN"
case 246: // "CONFIG_XML_EXTERNAL_ENTITY"
case 247: // "CONGIG_DIR_RESPONSE_BODY_MP"
case 248: // "CONGIG_DIR_SEC_ARG_SEP"
case 249: // "CONGIG_DIR_SEC_COOKIE_FORMAT"
case 250: // "CONGIG_DIR_SEC_DATA_DIR"
case 251: // "CONGIG_DIR_SEC_STATUS_ENGINE"
case 252: // "CONGIG_DIR_SEC_TMP_DIR"
case 253: // "DIRECTIVE"
case 254: // "DIRECTIVE_SECRULESCRIPT"
case 255: // "FREE_TEXT"
case 256: // "FREE_TEXT_QUOTE_MACRO_EXPANSION"
case 257: // "OPERATOR"
case 258: // "OPERATOR_BEGINS_WITH"
case 259: // "OPERATOR_CONTAINS"
case 260: // "OPERATOR_CONTAINS_WORD"
case 261: // "OPERATOR_DETECT_SQLI"
case 262: // "OPERATOR_DETECT_XSS"
case 263: // "OPERATOR_ENDS_WITH"
case 264: // "OPERATOR_EQ"
case 265: // "OPERATOR_FUZZY_HASH"
case 266: // "OPERATOR_GE"
case 267: // "OPERATOR_GEOLOOKUP"
case 268: // "OPERATOR_GSB_LOOKUP"
case 269: // "OPERATOR_GT"
case 270: // "OPERATOR_INSPECT_FILE"
case 271: // "OPERATOR_IP_MATCH"
case 272: // "OPERATOR_IP_MATCH_FROM_FILE"
case 273: // "OPERATOR_LE"
case 274: // "OPERATOR_LT"
case 275: // "OPERATOR_PM"
case 276: // "OPERATOR_PM_FROM_FILE"
case 277: // "OPERATOR_RBL"
case 278: // "OPERATOR_RSUB"
case 279: // "OPERATOR_RX"
case 280: // "Operator RX (content only)"
case 281: // "OPERATOR_STR_EQ"
case 282: // "OPERATOR_STR_MATCH"
case 283: // "OPERATOR_UNCONDITIONAL_MATCH"
case 284: // "OPERATOR_VALIDATE_BYTE_RANGE"
case 285: // "OPERATOR_VALIDATE_DTD"
case 286: // "OPERATOR_VALIDATE_HASH"
case 287: // "OPERATOR_VALIDATE_SCHEMA"
case 288: // "OPERATOR_VALIDATE_URL_ENCODING"
case 289: // "OPERATOR_VALIDATE_UTF8_ENCODING"
case 290: // "OPERATOR_VERIFY_CC"
case 291: // "OPERATOR_VERIFY_CPF"
case 292: // "OPERATOR_VERIFY_SSN"
case 293: // "OPERATOR_WITHIN"
case 294: // "OP_QUOTE"
case 295: // "QUOTATION_MARK"
case 296: // "RUN_TIME_VAR_BLD"
case 297: // "RUN_TIME_VAR_DUR"
case 298: // "RUN_TIME_VAR_HSV"
case 299: // "RUN_TIME_VAR_REMOTE_USER"
case 300: // "RUN_TIME_VAR_TIME"
case 301: // "RUN_TIME_VAR_TIME_DAY"
case 302: // "RUN_TIME_VAR_TIME_EPOCH"
case 303: // "RUN_TIME_VAR_TIME_HOUR"
case 304: // "RUN_TIME_VAR_TIME_MIN"
case 305: // "RUN_TIME_VAR_TIME_MON"
case 306: // "RUN_TIME_VAR_TIME_SEC"
case 307: // "RUN_TIME_VAR_TIME_WDAY"
case 308: // "RUN_TIME_VAR_TIME_YEAR"
case 309: // "SETVAR_VARIABLE_PART"
case 310: // "SETVAR_CONTENT_PART"
case 311: // "VARIABLE"
case 312: // "Dictionary element"
case 313: // "Dictionary element, selected by regexp"
case 328: // setvar_variable
case 329: // setvar_content
yylhs.value.build< std::string > ();
break;
case 320: // op
case 321: // op_before_init
yylhs.value.build< std::unique_ptr > ();
break;
case 330: // run_time_string
yylhs.value.build< std::unique_ptr > ();
break;
case 325: // var
yylhs.value.build< std::unique_ptr > ();
break;
case 326: // act
case 327: // setvar_action
yylhs.value.build< std::unique_ptr > ();
break;
case 323: // variables
case 324: // variables_may_be_quoted
yylhs.value.build< std::unique_ptr > > > ();
break;
case 318: // actions
case 319: // actions_may_quoted
yylhs.value.build< std::unique_ptr > > > ();
break;
default:
break;
}
// Compute the default @$.
{
slice slice (yystack_, yylen);
YYLLOC_DEFAULT (yylhs.location, slice, yylen);
}
// Perform the reduction.
YY_REDUCE_PRINT (yyn);
try
{
switch (yyn)
{
case 2:
#line 715 "seclang-parser.yy" // lalr1.cc:859
{
return 0;
}
#line 1252 "seclang-parser.cc" // lalr1.cc:859
break;
case 6:
#line 728 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setStorageDirMode(strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 8));
}
#line 1260 "seclang-parser.cc" // lalr1.cc:859
break;
case 7:
#line 734 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setStorageDir(yystack_[0].value.as< std::string > ());
}
#line 1268 "seclang-parser.cc" // lalr1.cc:859
break;
case 8:
#line 740 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setStatus(modsecurity::audit_log::AuditLog::RelevantOnlyAuditLogStatus);
}
#line 1276 "seclang-parser.cc" // lalr1.cc:859
break;
case 9:
#line 744 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setStatus(modsecurity::audit_log::AuditLog::OffAuditLogStatus);
}
#line 1284 "seclang-parser.cc" // lalr1.cc:859
break;
case 10:
#line 748 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setStatus(modsecurity::audit_log::AuditLog::OnAuditLogStatus);
}
#line 1292 "seclang-parser.cc" // lalr1.cc:859
break;
case 11:
#line 754 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setFileMode(strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 8));
}
#line 1300 "seclang-parser.cc" // lalr1.cc:859
break;
case 12:
#line 760 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setFilePath2(yystack_[0].value.as< std::string > ());
}
#line 1308 "seclang-parser.cc" // lalr1.cc:859
break;
case 13:
#line 766 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setParts(yystack_[0].value.as< std::string > ());
}
#line 1316 "seclang-parser.cc" // lalr1.cc:859
break;
case 14:
#line 772 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setFilePath1(yystack_[0].value.as< std::string > ());
}
#line 1324 "seclang-parser.cc" // lalr1.cc:859
break;
case 15:
#line 777 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setFormat(modsecurity::audit_log::AuditLog::JSONAuditLogFormat);
}
#line 1332 "seclang-parser.cc" // lalr1.cc:859
break;
case 16:
#line 782 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setFormat(modsecurity::audit_log::AuditLog::NativeAuditLogFormat);
}
#line 1340 "seclang-parser.cc" // lalr1.cc:859
break;
case 17:
#line 788 "seclang-parser.yy" // lalr1.cc:859
{
std::string relevant_status(yystack_[0].value.as< std::string > ());
driver.m_auditLog->setRelevantStatus(relevant_status);
}
#line 1349 "seclang-parser.cc" // lalr1.cc:859
break;
case 18:
#line 795 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setType(modsecurity::audit_log::AuditLog::SerialAuditLogType);
}
#line 1357 "seclang-parser.cc" // lalr1.cc:859
break;
case 19:
#line 799 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setType(modsecurity::audit_log::AuditLog::ParallelAuditLogType);
}
#line 1365 "seclang-parser.cc" // lalr1.cc:859
break;
case 20:
#line 803 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setType(modsecurity::audit_log::AuditLog::HttpsAuditLogType);
}
#line 1373 "seclang-parser.cc" // lalr1.cc:859
break;
case 21:
#line 809 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_uploadKeepFiles = modsecurity::RulesProperties::TrueConfigBoolean;
}
#line 1381 "seclang-parser.cc" // lalr1.cc:859
break;
case 22:
#line 813 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_uploadKeepFiles = modsecurity::RulesProperties::FalseConfigBoolean;
}
#line 1389 "seclang-parser.cc" // lalr1.cc:859
break;
case 23:
#line 817 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_uploadFileLimit.m_set = true;
driver.m_uploadFileLimit.m_value = strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 10);
}
#line 1398 "seclang-parser.cc" // lalr1.cc:859
break;
case 24:
#line 822 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_uploadFileMode.m_set = true;
driver.m_uploadFileMode.m_value = strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 8);
}
#line 1407 "seclang-parser.cc" // lalr1.cc:859
break;
case 25:
#line 827 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_uploadDirectory.m_set = true;
driver.m_uploadDirectory.m_value = yystack_[0].value.as< std::string > ();
}
#line 1416 "seclang-parser.cc" // lalr1.cc:859
break;
case 26:
#line 832 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_tmpSaveUploadedFiles = modsecurity::RulesProperties::TrueConfigBoolean;
}
#line 1424 "seclang-parser.cc" // lalr1.cc:859
break;
case 27:
#line 836 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_tmpSaveUploadedFiles = modsecurity::RulesProperties::FalseConfigBoolean;
}
#line 1432 "seclang-parser.cc" // lalr1.cc:859
break;
case 28:
#line 843 "seclang-parser.yy" // lalr1.cc:859
{
yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[1].value.as< std::unique_ptr > > > ());
}
#line 1440 "seclang-parser.cc" // lalr1.cc:859
break;
case 29:
#line 847 "seclang-parser.yy" // lalr1.cc:859
{
yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[0].value.as< std::unique_ptr > > > ());
}
#line 1448 "seclang-parser.cc" // lalr1.cc:859
break;
case 30:
#line 854 "seclang-parser.yy" // lalr1.cc:859
{
ACTION_INIT(yystack_[0].value.as< std::unique_ptr > (), yystack_[3].location)
yystack_[2].value.as< std::unique_ptr > > > ()->push_back(std::move(yystack_[0].value.as< std::unique_ptr > ()));
yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[2].value.as< std::unique_ptr > > > ());
}
#line 1458 "seclang-parser.cc" // lalr1.cc:859
break;
case 31:
#line 860 "seclang-parser.yy" // lalr1.cc:859
{
std::unique_ptr>> b(new std::vector>());
ACTION_INIT(yystack_[0].value.as< std::unique_ptr > (), yystack_[1].location)
b->push_back(std::move(yystack_[0].value.as< std::unique_ptr > ()));
yylhs.value.as< std::unique_ptr > > > () = std::move(b);
}
#line 1469 "seclang-parser.cc" // lalr1.cc:859
break;
case 32:
#line 870 "seclang-parser.yy" // lalr1.cc:859
{
yylhs.value.as< std::unique_ptr > () = std::move(yystack_[0].value.as< std::unique_ptr > ());
std::string error;
if (yylhs.value.as< std::unique_ptr > ()->init(driver.ref.back(), &error) == false) {
driver.error(yystack_[1].location, error);
YYERROR;
}
}
#line 1482 "seclang-parser.cc" // lalr1.cc:859
break;
case 33:
#line 879 "seclang-parser.yy" // lalr1.cc:859
{
yylhs.value.as< std::unique_ptr > () = std::move(yystack_[0].value.as< std::unique_ptr > ());
yylhs.value.as< std::unique_ptr > ()->m_negation = true;
std::string error;
if (yylhs.value.as< std::unique_ptr > ()->init(driver.ref.back(), &error) == false) {
driver.error(yystack_[2].location, error);
YYERROR;
}
}
#line 1496 "seclang-parser.cc" // lalr1.cc:859
break;
case 34:
#line 889 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rx(utils::string::removeBracketsIfNeeded(yystack_[0].value.as< std::string > ())));
std::string error;
if (yylhs.value.as< std::unique_ptr > ()->init(driver.ref.back(), &error) == false) {
driver.error(yystack_[1].location, error);
YYERROR;
}
}
#line 1509 "seclang-parser.cc" // lalr1.cc:859
break;
case 35:
#line 898 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rx("Rx", utils::string::removeBracketsIfNeeded(yystack_[0].value.as< std::string > ()), true));
std::string error;
if (yylhs.value.as< std::unique_ptr > ()->init(driver.ref.back(), &error) == false) {
driver.error(yystack_[2].location, error);
YYERROR;
}
}
#line 1522 "seclang-parser.cc" // lalr1.cc:859
break;
case 36:
#line 910 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::UnconditionalMatch());
}
#line 1530 "seclang-parser.cc" // lalr1.cc:859
break;
case 37:
#line 914 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::DetectSQLi());
}
#line 1538 "seclang-parser.cc" // lalr1.cc:859
break;
case 38:
#line 918 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::DetectXSS());
}
#line 1546 "seclang-parser.cc" // lalr1.cc:859
break;
case 39:
#line 922 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateUrlEncoding());
}
#line 1554 "seclang-parser.cc" // lalr1.cc:859
break;
case 40:
#line 926 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateUtf8Encoding());
}
#line 1562 "seclang-parser.cc" // lalr1.cc:859
break;
case 41:
#line 930 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::InspectFile(yystack_[0].value.as< std::string > ()));
std::string error;
if (yylhs.value.as< std::unique_ptr > ()->init(driver.ref.back(), &error) == false) {
driver.error(yystack_[2].location, error);
YYERROR;
}
}
#line 1575 "seclang-parser.cc" // lalr1.cc:859
break;
case 42:
#line 939 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::FuzzyHash(utils::string::removeBracketsIfNeeded(yystack_[0].value.as< std::string > ())));
std::string error;
if (yylhs.value.as< std::unique_ptr > ()->init(driver.ref.back(), &error) == false) {
driver.error(yystack_[2].location, error);
YYERROR;
}
}
#line 1588 "seclang-parser.cc" // lalr1.cc:859
break;
case 43:
#line 948 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateByteRange(yystack_[0].value.as< std::string > ()));
}
#line 1596 "seclang-parser.cc" // lalr1.cc:859
break;
case 44:
#line 952 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateDTD(yystack_[0].value.as< std::string > ()));
}
#line 1604 "seclang-parser.cc" // lalr1.cc:859
break;
case 45:
#line 956 "seclang-parser.yy" // lalr1.cc:859
{
/* $$ = new operators::ValidateHash($1); */
OPERATOR_NOT_SUPPORTED("ValidateHash", yystack_[2].location);
}
#line 1613 "seclang-parser.cc" // lalr1.cc:859
break;
case 46:
#line 961 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateSchema(yystack_[0].value.as< std::string > ()));
}
#line 1621 "seclang-parser.cc" // lalr1.cc:859
break;
case 47:
#line 965 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::VerifyCC(yystack_[0].value.as< std::string > ()));
}
#line 1629 "seclang-parser.cc" // lalr1.cc:859
break;
case 48:
#line 969 "seclang-parser.yy" // lalr1.cc:859
{
/* $$ = new operators::VerifyCPF($1); */
OPERATOR_NOT_SUPPORTED("VerifyCPF", yystack_[2].location);
}
#line 1638 "seclang-parser.cc" // lalr1.cc:859
break;
case 49:
#line 974 "seclang-parser.yy" // lalr1.cc:859
{
/* $$ = new operators::VerifySSN($1); */
OPERATOR_NOT_SUPPORTED("VerifySSN", yystack_[2].location);
}
#line 1647 "seclang-parser.cc" // lalr1.cc:859
break;
case 50:
#line 979 "seclang-parser.yy" // lalr1.cc:859
{
/* $$ = new operators::GsbLookup($1); */
OPERATOR_NOT_SUPPORTED("GsbLookup", yystack_[2].location);
}
#line 1656 "seclang-parser.cc" // lalr1.cc:859
break;
case 51:
#line 984 "seclang-parser.yy" // lalr1.cc:859
{
/* $$ = new operators::Rsub($1); */
OPERATOR_NOT_SUPPORTED("Rsub", yystack_[2].location);
}
#line 1665 "seclang-parser.cc" // lalr1.cc:859
break;
case 52:
#line 989 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Within(yystack_[0].value.as< std::string > ()));
}
#line 1673 "seclang-parser.cc" // lalr1.cc:859
break;
case 53:
#line 993 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ContainsWord(yystack_[0].value.as< std::string > ()));
}
#line 1681 "seclang-parser.cc" // lalr1.cc:859
break;
case 54:
#line 997 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Contains(yystack_[0].value.as< std::string > ()));
}
#line 1689 "seclang-parser.cc" // lalr1.cc:859
break;
case 55:
#line 1001 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::EndsWith(yystack_[0].value.as< std::string > ()));
}
#line 1697 "seclang-parser.cc" // lalr1.cc:859
break;
case 56:
#line 1005 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Eq(yystack_[0].value.as< std::string > ()));
}
#line 1705 "seclang-parser.cc" // lalr1.cc:859
break;
case 57:
#line 1009 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Ge(yystack_[0].value.as< std::string > ()));
}
#line 1713 "seclang-parser.cc" // lalr1.cc:859
break;
case 58:
#line 1013 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Gt(yystack_[0].value.as< std::string > ()));
}
#line 1721 "seclang-parser.cc" // lalr1.cc:859
break;
case 59:
#line 1017 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::IpMatchF(yystack_[0].value.as< std::string > ()));
}
#line 1729 "seclang-parser.cc" // lalr1.cc:859
break;
case 60:
#line 1021 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::IpMatch(yystack_[0].value.as< std::string > ()));
}
#line 1737 "seclang-parser.cc" // lalr1.cc:859
break;
case 61:
#line 1025 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Le(yystack_[0].value.as< std::string > ()));
}
#line 1745 "seclang-parser.cc" // lalr1.cc:859
break;
case 62:
#line 1029 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Lt(yystack_[0].value.as< std::string > ()));
}
#line 1753 "seclang-parser.cc" // lalr1.cc:859
break;
case 63:
#line 1033 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::PmFromFile(yystack_[0].value.as< std::string > ()));
}
#line 1761 "seclang-parser.cc" // lalr1.cc:859
break;
case 64:
#line 1037 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Pm(yystack_[0].value.as< std::string > ()));
}
#line 1769 "seclang-parser.cc" // lalr1.cc:859
break;
case 65:
#line 1041 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rbl(yystack_[0].value.as< std::string > ()));
}
#line 1777 "seclang-parser.cc" // lalr1.cc:859
break;
case 66:
#line 1045 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rx(yystack_[0].value.as< std::string > ()));
std::string error;
if (yylhs.value.as< std::unique_ptr > ()->init(driver.ref.back(), &error) == false) {
driver.error(yystack_[2].location, error);
YYERROR;
}
}
#line 1790 "seclang-parser.cc" // lalr1.cc:859
break;
case 67:
#line 1054 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::StrEq(yystack_[0].value.as< std::string > ()));
}
#line 1798 "seclang-parser.cc" // lalr1.cc:859
break;
case 68:
#line 1058 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::StrMatch(yystack_[0].value.as< std::string > ()));
}
#line 1806 "seclang-parser.cc" // lalr1.cc:859
break;
case 69:
#line 1062 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::BeginsWith(yystack_[0].value.as< std::string > ()));
}
#line 1814 "seclang-parser.cc" // lalr1.cc:859
break;
case 70:
#line 1066 "seclang-parser.yy" // lalr1.cc:859
{
#ifdef WITH_GEOIP
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::GeoLookup());
#else
std::stringstream ss;
ss << "This version of ModSecurity was not compiled with GeoIP support.";
driver.error(yystack_[1].location, ss.str());
YYERROR;
#endif // WITH_GEOIP
}
#line 1829 "seclang-parser.cc" // lalr1.cc:859
break;
case 72:
#line 1081 "seclang-parser.yy" // lalr1.cc:859
{
std::vector *a = new std::vector();
for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) {
a->push_back(i.release());
}
std::vector *v = new std::vector();
for (auto &i : *yystack_[2].value.as< std::unique_ptr > > > ().get()) {
v->push_back(i.release());
}
Operator *op = yystack_[1].value.as< std::unique_ptr > ().release();
Rule *rule = new Rule(
/* op */ op,
/* variables */ v,
/* actions */ a,
/* file name */ driver.ref.back(),
/* line number */ yystack_[4].location.end.line
);
if (driver.addSecRule(rule) == false) {
delete rule;
YYERROR;
}
}
#line 1857 "seclang-parser.cc" // lalr1.cc:859
break;
case 73:
#line 1105 "seclang-parser.yy" // lalr1.cc:859
{
std::vector *v = new std::vector();
for (auto &i : *yystack_[1].value.as< std::unique_ptr > > > ().get()) {
v->push_back(i.release());
}
Rule *rule = new Rule(
/* op */ yystack_[0].value.as< std::unique_ptr > ().release(),
/* variables */ v,
/* actions */ NULL,
/* file name */ driver.ref.back(),
/* line number */ yystack_[3].location.end.line
);
if (driver.addSecRule(rule) == false) {
delete rule;
YYERROR;
}
}
#line 1880 "seclang-parser.cc" // lalr1.cc:859
break;
case 74:
#line 1124 "seclang-parser.yy" // lalr1.cc:859
{
std::vector *a = new std::vector();
for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) {
a->push_back(i.release());
}
Rule *rule = new Rule(
/* op */ NULL,
/* variables */ NULL,
/* actions */ a,
/* file name */ driver.ref.back(),
/* line number */ yystack_[2].location.end.line
);
driver.addSecAction(rule);
}
#line 1899 "seclang-parser.cc" // lalr1.cc:859
break;
case 75:
#line 1139 "seclang-parser.yy" // lalr1.cc:859
{
std::string err;
std::vector *a = new std::vector();
for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) {
a->push_back(i.release());
}
RuleScript *r = new RuleScript(
/* path to script */ yystack_[1].value.as< std::string > (),
/* actions */ a,
/* file name */ driver.ref.back(),
/* line number */ yystack_[2].location.end.line
);
if (r->init(&err) == false) {
driver.error(yystack_[2].location, "Failed to load script: " + err);
delete r;
YYERROR;
}
if (driver.addSecRuleScript(r) == false) {
delete r;
YYERROR;
}
}
#line 1927 "seclang-parser.cc" // lalr1.cc:859
break;
case 76:
#line 1163 "seclang-parser.yy" // lalr1.cc:859
{
std::vector *actions = new std::vector();
for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) {
actions->push_back(i.release());
}
std::vector checkedActions;
int definedPhase = -1;
int secRuleDefinedPhase = -1;
for (actions::Action *a : *actions) {
actions::Phase *phase = dynamic_cast(a);
if (phase != NULL) {
definedPhase = phase->m_phase;
secRuleDefinedPhase = phase->m_secRulesPhase;
delete phase;
} else if (a->action_kind == actions::Action::RunTimeOnlyIfMatchKind ||
a->action_kind == actions::Action::RunTimeBeforeMatchAttemptKind) {
actions::transformations::None *none = dynamic_cast(a);
if (none != NULL) {
driver.error(yystack_[2].location, "The transformation none is not suitable to be part of the SecDefaultActions");
YYERROR;
}
checkedActions.push_back(a);
} else {
driver.error(yystack_[2].location, "The action '" + a->m_name + "' is not suitable to be part of the SecDefaultActions");
YYERROR;
}
}
if (definedPhase == -1) {
definedPhase = modsecurity::Phases::RequestHeadersPhase;
}
if (!driver.m_defaultActions[definedPhase].empty()) {
std::stringstream ss;
ss << "SecDefaultActions can only be placed once per phase and configuration context. Phase ";
ss << secRuleDefinedPhase;
ss << " was informed already.";
driver.error(yystack_[2].location, ss.str());
YYERROR;
}
for (actions::Action *a : checkedActions) {
driver.m_defaultActions[definedPhase].push_back(a);
}
delete actions;
}
#line 1978 "seclang-parser.cc" // lalr1.cc:859
break;
case 77:
#line 1210 "seclang-parser.yy" // lalr1.cc:859
{
driver.addSecMarker(modsecurity::utils::string::removeBracketsIfNeeded(yystack_[0].value.as< std::string > ()));
}
#line 1986 "seclang-parser.cc" // lalr1.cc:859
break;
case 78:
#line 1214 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_secRuleEngine = modsecurity::Rules::DisabledRuleEngine;
}
#line 1994 "seclang-parser.cc" // lalr1.cc:859
break;
case 79:
#line 1218 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_secRuleEngine = modsecurity::Rules::EnabledRuleEngine;
}
#line 2002 "seclang-parser.cc" // lalr1.cc:859
break;
case 80:
#line 1222 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_secRuleEngine = modsecurity::Rules::DetectionOnlyRuleEngine;
}
#line 2010 "seclang-parser.cc" // lalr1.cc:859
break;
case 81:
#line 1226 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_secRequestBodyAccess = modsecurity::RulesProperties::TrueConfigBoolean;
}
#line 2018 "seclang-parser.cc" // lalr1.cc:859
break;
case 82:
#line 1230 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_secRequestBodyAccess = modsecurity::RulesProperties::FalseConfigBoolean;
}
#line 2026 "seclang-parser.cc" // lalr1.cc:859
break;
case 83:
#line 1234 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_secResponseBodyAccess = modsecurity::RulesProperties::TrueConfigBoolean;
}
#line 2034 "seclang-parser.cc" // lalr1.cc:859
break;
case 84:
#line 1238 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_secResponseBodyAccess = modsecurity::RulesProperties::FalseConfigBoolean;
}
#line 2042 "seclang-parser.cc" // lalr1.cc:859
break;
case 85:
#line 1242 "seclang-parser.yy" // lalr1.cc:859
{
if (yystack_[0].value.as< std::string > ().length() != 1) {
driver.error(yystack_[1].location, "Argument separator should be set to a single character.");
YYERROR;
}
driver.m_secArgumentSeparator.m_value = yystack_[0].value.as< std::string > ();
driver.m_secArgumentSeparator.m_set = true;
}
#line 2055 "seclang-parser.cc" // lalr1.cc:859
break;
case 86:
#line 1251 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_components.push_back(yystack_[0].value.as< std::string > ());
}
#line 2063 "seclang-parser.cc" // lalr1.cc:859
break;
case 87:
#line 1255 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_secWebAppId.m_value = yystack_[0].value.as< std::string > ();
driver.m_secWebAppId.m_set = true;
}
#line 2072 "seclang-parser.cc" // lalr1.cc:859
break;
case 88:
#line 1260 "seclang-parser.yy" // lalr1.cc:859
{
driver.error(yystack_[1].location, "SecServerSignature is not supported.");
YYERROR;
}
#line 2081 "seclang-parser.cc" // lalr1.cc:859
break;
case 89:
#line 1265 "seclang-parser.yy" // lalr1.cc:859
{
driver.error(yystack_[2].location, "ContentInjection is not yet supported.");
YYERROR;
}
#line 2090 "seclang-parser.cc" // lalr1.cc:859
break;
case 90:
#line 1270 "seclang-parser.yy" // lalr1.cc:859
{
driver.error(yystack_[1].location, "SecCacheTransformations is not supported.");
YYERROR;
}
#line 2099 "seclang-parser.cc" // lalr1.cc:859
break;
case 91:
#line 1275 "seclang-parser.yy" // lalr1.cc:859
{
driver.error(yystack_[2].location, "ContentInjection is not yet supported.");
YYERROR;
}
#line 2108 "seclang-parser.cc" // lalr1.cc:859
break;
case 92:
#line 1280 "seclang-parser.yy" // lalr1.cc:859
{
std::string error;
if (driver.m_exceptions.load(yystack_[0].value.as< std::string > (), &error) == false) {
std::stringstream ss;
ss << "SecRuleRemoveById: failed to load:";
ss << yystack_[0].value.as< std::string > ();
ss << ". ";
ss << error;
driver.error(yystack_[1].location, ss.str());
YYERROR;
}
}
#line 2125 "seclang-parser.cc" // lalr1.cc:859
break;
case 93:
#line 1293 "seclang-parser.yy" // lalr1.cc:859
{
std::string error;
if (driver.m_exceptions.loadRemoveRuleByTag(yystack_[0].value.as< std::string > (), &error) == false) {
std::stringstream ss;
ss << "SecRuleRemoveByTag: failed to load:";
ss << yystack_[0].value.as< std::string > ();
ss << ". ";
ss << error;
driver.error(yystack_[1].location, ss.str());
YYERROR;
}
}
#line 2142 "seclang-parser.cc" // lalr1.cc:859
break;
case 94:
#line 1306 "seclang-parser.yy" // lalr1.cc:859
{
std::string error;
if (driver.m_exceptions.loadRemoveRuleByMsg(yystack_[0].value.as< std::string > (), &error) == false) {
std::stringstream ss;
ss << "SecRuleRemoveByMsg: failed to load:";
ss << yystack_[0].value.as< std::string > ();
ss << ". ";
ss << error;
driver.error(yystack_[1].location, ss.str());
YYERROR;
}
}
#line 2159 "seclang-parser.cc" // lalr1.cc:859
break;
case 95:
#line 1319 "seclang-parser.yy" // lalr1.cc:859
{
std::string error;
if (driver.m_exceptions.loadUpdateTargetByTag(yystack_[1].value.as< std::string > (), std::move(yystack_[0].value.as< std::unique_ptr > > > ()), &error) == false) {
std::stringstream ss;
ss << "SecRuleUpdateTargetByTag: failed to load:";
ss << yystack_[1].value.as< std::string > ();
ss << ". ";
ss << error;
driver.error(yystack_[2].location, ss.str());
YYERROR;
}
}
#line 2176 "seclang-parser.cc" // lalr1.cc:859
break;
case 96:
#line 1332 "seclang-parser.yy" // lalr1.cc:859
{
std::string error;
if (driver.m_exceptions.loadUpdateTargetByMsg(yystack_[1].value.as< std::string > (), std::move(yystack_[0].value.as< std::unique_ptr > > > ()), &error) == false) {
std::stringstream ss;
ss << "SecRuleUpdateTargetByMsg: failed to load:";
ss << yystack_[1].value.as< std::string > ();
ss << ". ";
ss << error;
driver.error(yystack_[2].location, ss.str());
YYERROR;
}
}
#line 2193 "seclang-parser.cc" // lalr1.cc:859
break;
case 97:
#line 1345 "seclang-parser.yy" // lalr1.cc:859
{
std::string error;
double ruleId;
try {
ruleId = std::stod(yystack_[1].value.as< std::string > ());
} catch (...) {
std::stringstream ss;
ss << "SecRuleUpdateTargetById: failed to load:";
ss << "The input \"" + yystack_[1].value.as< std::string > () + "\" does not ";
ss << "seems to be a valid rule id.";
ss << ". ";
driver.error(yystack_[2].location, ss.str());
YYERROR;
}
if (driver.m_exceptions.loadUpdateTargetById(ruleId, std::move(yystack_[0].value.as< std::unique_ptr > > > ()), &error) == false) {
std::stringstream ss;
ss << "SecRuleUpdateTargetById: failed to load:";
ss << yystack_[1].value.as< std::string > ();
ss << ". ";
ss << error;
driver.error(yystack_[2].location, ss.str());
YYERROR;
}
}
#line 2223 "seclang-parser.cc" // lalr1.cc:859
break;
case 98:
#line 1371 "seclang-parser.yy" // lalr1.cc:859
{
std::string error;
double ruleId;
try {
ruleId = std::stod(yystack_[1].value.as< std::string > ());
} catch (...) {
std::stringstream ss;
ss << "SecRuleUpdateActionById: failed to load:";
ss << "The input \"" + yystack_[1].value.as< std::string > () + "\" does not ";
ss << "seems to be a valid rule id.";
ss << ". ";
driver.error(yystack_[2].location, ss.str());
YYERROR;
}
std::vector *a = new std::vector();
for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) {
a->push_back(i.release());
}
driver.error(yystack_[2].location, "SecRuleUpdateActionById is not yet supported");
YYERROR;
}
#line 2252 "seclang-parser.cc" // lalr1.cc:859
break;
case 99:
#line 1397 "seclang-parser.yy" // lalr1.cc:859
{
if (driver.m_debugLog != NULL) {
driver.m_debugLog->setDebugLogLevel(atoi(yystack_[0].value.as< std::string > ().c_str()));
} else {
std::stringstream ss;
ss << "Internal error, there is no DebugLog ";
ss << "object associated with the driver class";
driver.error(yystack_[1].location, ss.str());
YYERROR;
}
}
#line 2268 "seclang-parser.cc" // lalr1.cc:859
break;
case 100:
#line 1409 "seclang-parser.yy" // lalr1.cc:859
{
if (driver.m_debugLog != NULL) {
std::string error;
driver.m_debugLog->setDebugLogFile(yystack_[0].value.as< std::string > (), &error);
if (error.size() > 0) {
std::stringstream ss;
ss << "Failed to start DebugLog: " << error;
driver.error(yystack_[1].location, ss.str());
YYERROR;
}
} else {
std::stringstream ss;
ss << "Internal error, there is no DebugLog ";
ss << "object associated with the driver class";
driver.error(yystack_[1].location, ss.str());
YYERROR;
}
}
#line 2291 "seclang-parser.cc" // lalr1.cc:859
break;
case 101:
#line 1429 "seclang-parser.yy" // lalr1.cc:859
{
#ifdef WITH_GEOIP
std::string err;
std::string file = modsecurity::utils::find_resource(yystack_[0].value.as< std::string > (),
driver.ref.back(), &err);
if (file.empty()) {
std::stringstream ss;
ss << "Failed to load locate the GeoDB file from: " << yystack_[0].value.as< std::string > () << " ";
ss << err;
driver.error(yystack_[1].location, ss.str());
YYERROR;
}
if (GeoLookup::getInstance().setDataBase(file) == false) {
std::stringstream ss;
ss << "Failed to load the GeoDB from: ";
ss << file;
driver.error(yystack_[1].location, ss.str());
YYERROR;
}
#else
std::stringstream ss;
ss << "This version of ModSecurity was not compiled with GeoIP support.";
driver.error(yystack_[1].location, ss.str());
YYERROR;
#endif // WITH_GEOIP
}
#line 2322 "seclang-parser.cc" // lalr1.cc:859
break;
case 102:
#line 1457 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_requestBodyLimit.m_set = true;
driver.m_requestBodyLimit.m_value = atoi(yystack_[0].value.as< std::string > ().c_str());
}
#line 2331 "seclang-parser.cc" // lalr1.cc:859
break;
case 103:
#line 1462 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_requestBodyNoFilesLimit.m_set = true;
driver.m_requestBodyNoFilesLimit.m_value = atoi(yystack_[0].value.as< std::string > ().c_str());
}
#line 2340 "seclang-parser.cc" // lalr1.cc:859
break;
case 104:
#line 1467 "seclang-parser.yy" // lalr1.cc:859
{
std::stringstream ss;
ss << "As of ModSecurity version 3.0, SecRequestBodyInMemoryLimit is no longer ";
ss << "supported. Instead, you can use your web server configurations to control ";
ss << "those values. ModSecurity will follow the web server decision.";
driver.error(yystack_[1].location, ss.str());
YYERROR;
}
#line 2353 "seclang-parser.cc" // lalr1.cc:859
break;
case 105:
#line 1476 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_responseBodyLimit.m_set = true;
driver.m_responseBodyLimit.m_value = atoi(yystack_[0].value.as< std::string > ().c_str());
}
#line 2362 "seclang-parser.cc" // lalr1.cc:859
break;
case 106:
#line 1481 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_requestBodyLimitAction = modsecurity::Rules::BodyLimitAction::ProcessPartialBodyLimitAction;
}
#line 2370 "seclang-parser.cc" // lalr1.cc:859
break;
case 107:
#line 1485 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_requestBodyLimitAction = modsecurity::Rules::BodyLimitAction::RejectBodyLimitAction;
}
#line 2378 "seclang-parser.cc" // lalr1.cc:859
break;
case 108:
#line 1489 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_responseBodyLimitAction = modsecurity::Rules::BodyLimitAction::ProcessPartialBodyLimitAction;
}
#line 2386 "seclang-parser.cc" // lalr1.cc:859
break;
case 109:
#line 1493 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_responseBodyLimitAction = modsecurity::Rules::BodyLimitAction::RejectBodyLimitAction;
}
#line 2394 "seclang-parser.cc" // lalr1.cc:859
break;
case 110:
#line 1497 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_remoteRulesActionOnFailed = Rules::OnFailedRemoteRulesAction::AbortOnFailedRemoteRulesAction;
}
#line 2402 "seclang-parser.cc" // lalr1.cc:859
break;
case 111:
#line 1501 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_remoteRulesActionOnFailed = Rules::OnFailedRemoteRulesAction::WarnOnFailedRemoteRulesAction;
}
#line 2410 "seclang-parser.cc" // lalr1.cc:859
break;
case 114:
#line 1507 "seclang-parser.yy" // lalr1.cc:859
{
std::istringstream buf(yystack_[0].value.as< std::string > ());
std::istream_iterator beg(buf), end;
std::set tokens(beg, end);
driver.m_responseBodyTypeToBeInspected.m_set = true;
for (std::set::iterator it=tokens.begin();
it!=tokens.end(); ++it)
{
driver.m_responseBodyTypeToBeInspected.m_value.insert(*it);
}
}
#line 2426 "seclang-parser.cc" // lalr1.cc:859
break;
case 115:
#line 1519 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_responseBodyTypeToBeInspected.m_set = true;
driver.m_responseBodyTypeToBeInspected.m_clear = true;
driver.m_responseBodyTypeToBeInspected.m_value.clear();
}
#line 2436 "seclang-parser.cc" // lalr1.cc:859
break;
case 116:
#line 1525 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_secXMLExternalEntity = modsecurity::RulesProperties::FalseConfigBoolean;
}
#line 2444 "seclang-parser.cc" // lalr1.cc:859
break;
case 117:
#line 1529 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_secXMLExternalEntity = modsecurity::RulesProperties::TrueConfigBoolean;
}
#line 2452 "seclang-parser.cc" // lalr1.cc:859
break;
case 124:
#line 1539 "seclang-parser.yy" // lalr1.cc:859
{
}
#line 2459 "seclang-parser.cc" // lalr1.cc:859
break;
case 125:
#line 1542 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_httpblKey.m_set = true;
driver.m_httpblKey.m_value = yystack_[0].value.as< std::string > ();
}
#line 2468 "seclang-parser.cc" // lalr1.cc:859
break;
case 126:
#line 1550 "seclang-parser.yy" // lalr1.cc:859
{
yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[0].value.as< std::unique_ptr > > > ());
}
#line 2476 "seclang-parser.cc" // lalr1.cc:859
break;
case 127:
#line 1554 "seclang-parser.yy" // lalr1.cc:859
{
yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[1].value.as< std::unique_ptr > > > ());
}
#line 2484 "seclang-parser.cc" // lalr1.cc:859
break;
case 128:
#line 1561 "seclang-parser.yy" // lalr1.cc:859
{
yystack_[2].value.as< std::unique_ptr > > > ()->push_back(std::move(yystack_[0].value.as< std::unique_ptr > ()));
yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[2].value.as< std::unique_ptr > > > ());
}
#line 2493 "seclang-parser.cc" // lalr1.cc:859
break;
case 129:
#line 1566 "seclang-parser.yy" // lalr1.cc:859
{
std::unique_ptr c(new VariableModificatorExclusion(std::move(yystack_[0].value.as< std::unique_ptr > ())));
yystack_[3].value.as< std::unique_ptr > > > ()->push_back(std::move(c));
yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[3].value.as< std::unique_ptr > > > ());
}
#line 2503 "seclang-parser.cc" // lalr1.cc:859
break;
case 130:
#line 1572 "seclang-parser.yy" // lalr1.cc:859
{
std::unique_ptr c(new VariableModificatorCount(std::move(yystack_[0].value.as< std::unique_ptr > ())));
yystack_[3].value.as< std::unique_ptr > > > ()->push_back(std::move(c));
yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[3].value.as< std::unique_ptr > > > ());
}
#line 2513 "seclang-parser.cc" // lalr1.cc:859
break;
case 131:
#line 1578 "seclang-parser.yy" // lalr1.cc:859
{
std::unique_ptr>> b(new std::vector>());
b->push_back(std::move(yystack_[0].value.as< std::unique_ptr > ()));
yylhs.value.as< std::unique_ptr > > > () = std::move(b);
}
#line 2523 "seclang-parser.cc" // lalr1.cc:859
break;
case 132:
#line 1584 "seclang-parser.yy" // lalr1.cc:859
{
std::unique_ptr>> b(new std::vector>());
std::unique_ptr c(new VariableModificatorExclusion(std::move(yystack_[0].value.as< std::unique_ptr > ())));
b->push_back(std::move(c));
yylhs.value.as< std::unique_ptr > > > () = std::move(b);
}
#line 2534 "seclang-parser.cc" // lalr1.cc:859
break;
case 133:
#line 1591 "seclang-parser.yy" // lalr1.cc:859
{
std::unique_ptr>> b(new std::vector>());
std::unique_ptr c(new VariableModificatorCount(std::move(yystack_[0].value.as< std::unique_ptr > ())));
b->push_back(std::move(c));
yylhs.value.as< std::unique_ptr > > > () = std::move(b);
}
#line 2545 "seclang-parser.cc" // lalr1.cc:859
break;
case 134:
#line 1601 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Args_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2553 "seclang-parser.cc" // lalr1.cc:859
break;
case 135:
#line 1605 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Args_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2561 "seclang-parser.cc" // lalr1.cc:859
break;
case 136:
#line 1609 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Args_NoDictElement());
}
#line 2569 "seclang-parser.cc" // lalr1.cc:859
break;
case 137:
#line 1613 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPost_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2577 "seclang-parser.cc" // lalr1.cc:859
break;
case 138:
#line 1617 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPost_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2585 "seclang-parser.cc" // lalr1.cc:859
break;
case 139:
#line 1621 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPost_NoDictElement());
}
#line 2593 "seclang-parser.cc" // lalr1.cc:859
break;
case 140:
#line 1625 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGet_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2601 "seclang-parser.cc" // lalr1.cc:859
break;
case 141:
#line 1629 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGet_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2609 "seclang-parser.cc" // lalr1.cc:859
break;
case 142:
#line 1633 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGet_NoDictElement());
}
#line 2617 "seclang-parser.cc" // lalr1.cc:859
break;
case 143:
#line 1637 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesSizes_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2625 "seclang-parser.cc" // lalr1.cc:859
break;
case 144:
#line 1641 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesSizes_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2633 "seclang-parser.cc" // lalr1.cc:859
break;
case 145:
#line 1645 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesSizes_NoDictElement());
}
#line 2641 "seclang-parser.cc" // lalr1.cc:859
break;
case 146:
#line 1649 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesNames_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2649 "seclang-parser.cc" // lalr1.cc:859
break;
case 147:
#line 1653 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesNames_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2657 "seclang-parser.cc" // lalr1.cc:859
break;
case 148:
#line 1657 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesNames_NoDictElement());
}
#line 2665 "seclang-parser.cc" // lalr1.cc:859
break;
case 149:
#line 1661 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpContent_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2673 "seclang-parser.cc" // lalr1.cc:859
break;
case 150:
#line 1665 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpContent_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2681 "seclang-parser.cc" // lalr1.cc:859
break;
case 151:
#line 1669 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpContent_NoDictElement());
}
#line 2689 "seclang-parser.cc" // lalr1.cc:859
break;
case 152:
#line 1673 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartFileName_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2697 "seclang-parser.cc" // lalr1.cc:859
break;
case 153:
#line 1677 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartFileName_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2705 "seclang-parser.cc" // lalr1.cc:859
break;
case 154:
#line 1681 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartFileName_NoDictElement());
}
#line 2713 "seclang-parser.cc" // lalr1.cc:859
break;
case 155:
#line 1685 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartName_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2721 "seclang-parser.cc" // lalr1.cc:859
break;
case 156:
#line 1689 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartName_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2729 "seclang-parser.cc" // lalr1.cc:859
break;
case 157:
#line 1693 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartName_NoDictElement());
}
#line 2737 "seclang-parser.cc" // lalr1.cc:859
break;
case 158:
#line 1697 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarsNames_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2745 "seclang-parser.cc" // lalr1.cc:859
break;
case 159:
#line 1701 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarsNames_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2753 "seclang-parser.cc" // lalr1.cc:859
break;
case 160:
#line 1705 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarsNames_NoDictElement());
}
#line 2761 "seclang-parser.cc" // lalr1.cc:859
break;
case 161:
#line 1709 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVars_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2769 "seclang-parser.cc" // lalr1.cc:859
break;
case 162:
#line 1713 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVars_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2777 "seclang-parser.cc" // lalr1.cc:859
break;
case 163:
#line 1717 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVars_NoDictElement());
}
#line 2785 "seclang-parser.cc" // lalr1.cc:859
break;
case 164:
#line 1721 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Files_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2793 "seclang-parser.cc" // lalr1.cc:859
break;
case 165:
#line 1725 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Files_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2801 "seclang-parser.cc" // lalr1.cc:859
break;
case 166:
#line 1729 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Files_NoDictElement());
}
#line 2809 "seclang-parser.cc" // lalr1.cc:859
break;
case 167:
#line 1733 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookies_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2817 "seclang-parser.cc" // lalr1.cc:859
break;
case 168:
#line 1737 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookies_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2825 "seclang-parser.cc" // lalr1.cc:859
break;
case 169:
#line 1741 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookies_NoDictElement());
}
#line 2833 "seclang-parser.cc" // lalr1.cc:859
break;
case 170:
#line 1745 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeaders_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2841 "seclang-parser.cc" // lalr1.cc:859
break;
case 171:
#line 1749 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeaders_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2849 "seclang-parser.cc" // lalr1.cc:859
break;
case 172:
#line 1753 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeaders_NoDictElement());
}
#line 2857 "seclang-parser.cc" // lalr1.cc:859
break;
case 173:
#line 1757 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeaders_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2865 "seclang-parser.cc" // lalr1.cc:859
break;
case 174:
#line 1761 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeaders_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2873 "seclang-parser.cc" // lalr1.cc:859
break;
case 175:
#line 1765 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeaders_NoDictElement());
}
#line 2881 "seclang-parser.cc" // lalr1.cc:859
break;
case 176:
#line 1769 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Geo_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2889 "seclang-parser.cc" // lalr1.cc:859
break;
case 177:
#line 1773 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Geo_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2897 "seclang-parser.cc" // lalr1.cc:859
break;
case 178:
#line 1777 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Geo_NoDictElement());
}
#line 2905 "seclang-parser.cc" // lalr1.cc:859
break;
case 179:
#line 1781 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookiesNames_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2913 "seclang-parser.cc" // lalr1.cc:859
break;
case 180:
#line 1785 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookiesNames_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2921 "seclang-parser.cc" // lalr1.cc:859
break;
case 181:
#line 1789 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookiesNames_NoDictElement());
}
#line 2929 "seclang-parser.cc" // lalr1.cc:859
break;
case 182:
#line 1793 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Rule_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2937 "seclang-parser.cc" // lalr1.cc:859
break;
case 183:
#line 1797 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Rule_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2945 "seclang-parser.cc" // lalr1.cc:859
break;
case 184:
#line 1801 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Rule_NoDictElement());
}
#line 2953 "seclang-parser.cc" // lalr1.cc:859
break;
case 185:
#line 1805 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Env("ENV:" + yystack_[0].value.as< std::string > ()));
}
#line 2961 "seclang-parser.cc" // lalr1.cc:859
break;
case 186:
#line 1809 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Env("ENV:" + yystack_[0].value.as< std::string > ()));
}
#line 2969 "seclang-parser.cc" // lalr1.cc:859
break;
case 187:
#line 1813 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Env("ENV"));
}
#line 2977 "seclang-parser.cc" // lalr1.cc:859
break;
case 188:
#line 1817 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::XML("XML:" + yystack_[0].value.as< std::string > ()));
}
#line 2985 "seclang-parser.cc" // lalr1.cc:859
break;
case 189:
#line 1821 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::XML("XML:" + yystack_[0].value.as< std::string > ()));
}
#line 2993 "seclang-parser.cc" // lalr1.cc:859
break;
case 190:
#line 1825 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::XML_NoDictElement());
}
#line 3001 "seclang-parser.cc" // lalr1.cc:859
break;
case 191:
#line 1829 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpNames_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 3009 "seclang-parser.cc" // lalr1.cc:859
break;
case 192:
#line 1833 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpNames_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 3017 "seclang-parser.cc" // lalr1.cc:859
break;
case 193:
#line 1837 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpNames_NoDictElement());
}
#line 3025 "seclang-parser.cc" // lalr1.cc:859
break;
case 194:
#line 1841 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Resource_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 3033 "seclang-parser.cc" // lalr1.cc:859
break;
case 195:
#line 1845 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Resource_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 3041 "seclang-parser.cc" // lalr1.cc:859
break;
case 196:
#line 1849 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Resource_NoDictElement());
}
#line 3049 "seclang-parser.cc" // lalr1.cc:859
break;
case 197:
#line 1854 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Ip_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 3057 "seclang-parser.cc" // lalr1.cc:859
break;
case 198:
#line 1858 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Ip_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 3065 "seclang-parser.cc" // lalr1.cc:859
break;
case 199:
#line 1862 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Ip_NoDictElement());
}
#line 3073 "seclang-parser.cc" // lalr1.cc:859
break;
case 200:
#line 1867 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Global_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 3081 "seclang-parser.cc" // lalr1.cc:859
break;
case 201:
#line 1871 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Global_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 3089 "seclang-parser.cc" // lalr1.cc:859
break;
case 202:
#line 1875 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Global_NoDictElement());
}
#line 3097 "seclang-parser.cc" // lalr1.cc:859
break;
case 203:
#line 1880 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Tx_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 3105 "seclang-parser.cc" // lalr1.cc:859
break;
case 204:
#line 1884 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Tx_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 3113 "seclang-parser.cc" // lalr1.cc:859
break;
case 205:
#line 1888 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Tx_NoDictElement());
}
#line 3121 "seclang-parser.cc" // lalr1.cc:859
break;
case 206:
#line 1893 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Session_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 3129 "seclang-parser.cc" // lalr1.cc:859
break;
case 207:
#line 1897 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Session_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 3137 "seclang-parser.cc" // lalr1.cc:859
break;
case 208:
#line 1901 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Session_NoDictElement());
}
#line 3145 "seclang-parser.cc" // lalr1.cc:859
break;
case 209:
#line 1906 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsNames_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 3153 "seclang-parser.cc" // lalr1.cc:859
break;
case 210:
#line 1910 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsNames_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 3161 "seclang-parser.cc" // lalr1.cc:859
break;
case 211:
#line 1914 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsNames_NoDictElement());
}
#line 3169 "seclang-parser.cc" // lalr1.cc:859
break;
case 212:
#line 1918 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGetNames_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 3177 "seclang-parser.cc" // lalr1.cc:859
break;
case 213:
#line 1922 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGetNames_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 3185 "seclang-parser.cc" // lalr1.cc:859
break;
case 214:
#line 1926 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGetNames_NoDictElement());
}
#line 3193 "seclang-parser.cc" // lalr1.cc:859
break;
case 215:
#line 1931 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPostNames_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 3201 "seclang-parser.cc" // lalr1.cc:859
break;
case 216:
#line 1935 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPostNames_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 3209 "seclang-parser.cc" // lalr1.cc:859
break;
case 217:
#line 1939 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPostNames_NoDictElement());
}
#line 3217 "seclang-parser.cc" // lalr1.cc:859
break;
case 218:
#line 1944 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeadersNames_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 3225 "seclang-parser.cc" // lalr1.cc:859
break;
case 219:
#line 1948 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeadersNames_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 3233 "seclang-parser.cc" // lalr1.cc:859
break;
case 220:
#line 1952 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeadersNames_NoDictElement());
}
#line 3241 "seclang-parser.cc" // lalr1.cc:859
break;
case 221:
#line 1957 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseContentType());
}
#line 3249 "seclang-parser.cc" // lalr1.cc:859
break;
case 222:
#line 1962 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeadersNames_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 3257 "seclang-parser.cc" // lalr1.cc:859
break;
case 223:
#line 1966 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeadersNames_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 3265 "seclang-parser.cc" // lalr1.cc:859
break;
case 224:
#line 1970 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeadersNames_NoDictElement());
}
#line 3273 "seclang-parser.cc" // lalr1.cc:859
break;
case 225:
#line 1974 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsCombinedSize());
}
#line 3281 "seclang-parser.cc" // lalr1.cc:859
break;
case 226:
#line 1978 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::AuthType());
}
#line 3289 "seclang-parser.cc" // lalr1.cc:859
break;
case 227:
#line 1982 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesCombinedSize());
}
#line 3297 "seclang-parser.cc" // lalr1.cc:859
break;
case 228:
#line 1986 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FullRequest());
}
#line 3305 "seclang-parser.cc" // lalr1.cc:859
break;
case 229:
#line 1990 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FullRequestLength());
}
#line 3313 "seclang-parser.cc" // lalr1.cc:859
break;
case 230:
#line 1994 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::InboundDataError());
}
#line 3321 "seclang-parser.cc" // lalr1.cc:859
break;
case 231:
#line 1998 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVar());
}
#line 3329 "seclang-parser.cc" // lalr1.cc:859
break;
case 232:
#line 2002 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarName());
}
#line 3337 "seclang-parser.cc" // lalr1.cc:859
break;
case 233:
#line 2006 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartBoundaryQuoted());
}
#line 3345 "seclang-parser.cc" // lalr1.cc:859
break;
case 234:
#line 2010 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartBoundaryWhiteSpace());
}
#line 3353 "seclang-parser.cc" // lalr1.cc:859
break;
case 235:
#line 2014 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartCrlfLFLines());
}
#line 3361 "seclang-parser.cc" // lalr1.cc:859
break;
case 236:
#line 2018 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartDateAfter());
}
#line 3369 "seclang-parser.cc" // lalr1.cc:859
break;
case 237:
#line 2022 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartDateBefore());
}
#line 3377 "seclang-parser.cc" // lalr1.cc:859
break;
case 238:
#line 2026 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartFileLimitExceeded());
}
#line 3385 "seclang-parser.cc" // lalr1.cc:859
break;
case 239:
#line 2030 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartHeaderFolding());
}
#line 3393 "seclang-parser.cc" // lalr1.cc:859
break;
case 240:
#line 2034 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartInvalidHeaderFolding());
}
#line 3401 "seclang-parser.cc" // lalr1.cc:859
break;
case 241:
#line 2038 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartInvalidPart());
}
#line 3409 "seclang-parser.cc" // lalr1.cc:859
break;
case 242:
#line 2042 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr