From b89afcc87a7a8feaa7ceebbd10f5defcfe3fd687 Mon Sep 17 00:00:00 2001 From: Vadim Kurland Date: Fri, 25 Mar 2011 15:34:29 -0700 Subject: [PATCH] * parsers/pix.g (tcp_udp_rule_extended): see #2273 Improvements in the parser for PIX/ASA configs to make it recognize object-group and named object names used to define source port, destination address or destination port in "access-list ... tcp|udp" rules, including ambiguous situation when an object-group appears after source address specification because this group can define either source port or destination address. --- VERSION | 2 +- VERSION.h | 2 +- doc/ChangeLog | 10 + packaging/fwbuilder-static-qt.spec | 2 +- packaging/fwbuilder.control | 2 +- packaging/fwbuilder.spec | 2 +- src/import/PIXImporter.cpp | 13 + src/import/PIXImporter.h | 2 + src/parsers/PIXCfgLexer.cpp | 1163 ++++++------ src/parsers/PIXCfgLexer.hpp | 5 +- src/parsers/PIXCfgParser.cpp | 1566 ++++++++++------- src/parsers/PIXCfgParser.hpp | 27 +- src/parsers/PIXCfgParserTokenTypes.hpp | 57 +- src/parsers/PIXCfgParserTokenTypes.txt | 61 +- src/parsers/pix.g | 197 ++- .../test_data/asa8.3-acl-object-groups.test | 199 +++ .../ImporterTest/test_data/asa8.3-acl.test | 10 +- 17 files changed, 1993 insertions(+), 1327 deletions(-) create mode 100644 src/unit_tests/ImporterTest/test_data/asa8.3-acl-object-groups.test diff --git a/VERSION b/VERSION index b856c3df5..58c5e455f 100644 --- a/VERSION +++ b/VERSION @@ -7,7 +7,7 @@ FWB_MICRO_VERSION=0 # build number is like "nano" version number. I am incrementing build # number during development cycle # -BUILD_NUM="3508" +BUILD_NUM="3509" VERSION="$FWB_MAJOR_VERSION.$FWB_MINOR_VERSION.$FWB_MICRO_VERSION.$BUILD_NUM" diff --git a/VERSION.h b/VERSION.h index b3887e9e4..ec4c77558 100644 --- a/VERSION.h +++ b/VERSION.h @@ -1,2 +1,2 @@ -#define VERSION "4.2.0.3508" +#define VERSION "4.2.0.3509" #define GENERATION "4.2" diff --git a/doc/ChangeLog b/doc/ChangeLog index de08376cc..03639d52d 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,13 @@ +2011-03-25 vadim + + * parsers/pix.g (tcp_udp_rule_extended): see #2273 Improvements in + the parser for PIX/ASA configs to make it recognize object-group + and named object names used to define source port, destination + address or destination port in "access-list ... tcp|udp" rules, + including ambiguous situation when an object-group appears after + source address specification because this group can define either + source port or destination address. + 2011-03-24 vadim * ASA8ObjectGroup.cpp: see #2263 looks like "object-group service" diff --git a/packaging/fwbuilder-static-qt.spec b/packaging/fwbuilder-static-qt.spec index 2083540f3..e0bf64f8a 100644 --- a/packaging/fwbuilder-static-qt.spec +++ b/packaging/fwbuilder-static-qt.spec @@ -3,7 +3,7 @@ %define name fwbuilder -%define version 4.2.0.3508 +%define version 4.2.0.3509 %define release 1 %if "%_vendor" == "MandrakeSoft" diff --git a/packaging/fwbuilder.control b/packaging/fwbuilder.control index 68aee8151..e3ad43df4 100644 --- a/packaging/fwbuilder.control +++ b/packaging/fwbuilder.control @@ -4,6 +4,6 @@ Replaces: fwbuilder (<=4.1.1-1), fwbuilder-common, fwbuilder-bsd, fwbuilder-linu Priority: extra Section: checkinstall Maintainer: vadim@fwbuilder.org -Version: 4.2.0.3508-1 +Version: 4.2.0.3509-1 Depends: libqt4-gui (>= 4.3.0), libxml2, libxslt1.1, libsnmp | libsnmp15 Description: Firewall Builder GUI and policy compilers diff --git a/packaging/fwbuilder.spec b/packaging/fwbuilder.spec index 15c654d34..dd071b408 100644 --- a/packaging/fwbuilder.spec +++ b/packaging/fwbuilder.spec @@ -1,6 +1,6 @@ %define name fwbuilder -%define version 4.2.0.3508 +%define version 4.2.0.3509 %define release 1 %if "%_vendor" == "MandrakeSoft" diff --git a/src/import/PIXImporter.cpp b/src/import/PIXImporter.cpp index 5889ab8e2..1b58e7046 100644 --- a/src/import/PIXImporter.cpp +++ b/src/import/PIXImporter.cpp @@ -579,6 +579,19 @@ void PIXImporter::newObjectGroupService(const string &name) *logger << "Object Group (service) " + name; } +bool PIXImporter::isKnownServiceGroupName(const string &object_group_name) +{ + QString qs_object_group_name = QString::fromUtf8(object_group_name.c_str()); + qDebug() << "isKnownServiceGroupName:" << qs_object_group_name; + + if (named_objects_registry.count(qs_object_group_name) > 0) + { + FWObject *grp = named_objects_registry[qs_object_group_name]; + return ServiceGroup::isA(grp); + } + return false; +} + void PIXImporter::newObjectGroupProtocol(const string &name) { object_group_name = QString::fromUtf8(name.c_str()); diff --git a/src/import/PIXImporter.h b/src/import/PIXImporter.h index e975d1029..643c69e0f 100644 --- a/src/import/PIXImporter.h +++ b/src/import/PIXImporter.h @@ -110,6 +110,8 @@ class PIXImporter : public IOSImporter void newObjectGroupProtocol(const std::string &group_name); void newObjectGroupICMP(const std::string &group_name); + bool isKnownServiceGroupName(const std::string &object_group_name); + void setObjectGroupServiceProtocol(const std::string &proto) { object_group_service_protocol = proto.c_str(); } diff --git a/src/parsers/PIXCfgLexer.cpp b/src/parsers/PIXCfgLexer.cpp index 50489d3f7..20be88cb8 100644 --- a/src/parsers/PIXCfgLexer.cpp +++ b/src/parsers/PIXCfgLexer.cpp @@ -53,7 +53,6 @@ void PIXCfgLexer::initLiterals() literals["subnet"] = 33; literals["ipsec"] = 20; literals["controller"] = 78; - literals["object"] = 27; literals["pcp"] = 23; literals["remark"] = 107; literals["access-list"] = 61; @@ -82,7 +81,6 @@ void PIXCfgLexer::initLiterals() literals["icmp-object"] = 47; literals["exit"] = 80; literals["nat"] = 29; - literals["object-group"] = 42; literals["range"] = 32; literals["service-object"] = 50; literals["gre"] = 16; @@ -224,7 +222,7 @@ ANTLR_USE_NAMESPACE(antlr)RefToken PIXCfgLexer::nextToken() case 0x79 /* 'y' */ : case 0x7a /* 'z' */ : { - mNUMBER(true); + mNUMBER_ADDRESS_OR_WORD(true); theRetToken=_returnToken; break; } @@ -455,11 +453,11 @@ void PIXCfgLexer::mLINE_COMMENT(bool _createToken) { } } else { - goto _loop206; + goto _loop222; } } - _loop206:; + _loop222:; } // ( ... )* mNEWLINE(false); if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { @@ -491,9 +489,9 @@ void PIXCfgLexer::mNEWLINE(bool _createToken) { } if ( inputState->guessing==0 ) { -#line 1652 "pix.g" +#line 1746 "pix.g" newline(); -#line 497 "PIXCfgLexer.cpp" +#line 495 "PIXCfgLexer.cpp" } if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { _token = makeToken(_ttype); @@ -517,11 +515,11 @@ void PIXCfgLexer::mCOLON_COMMENT(bool _createToken) { } } else { - goto _loop210; + goto _loop226; } } - _loop210:; + _loop226:; } // ( ... )* mNEWLINE(false); if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { @@ -615,9 +613,9 @@ void PIXCfgLexer::mWhitespace(bool _createToken) { } } if ( inputState->guessing==0 ) { -#line 1647 "pix.g" +#line 1741 "pix.g" _ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP; -#line 621 "PIXCfgLexer.cpp" +#line 619 "PIXCfgLexer.cpp" } if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { _token = makeToken(_ttype); @@ -653,6 +651,19 @@ void PIXCfgLexer::mHEX_CONST(bool _createToken) { _saveIndex=0; } +void PIXCfgLexer::mNUMBER(bool _createToken) { + int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length(); + _ttype = NUMBER; + ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex; + + if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { + _token = makeToken(_ttype); + _token->setText(text.substr(_begin, text.length()-_begin)); + } + _returnToken = _token; + _saveIndex=0; +} + void PIXCfgLexer::mNEG_INT_CONST(bool _createToken) { int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length(); _ttype = NEG_INT_CONST; @@ -694,111 +705,92 @@ void PIXCfgLexer::mHEXDIGIT(bool _createToken) { _saveIndex=0; } -void PIXCfgLexer::mNUMBER(bool _createToken) { +void PIXCfgLexer::mOBJECT(bool _createToken) { int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length(); - _ttype = NUMBER; + _ttype = OBJECT; + ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex; + + if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { + _token = makeToken(_ttype); + _token->setText(text.substr(_begin, text.length()-_begin)); + } + _returnToken = _token; + _saveIndex=0; +} + +void PIXCfgLexer::mOBJECT_GROUP(bool _createToken) { + int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length(); + _ttype = OBJECT_GROUP; + ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex; + + if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { + _token = makeToken(_ttype); + _token->setText(text.substr(_begin, text.length()-_begin)); + } + _returnToken = _token; + _saveIndex=0; +} + +void PIXCfgLexer::mNUMBER_ADDRESS_OR_WORD(bool _createToken) { + int _ttype; ANTLR_USE_NAMESPACE(antlr)RefToken _token; ANTLR_USE_NAMESPACE(std)string::size_type _begin = text.length(); + _ttype = NUMBER_ADDRESS_OR_WORD; ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex; { - bool synPredMatched258 = false; - if (((_tokenSet_2.member(LA(1))) && (_tokenSet_3.member(LA(2))) && (true))) { - int _m258 = mark(); - synPredMatched258 = true; + bool synPredMatched287 = false; + if (((LA(1) == 0x6f /* 'o' */ ) && (LA(2) == 0x62 /* 'b' */ ) && (LA(3) == 0x6a /* 'j' */ ))) { + int _m287 = mark(); + synPredMatched287 = true; inputState->guessing++; try { { - { // ( ... )+ - int _cnt257=0; - for (;;) { - switch ( LA(1)) { - case 0x61 /* 'a' */ : - case 0x62 /* 'b' */ : - case 0x63 /* 'c' */ : - case 0x64 /* 'd' */ : - case 0x65 /* 'e' */ : - case 0x66 /* 'f' */ : - { - matchRange('a','f'); - break; - } - case 0x30 /* '0' */ : - case 0x31 /* '1' */ : - case 0x32 /* '2' */ : - case 0x33 /* '3' */ : - case 0x34 /* '4' */ : - case 0x35 /* '5' */ : - case 0x36 /* '6' */ : - case 0x37 /* '7' */ : - case 0x38 /* '8' */ : - case 0x39 /* '9' */ : - { - matchRange('0','9'); - break; - } - default: - { - if ( _cnt257>=1 ) { goto _loop257; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - } - _cnt257++; - } - _loop257:; - } // ( ... )+ - mCOLON(false); + match("obj"); + match("ect"); } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) { - synPredMatched258 = false; + synPredMatched287 = false; } - rewind(_m258); + rewind(_m287); inputState->guessing--; } - if ( synPredMatched258 ) { + if ( synPredMatched287 ) { { + match("object"); { - { // ( ... )+ - int _cnt262=0; - for (;;) { - switch ( LA(1)) { - case 0x61 /* 'a' */ : - case 0x62 /* 'b' */ : - case 0x63 /* 'c' */ : - case 0x64 /* 'd' */ : - case 0x65 /* 'e' */ : - case 0x66 /* 'f' */ : + if ((LA(1) == 0x2d /* '-' */ )) { { - matchRange('a','f'); - break; + match("-gr"); + match("oup"); } - case 0x30 /* '0' */ : - case 0x31 /* '1' */ : - case 0x32 /* '2' */ : - case 0x33 /* '3' */ : - case 0x34 /* '4' */ : - case 0x35 /* '5' */ : - case 0x36 /* '6' */ : - case 0x37 /* '7' */ : - case 0x38 /* '8' */ : - case 0x39 /* '9' */ : - { - matchRange('0','9'); - break; + if ( inputState->guessing==0 ) { +#line 1798 "pix.g" + _ttype = OBJECT_GROUP; +#line 770 "PIXCfgLexer.cpp" } - default: - { - if ( _cnt262>=1 ) { goto _loop262; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - } - _cnt262++; } - _loop262:; - } // ( ... )+ - { // ( ... )+ - int _cnt266=0; - for (;;) { - if ((LA(1) == 0x3a /* ':' */ )) { - mCOLON(false); - { // ( ... )* + else { + match(""); + if ( inputState->guessing==0 ) { +#line 1800 "pix.g" + _ttype = OBJECT; +#line 778 "PIXCfgLexer.cpp" + } + } + + } + } + } + else { + bool synPredMatched277 = false; + if (((_tokenSet_2.member(LA(1))) && (_tokenSet_3.member(LA(2))) && (true))) { + int _m277 = mark(); + synPredMatched277 = true; + inputState->guessing++; + try { + { + { // ( ... )+ + int _cnt276=0; for (;;) { switch ( LA(1)) { case 0x61 /* 'a' */ : @@ -827,374 +819,37 @@ void PIXCfgLexer::mNUMBER(bool _createToken) { } default: { - goto _loop265; + if ( _cnt276>=1 ) { goto _loop276; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} } } + _cnt276++; } - _loop265:; - } // ( ... )* - } - else { - if ( _cnt266>=1 ) { goto _loop266; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt266++; - } - _loop266:; - } // ( ... )+ - } - if ( inputState->guessing==0 ) { -#line 1686 "pix.g" - _ttype = IPV6; -#line 850 "PIXCfgLexer.cpp" - } - } - } - else { - bool synPredMatched223 = false; - if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (true) && (true))) { - int _m223 = mark(); - synPredMatched223 = true; - inputState->guessing++; - try { - { - mDIGIT(false); + _loop276:; + } // ( ... )+ + mCOLON(false); } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) { - synPredMatched223 = false; + synPredMatched277 = false; } - rewind(_m223); + rewind(_m277); inputState->guessing--; } - if ( synPredMatched223 ) { + if ( synPredMatched277 ) { { - bool synPredMatched232 = false; - if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3))))) { - int _m232 = mark(); - synPredMatched232 = true; - inputState->guessing++; - try { - { - { // ( ... )+ - int _cnt227=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt227>=1 ) { goto _loop227; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt227++; - } - _loop227:; - } // ( ... )+ - mDOT(false); - { // ( ... )+ - int _cnt229=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt229>=1 ) { goto _loop229; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt229++; - } - _loop229:; - } // ( ... )+ - mDOT(false); - { // ( ... )+ - int _cnt231=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt231>=1 ) { goto _loop231; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt231++; - } - _loop231:; - } // ( ... )+ - } - } - catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) { - synPredMatched232 = false; - } - rewind(_m232); - inputState->guessing--; - } - if ( synPredMatched232 ) { - { - { // ( ... )+ - int _cnt235=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt235>=1 ) { goto _loop235; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt235++; - } - _loop235:; - } // ( ... )+ - mDOT(false); - { // ( ... )+ - int _cnt237=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt237>=1 ) { goto _loop237; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt237++; - } - _loop237:; - } // ( ... )+ - mDOT(false); - { // ( ... )+ - int _cnt239=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt239>=1 ) { goto _loop239; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt239++; - } - _loop239:; - } // ( ... )+ - mDOT(false); - { // ( ... )+ - int _cnt241=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt241>=1 ) { goto _loop241; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt241++; - } - _loop241:; - } // ( ... )+ - } - if ( inputState->guessing==0 ) { -#line 1675 "pix.g" - _ttype = IPV4; -#line 997 "PIXCfgLexer.cpp" - } - } - else { - bool synPredMatched247 = false; - if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3))))) { - int _m247 = mark(); - synPredMatched247 = true; - inputState->guessing++; - try { - { - { // ( ... )+ - int _cnt244=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt244>=1 ) { goto _loop244; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt244++; - } - _loop244:; - } // ( ... )+ - mDOT(false); - { // ( ... )+ - int _cnt246=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt246>=1 ) { goto _loop246; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt246++; - } - _loop246:; - } // ( ... )+ - } - } - catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) { - synPredMatched247 = false; - } - rewind(_m247); - inputState->guessing--; - } - if ( synPredMatched247 ) { - { - { // ( ... )+ - int _cnt250=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt250>=1 ) { goto _loop250; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt250++; - } - _loop250:; - } // ( ... )+ - mDOT(false); - { // ( ... )+ - int _cnt252=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt252>=1 ) { goto _loop252; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt252++; - } - _loop252:; - } // ( ... )+ - } - } - else if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (true) && (true)) { - { // ( ... )+ - int _cnt254=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt254>=1 ) { goto _loop254; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt254++; - } - _loop254:; - } // ( ... )+ - if ( inputState->guessing==0 ) { -#line 1679 "pix.g" - _ttype = INT_CONST; -#line 1096 "PIXCfgLexer.cpp" - } - } - else { - throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn()); - } - } - } - } - else if ((_tokenSet_5.member(LA(1))) && (true) && (true)) { { - switch ( LA(1)) { - case 0x61 /* 'a' */ : - case 0x62 /* 'b' */ : - case 0x63 /* 'c' */ : - case 0x64 /* 'd' */ : - case 0x65 /* 'e' */ : - case 0x66 /* 'f' */ : - case 0x67 /* 'g' */ : - case 0x68 /* 'h' */ : - case 0x69 /* 'i' */ : - case 0x6a /* 'j' */ : - case 0x6b /* 'k' */ : - case 0x6c /* 'l' */ : - case 0x6d /* 'm' */ : - case 0x6e /* 'n' */ : - case 0x6f /* 'o' */ : - case 0x70 /* 'p' */ : - case 0x71 /* 'q' */ : - case 0x72 /* 'r' */ : - case 0x73 /* 's' */ : - case 0x74 /* 't' */ : - case 0x75 /* 'u' */ : - case 0x76 /* 'v' */ : - case 0x77 /* 'w' */ : - case 0x78 /* 'x' */ : - case 0x79 /* 'y' */ : - case 0x7a /* 'z' */ : - { - matchRange('a','z'); - break; - } - case 0x41 /* 'A' */ : - case 0x42 /* 'B' */ : - case 0x43 /* 'C' */ : - case 0x44 /* 'D' */ : - case 0x45 /* 'E' */ : - case 0x46 /* 'F' */ : - case 0x47 /* 'G' */ : - case 0x48 /* 'H' */ : - case 0x49 /* 'I' */ : - case 0x4a /* 'J' */ : - case 0x4b /* 'K' */ : - case 0x4c /* 'L' */ : - case 0x4d /* 'M' */ : - case 0x4e /* 'N' */ : - case 0x4f /* 'O' */ : - case 0x50 /* 'P' */ : - case 0x51 /* 'Q' */ : - case 0x52 /* 'R' */ : - case 0x53 /* 'S' */ : - case 0x54 /* 'T' */ : - case 0x55 /* 'U' */ : - case 0x56 /* 'V' */ : - case 0x57 /* 'W' */ : - case 0x58 /* 'X' */ : - case 0x59 /* 'Y' */ : - case 0x5a /* 'Z' */ : - { - matchRange('A','Z'); - break; - } - case 0x24 /* '$' */ : - { - match('$' /* charlit */ ); - break; - } - default: - { - throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn()); - } - } - } - { // ( ... )* + { // ( ... )+ + int _cnt281=0; for (;;) { switch ( LA(1)) { - case 0x21 /* '!' */ : - case 0x22 /* '\"' */ : - case 0x23 /* '#' */ : - case 0x24 /* '$' */ : - case 0x25 /* '%' */ : - case 0x26 /* '&' */ : - case 0x27 /* '\'' */ : - case 0x28 /* '(' */ : - case 0x29 /* ')' */ : - case 0x2a /* '*' */ : - case 0x2b /* '+' */ : - case 0x2c /* ',' */ : - case 0x2d /* '-' */ : - case 0x2e /* '.' */ : - case 0x2f /* '/' */ : + case 0x61 /* 'a' */ : + case 0x62 /* 'b' */ : + case 0x63 /* 'c' */ : + case 0x64 /* 'd' */ : + case 0x65 /* 'e' */ : + case 0x66 /* 'f' */ : { - matchRange('!','/'); + matchRange('a','f'); break; } case 0x30 /* '0' */ : @@ -1211,39 +866,359 @@ void PIXCfgLexer::mNUMBER(bool _createToken) { matchRange('0','9'); break; } - case 0x3a /* ':' */ : + default: { - match(':' /* charlit */ ); - break; + if ( _cnt281>=1 ) { goto _loop281; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} } - case 0x3b /* ';' */ : - { - match(';' /* charlit */ ); - break; } - case 0x3c /* '<' */ : - { - match('<' /* charlit */ ); - break; + _cnt281++; + } + _loop281:; + } // ( ... )+ + { // ( ... )+ + int _cnt285=0; + for (;;) { + if ((LA(1) == 0x3a /* ':' */ )) { + mCOLON(false); + { // ( ... )* + for (;;) { + switch ( LA(1)) { + case 0x61 /* 'a' */ : + case 0x62 /* 'b' */ : + case 0x63 /* 'c' */ : + case 0x64 /* 'd' */ : + case 0x65 /* 'e' */ : + case 0x66 /* 'f' */ : + { + matchRange('a','f'); + break; + } + case 0x30 /* '0' */ : + case 0x31 /* '1' */ : + case 0x32 /* '2' */ : + case 0x33 /* '3' */ : + case 0x34 /* '4' */ : + case 0x35 /* '5' */ : + case 0x36 /* '6' */ : + case 0x37 /* '7' */ : + case 0x38 /* '8' */ : + case 0x39 /* '9' */ : + { + matchRange('0','9'); + break; + } + default: + { + goto _loop284; + } + } + } + _loop284:; + } // ( ... )* } - case 0x3d /* '=' */ : - { - match('=' /* charlit */ ); - break; + else { + if ( _cnt285>=1 ) { goto _loop285; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} } - case 0x3e /* '>' */ : - { - match('>' /* charlit */ ); - break; + + _cnt285++; + } + _loop285:; + } // ( ... )+ + } + if ( inputState->guessing==0 ) { +#line 1791 "pix.g" + _ttype = IPV6; +#line 932 "PIXCfgLexer.cpp" + } + } + } + else { + bool synPredMatched242 = false; + if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (true) && (true))) { + int _m242 = mark(); + synPredMatched242 = true; + inputState->guessing++; + try { + { + mDIGIT(false); + } } - case 0x3f /* '?' */ : - { - match('?' /* charlit */ ); - break; + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) { + synPredMatched242 = false; } - case 0x40 /* '@' */ : + rewind(_m242); + inputState->guessing--; + } + if ( synPredMatched242 ) { { - match('@' /* charlit */ ); + bool synPredMatched251 = false; + if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3))))) { + int _m251 = mark(); + synPredMatched251 = true; + inputState->guessing++; + try { + { + { // ( ... )+ + int _cnt246=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt246>=1 ) { goto _loop246; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt246++; + } + _loop246:; + } // ( ... )+ + mDOT(false); + { // ( ... )+ + int _cnt248=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt248>=1 ) { goto _loop248; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt248++; + } + _loop248:; + } // ( ... )+ + mDOT(false); + { // ( ... )+ + int _cnt250=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt250>=1 ) { goto _loop250; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt250++; + } + _loop250:; + } // ( ... )+ + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) { + synPredMatched251 = false; + } + rewind(_m251); + inputState->guessing--; + } + if ( synPredMatched251 ) { + { + { // ( ... )+ + int _cnt254=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt254>=1 ) { goto _loop254; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt254++; + } + _loop254:; + } // ( ... )+ + mDOT(false); + { // ( ... )+ + int _cnt256=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt256>=1 ) { goto _loop256; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt256++; + } + _loop256:; + } // ( ... )+ + mDOT(false); + { // ( ... )+ + int _cnt258=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt258>=1 ) { goto _loop258; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt258++; + } + _loop258:; + } // ( ... )+ + mDOT(false); + { // ( ... )+ + int _cnt260=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt260>=1 ) { goto _loop260; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt260++; + } + _loop260:; + } // ( ... )+ + } + if ( inputState->guessing==0 ) { +#line 1779 "pix.g" + _ttype = IPV4; +#line 1079 "PIXCfgLexer.cpp" + } + } + else { + bool synPredMatched266 = false; + if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3))))) { + int _m266 = mark(); + synPredMatched266 = true; + inputState->guessing++; + try { + { + { // ( ... )+ + int _cnt263=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt263>=1 ) { goto _loop263; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt263++; + } + _loop263:; + } // ( ... )+ + mDOT(false); + { // ( ... )+ + int _cnt265=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt265>=1 ) { goto _loop265; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt265++; + } + _loop265:; + } // ( ... )+ + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) { + synPredMatched266 = false; + } + rewind(_m266); + inputState->guessing--; + } + if ( synPredMatched266 ) { + { + { // ( ... )+ + int _cnt269=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt269>=1 ) { goto _loop269; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt269++; + } + _loop269:; + } // ( ... )+ + mDOT(false); + { // ( ... )+ + int _cnt271=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt271>=1 ) { goto _loop271; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt271++; + } + _loop271:; + } // ( ... )+ + } + if ( inputState->guessing==0 ) { +#line 1782 "pix.g" + _ttype = NUMBER; +#line 1162 "PIXCfgLexer.cpp" + } + } + else if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (true) && (true)) { + { // ( ... )+ + int _cnt273=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt273>=1 ) { goto _loop273; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt273++; + } + _loop273:; + } // ( ... )+ + if ( inputState->guessing==0 ) { +#line 1784 "pix.g" + _ttype = INT_CONST; +#line 1183 "PIXCfgLexer.cpp" + } + } + else { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn()); + } + } + } + } + else if ((_tokenSet_5.member(LA(1))) && (true) && (true)) { + { + switch ( LA(1)) { + case 0x61 /* 'a' */ : + case 0x62 /* 'b' */ : + case 0x63 /* 'c' */ : + case 0x64 /* 'd' */ : + case 0x65 /* 'e' */ : + case 0x66 /* 'f' */ : + case 0x67 /* 'g' */ : + case 0x68 /* 'h' */ : + case 0x69 /* 'i' */ : + case 0x6a /* 'j' */ : + case 0x6b /* 'k' */ : + case 0x6c /* 'l' */ : + case 0x6d /* 'm' */ : + case 0x6e /* 'n' */ : + case 0x6f /* 'o' */ : + case 0x70 /* 'p' */ : + case 0x71 /* 'q' */ : + case 0x72 /* 'r' */ : + case 0x73 /* 's' */ : + case 0x74 /* 't' */ : + case 0x75 /* 'u' */ : + case 0x76 /* 'v' */ : + case 0x77 /* 'w' */ : + case 0x78 /* 'x' */ : + case 0x79 /* 'y' */ : + case 0x7a /* 'z' */ : + { + matchRange('a','z'); break; } case 0x41 /* 'A' */ : @@ -1276,74 +1251,186 @@ void PIXCfgLexer::mNUMBER(bool _createToken) { matchRange('A','Z'); break; } - case 0x5c /* '\\' */ : + case 0x24 /* '$' */ : { - match('\\' /* charlit */ ); - break; - } - case 0x5e /* '^' */ : - { - match('^' /* charlit */ ); - break; - } - case 0x5f /* '_' */ : - { - match('_' /* charlit */ ); - break; - } - case 0x60 /* '`' */ : - { - match('`' /* charlit */ ); - break; - } - case 0x61 /* 'a' */ : - case 0x62 /* 'b' */ : - case 0x63 /* 'c' */ : - case 0x64 /* 'd' */ : - case 0x65 /* 'e' */ : - case 0x66 /* 'f' */ : - case 0x67 /* 'g' */ : - case 0x68 /* 'h' */ : - case 0x69 /* 'i' */ : - case 0x6a /* 'j' */ : - case 0x6b /* 'k' */ : - case 0x6c /* 'l' */ : - case 0x6d /* 'm' */ : - case 0x6e /* 'n' */ : - case 0x6f /* 'o' */ : - case 0x70 /* 'p' */ : - case 0x71 /* 'q' */ : - case 0x72 /* 'r' */ : - case 0x73 /* 's' */ : - case 0x74 /* 't' */ : - case 0x75 /* 'u' */ : - case 0x76 /* 'v' */ : - case 0x77 /* 'w' */ : - case 0x78 /* 'x' */ : - case 0x79 /* 'y' */ : - case 0x7a /* 'z' */ : - { - matchRange('a','z'); + match('$' /* charlit */ ); break; } default: { - goto _loop269; + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn()); } } + } + { // ( ... )* + for (;;) { + switch ( LA(1)) { + case 0x21 /* '!' */ : + case 0x22 /* '\"' */ : + case 0x23 /* '#' */ : + case 0x24 /* '$' */ : + case 0x25 /* '%' */ : + case 0x26 /* '&' */ : + case 0x27 /* '\'' */ : + case 0x28 /* '(' */ : + case 0x29 /* ')' */ : + case 0x2a /* '*' */ : + case 0x2b /* '+' */ : + case 0x2c /* ',' */ : + case 0x2d /* '-' */ : + case 0x2e /* '.' */ : + case 0x2f /* '/' */ : + { + matchRange('!','/'); + break; + } + case 0x30 /* '0' */ : + case 0x31 /* '1' */ : + case 0x32 /* '2' */ : + case 0x33 /* '3' */ : + case 0x34 /* '4' */ : + case 0x35 /* '5' */ : + case 0x36 /* '6' */ : + case 0x37 /* '7' */ : + case 0x38 /* '8' */ : + case 0x39 /* '9' */ : + { + matchRange('0','9'); + break; + } + case 0x3a /* ':' */ : + { + match(':' /* charlit */ ); + break; + } + case 0x3b /* ';' */ : + { + match(';' /* charlit */ ); + break; + } + case 0x3c /* '<' */ : + { + match('<' /* charlit */ ); + break; + } + case 0x3d /* '=' */ : + { + match('=' /* charlit */ ); + break; + } + case 0x3e /* '>' */ : + { + match('>' /* charlit */ ); + break; + } + case 0x3f /* '?' */ : + { + match('?' /* charlit */ ); + break; + } + case 0x40 /* '@' */ : + { + match('@' /* charlit */ ); + break; + } + case 0x41 /* 'A' */ : + case 0x42 /* 'B' */ : + case 0x43 /* 'C' */ : + case 0x44 /* 'D' */ : + case 0x45 /* 'E' */ : + case 0x46 /* 'F' */ : + case 0x47 /* 'G' */ : + case 0x48 /* 'H' */ : + case 0x49 /* 'I' */ : + case 0x4a /* 'J' */ : + case 0x4b /* 'K' */ : + case 0x4c /* 'L' */ : + case 0x4d /* 'M' */ : + case 0x4e /* 'N' */ : + case 0x4f /* 'O' */ : + case 0x50 /* 'P' */ : + case 0x51 /* 'Q' */ : + case 0x52 /* 'R' */ : + case 0x53 /* 'S' */ : + case 0x54 /* 'T' */ : + case 0x55 /* 'U' */ : + case 0x56 /* 'V' */ : + case 0x57 /* 'W' */ : + case 0x58 /* 'X' */ : + case 0x59 /* 'Y' */ : + case 0x5a /* 'Z' */ : + { + matchRange('A','Z'); + break; + } + case 0x5c /* '\\' */ : + { + match('\\' /* charlit */ ); + break; + } + case 0x5e /* '^' */ : + { + match('^' /* charlit */ ); + break; + } + case 0x5f /* '_' */ : + { + match('_' /* charlit */ ); + break; + } + case 0x60 /* '`' */ : + { + match('`' /* charlit */ ); + break; + } + case 0x61 /* 'a' */ : + case 0x62 /* 'b' */ : + case 0x63 /* 'c' */ : + case 0x64 /* 'd' */ : + case 0x65 /* 'e' */ : + case 0x66 /* 'f' */ : + case 0x67 /* 'g' */ : + case 0x68 /* 'h' */ : + case 0x69 /* 'i' */ : + case 0x6a /* 'j' */ : + case 0x6b /* 'k' */ : + case 0x6c /* 'l' */ : + case 0x6d /* 'm' */ : + case 0x6e /* 'n' */ : + case 0x6f /* 'o' */ : + case 0x70 /* 'p' */ : + case 0x71 /* 'q' */ : + case 0x72 /* 'r' */ : + case 0x73 /* 's' */ : + case 0x74 /* 't' */ : + case 0x75 /* 'u' */ : + case 0x76 /* 'v' */ : + case 0x77 /* 'w' */ : + case 0x78 /* 'x' */ : + case 0x79 /* 'y' */ : + case 0x7a /* 'z' */ : + { + matchRange('a','z'); + break; + } + default: + { + goto _loop293; + } + } + } + _loop293:; + } // ( ... )* + if ( inputState->guessing==0 ) { +#line 1807 "pix.g" + _ttype = WORD; +#line 1428 "PIXCfgLexer.cpp" + } } - _loop269:; - } // ( ... )* - if ( inputState->guessing==0 ) { -#line 1692 "pix.g" - _ttype = WORD; -#line 1341 "PIXCfgLexer.cpp" - } - } else { throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn()); } - } + }} } if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { _token = makeToken(_ttype); @@ -1379,11 +1466,11 @@ void PIXCfgLexer::mSTRING(bool _createToken) { matchNot('\"' /* charlit */ ); } else { - goto _loop272; + goto _loop296; } } - _loop272:; + _loop296:; } // ( ... )* match('\"' /* charlit */ ); if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { @@ -1763,7 +1850,7 @@ const unsigned long PIXCfgLexer::_tokenSet_0_data_[] = { 4294958072UL, 1UL, 0UL, // 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xe 0xf 0x10 0x11 0x12 0x13 0x14 // 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x7f 0x80 0x81 // 0x82 0x83 0x84 0x85 0x86 0x87 0x88 0x89 0x8a 0x8b 0x8c 0x8d 0x8e 0x8f -// 0x90 +// 0x90 0x91 const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgLexer::_tokenSet_0(_tokenSet_0_data_,16); const unsigned long PIXCfgLexer::_tokenSet_1_data_[] = { 4294958072UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL }; // 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xe 0xf 0x10 0x11 0x12 0x13 0x14 @@ -1771,7 +1858,7 @@ const unsigned long PIXCfgLexer::_tokenSet_1_data_[] = { 4294958072UL, 429496729 // & \' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G // H I J K L M N O P Q R S T U V W X Y Z [ 0x5c ] ^ _ ` a b c d e f g h // i j k l m n o p q r s t u v w x y z { | } ~ 0x7f 0x80 0x81 0x82 0x83 -// 0x84 0x85 0x86 0x87 0x88 0x89 0x8a 0x8b 0x8c 0x8d 0x8e 0x8f 0x90 +// 0x84 0x85 0x86 0x87 0x88 0x89 0x8a 0x8b 0x8c 0x8d 0x8e 0x8f 0x90 0x91 const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgLexer::_tokenSet_1(_tokenSet_1_data_,16); const unsigned long PIXCfgLexer::_tokenSet_2_data_[] = { 0UL, 67043328UL, 0UL, 126UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL }; // 0 1 2 3 4 5 6 7 8 9 a b c d e f @@ -1792,6 +1879,6 @@ const unsigned long PIXCfgLexer::_tokenSet_6_data_[] = { 4294967288UL, 429496729 // % & \' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F // G H I J K L M N O P Q R S T U V W X Y Z [ 0x5c ] ^ _ ` a b c d e f g // h i j k l m n o p q r s t u v w x y z { | } ~ 0x7f 0x80 0x81 0x82 0x83 -// 0x84 0x85 0x86 0x87 0x88 0x89 0x8a 0x8b 0x8c 0x8d 0x8e 0x8f 0x90 +// 0x84 0x85 0x86 0x87 0x88 0x89 0x8a 0x8b 0x8c 0x8d 0x8e 0x8f 0x90 0x91 const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgLexer::_tokenSet_6(_tokenSet_6_data_,16); diff --git a/src/parsers/PIXCfgLexer.hpp b/src/parsers/PIXCfgLexer.hpp index 896c369f2..1769f0b36 100644 --- a/src/parsers/PIXCfgLexer.hpp +++ b/src/parsers/PIXCfgLexer.hpp @@ -54,10 +54,13 @@ public: public: void mWhitespace(bool _createToken); protected: void mINT_CONST(bool _createToken); protected: void mHEX_CONST(bool _createToken); + protected: void mNUMBER(bool _createToken); protected: void mNEG_INT_CONST(bool _createToken); protected: void mDIGIT(bool _createToken); protected: void mHEXDIGIT(bool _createToken); - public: void mNUMBER(bool _createToken); + protected: void mOBJECT(bool _createToken); + protected: void mOBJECT_GROUP(bool _createToken); + public: void mNUMBER_ADDRESS_OR_WORD(bool _createToken); public: void mDOT(bool _createToken); public: void mSTRING(bool _createToken); public: void mPIPE_CHAR(bool _createToken); diff --git a/src/parsers/PIXCfgParser.cpp b/src/parsers/PIXCfgParser.cpp index 8ca746ab0..bac2798cd 100644 --- a/src/parsers/PIXCfgParser.cpp +++ b/src/parsers/PIXCfgParser.cpp @@ -45,7 +45,6 @@ PIXCfgParser::PIXCfgParser(const ANTLR_USE_NAMESPACE(antlr)ParserSharedInputStat } void PIXCfgParser::cfgfile() { - Tracer traceInOut(this, "cfgfile"); try { // for error handling { // ( ... )+ @@ -187,7 +186,6 @@ void PIXCfgParser::cfgfile() { } void PIXCfgParser::comment() { - Tracer traceInOut(this, "comment"); try { // for error handling { @@ -220,7 +218,6 @@ void PIXCfgParser::comment() { } void PIXCfgParser::version() { - Tracer traceInOut(this, "version"); try { // for error handling { @@ -244,14 +241,14 @@ void PIXCfgParser::version() { match(VERSION_WORD); match(NUMBER); if ( inputState->guessing==0 ) { -#line 796 "pix.g" +#line 799 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->setDiscoveredVersion(LT(0)->getText()); *dbg << "VERSION " << LT(0)->getText() << std::endl; consumeUntil(NEWLINE); -#line 255 "PIXCfgParser.cpp" +#line 252 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -265,7 +262,6 @@ void PIXCfgParser::version() { } void PIXCfgParser::hostname() { - Tracer traceInOut(this, "hostname"); try { // for error handling match(HOSTNAME); @@ -288,7 +284,7 @@ void PIXCfgParser::hostname() { } } if ( inputState->guessing==0 ) { -#line 806 "pix.g" +#line 809 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->setHostName( LT(0)->getText() ); @@ -296,7 +292,7 @@ void PIXCfgParser::hostname() { << "LT0=" << LT(0)->getText() << std::endl; -#line 300 "PIXCfgParser.cpp" +#line 296 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -310,17 +306,16 @@ void PIXCfgParser::hostname() { } void PIXCfgParser::community_list_command() { - Tracer traceInOut(this, "community_list_command"); try { // for error handling match(IP); match(COMMUNITY_LIST); if ( inputState->guessing==0 ) { -#line 174 "pix.g" +#line 177 "pix.g" consumeUntil(NEWLINE); -#line 324 "PIXCfgParser.cpp" +#line 319 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -334,17 +329,16 @@ void PIXCfgParser::community_list_command() { } void PIXCfgParser::unknown_ip_command() { - Tracer traceInOut(this, "unknown_ip_command"); try { // for error handling match(IP); match(WORD); if ( inputState->guessing==0 ) { -#line 765 "pix.g" +#line 768 "pix.g" consumeUntil(NEWLINE); -#line 348 "PIXCfgParser.cpp" +#line 342 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -358,7 +352,6 @@ void PIXCfgParser::unknown_ip_command() { } void PIXCfgParser::intrface() { - Tracer traceInOut(this, "intrface"); try { // for error handling match(INTRFACE); @@ -386,7 +379,6 @@ void PIXCfgParser::intrface() { } void PIXCfgParser::nameif_top_level() { - Tracer traceInOut(this, "nameif_top_level"); ANTLR_USE_NAMESPACE(antlr)RefToken p_intf = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken intf_label = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken sec_level = ANTLR_USE_NAMESPACE(antlr)nullToken; @@ -400,7 +392,7 @@ void PIXCfgParser::nameif_top_level() { sec_level = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 1193 "pix.g" +#line 1287 "pix.g" std::string label = (intf_label) ? intf_label->getText() : ""; std::string seclevel = (sec_level) ? sec_level->getText() : ""; @@ -408,7 +400,7 @@ void PIXCfgParser::nameif_top_level() { *dbg << " NAMEIF: " << p_intf->getText() << label << seclevel << std::endl; -#line 412 "PIXCfgParser.cpp" +#line 404 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -422,17 +414,16 @@ void PIXCfgParser::nameif_top_level() { } void PIXCfgParser::controller() { - Tracer traceInOut(this, "controller"); try { // for error handling match(CONTROLLER); if ( inputState->guessing==0 ) { -#line 1109 "pix.g" +#line 1203 "pix.g" importer->clearCurrentInterface(); consumeUntil(NEWLINE); -#line 436 "PIXCfgParser.cpp" +#line 427 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -446,7 +437,6 @@ void PIXCfgParser::controller() { } void PIXCfgParser::access_list_commands() { - Tracer traceInOut(this, "access_list_commands"); ANTLR_USE_NAMESPACE(antlr)RefToken name = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling @@ -454,7 +444,7 @@ void PIXCfgParser::access_list_commands() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 818 "pix.g" +#line 821 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -463,7 +453,7 @@ void PIXCfgParser::access_list_commands() { *dbg << name->getLine() << ":" << " ACL ext " << name->getText() << std::endl; -#line 467 "PIXCfgParser.cpp" +#line 457 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -502,12 +492,12 @@ void PIXCfgParser::access_list_commands() { } } if ( inputState->guessing==0 ) { -#line 841 "pix.g" +#line 844 "pix.g" *dbg << LT(0)->getLine() << ":" << " ACL line end" << std::endl << std::endl; -#line 511 "PIXCfgParser.cpp" +#line 501 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -521,7 +511,6 @@ void PIXCfgParser::access_list_commands() { } void PIXCfgParser::access_group() { - Tracer traceInOut(this, "access_group"); ANTLR_USE_NAMESPACE(antlr)RefToken aclname = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken dir = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken intf_label = ANTLR_USE_NAMESPACE(antlr)nullToken; @@ -536,7 +525,7 @@ void PIXCfgParser::access_group() { intf_label = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 1459 "pix.g" +#line 1553 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->setInterfaceAndDirectionForRuleSet( @@ -548,7 +537,7 @@ void PIXCfgParser::access_group() { << " " << intf_label->getText() << " " << dir->getText() << std::endl; -#line 552 "PIXCfgParser.cpp" +#line 541 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -562,7 +551,6 @@ void PIXCfgParser::access_group() { } void PIXCfgParser::exit() { - Tracer traceInOut(this, "exit"); try { // for error handling match(EXIT); @@ -578,18 +566,17 @@ void PIXCfgParser::exit() { } void PIXCfgParser::certificate() { - Tracer traceInOut(this, "certificate"); try { // for error handling match(CERTIFICATE); match(WORD); if ( inputState->guessing==0 ) { -#line 788 "pix.g" +#line 791 "pix.g" consumeUntil(NEWLINE); consumeUntil(QUIT); -#line 593 "PIXCfgParser.cpp" +#line 580 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -603,16 +590,15 @@ void PIXCfgParser::certificate() { } void PIXCfgParser::quit() { - Tracer traceInOut(this, "quit"); try { // for error handling match(QUIT); if ( inputState->guessing==0 ) { -#line 167 "pix.g" +#line 170 "pix.g" consumeUntil(NEWLINE); -#line 616 "PIXCfgParser.cpp" +#line 602 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -626,12 +612,11 @@ void PIXCfgParser::quit() { } void PIXCfgParser::names_section() { - Tracer traceInOut(this, "names_section"); try { // for error handling match(NAMES); if ( inputState->guessing==0 ) { -#line 181 "pix.g" +#line 184 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->addMessageToLog( @@ -639,7 +624,7 @@ void PIXCfgParser::names_section() { "Import of configuration that uses \"names\" " "is not supported at this time"); -#line 643 "PIXCfgParser.cpp" +#line 628 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -653,7 +638,6 @@ void PIXCfgParser::names_section() { } void PIXCfgParser::name_entry() { - Tracer traceInOut(this, "name_entry"); ANTLR_USE_NAMESPACE(antlr)RefToken a = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken v6 = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken n = ANTLR_USE_NAMESPACE(antlr)nullToken; @@ -683,7 +667,7 @@ void PIXCfgParser::name_entry() { n = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 191 "pix.g" +#line 194 "pix.g" if (a) { @@ -699,7 +683,7 @@ void PIXCfgParser::name_entry() { consumeUntil(NEWLINE); } -#line 703 "PIXCfgParser.cpp" +#line 687 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -713,7 +697,6 @@ void PIXCfgParser::name_entry() { } void PIXCfgParser::named_object_network() { - Tracer traceInOut(this, "named_object_network"); ANTLR_USE_NAMESPACE(antlr)RefToken name = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling @@ -722,7 +705,7 @@ void PIXCfgParser::named_object_network() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 224 "pix.g" +#line 227 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -730,7 +713,7 @@ void PIXCfgParser::named_object_network() { *dbg << name->getLine() << ":" << " Named Object " << name->getText() << std::endl; -#line 734 "PIXCfgParser.cpp" +#line 717 "PIXCfgParser.cpp" } { // ( ... )* for (;;) { @@ -757,7 +740,6 @@ void PIXCfgParser::named_object_network() { } void PIXCfgParser::named_object_service() { - Tracer traceInOut(this, "named_object_service"); ANTLR_USE_NAMESPACE(antlr)RefToken name = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling @@ -766,7 +748,7 @@ void PIXCfgParser::named_object_service() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 334 "pix.g" +#line 337 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -774,7 +756,7 @@ void PIXCfgParser::named_object_service() { *dbg << name->getLine() << ":" << " Named Object " << name->getText() << std::endl; -#line 778 "PIXCfgParser.cpp" +#line 760 "PIXCfgParser.cpp" } { // ( ... )* for (;;) { @@ -801,7 +783,6 @@ void PIXCfgParser::named_object_service() { } void PIXCfgParser::object_group_network() { - Tracer traceInOut(this, "object_group_network"); ANTLR_USE_NAMESPACE(antlr)RefToken name = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling @@ -810,7 +791,7 @@ void PIXCfgParser::object_group_network() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 449 "pix.g" +#line 452 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -818,7 +799,7 @@ void PIXCfgParser::object_group_network() { *dbg << name->getLine() << ":" << " Object Group " << name->getText() << std::endl; -#line 822 "PIXCfgParser.cpp" +#line 803 "PIXCfgParser.cpp" } { // ( ... )+ int _cnt48=0; @@ -846,7 +827,6 @@ void PIXCfgParser::object_group_network() { } void PIXCfgParser::object_group_service() { - Tracer traceInOut(this, "object_group_service"); ANTLR_USE_NAMESPACE(antlr)RefToken name = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken tcp = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken udp = ANTLR_USE_NAMESPACE(antlr)nullToken; @@ -888,7 +868,7 @@ void PIXCfgParser::object_group_service() { } } if ( inputState->guessing==0 ) { -#line 670 "pix.g" +#line 673 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -899,7 +879,7 @@ void PIXCfgParser::object_group_service() { *dbg << name->getLine() << ":" << " Object Group " << name->getText() << std::endl; -#line 903 "PIXCfgParser.cpp" +#line 883 "PIXCfgParser.cpp" } { // ( ... )+ int _cnt80=0; @@ -927,7 +907,6 @@ void PIXCfgParser::object_group_service() { } void PIXCfgParser::object_group_protocol() { - Tracer traceInOut(this, "object_group_protocol"); ANTLR_USE_NAMESPACE(antlr)RefToken name = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling @@ -936,7 +915,7 @@ void PIXCfgParser::object_group_protocol() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 547 "pix.g" +#line 550 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -944,7 +923,7 @@ void PIXCfgParser::object_group_protocol() { *dbg << name->getLine() << ":" << " Object Group " << name->getText() << std::endl; -#line 948 "PIXCfgParser.cpp" +#line 927 "PIXCfgParser.cpp" } { // ( ... )+ int _cnt60=0; @@ -972,7 +951,6 @@ void PIXCfgParser::object_group_protocol() { } void PIXCfgParser::object_group_icmp_8_0() { - Tracer traceInOut(this, "object_group_icmp_8_0"); ANTLR_USE_NAMESPACE(antlr)RefToken name = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling @@ -981,7 +959,7 @@ void PIXCfgParser::object_group_icmp_8_0() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 602 "pix.g" +#line 605 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -989,7 +967,7 @@ void PIXCfgParser::object_group_icmp_8_0() { *dbg << name->getLine() << ":" << " Object Group " << name->getText() << std::endl; -#line 993 "PIXCfgParser.cpp" +#line 971 "PIXCfgParser.cpp" } { // ( ... )* for (;;) { @@ -1015,7 +993,6 @@ void PIXCfgParser::object_group_icmp_8_0() { } void PIXCfgParser::object_group_icmp_8_3() { - Tracer traceInOut(this, "object_group_icmp_8_3"); ANTLR_USE_NAMESPACE(antlr)RefToken name = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling @@ -1024,7 +1001,7 @@ void PIXCfgParser::object_group_icmp_8_3() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 615 "pix.g" +#line 618 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -1032,7 +1009,7 @@ void PIXCfgParser::object_group_icmp_8_3() { *dbg << name->getLine() << ":" << " Object Group " << name->getText() << std::endl; -#line 1036 "PIXCfgParser.cpp" +#line 1013 "PIXCfgParser.cpp" } { // ( ... )* for (;;) { @@ -1058,15 +1035,38 @@ void PIXCfgParser::object_group_icmp_8_3() { } void PIXCfgParser::crypto() { - Tracer traceInOut(this, "crypto"); try { // for error handling match(CRYPTO); if ( inputState->guessing==0 ) { -#line 758 "pix.g" +#line 761 "pix.g" consumeUntil(NEWLINE); +#line 1047 "PIXCfgParser.cpp" + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + if( inputState->guessing == 0 ) { + reportError(ex); + recover(ex,_tokenSet_1); + } else { + throw; + } + } +} + +void PIXCfgParser::no_commands() { + + try { // for error handling + match(NO); + if ( inputState->guessing==0 ) { +#line 782 "pix.g" + + *dbg << " TOP LEVEL \"NO\" COMMAND: " + << LT(0)->getText() << std::endl; + consumeUntil(NEWLINE); + #line 1071 "PIXCfgParser.cpp" } } @@ -1080,42 +1080,16 @@ void PIXCfgParser::crypto() { } } -void PIXCfgParser::no_commands() { - Tracer traceInOut(this, "no_commands"); - - try { // for error handling - match(NO); - if ( inputState->guessing==0 ) { -#line 779 "pix.g" - - *dbg << " TOP LEVEL \"NO\" COMMAND: " - << LT(0)->getText() << std::endl; - consumeUntil(NEWLINE); - -#line 1096 "PIXCfgParser.cpp" - } - } - catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { - if( inputState->guessing == 0 ) { - reportError(ex); - recover(ex,_tokenSet_1); - } else { - throw; - } - } -} - void PIXCfgParser::unknown_command() { - Tracer traceInOut(this, "unknown_command"); try { // for error handling match(WORD); if ( inputState->guessing==0 ) { -#line 772 "pix.g" +#line 775 "pix.g" consumeUntil(NEWLINE); -#line 1119 "PIXCfgParser.cpp" +#line 1093 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1129,7 +1103,6 @@ void PIXCfgParser::unknown_command() { } void PIXCfgParser::ip_protocol_names() { - Tracer traceInOut(this, "ip_protocol_names"); try { // for error handling { @@ -1227,7 +1200,6 @@ void PIXCfgParser::ip_protocol_names() { } void PIXCfgParser::named_object_network_parameters() { - Tracer traceInOut(this, "named_object_network_parameters"); try { // for error handling { @@ -1275,12 +1247,11 @@ void PIXCfgParser::named_object_network_parameters() { } void PIXCfgParser::named_object_nat() { - Tracer traceInOut(this, "named_object_nat"); try { // for error handling match(NAT); if ( inputState->guessing==0 ) { -#line 252 "pix.g" +#line 255 "pix.g" importer->addMessageToLog( "Parser warning: " @@ -1288,7 +1259,7 @@ void PIXCfgParser::named_object_nat() { "is not supported at this time"); consumeUntil(NEWLINE); -#line 1292 "PIXCfgParser.cpp" +#line 1263 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1302,7 +1273,6 @@ void PIXCfgParser::named_object_nat() { } void PIXCfgParser::host_addr() { - Tracer traceInOut(this, "host_addr"); ANTLR_USE_NAMESPACE(antlr)RefToken h = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken v6 = ANTLR_USE_NAMESPACE(antlr)nullToken; @@ -1331,7 +1301,7 @@ void PIXCfgParser::host_addr() { } } if ( inputState->guessing==0 ) { -#line 283 "pix.g" +#line 286 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); if (h) @@ -1348,7 +1318,7 @@ void PIXCfgParser::host_addr() { consumeUntil(NEWLINE); } -#line 1352 "PIXCfgParser.cpp" +#line 1322 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1362,7 +1332,6 @@ void PIXCfgParser::host_addr() { } void PIXCfgParser::range_addr() { - Tracer traceInOut(this, "range_addr"); ANTLR_USE_NAMESPACE(antlr)RefToken r1 = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken r2 = ANTLR_USE_NAMESPACE(antlr)nullToken; @@ -1375,7 +1344,7 @@ void PIXCfgParser::range_addr() { match(IPV4); } if ( inputState->guessing==0 ) { -#line 302 "pix.g" +#line 305 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->tmp_range_1 = r1->getText(); @@ -1383,7 +1352,7 @@ void PIXCfgParser::range_addr() { importer->commitNamedAddressRangeObject(); *dbg << r1->getText() << "/" << r2->getText(); -#line 1387 "PIXCfgParser.cpp" +#line 1356 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1397,7 +1366,6 @@ void PIXCfgParser::range_addr() { } void PIXCfgParser::subnet_addr() { - Tracer traceInOut(this, "subnet_addr"); ANTLR_USE_NAMESPACE(antlr)RefToken a = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken nm = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken v6 = ANTLR_USE_NAMESPACE(antlr)nullToken; @@ -1431,7 +1399,7 @@ void PIXCfgParser::subnet_addr() { } } if ( inputState->guessing==0 ) { -#line 312 "pix.g" +#line 315 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); if (a) @@ -1448,7 +1416,7 @@ void PIXCfgParser::subnet_addr() { consumeUntil(NEWLINE); } -#line 1452 "PIXCfgParser.cpp" +#line 1420 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1462,12 +1430,11 @@ void PIXCfgParser::subnet_addr() { } void PIXCfgParser::named_object_description() { - Tracer traceInOut(this, "named_object_description"); try { // for error handling match(DESCRIPTION); if ( inputState->guessing==0 ) { -#line 262 "pix.g" +#line 265 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); *dbg << LT(1)->getLine() << ":"; @@ -1480,7 +1447,7 @@ void PIXCfgParser::named_object_description() { importer->setNamedObjectDescription(descr); *dbg << " DESCRIPTION " << descr << std::endl; -#line 1484 "PIXCfgParser.cpp" +#line 1451 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1494,7 +1461,6 @@ void PIXCfgParser::named_object_description() { } void PIXCfgParser::named_object_service_parameters() { - Tracer traceInOut(this, "named_object_service_parameters"); try { // for error handling { @@ -1533,7 +1499,6 @@ void PIXCfgParser::named_object_service_parameters() { } void PIXCfgParser::service_icmp() { - Tracer traceInOut(this, "service_icmp"); ANTLR_USE_NAMESPACE(antlr)RefToken icmp_type = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken icmp_word = ANTLR_USE_NAMESPACE(antlr)nullToken; @@ -1547,11 +1512,11 @@ void PIXCfgParser::service_icmp() { icmp_type = LT(1); match(INT_CONST); if ( inputState->guessing==0 ) { -#line 366 "pix.g" +#line 369 "pix.g" importer->icmp_type = LT(0)->getText(); -#line 1555 "PIXCfgParser.cpp" +#line 1520 "PIXCfgParser.cpp" } break; } @@ -1560,11 +1525,11 @@ void PIXCfgParser::service_icmp() { icmp_word = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 370 "pix.g" +#line 373 "pix.g" importer->icmp_spec = icmp_word->getText(); -#line 1568 "PIXCfgParser.cpp" +#line 1533 "PIXCfgParser.cpp" } break; } @@ -1575,13 +1540,13 @@ void PIXCfgParser::service_icmp() { } } if ( inputState->guessing==0 ) { -#line 374 "pix.g" +#line 377 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->commitNamedICMPServiceObject(); *dbg << "NAMED OBJECT SERVICE ICMP " << LT(0)->getText() << " "; -#line 1585 "PIXCfgParser.cpp" +#line 1550 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1595,7 +1560,6 @@ void PIXCfgParser::service_icmp() { } void PIXCfgParser::service_icmp6() { - Tracer traceInOut(this, "service_icmp6"); try { // for error handling match(SERVICE); @@ -1619,7 +1583,7 @@ void PIXCfgParser::service_icmp6() { } } if ( inputState->guessing==0 ) { -#line 382 "pix.g" +#line 385 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->addMessageToLog("Parser warning: " @@ -1628,7 +1592,7 @@ void PIXCfgParser::service_icmp6() { *dbg << "NAMED OBJECT SERVICE ICMP6 " << LT(0)->getText() << " "; consumeUntil(NEWLINE); -#line 1632 "PIXCfgParser.cpp" +#line 1596 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1642,7 +1606,6 @@ void PIXCfgParser::service_icmp6() { } void PIXCfgParser::service_tcp_udp() { - Tracer traceInOut(this, "service_tcp_udp"); try { // for error handling match(SERVICE); @@ -1665,12 +1628,12 @@ void PIXCfgParser::service_tcp_udp() { } } if ( inputState->guessing==0 ) { -#line 393 "pix.g" +#line 396 "pix.g" importer->protocol = LT(0)->getText(); *dbg << "NAMED OBJECT SERVICE " << LT(0)->getText() << " "; -#line 1674 "PIXCfgParser.cpp" +#line 1637 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -1762,12 +1725,12 @@ void PIXCfgParser::service_tcp_udp() { } } if ( inputState->guessing==0 ) { -#line 399 "pix.g" +#line 402 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->commitNamedTCPUDPServiceObject(); -#line 1771 "PIXCfgParser.cpp" +#line 1734 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1781,7 +1744,6 @@ void PIXCfgParser::service_tcp_udp() { } void PIXCfgParser::service_other() { - Tracer traceInOut(this, "service_other"); try { // for error handling match(SERVICE); @@ -1818,14 +1780,14 @@ void PIXCfgParser::service_other() { } } if ( inputState->guessing==0 ) { -#line 418 "pix.g" +#line 421 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->protocol = LT(0)->getText(); importer->commitNamedIPServiceObject(); *dbg << "NAMED OBJECT SERVICE " << LT(0)->getText() << " "; -#line 1829 "PIXCfgParser.cpp" +#line 1791 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1839,13 +1801,12 @@ void PIXCfgParser::service_other() { } void PIXCfgParser::service_unknown() { - Tracer traceInOut(this, "service_unknown"); try { // for error handling match(SERVICE); match(WORD); if ( inputState->guessing==0 ) { -#line 433 "pix.g" +#line 436 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->protocol = "ip"; @@ -1856,7 +1817,7 @@ void PIXCfgParser::service_unknown() { importer->addMessageToLog(err); *dbg << "UNKNOWN SERVICE " << LT(0)->getText() << " "; -#line 1860 "PIXCfgParser.cpp" +#line 1821 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1870,17 +1831,16 @@ void PIXCfgParser::service_unknown() { } void PIXCfgParser::src_port_spec() { - Tracer traceInOut(this, "src_port_spec"); try { // for error handling match(SOURCE); xoperator(); if ( inputState->guessing==0 ) { -#line 406 "pix.g" +#line 409 "pix.g" importer->SaveTmpPortToSrc(); -#line 1884 "PIXCfgParser.cpp" +#line 1844 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1894,7 +1854,6 @@ void PIXCfgParser::src_port_spec() { } void PIXCfgParser::dst_port_spec() { - Tracer traceInOut(this, "dst_port_spec"); try { // for error handling { @@ -1920,11 +1879,11 @@ void PIXCfgParser::dst_port_spec() { } xoperator(); if ( inputState->guessing==0 ) { -#line 412 "pix.g" +#line 415 "pix.g" importer->SaveTmpPortToDst(); -#line 1928 "PIXCfgParser.cpp" +#line 1887 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1938,7 +1897,6 @@ void PIXCfgParser::dst_port_spec() { } void PIXCfgParser::xoperator() { - Tracer traceInOut(this, "xoperator"); try { // for error handling switch ( LA(1)) { @@ -1972,7 +1930,6 @@ void PIXCfgParser::xoperator() { } void PIXCfgParser::object_group_network_parameters() { - Tracer traceInOut(this, "object_group_network_parameters"); try { // for error handling match(NEWLINE); @@ -2011,12 +1968,11 @@ void PIXCfgParser::object_group_network_parameters() { } void PIXCfgParser::object_group_description() { - Tracer traceInOut(this, "object_group_description"); try { // for error handling match(DESCRIPTION); if ( inputState->guessing==0 ) { -#line 473 "pix.g" +#line 476 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); *dbg << LT(1)->getLine() << ":"; @@ -2029,7 +1985,7 @@ void PIXCfgParser::object_group_description() { importer->setObjectGroupDescription(descr); *dbg << " DESCRIPTION " << descr << std::endl; -#line 2033 "PIXCfgParser.cpp" +#line 1989 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -2043,7 +1999,6 @@ void PIXCfgParser::object_group_description() { } void PIXCfgParser::group_object() { - Tracer traceInOut(this, "group_object"); ANTLR_USE_NAMESPACE(antlr)RefToken name = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling @@ -2051,14 +2006,14 @@ void PIXCfgParser::group_object() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 488 "pix.g" +#line 491 "pix.g" importer->clearTempVars(); importer->setCurrentLineNumber(LT(0)->getLine()); importer->addNamedObjectToObjectGroup(name->getText()); *dbg << " GROUP MEMBER " << name->getLine() << std::endl; -#line 2062 "PIXCfgParser.cpp" +#line 2017 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -2072,7 +2027,6 @@ void PIXCfgParser::group_object() { } void PIXCfgParser::network_object() { - Tracer traceInOut(this, "network_object"); ANTLR_USE_NAMESPACE(antlr)RefToken a = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken nm = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken v6 = ANTLR_USE_NAMESPACE(antlr)nullToken; @@ -2083,12 +2037,12 @@ void PIXCfgParser::network_object() { try { // for error handling match(NETWORK_OBJECT); if ( inputState->guessing==0 ) { -#line 497 "pix.g" +#line 500 "pix.g" importer->clearTempVars(); importer->setCurrentLineNumber(LT(0)->getLine()); -#line 2092 "PIXCfgParser.cpp" +#line 2046 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -2120,7 +2074,7 @@ void PIXCfgParser::network_object() { } } if ( inputState->guessing==0 ) { -#line 503 "pix.g" +#line 506 "pix.g" if (a) { @@ -2136,7 +2090,7 @@ void PIXCfgParser::network_object() { consumeUntil(NEWLINE); } -#line 2140 "PIXCfgParser.cpp" +#line 2094 "PIXCfgParser.cpp" } break; } @@ -2164,7 +2118,7 @@ void PIXCfgParser::network_object() { } } if ( inputState->guessing==0 ) { -#line 520 "pix.g" +#line 523 "pix.g" if (h) { @@ -2180,7 +2134,7 @@ void PIXCfgParser::network_object() { consumeUntil(NEWLINE); } -#line 2184 "PIXCfgParser.cpp" +#line 2138 "PIXCfgParser.cpp" } break; } @@ -2190,12 +2144,12 @@ void PIXCfgParser::network_object() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 537 "pix.g" +#line 540 "pix.g" importer->addNamedObjectToObjectGroup(name->getText()); *dbg << " GROUP MEMBER " << name->getLine() << std::endl; -#line 2199 "PIXCfgParser.cpp" +#line 2153 "PIXCfgParser.cpp" } break; } @@ -2217,7 +2171,6 @@ void PIXCfgParser::network_object() { } void PIXCfgParser::object_group_protocol_parameters() { - Tracer traceInOut(this, "object_group_protocol_parameters"); try { // for error handling match(NEWLINE); @@ -2256,18 +2209,17 @@ void PIXCfgParser::object_group_protocol_parameters() { } void PIXCfgParser::protocol_object() { - Tracer traceInOut(this, "protocol_object"); ANTLR_USE_NAMESPACE(antlr)RefToken name = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling match(PROTOCOL_OBJECT); if ( inputState->guessing==0 ) { -#line 571 "pix.g" +#line 574 "pix.g" importer->clearTempVars(); importer->setCurrentLineNumber(LT(0)->getLine()); -#line 2271 "PIXCfgParser.cpp" +#line 2223 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -2339,14 +2291,14 @@ void PIXCfgParser::protocol_object() { } } if ( inputState->guessing==0 ) { -#line 577 "pix.g" +#line 580 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->protocol = LT(0)->getText(); importer->addIPServiceToObjectGroup(); *dbg << " GROUP MEMBER " << LT(0)->getText() << " "; -#line 2350 "PIXCfgParser.cpp" +#line 2302 "PIXCfgParser.cpp" } break; } @@ -2354,13 +2306,13 @@ void PIXCfgParser::protocol_object() { { match(ICMP6); if ( inputState->guessing==0 ) { -#line 585 "pix.g" +#line 588 "pix.g" importer->addMessageToLog( "Parser warning: IPv6 import is not supported. "); consumeUntil(NEWLINE); -#line 2364 "PIXCfgParser.cpp" +#line 2316 "PIXCfgParser.cpp" } break; } @@ -2370,12 +2322,12 @@ void PIXCfgParser::protocol_object() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 592 "pix.g" +#line 595 "pix.g" importer->addNamedObjectToObjectGroup(name->getText()); *dbg << " GROUP MEMBER " << name->getLine() << std::endl; -#line 2379 "PIXCfgParser.cpp" +#line 2331 "PIXCfgParser.cpp" } break; } @@ -2397,7 +2349,6 @@ void PIXCfgParser::protocol_object() { } void PIXCfgParser::object_group_icmp_parameters() { - Tracer traceInOut(this, "object_group_icmp_parameters"); try { // for error handling match(NEWLINE); @@ -2436,7 +2387,6 @@ void PIXCfgParser::object_group_icmp_parameters() { } void PIXCfgParser::icmp_object() { - Tracer traceInOut(this, "icmp_object"); ANTLR_USE_NAMESPACE(antlr)RefToken icmp_type = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken icmp_word = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken name = ANTLR_USE_NAMESPACE(antlr)nullToken; @@ -2444,12 +2394,12 @@ void PIXCfgParser::icmp_object() { try { // for error handling match(ICMP_OBJECT); if ( inputState->guessing==0 ) { -#line 639 "pix.g" +#line 642 "pix.g" importer->clearTempVars(); importer->setCurrentLineNumber(LT(0)->getLine()); -#line 2453 "PIXCfgParser.cpp" +#line 2403 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -2463,11 +2413,11 @@ void PIXCfgParser::icmp_object() { icmp_type = LT(1); match(INT_CONST); if ( inputState->guessing==0 ) { -#line 646 "pix.g" +#line 649 "pix.g" importer->icmp_type = LT(0)->getText(); -#line 2471 "PIXCfgParser.cpp" +#line 2421 "PIXCfgParser.cpp" } break; } @@ -2476,11 +2426,11 @@ void PIXCfgParser::icmp_object() { icmp_word = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 650 "pix.g" +#line 653 "pix.g" importer->icmp_spec = icmp_word->getText(); -#line 2484 "PIXCfgParser.cpp" +#line 2434 "PIXCfgParser.cpp" } break; } @@ -2491,12 +2441,12 @@ void PIXCfgParser::icmp_object() { } } if ( inputState->guessing==0 ) { -#line 654 "pix.g" +#line 657 "pix.g" importer->addICMPServiceToObjectGroup(); *dbg << " SERVICE ICMP " << LT(0)->getText() << " "; -#line 2500 "PIXCfgParser.cpp" +#line 2450 "PIXCfgParser.cpp" } break; } @@ -2506,12 +2456,12 @@ void PIXCfgParser::icmp_object() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 660 "pix.g" +#line 663 "pix.g" importer->addNamedObjectToObjectGroup(name->getText()); *dbg << " GROUP MEMBER " << name->getLine() << std::endl; -#line 2515 "PIXCfgParser.cpp" +#line 2465 "PIXCfgParser.cpp" } break; } @@ -2533,7 +2483,6 @@ void PIXCfgParser::icmp_object() { } void PIXCfgParser::object_group_service_parameters() { - Tracer traceInOut(this, "object_group_service_parameters"); try { // for error handling match(NEWLINE); @@ -2577,7 +2526,6 @@ void PIXCfgParser::object_group_service_parameters() { } void PIXCfgParser::service_object() { - Tracer traceInOut(this, "service_object"); ANTLR_USE_NAMESPACE(antlr)RefToken icmp_type = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken icmp_word = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken name = ANTLR_USE_NAMESPACE(antlr)nullToken; @@ -2585,12 +2533,12 @@ void PIXCfgParser::service_object() { try { // for error handling match(SERVICE_OBJECT); if ( inputState->guessing==0 ) { -#line 699 "pix.g" +#line 702 "pix.g" importer->clearTempVars(); importer->setCurrentLineNumber(LT(0)->getLine()); -#line 2594 "PIXCfgParser.cpp" +#line 2542 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -2644,14 +2592,14 @@ void PIXCfgParser::service_object() { } } if ( inputState->guessing==0 ) { -#line 705 "pix.g" +#line 708 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->protocol = LT(0)->getText(); importer->addIPServiceToObjectGroup(); *dbg << " GROUP MEMBER " << LT(0)->getText() << " "; -#line 2655 "PIXCfgParser.cpp" +#line 2603 "PIXCfgParser.cpp" } break; } @@ -2683,12 +2631,12 @@ void PIXCfgParser::service_object() { } } if ( inputState->guessing==0 ) { -#line 713 "pix.g" +#line 716 "pix.g" importer->protocol = LT(0)->getText(); *dbg << " SERVICE TCP/UDP" << LT(0)->getText() << " "; -#line 2692 "PIXCfgParser.cpp" +#line 2640 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -2780,11 +2728,11 @@ void PIXCfgParser::service_object() { } } if ( inputState->guessing==0 ) { -#line 719 "pix.g" +#line 722 "pix.g" importer->addTCPUDPServiceToObjectGroup(); -#line 2788 "PIXCfgParser.cpp" +#line 2736 "PIXCfgParser.cpp" } break; } @@ -2798,11 +2746,11 @@ void PIXCfgParser::service_object() { icmp_type = LT(1); match(INT_CONST); if ( inputState->guessing==0 ) { -#line 726 "pix.g" +#line 729 "pix.g" importer->icmp_type = LT(0)->getText(); -#line 2806 "PIXCfgParser.cpp" +#line 2754 "PIXCfgParser.cpp" } break; } @@ -2811,11 +2759,11 @@ void PIXCfgParser::service_object() { icmp_word = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 730 "pix.g" +#line 733 "pix.g" importer->icmp_spec = icmp_word->getText(); -#line 2819 "PIXCfgParser.cpp" +#line 2767 "PIXCfgParser.cpp" } break; } @@ -2826,12 +2774,12 @@ void PIXCfgParser::service_object() { } } if ( inputState->guessing==0 ) { -#line 734 "pix.g" +#line 737 "pix.g" importer->addICMPServiceToObjectGroup(); *dbg << " SERVICE ICMP " << LT(0)->getText() << " "; -#line 2835 "PIXCfgParser.cpp" +#line 2783 "PIXCfgParser.cpp" } break; } @@ -2841,12 +2789,12 @@ void PIXCfgParser::service_object() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 740 "pix.g" +#line 743 "pix.g" importer->addNamedObjectToObjectGroup(name->getText()); *dbg << " GROUP MEMBER " << name->getLine() << std::endl; -#line 2850 "PIXCfgParser.cpp" +#line 2798 "PIXCfgParser.cpp" } break; } @@ -2868,20 +2816,19 @@ void PIXCfgParser::service_object() { } void PIXCfgParser::port_object() { - Tracer traceInOut(this, "port_object"); try { // for error handling match(PORT_OBJECT); xoperator(); if ( inputState->guessing==0 ) { -#line 748 "pix.g" +#line 751 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->SaveTmpPortToDst(); importer->addTCPUDPServiceToObjectGroup(); *dbg << " PORT OBJECT TCP/UDP" << LT(0)->getText() << " "; -#line 2885 "PIXCfgParser.cpp" +#line 2832 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -2895,7 +2842,6 @@ void PIXCfgParser::port_object() { } void PIXCfgParser::permit_extended() { - Tracer traceInOut(this, "permit_extended"); try { // for error handling { @@ -2917,23 +2863,23 @@ void PIXCfgParser::permit_extended() { } match(PERMIT); if ( inputState->guessing==0 ) { -#line 849 "pix.g" +#line 852 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->newPolicyRule(); importer->action = "permit"; *dbg << LT(1)->getLine() << ":" << " permit "; -#line 2928 "PIXCfgParser.cpp" +#line 2874 "PIXCfgParser.cpp" } rule_extended(); match(NEWLINE); if ( inputState->guessing==0 ) { -#line 856 "pix.g" +#line 859 "pix.g" importer->pushRule(); -#line 2937 "PIXCfgParser.cpp" +#line 2883 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -2947,7 +2893,6 @@ void PIXCfgParser::permit_extended() { } void PIXCfgParser::deny_extended() { - Tracer traceInOut(this, "deny_extended"); try { // for error handling { @@ -2969,23 +2914,23 @@ void PIXCfgParser::deny_extended() { } match(DENY); if ( inputState->guessing==0 ) { -#line 862 "pix.g" +#line 865 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->newPolicyRule(); importer->action = "deny"; *dbg << LT(1)->getLine() << ":" << " deny "; -#line 2980 "PIXCfgParser.cpp" +#line 2925 "PIXCfgParser.cpp" } rule_extended(); match(NEWLINE); if ( inputState->guessing==0 ) { -#line 869 "pix.g" +#line 872 "pix.g" importer->pushRule(); -#line 2989 "PIXCfgParser.cpp" +#line 2934 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -2999,29 +2944,28 @@ void PIXCfgParser::deny_extended() { } void PIXCfgParser::permit_standard() { - Tracer traceInOut(this, "permit_standard"); try { // for error handling match(STANDARD); match(PERMIT); if ( inputState->guessing==0 ) { -#line 875 "pix.g" +#line 878 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->newPolicyRule(); importer->action = "permit"; *dbg << LT(1)->getLine() << ":" << " permit "; -#line 3016 "PIXCfgParser.cpp" +#line 2960 "PIXCfgParser.cpp" } rule_standard(); match(NEWLINE); if ( inputState->guessing==0 ) { -#line 882 "pix.g" +#line 885 "pix.g" importer->pushRule(); -#line 3025 "PIXCfgParser.cpp" +#line 2969 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -3035,29 +2979,28 @@ void PIXCfgParser::permit_standard() { } void PIXCfgParser::deny_standard() { - Tracer traceInOut(this, "deny_standard"); try { // for error handling match(STANDARD); match(DENY); if ( inputState->guessing==0 ) { -#line 888 "pix.g" +#line 891 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->newPolicyRule(); importer->action = "deny"; *dbg << LT(1)->getLine() << ":" << " deny "; -#line 3052 "PIXCfgParser.cpp" +#line 2995 "PIXCfgParser.cpp" } rule_standard(); match(NEWLINE); if ( inputState->guessing==0 ) { -#line 895 "pix.g" +#line 898 "pix.g" importer->pushRule(); -#line 3061 "PIXCfgParser.cpp" +#line 3004 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -3071,12 +3014,11 @@ void PIXCfgParser::deny_standard() { } void PIXCfgParser::remark() { - Tracer traceInOut(this, "remark"); try { // for error handling match(REMARK); if ( inputState->guessing==0 ) { -#line 1441 "pix.g" +#line 1535 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); *dbg << LT(1)->getLine() << ":"; @@ -3090,7 +3032,7 @@ void PIXCfgParser::remark() { *dbg << " REMARK " << rem << std::endl; //consumeUntil(NEWLINE); -#line 3094 "PIXCfgParser.cpp" +#line 3036 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -3104,7 +3046,6 @@ void PIXCfgParser::remark() { } void PIXCfgParser::rule_extended() { - Tracer traceInOut(this, "rule_extended"); try { // for error handling { @@ -3131,15 +3072,15 @@ void PIXCfgParser::rule_extended() { ip_protocols(); hostaddr_expr(); if ( inputState->guessing==0 ) { -#line 905 "pix.g" +#line 923 "pix.g" importer->SaveTmpAddrToSrc(); *dbg << "(src) "; -#line 3137 "PIXCfgParser.cpp" +#line 3078 "PIXCfgParser.cpp" } hostaddr_expr(); if ( inputState->guessing==0 ) { -#line 906 "pix.g" +#line 924 "pix.g" importer->SaveTmpAddrToDst(); *dbg << "(dst) "; -#line 3143 "PIXCfgParser.cpp" +#line 3084 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -3204,24 +3145,24 @@ void PIXCfgParser::rule_extended() { { match(ICMP); if ( inputState->guessing==0 ) { -#line 912 "pix.g" +#line 930 "pix.g" importer->protocol = LT(0)->getText(); *dbg << "protocol " << LT(0)->getText() << " "; -#line 3213 "PIXCfgParser.cpp" +#line 3154 "PIXCfgParser.cpp" } hostaddr_expr(); if ( inputState->guessing==0 ) { -#line 916 "pix.g" +#line 934 "pix.g" importer->SaveTmpAddrToSrc(); *dbg << "(src) "; -#line 3219 "PIXCfgParser.cpp" +#line 3160 "PIXCfgParser.cpp" } hostaddr_expr(); if ( inputState->guessing==0 ) { -#line 917 "pix.g" +#line 935 "pix.g" importer->SaveTmpAddrToDst(); *dbg << "(dst) "; -#line 3225 "PIXCfgParser.cpp" +#line 3166 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -3307,174 +3248,7 @@ void PIXCfgParser::rule_extended() { case TCP: case UDP: { - { - switch ( LA(1)) { - case TCP: - { - match(TCP); - break; - } - case UDP: - { - match(UDP); - break; - } - default: - { - throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); - } - } - } - if ( inputState->guessing==0 ) { -#line 924 "pix.g" - - importer->protocol = LT(0)->getText(); - *dbg << "protocol " << LT(0)->getText() << " "; - -#line 3335 "PIXCfgParser.cpp" - } - hostaddr_expr(); - if ( inputState->guessing==0 ) { -#line 928 "pix.g" - importer->SaveTmpAddrToSrc(); *dbg << "(src) "; -#line 3341 "PIXCfgParser.cpp" - } - { - switch ( LA(1)) { - case RANGE: - case P_EQ: - case P_GT: - case P_LT: - case P_NEQ: - { - acl_xoperator_src(); - break; - } - case IPV4: - case OBJECT: - case HOST: - case OBJECT_GROUP: - case INTRFACE: - case ANY: - { - break; - } - default: - { - throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); - } - } - } - hostaddr_expr(); - if ( inputState->guessing==0 ) { -#line 930 "pix.g" - importer->SaveTmpAddrToDst(); *dbg << "(dst) "; -#line 3373 "PIXCfgParser.cpp" - } - { - switch ( LA(1)) { - case RANGE: - case P_EQ: - case P_GT: - case P_LT: - case P_NEQ: - { - acl_xoperator_dst(); - break; - } - case NEWLINE: - case LOG: - case LOG_INPUT: - case ESTABLISHED: - case FRAGMENTS: - case TIME_RANGE: - { - break; - } - default: - { - throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); - } - } - } - { - switch ( LA(1)) { - case ESTABLISHED: - { - established(); - break; - } - case NEWLINE: - case LOG: - case LOG_INPUT: - case FRAGMENTS: - case TIME_RANGE: - { - break; - } - default: - { - throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); - } - } - } - { - switch ( LA(1)) { - case TIME_RANGE: - { - time_range(); - break; - } - case NEWLINE: - case LOG: - case LOG_INPUT: - case FRAGMENTS: - { - break; - } - default: - { - throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); - } - } - } - { - switch ( LA(1)) { - case FRAGMENTS: - { - fragments(); - break; - } - case NEWLINE: - case LOG: - case LOG_INPUT: - { - break; - } - default: - { - throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); - } - } - } - { - switch ( LA(1)) { - case LOG: - case LOG_INPUT: - { - log(); - break; - } - case NEWLINE: - { - break; - } - default: - { - throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); - } - } - } + tcp_udp_rule_extended(); break; } default: @@ -3484,11 +3258,11 @@ void PIXCfgParser::rule_extended() { } } if ( inputState->guessing==0 ) { -#line 937 "pix.g" +#line 943 "pix.g" *dbg << std::endl; -#line 3492 "PIXCfgParser.cpp" +#line 3266 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -3502,26 +3276,25 @@ void PIXCfgParser::rule_extended() { } void PIXCfgParser::rule_standard() { - Tracer traceInOut(this, "rule_standard"); try { // for error handling if ( inputState->guessing==0 ) { -#line 944 "pix.g" +#line 908 "pix.g" importer->tmp_a = "0.0.0.0"; importer->tmp_nm = "0.0.0.0"; importer->SaveTmpAddrToSrc(); -#line 3516 "PIXCfgParser.cpp" +#line 3289 "PIXCfgParser.cpp" } hostaddr_expr(); if ( inputState->guessing==0 ) { -#line 950 "pix.g" +#line 914 "pix.g" importer->SaveTmpAddrToDst(); *dbg << "(dst) " << std::endl; -#line 3525 "PIXCfgParser.cpp" +#line 3298 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -3534,8 +3307,135 @@ void PIXCfgParser::rule_standard() { } } +void PIXCfgParser::hostaddr_expr() { + ANTLR_USE_NAMESPACE(antlr)RefToken intf_name = ANTLR_USE_NAMESPACE(antlr)nullToken; + ANTLR_USE_NAMESPACE(antlr)RefToken name = ANTLR_USE_NAMESPACE(antlr)nullToken; + ANTLR_USE_NAMESPACE(antlr)RefToken h = ANTLR_USE_NAMESPACE(antlr)nullToken; + ANTLR_USE_NAMESPACE(antlr)RefToken a = ANTLR_USE_NAMESPACE(antlr)nullToken; + ANTLR_USE_NAMESPACE(antlr)RefToken m = ANTLR_USE_NAMESPACE(antlr)nullToken; + + try { // for error handling + switch ( LA(1)) { + case INTRFACE: + { + match(INTRFACE); + intf_name = LT(1); + match(WORD); + if ( inputState->guessing==0 ) { +#line 1136 "pix.g" + + importer->tmp_a = intf_name->getText(); + importer->tmp_nm = "interface"; + *dbg << "object " << intf_name->getText() << " "; + +#line 3332 "PIXCfgParser.cpp" + } + break; + } + case OBJECT: + case OBJECT_GROUP: + { + { + { + switch ( LA(1)) { + case OBJECT: + { + match(OBJECT); + break; + } + case OBJECT_GROUP: + { + match(OBJECT_GROUP); + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); + } + } + } + name = LT(1); + match(WORD); + } + if ( inputState->guessing==0 ) { +#line 1143 "pix.g" + + importer->tmp_a = name->getText(); + importer->tmp_nm = ""; + *dbg << "object " << name->getText() << " "; + +#line 3368 "PIXCfgParser.cpp" + } + break; + } + case HOST: + { + { + match(HOST); + h = LT(1); + match(IPV4); + } + if ( inputState->guessing==0 ) { +#line 1150 "pix.g" + + importer->tmp_a = h->getText(); + importer->tmp_nm = "255.255.255.255"; + *dbg << h->getText() << "/255.255.255.255"; + +#line 3386 "PIXCfgParser.cpp" + } + break; + } + case IPV4: + { + { + a = LT(1); + match(IPV4); + m = LT(1); + match(IPV4); + } + if ( inputState->guessing==0 ) { +#line 1157 "pix.g" + + importer->tmp_a = a->getText(); + importer->tmp_nm = m->getText(); + *dbg << a->getText() << "/" << m->getText(); + +#line 3405 "PIXCfgParser.cpp" + } + break; + } + case ANY: + { + match(ANY); + if ( inputState->guessing==0 ) { +#line 1164 "pix.g" + + importer->tmp_a = "0.0.0.0"; + importer->tmp_nm = "0.0.0.0"; + *dbg << "0.0.0.0/0.0.0.0"; + +#line 3419 "PIXCfgParser.cpp" + } + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); + } + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + if( inputState->guessing == 0 ) { + reportError(ex); + recover(ex,_tokenSet_11); + } else { + throw; + } + } +} + void PIXCfgParser::ip_protocols() { - Tracer traceInOut(this, "ip_protocols"); ANTLR_USE_NAMESPACE(antlr)RefToken name = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling @@ -3591,12 +3491,12 @@ void PIXCfgParser::ip_protocols() { } } if ( inputState->guessing==0 ) { -#line 960 "pix.g" +#line 1063 "pix.g" importer->protocol = LT(0)->getText(); *dbg << "protocol " << LT(0)->getText() << " "; -#line 3600 "PIXCfgParser.cpp" +#line 3500 "PIXCfgParser.cpp" } break; } @@ -3626,12 +3526,12 @@ void PIXCfgParser::ip_protocols() { match(WORD); } if ( inputState->guessing==0 ) { -#line 966 "pix.g" +#line 1069 "pix.g" importer->protocol = name->getText(); *dbg << "protocol " << name->getText() << " "; -#line 3635 "PIXCfgParser.cpp" +#line 3535 "PIXCfgParser.cpp" } break; } @@ -3642,135 +3542,6 @@ void PIXCfgParser::ip_protocols() { } } } - catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { - if( inputState->guessing == 0 ) { - reportError(ex); - recover(ex,_tokenSet_11); - } else { - throw; - } - } -} - -void PIXCfgParser::hostaddr_expr() { - Tracer traceInOut(this, "hostaddr_expr"); - ANTLR_USE_NAMESPACE(antlr)RefToken intf_name = ANTLR_USE_NAMESPACE(antlr)nullToken; - ANTLR_USE_NAMESPACE(antlr)RefToken name = ANTLR_USE_NAMESPACE(antlr)nullToken; - ANTLR_USE_NAMESPACE(antlr)RefToken h = ANTLR_USE_NAMESPACE(antlr)nullToken; - ANTLR_USE_NAMESPACE(antlr)RefToken a = ANTLR_USE_NAMESPACE(antlr)nullToken; - ANTLR_USE_NAMESPACE(antlr)RefToken m = ANTLR_USE_NAMESPACE(antlr)nullToken; - - try { // for error handling - switch ( LA(1)) { - case INTRFACE: - { - match(INTRFACE); - intf_name = LT(1); - match(WORD); - if ( inputState->guessing==0 ) { -#line 1042 "pix.g" - - importer->tmp_a = intf_name->getText(); - importer->tmp_nm = "interface"; - *dbg << "object " << intf_name->getText() << " "; - -#line 3678 "PIXCfgParser.cpp" - } - break; - } - case OBJECT: - case OBJECT_GROUP: - { - { - { - switch ( LA(1)) { - case OBJECT: - { - match(OBJECT); - break; - } - case OBJECT_GROUP: - { - match(OBJECT_GROUP); - break; - } - default: - { - throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); - } - } - } - name = LT(1); - match(WORD); - } - if ( inputState->guessing==0 ) { -#line 1049 "pix.g" - - importer->tmp_a = name->getText(); - importer->tmp_nm = ""; - *dbg << "object " << name->getText() << " "; - -#line 3714 "PIXCfgParser.cpp" - } - break; - } - case HOST: - { - { - match(HOST); - h = LT(1); - match(IPV4); - } - if ( inputState->guessing==0 ) { -#line 1056 "pix.g" - - importer->tmp_a = h->getText(); - importer->tmp_nm = "255.255.255.255"; - *dbg << h->getText() << "/255.255.255.255"; - -#line 3732 "PIXCfgParser.cpp" - } - break; - } - case IPV4: - { - { - a = LT(1); - match(IPV4); - m = LT(1); - match(IPV4); - } - if ( inputState->guessing==0 ) { -#line 1063 "pix.g" - - importer->tmp_a = a->getText(); - importer->tmp_nm = m->getText(); - *dbg << a->getText() << "/" << m->getText(); - -#line 3751 "PIXCfgParser.cpp" - } - break; - } - case ANY: - { - match(ANY); - if ( inputState->guessing==0 ) { -#line 1070 "pix.g" - - importer->tmp_a = "0.0.0.0"; - importer->tmp_nm = "0.0.0.0"; - *dbg << "0.0.0.0/0.0.0.0"; - -#line 3765 "PIXCfgParser.cpp" - } - break; - } - default: - { - throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); - } - } - } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); @@ -3782,7 +3553,6 @@ void PIXCfgParser::hostaddr_expr() { } void PIXCfgParser::time_range() { - Tracer traceInOut(this, "time_range"); ANTLR_USE_NAMESPACE(antlr)RefToken tr_name = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling @@ -3790,12 +3560,12 @@ void PIXCfgParser::time_range() { tr_name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 1099 "pix.g" +#line 1193 "pix.g" importer->time_range_name = tr_name->getText(); *dbg << "time_range " << tr_name->getText() << " "; -#line 3799 "PIXCfgParser.cpp" +#line 3569 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -3809,17 +3579,16 @@ void PIXCfgParser::time_range() { } void PIXCfgParser::fragments() { - Tracer traceInOut(this, "fragments"); try { // for error handling match(FRAGMENTS); if ( inputState->guessing==0 ) { -#line 1092 "pix.g" +#line 1186 "pix.g" importer->fragments = true; *dbg << "fragments "; -#line 3823 "PIXCfgParser.cpp" +#line 3592 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -3833,7 +3602,6 @@ void PIXCfgParser::fragments() { } void PIXCfgParser::log() { - Tracer traceInOut(this, "log"); try { // for error handling { @@ -3908,12 +3676,12 @@ void PIXCfgParser::log() { } } if ( inputState->guessing==0 ) { -#line 1078 "pix.g" +#line 1172 "pix.g" importer->logging = true; *dbg << "logging "; -#line 3917 "PIXCfgParser.cpp" +#line 3685 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -3927,7 +3695,6 @@ void PIXCfgParser::log() { } void PIXCfgParser::icmp_spec() { - Tracer traceInOut(this, "icmp_spec"); ANTLR_USE_NAMESPACE(antlr)RefToken icmp_type = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken icmp_code = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken icmp_word = ANTLR_USE_NAMESPACE(antlr)nullToken; @@ -3944,7 +3711,7 @@ void PIXCfgParser::icmp_spec() { match(INT_CONST); } if ( inputState->guessing==0 ) { -#line 976 "pix.g" +#line 1079 "pix.g" importer->icmp_type = icmp_type->getText(); importer->icmp_code = icmp_code->getText(); @@ -3952,7 +3719,7 @@ void PIXCfgParser::icmp_spec() { *dbg << icmp_type->getText() << " " << icmp_code->getText() << " "; -#line 3956 "PIXCfgParser.cpp" +#line 3723 "PIXCfgParser.cpp" } break; } @@ -3961,12 +3728,12 @@ void PIXCfgParser::icmp_spec() { icmp_word = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 985 "pix.g" +#line 1088 "pix.g" importer->icmp_spec = icmp_word->getText(); *dbg << icmp_word->getText() << " "; -#line 3970 "PIXCfgParser.cpp" +#line 3737 "PIXCfgParser.cpp" } break; } @@ -3987,64 +3754,423 @@ void PIXCfgParser::icmp_spec() { } } -void PIXCfgParser::acl_xoperator_src() { - Tracer traceInOut(this, "acl_xoperator_src"); +void PIXCfgParser::tcp_udp_rule_extended() { + ANTLR_USE_NAMESPACE(antlr)RefToken src_grp_name = ANTLR_USE_NAMESPACE(antlr)nullToken; + ANTLR_USE_NAMESPACE(antlr)RefToken dst_addr_name = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling - xoperator(); + { + switch ( LA(1)) { + case TCP: + { + match(TCP); + break; + } + case UDP: + { + match(UDP); + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); + } + } + } if ( inputState->guessing==0 ) { -#line 993 "pix.g" +#line 950 "pix.g" - importer->SaveTmpPortToSrc(); + importer->protocol = LT(0)->getText(); + *dbg << "protocol " << LT(0)->getText() << " "; -#line 4001 "PIXCfgParser.cpp" +#line 3787 "PIXCfgParser.cpp" + } + hostaddr_expr(); + if ( inputState->guessing==0 ) { +#line 954 "pix.g" + importer->SaveTmpAddrToSrc(); *dbg << "(src) "; +#line 3793 "PIXCfgParser.cpp" + } + { + bool synPredMatched122 = false; + if (((_tokenSet_12.member(LA(1))) && (_tokenSet_16.member(LA(2))))) { + int _m122 = mark(); + synPredMatched122 = true; + inputState->guessing++; + try { + { + match(OBJECT_GROUP); + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) { + synPredMatched122 = false; + } + rewind(_m122); + inputState->guessing--; + } + if ( synPredMatched122 ) { + { + if (((LA(1) == OBJECT_GROUP) && (LA(2) == WORD))&&( importer->isKnownServiceGroupName(LT(2)->getText()) )) { + match(OBJECT_GROUP); + src_grp_name = LT(1); + match(WORD); + if ( inputState->guessing==0 ) { +#line 964 "pix.g" + + importer->src_port_spec = src_grp_name->getText(); + *dbg << "src port spec: " + << src_grp_name->getText() << std::endl; + +#line 3825 "PIXCfgParser.cpp" + } + hostaddr_expr_1(); + if ( inputState->guessing==0 ) { +#line 972 "pix.g" + + importer->SaveTmpAddrToDst(); + *dbg << "(dst) "; + +#line 3834 "PIXCfgParser.cpp" + } + acl_tcp_udp_dst_port_spec(); + } + else if ((_tokenSet_12.member(LA(1))) && (_tokenSet_16.member(LA(2)))) { + hostaddr_expr_2(); + if ( inputState->guessing==0 ) { +#line 981 "pix.g" + + importer->SaveTmpAddrToDst(); + *dbg << "(dst) "; + +#line 3846 "PIXCfgParser.cpp" + } + acl_tcp_udp_dst_port_spec(); + } + else { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); + } + + } + } + else if ((LA(1) == OBJECT) && (LA(2) == WORD)) { + match(OBJECT); + dst_addr_name = LT(1); + match(WORD); + { + if ((_tokenSet_17.member(LA(1))) && (LA(2) == WORD || LA(2) == INT_CONST)) { + acl_xoperator_dst(); + } + else if ((_tokenSet_18.member(LA(1))) && (_tokenSet_19.member(LA(2)))) { + } + else { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); + } + + } + { + if ((LA(1) == ESTABLISHED) && (_tokenSet_18.member(LA(2)))) { + established(); + } + else if ((_tokenSet_18.member(LA(1))) && (_tokenSet_20.member(LA(2)))) { + } + else { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); + } + + } + if ( inputState->guessing==0 ) { +#line 990 "pix.g" + + // looks like "object foo" at this point can only be dest addr. + // (judging by cli prompts on 8.3) + importer->tmp_a = dst_addr_name->getText(); + importer->tmp_nm = ""; + importer->SaveTmpAddrToDst(); + *dbg << "dst addr object " << dst_addr_name->getText() << " "; + +#line 3892 "PIXCfgParser.cpp" + } + acl_tcp_udp_dst_port_spec(); + } + else if ((_tokenSet_21.member(LA(1))) && (_tokenSet_22.member(LA(2)))) { + { + switch ( LA(1)) { + case RANGE: + case P_EQ: + case P_GT: + case P_LT: + case P_NEQ: + { + xoperator(); + if ( inputState->guessing==0 ) { +#line 1004 "pix.g" + + importer->SaveTmpPortToSrc(); + +#line 3911 "PIXCfgParser.cpp" + } + break; + } + case IPV4: + case OBJECT: + case HOST: + case OBJECT_GROUP: + case INTRFACE: + case ANY: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); + } + } + } + hostaddr_expr_3(); + if ( inputState->guessing==0 ) { +#line 1008 "pix.g" + importer->SaveTmpAddrToDst(); *dbg << "(dst) "; +#line 3934 "PIXCfgParser.cpp" + } + acl_tcp_udp_dst_port_spec(); + } + else { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); + } + + } + { + switch ( LA(1)) { + case TIME_RANGE: + { + time_range(); + break; + } + case NEWLINE: + case LOG: + case LOG_INPUT: + case FRAGMENTS: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); + } + } + } + { + switch ( LA(1)) { + case FRAGMENTS: + { + fragments(); + break; + } + case NEWLINE: + case LOG: + case LOG_INPUT: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); + } + } + } + { + switch ( LA(1)) { + case LOG: + case LOG_INPUT: + { + log(); + break; + } + case NEWLINE: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); + } + } } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_11); + recover(ex,_tokenSet_10); } else { throw; } } } -void PIXCfgParser::acl_xoperator_dst() { - Tracer traceInOut(this, "acl_xoperator_dst"); +void PIXCfgParser::hostaddr_expr_1() { try { // for error handling - xoperator(); - if ( inputState->guessing==0 ) { -#line 999 "pix.g" - - importer->SaveTmpPortToDst(); - -#line 4024 "PIXCfgParser.cpp" - } + hostaddr_expr(); } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_16); + recover(ex,_tokenSet_18); } else { throw; } } } -void PIXCfgParser::established() { - Tracer traceInOut(this, "established"); +void PIXCfgParser::acl_tcp_udp_dst_port_spec() { + ANTLR_USE_NAMESPACE(antlr)RefToken dst_port_group_name = ANTLR_USE_NAMESPACE(antlr)nullToken; + ANTLR_USE_NAMESPACE(antlr)RefToken dst_port_obj_name = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling - match(ESTABLISHED); - if ( inputState->guessing==0 ) { -#line 1085 "pix.g" - - importer->established = true; - *dbg << "established "; - -#line 4048 "PIXCfgParser.cpp" + { + switch ( LA(1)) { + case OBJECT_GROUP: + { + { + match(OBJECT_GROUP); + dst_port_group_name = LT(1); + match(WORD); + if ( inputState->guessing==0 ) { +#line 1026 "pix.g" + + importer->dst_port_spec = dst_port_group_name->getText(); + *dbg << "dst port spec: " + << dst_port_group_name->getText() << std::endl; + +#line 4046 "PIXCfgParser.cpp" + } + { + switch ( LA(1)) { + case ESTABLISHED: + { + established(); + break; + } + case NEWLINE: + case LOG: + case LOG_INPUT: + case FRAGMENTS: + case TIME_RANGE: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); + } + } + } + } + break; + } + case OBJECT: + { + match(OBJECT); + dst_port_obj_name = LT(1); + match(WORD); + if ( inputState->guessing==0 ) { +#line 1036 "pix.g" + + importer->dst_port_spec = dst_port_obj_name->getText(); + *dbg << "dst addr object " << dst_port_obj_name->getText() + << std::endl; + +#line 4084 "PIXCfgParser.cpp" + } + { + switch ( LA(1)) { + case ESTABLISHED: + { + established(); + break; + } + case NEWLINE: + case LOG: + case LOG_INPUT: + case FRAGMENTS: + case TIME_RANGE: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); + } + } + } + break; + } + case NEWLINE: + case RANGE: + case P_EQ: + case P_GT: + case P_LT: + case P_NEQ: + case LOG: + case LOG_INPUT: + case ESTABLISHED: + case FRAGMENTS: + case TIME_RANGE: + { + { + switch ( LA(1)) { + case RANGE: + case P_EQ: + case P_GT: + case P_LT: + case P_NEQ: + { + acl_xoperator_dst(); + break; + } + case NEWLINE: + case LOG: + case LOG_INPUT: + case ESTABLISHED: + case FRAGMENTS: + case TIME_RANGE: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); + } + } + } + { + switch ( LA(1)) { + case ESTABLISHED: + { + established(); + break; + } + case NEWLINE: + case LOG: + case LOG_INPUT: + case FRAGMENTS: + case TIME_RANGE: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); + } + } + } + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); + } + } } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -4057,8 +4183,82 @@ void PIXCfgParser::established() { } } +void PIXCfgParser::hostaddr_expr_2() { + + try { // for error handling + hostaddr_expr(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + if( inputState->guessing == 0 ) { + reportError(ex); + recover(ex,_tokenSet_18); + } else { + throw; + } + } +} + +void PIXCfgParser::acl_xoperator_dst() { + + try { // for error handling + xoperator(); + if ( inputState->guessing==0 ) { +#line 1051 "pix.g" + + importer->SaveTmpPortToDst(); + +#line 4211 "PIXCfgParser.cpp" + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + if( inputState->guessing == 0 ) { + reportError(ex); + recover(ex,_tokenSet_18); + } else { + throw; + } + } +} + +void PIXCfgParser::established() { + + try { // for error handling + match(ESTABLISHED); + if ( inputState->guessing==0 ) { +#line 1179 "pix.g" + + importer->established = true; + *dbg << "established "; + +#line 4234 "PIXCfgParser.cpp" + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + if( inputState->guessing == 0 ) { + reportError(ex); + recover(ex,_tokenSet_18); + } else { + throw; + } + } +} + +void PIXCfgParser::hostaddr_expr_3() { + + try { // for error handling + hostaddr_expr(); + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + if( inputState->guessing == 0 ) { + reportError(ex); + recover(ex,_tokenSet_18); + } else { + throw; + } + } +} + void PIXCfgParser::single_port_op() { - Tracer traceInOut(this, "single_port_op"); try { // for error handling { @@ -4090,12 +4290,12 @@ void PIXCfgParser::single_port_op() { } } if ( inputState->guessing==0 ) { -#line 1007 "pix.g" +#line 1096 "pix.g" importer->tmp_port_op = LT(0)->getText(); *dbg << LT(0)->getText() << " "; -#line 4099 "PIXCfgParser.cpp" +#line 4299 "PIXCfgParser.cpp" } port_spec(); } @@ -4110,18 +4310,17 @@ void PIXCfgParser::single_port_op() { } void PIXCfgParser::port_range() { - Tracer traceInOut(this, "port_range"); try { // for error handling match(RANGE); pair_of_ports_spec(); if ( inputState->guessing==0 ) { -#line 1022 "pix.g" +#line 1111 "pix.g" importer->tmp_port_op = "range"; *dbg << "range "; -#line 4125 "PIXCfgParser.cpp" +#line 4324 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -4135,7 +4334,6 @@ void PIXCfgParser::port_range() { } void PIXCfgParser::port_spec() { - Tracer traceInOut(this, "port_spec"); try { // for error handling { @@ -4157,12 +4355,12 @@ void PIXCfgParser::port_spec() { } } if ( inputState->guessing==0 ) { -#line 1015 "pix.g" +#line 1104 "pix.g" importer->tmp_port_spec = (std::string(" ") + LT(0)->getText()); *dbg << LT(0)->getText() << " " << importer->tmp_port_spec; -#line 4166 "PIXCfgParser.cpp" +#line 4364 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -4176,7 +4374,6 @@ void PIXCfgParser::port_spec() { } void PIXCfgParser::pair_of_ports_spec() { - Tracer traceInOut(this, "pair_of_ports_spec"); ANTLR_USE_NAMESPACE(antlr)RefToken s1 = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken s2 = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken e1 = ANTLR_USE_NAMESPACE(antlr)nullToken; @@ -4224,7 +4421,7 @@ void PIXCfgParser::pair_of_ports_spec() { } } if ( inputState->guessing==0 ) { -#line 1029 "pix.g" +#line 1118 "pix.g" importer->tmp_port_spec = ""; if (s1) importer->tmp_port_spec += s1->getText(); @@ -4234,7 +4431,7 @@ void PIXCfgParser::pair_of_ports_spec() { if (e2) importer->tmp_port_spec += e2->getText(); *dbg << "pair of ports: " << importer->tmp_port_spec; -#line 4238 "PIXCfgParser.cpp" +#line 4435 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -4248,7 +4445,6 @@ void PIXCfgParser::pair_of_ports_spec() { } void PIXCfgParser::interface_command_6() { - Tracer traceInOut(this, "interface_command_6"); ANTLR_USE_NAMESPACE(antlr)RefToken in = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling @@ -4256,14 +4452,14 @@ void PIXCfgParser::interface_command_6() { match(WORD); pix6_interface_hw_speed(); if ( inputState->guessing==0 ) { -#line 1158 "pix.g" +#line 1252 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->newInterface( in->getText() ); *dbg << in->getLine() << ":" << " INTRFACE: " << in->getText() << std::endl; -#line 4267 "PIXCfgParser.cpp" +#line 4463 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -4277,43 +4473,42 @@ void PIXCfgParser::interface_command_6() { } void PIXCfgParser::interface_command_7() { - Tracer traceInOut(this, "interface_command_7"); ANTLR_USE_NAMESPACE(antlr)RefToken in = ANTLR_USE_NAMESPACE(antlr)nullToken; -#line 1166 "pix.g" +#line 1260 "pix.g" bool have_interface_parameters = false; -#line 4285 "PIXCfgParser.cpp" +#line 4480 "PIXCfgParser.cpp" try { // for error handling in = LT(1); match(WORD); match(NEWLINE); if ( inputState->guessing==0 ) { -#line 1167 "pix.g" +#line 1261 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->newInterface( in->getText() ); *dbg << in->getLine() << ":" << " INTRFACE: " << in->getText() << std::endl; -#line 4299 "PIXCfgParser.cpp" +#line 4494 "PIXCfgParser.cpp" } { { // ( ... )* for (;;) { - if ((_tokenSet_17.member(LA(1)))) { + if ((_tokenSet_23.member(LA(1)))) { interface_parameters(); if ( inputState->guessing==0 ) { -#line 1174 "pix.g" +#line 1268 "pix.g" have_interface_parameters = true; -#line 4309 "PIXCfgParser.cpp" +#line 4504 "PIXCfgParser.cpp" } } else { - goto _loop166; + goto _loop182; } } - _loop166:; + _loop182:; } // ( ... )* { switch ( LA(1)) { @@ -4334,7 +4529,7 @@ void PIXCfgParser::interface_command_7() { } } if ( inputState->guessing==0 ) { -#line 1176 "pix.g" +#line 1270 "pix.g" if ( ! have_interface_parameters ) { @@ -4343,7 +4538,7 @@ void PIXCfgParser::interface_command_7() { << " EMPTY INTERFACE " << std::endl; } -#line 4347 "PIXCfgParser.cpp" +#line 4542 "PIXCfgParser.cpp" } } } @@ -4358,7 +4553,6 @@ void PIXCfgParser::interface_command_7() { } void PIXCfgParser::pix6_interface_hw_speed() { - Tracer traceInOut(this, "pix6_interface_hw_speed"); try { // for error handling { @@ -4431,15 +4625,14 @@ void PIXCfgParser::pix6_interface_hw_speed() { } void PIXCfgParser::interface_parameters() { - Tracer traceInOut(this, "interface_parameters"); try { // for error handling if ( inputState->guessing==0 ) { -#line 1204 "pix.g" +#line 1298 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); -#line 4443 "PIXCfgParser.cpp" +#line 4636 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -4512,7 +4705,7 @@ void PIXCfgParser::interface_parameters() { catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_18); + recover(ex,_tokenSet_24); } else { throw; } @@ -4520,7 +4713,6 @@ void PIXCfgParser::interface_parameters() { } void PIXCfgParser::intf_address() { - Tracer traceInOut(this, "intf_address"); try { // for error handling match(IP); @@ -4556,7 +4748,6 @@ void PIXCfgParser::intf_address() { } void PIXCfgParser::vlan_interface() { - Tracer traceInOut(this, "vlan_interface"); ANTLR_USE_NAMESPACE(antlr)RefToken vlan_id = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling @@ -4564,12 +4755,12 @@ void PIXCfgParser::vlan_interface() { vlan_id = LT(1); match(INT_CONST); if ( inputState->guessing==0 ) { -#line 1230 "pix.g" +#line 1324 "pix.g" importer->setInterfaceVlanId(vlan_id->getText()); *dbg << " VLAN: " << vlan_id->getText() << std::endl; -#line 4573 "PIXCfgParser.cpp" +#line 4764 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -4583,7 +4774,6 @@ void PIXCfgParser::vlan_interface() { } void PIXCfgParser::sec_level() { - Tracer traceInOut(this, "sec_level"); ANTLR_USE_NAMESPACE(antlr)RefToken sec_level = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling @@ -4591,12 +4781,12 @@ void PIXCfgParser::sec_level() { sec_level = LT(1); match(INT_CONST); if ( inputState->guessing==0 ) { -#line 1282 "pix.g" +#line 1376 "pix.g" importer->setInterfaceSecurityLevel(sec_level->getText()); *dbg << "SEC_LEVEL: " << sec_level->getText() << std::endl; -#line 4600 "PIXCfgParser.cpp" +#line 4790 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -4610,7 +4800,6 @@ void PIXCfgParser::sec_level() { } void PIXCfgParser::nameif() { - Tracer traceInOut(this, "nameif"); ANTLR_USE_NAMESPACE(antlr)RefToken p_intf = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken intf_label = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken sec_level = ANTLR_USE_NAMESPACE(antlr)nullToken; @@ -4642,7 +4831,7 @@ void PIXCfgParser::nameif() { } } if ( inputState->guessing==0 ) { -#line 1305 "pix.g" +#line 1399 "pix.g" std::string label = (intf_label) ? intf_label->getText() : ""; std::string seclevel = (sec_level) ? sec_level->getText() : ""; @@ -4650,7 +4839,7 @@ void PIXCfgParser::nameif() { *dbg << " NAMEIF: " << p_intf->getText() << label << seclevel << std::endl; -#line 4654 "PIXCfgParser.cpp" +#line 4843 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -4664,12 +4853,11 @@ void PIXCfgParser::nameif() { } void PIXCfgParser::interface_description() { - Tracer traceInOut(this, "interface_description"); try { // for error handling match(DESCRIPTION); if ( inputState->guessing==0 ) { -#line 1317 "pix.g" +#line 1411 "pix.g" *dbg << LT(1)->getLine() << ":"; std::string descr; @@ -4682,7 +4870,7 @@ void PIXCfgParser::interface_description() { *dbg << " DESCRIPTION " << descr << std::endl; //consumeUntil(NEWLINE); -#line 4686 "PIXCfgParser.cpp" +#line 4874 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -4696,7 +4884,6 @@ void PIXCfgParser::interface_description() { } void PIXCfgParser::switchport() { - Tracer traceInOut(this, "switchport"); ANTLR_USE_NAMESPACE(antlr)RefToken vlan_num = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling @@ -4706,12 +4893,12 @@ void PIXCfgParser::switchport() { vlan_num = LT(1); match(INT_CONST); if ( inputState->guessing==0 ) { -#line 1429 "pix.g" +#line 1523 "pix.g" importer->addMessageToLog("Switch port vlan " + vlan_num->getText()); *dbg << "Switch port vlan " << vlan_num->getText() << std::endl; -#line 4715 "PIXCfgParser.cpp" +#line 4902 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -4725,18 +4912,17 @@ void PIXCfgParser::switchport() { } void PIXCfgParser::shutdown() { - Tracer traceInOut(this, "shutdown"); try { // for error handling match(SHUTDOWN); if ( inputState->guessing==0 ) { -#line 1332 "pix.g" +#line 1426 "pix.g" importer->ignoreCurrentInterface(); *dbg<< LT(1)->getLine() << ":" << " INTERFACE SHUTDOWN " << std::endl; -#line 4740 "PIXCfgParser.cpp" +#line 4926 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -4750,7 +4936,6 @@ void PIXCfgParser::shutdown() { } void PIXCfgParser::interface_no_commands() { - Tracer traceInOut(this, "interface_no_commands"); try { // for error handling match(NO); @@ -4783,13 +4968,13 @@ void PIXCfgParser::interface_no_commands() { } } if ( inputState->guessing==0 ) { -#line 1274 "pix.g" +#line 1368 "pix.g" *dbg << " INTERFACE \"NO\" COMMAND: " << LT(0)->getText() << std::endl; consumeUntil(NEWLINE); -#line 4793 "PIXCfgParser.cpp" +#line 4978 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -4803,7 +4988,6 @@ void PIXCfgParser::interface_no_commands() { } void PIXCfgParser::unsupported_interface_commands() { - Tracer traceInOut(this, "unsupported_interface_commands"); try { // for error handling { @@ -4885,13 +5069,13 @@ void PIXCfgParser::unsupported_interface_commands() { } } if ( inputState->guessing==0 ) { -#line 1266 "pix.g" +#line 1360 "pix.g" *dbg << " UNSUPPORTED INTERFACE COMMAND: " << LT(0)->getText() << std::endl; consumeUntil(NEWLINE); -#line 4895 "PIXCfgParser.cpp" +#line 5079 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -4905,7 +5089,6 @@ void PIXCfgParser::unsupported_interface_commands() { } void PIXCfgParser::v6_ip_address() { - Tracer traceInOut(this, "v6_ip_address"); try { // for error handling if ((LA(1) == WORD) && (LA(2) == DHCP)) { @@ -4930,7 +5113,6 @@ void PIXCfgParser::v6_ip_address() { } void PIXCfgParser::v7_ip_address() { - Tracer traceInOut(this, "v7_ip_address"); try { // for error handling switch ( LA(1)) { @@ -4961,7 +5143,6 @@ void PIXCfgParser::v7_ip_address() { } void PIXCfgParser::v6_dhcp_address() { - Tracer traceInOut(this, "v6_dhcp_address"); ANTLR_USE_NAMESPACE(antlr)RefToken lbl = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken dhcp = ANTLR_USE_NAMESPACE(antlr)nullToken; @@ -4971,7 +5152,7 @@ void PIXCfgParser::v6_dhcp_address() { dhcp = LT(1); match(DHCP); if ( inputState->guessing==0 ) { -#line 1367 "pix.g" +#line 1461 "pix.g" std::string label = lbl->getText(); std::string addr = dhcp->getText(); @@ -4982,7 +5163,7 @@ void PIXCfgParser::v6_dhcp_address() { // which we do not support consumeUntil(NEWLINE); -#line 4986 "PIXCfgParser.cpp" +#line 5167 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -4996,7 +5177,6 @@ void PIXCfgParser::v6_dhcp_address() { } void PIXCfgParser::v6_static_address() { - Tracer traceInOut(this, "v6_static_address"); ANTLR_USE_NAMESPACE(antlr)RefToken lbl = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken a = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken m = ANTLR_USE_NAMESPACE(antlr)nullToken; @@ -5009,7 +5189,7 @@ void PIXCfgParser::v6_static_address() { m = LT(1); match(IPV4); if ( inputState->guessing==0 ) { -#line 1380 "pix.g" +#line 1474 "pix.g" std::string label = lbl->getText(); std::string addr = a->getText(); @@ -5020,7 +5200,7 @@ void PIXCfgParser::v6_static_address() { // in case there are some other parameters after address and netmask consumeUntil(NEWLINE); -#line 5024 "PIXCfgParser.cpp" +#line 5204 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -5034,14 +5214,13 @@ void PIXCfgParser::v6_static_address() { } void PIXCfgParser::v7_dhcp_address() { - Tracer traceInOut(this, "v7_dhcp_address"); ANTLR_USE_NAMESPACE(antlr)RefToken dhcp = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling dhcp = LT(1); match(DHCP); if ( inputState->guessing==0 ) { -#line 1397 "pix.g" +#line 1491 "pix.g" std::string addr = dhcp->getText(); importer->addInterfaceAddress(addr, ""); @@ -5049,7 +5228,7 @@ void PIXCfgParser::v7_dhcp_address() { << " INTRFACE ADDRESS: " << addr << std::endl; consumeUntil(NEWLINE); -#line 5053 "PIXCfgParser.cpp" +#line 5232 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -5063,7 +5242,6 @@ void PIXCfgParser::v7_dhcp_address() { } void PIXCfgParser::v7_static_address() { - Tracer traceInOut(this, "v7_static_address"); ANTLR_USE_NAMESPACE(antlr)RefToken a = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken m = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken s = ANTLR_USE_NAMESPACE(antlr)nullToken; @@ -5092,7 +5270,7 @@ void PIXCfgParser::v7_static_address() { } } if ( inputState->guessing==0 ) { -#line 1408 "pix.g" +#line 1502 "pix.g" std::string addr = a->getText(); std::string netm = m->getText(); @@ -5109,7 +5287,7 @@ void PIXCfgParser::v7_static_address() { } consumeUntil(NEWLINE); -#line 5113 "PIXCfgParser.cpp" +#line 5291 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -5153,7 +5331,7 @@ const char* PIXCfgParser::tokenNames[] = { "\"pim\"", "\"pptp\"", "\"snp\"", - "\"object\"", + "OBJECT", "\"network\"", "\"nat\"", "\"description\"", @@ -5168,7 +5346,7 @@ const char* PIXCfgParser::tokenNames[] = { "\"udp\"", "\"source\"", "\"destination\"", - "\"object-group\"", + "OBJECT_GROUP", "\"group-object\"", "\"network-object\"", "\"protocol\"", @@ -5243,6 +5421,7 @@ const char* PIXCfgParser::tokenNames[] = { "NEG_INT_CONST", "DIGIT", "HEXDIGIT", + "NUMBER_ADDRESS_OR_WORD", "PIPE_CHAR", "NUMBER_SIGN", "PERCENT", @@ -5278,8 +5457,8 @@ const unsigned long PIXCfgParser::_tokenSet_0_data_[] = { 2UL, 0UL, 0UL, 0UL, 0U // EOF const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_0(_tokenSet_0_data_,6); const unsigned long PIXCfgParser::_tokenSet_1_data_[] = { 134222706UL, 703595520UL, 8503360UL, 12288UL, 0UL, 0UL, 0UL, 0UL }; -// EOF NEWLINE "quit" "ip" "names" "name" WORD "object" "object-group" -// "crypto" "no" "certificate" "PIX" "ASA" "hostname" "access-list" "interface" +// EOF NEWLINE "quit" "ip" "names" "name" WORD OBJECT OBJECT_GROUP "crypto" +// "no" "certificate" "PIX" "ASA" "hostname" "access-list" "interface" // "controller" LINE_COMMENT "exit" "nameif" "access-group" COLON_COMMENT const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_1(_tokenSet_1_data_,8); const unsigned long PIXCfgParser::_tokenSet_2_data_[] = { 0UL, 16UL, 917504UL, 0UL, 0UL, 0UL, 0UL, 0UL }; @@ -5287,19 +5466,19 @@ const unsigned long PIXCfgParser::_tokenSet_2_data_[] = { 0UL, 16UL, 917504UL, 0 const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_2(_tokenSet_2_data_,8); const unsigned long PIXCfgParser::_tokenSet_3_data_[] = { 268427328UL, 2147484904UL, 0UL, 0UL, 0UL, 0UL }; // "ip" "ah" "eigrp" "esp" "gre" "igmp" "igrp" "ipinip" "ipsec" "nos" "ospf" -// "pcp" "pim" "pptp" "snp" "object" "icmp" "icmp6" "tcp" "udp" "object-group" +// "pcp" "pim" "pptp" "snp" OBJECT "icmp" "icmp6" "tcp" "udp" OBJECT_GROUP // "permit" const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_3(_tokenSet_3_data_,6); const unsigned long PIXCfgParser::_tokenSet_4_data_[] = { 268427328UL, 1256UL, 1UL, 0UL, 0UL, 0UL, 0UL, 0UL }; // "ip" "ah" "eigrp" "esp" "gre" "igmp" "igrp" "ipinip" "ipsec" "nos" "ospf" -// "pcp" "pim" "pptp" "snp" "object" "icmp" "icmp6" "tcp" "udp" "object-group" +// "pcp" "pim" "pptp" "snp" OBJECT "icmp" "icmp6" "tcp" "udp" OBJECT_GROUP // "deny" const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_4(_tokenSet_4_data_,8); const unsigned long PIXCfgParser::_tokenSet_5_data_[] = { 1073741824UL, 788480UL, 0UL, 0UL, 0UL, 0UL }; // "description" "group-object" "service-object" "port-object" const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_5(_tokenSet_5_data_,6); const unsigned long PIXCfgParser::_tokenSet_6_data_[] = { 2281707378UL, 703595520UL, 8503488UL, 12288UL, 0UL, 0UL, 0UL, 0UL }; -// EOF NEWLINE "quit" "ip" "names" "name" IPV4 WORD "object" "host" "object-group" +// EOF NEWLINE "quit" "ip" "names" "name" IPV4 WORD OBJECT "host" OBJECT_GROUP // "crypto" "no" "certificate" "PIX" "ASA" "hostname" "access-list" "interface" // "any" "controller" LINE_COMMENT "exit" "nameif" "access-group" COLON_COMMENT const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_6(_tokenSet_6_data_,8); @@ -5308,28 +5487,28 @@ const unsigned long PIXCfgParser::_tokenSet_7_data_[] = { 134209600UL, 16UL, 0UL // "pcp" "pim" "pptp" "snp" INT_CONST const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_7(_tokenSet_7_data_,6); const unsigned long PIXCfgParser::_tokenSet_8_data_[] = { 134222706UL, 703596033UL, 8503420UL, 12288UL, 0UL, 0UL, 0UL, 0UL }; -// EOF NEWLINE "quit" "ip" "names" "name" WORD "object" "range" "destination" -// "object-group" "crypto" "no" "certificate" "PIX" "ASA" "hostname" "access-list" +// EOF NEWLINE "quit" "ip" "names" "name" WORD OBJECT "range" "destination" +// OBJECT_GROUP "crypto" "no" "certificate" "PIX" "ASA" "hostname" "access-list" // "eq" "gt" "lt" "neq" "interface" "controller" LINE_COMMENT "exit" "nameif" // "access-group" COLON_COMMENT const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_8(_tokenSet_8_data_,8); const unsigned long PIXCfgParser::_tokenSet_9_data_[] = { 2281707378UL, 703596033UL, 8518652UL, 12288UL, 0UL, 0UL, 0UL, 0UL }; -// EOF NEWLINE "quit" "ip" "names" "name" IPV4 WORD "object" "host" "range" -// "destination" "object-group" "crypto" "no" "certificate" "PIX" "ASA" -// "hostname" "access-list" "eq" "gt" "lt" "neq" "interface" "any" "log" -// "log-input" "established" "fragments" "time-range" "controller" LINE_COMMENT -// "exit" "nameif" "access-group" COLON_COMMENT +// EOF NEWLINE "quit" "ip" "names" "name" IPV4 WORD OBJECT "host" "range" +// "destination" OBJECT_GROUP "crypto" "no" "certificate" "PIX" "ASA" "hostname" +// "access-list" "eq" "gt" "lt" "neq" "interface" "any" "log" "log-input" +// "established" "fragments" "time-range" "controller" LINE_COMMENT "exit" +// "nameif" "access-group" COLON_COMMENT const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_9(_tokenSet_9_data_,8); const unsigned long PIXCfgParser::_tokenSet_10_data_[] = { 16UL, 0UL, 0UL, 0UL, 0UL, 0UL }; // NEWLINE const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_10(_tokenSet_10_data_,6); -const unsigned long PIXCfgParser::_tokenSet_11_data_[] = { 2281702400UL, 1024UL, 192UL, 0UL, 0UL, 0UL, 0UL, 0UL }; -// IPV4 "object" "host" "object-group" "interface" "any" -const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_11(_tokenSet_11_data_,8); -const unsigned long PIXCfgParser::_tokenSet_12_data_[] = { 2281706512UL, 1041UL, 15356UL, 0UL, 0UL, 0UL, 0UL, 0UL }; -// NEWLINE IPV4 WORD "object" "host" "range" INT_CONST "object-group" "eq" +const unsigned long PIXCfgParser::_tokenSet_11_data_[] = { 2281706512UL, 1041UL, 15356UL, 0UL, 0UL, 0UL, 0UL, 0UL }; +// NEWLINE IPV4 WORD OBJECT "host" "range" INT_CONST OBJECT_GROUP "eq" // "gt" "lt" "neq" "interface" "any" "log" "log-input" "established" "fragments" // "time-range" +const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_11(_tokenSet_11_data_,8); +const unsigned long PIXCfgParser::_tokenSet_12_data_[] = { 2281702400UL, 1024UL, 192UL, 0UL, 0UL, 0UL, 0UL, 0UL }; +// IPV4 OBJECT "host" OBJECT_GROUP "interface" "any" const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_12(_tokenSet_12_data_,8); const unsigned long PIXCfgParser::_tokenSet_13_data_[] = { 16UL, 0UL, 4864UL, 0UL, 0UL, 0UL, 0UL, 0UL }; // NEWLINE "log" "log-input" "fragments" @@ -5340,18 +5519,47 @@ const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_14(_tokenSet_14_d const unsigned long PIXCfgParser::_tokenSet_15_data_[] = { 16UL, 0UL, 13056UL, 0UL, 0UL, 0UL, 0UL, 0UL }; // NEWLINE "log" "log-input" "fragments" "time-range" const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_15(_tokenSet_15_data_,8); -const unsigned long PIXCfgParser::_tokenSet_16_data_[] = { 16UL, 0UL, 15104UL, 0UL, 0UL, 0UL, 0UL, 0UL }; -// NEWLINE "log" "log-input" "established" "fragments" "time-range" +const unsigned long PIXCfgParser::_tokenSet_16_data_[] = { 134222864UL, 1025UL, 15164UL, 0UL, 0UL, 0UL, 0UL, 0UL }; +// NEWLINE IPV4 WORD OBJECT "range" OBJECT_GROUP "eq" "gt" "lt" "neq" "log" +// "log-input" "established" "fragments" "time-range" const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_16(_tokenSet_16_data_,8); -const unsigned long PIXCfgParser::_tokenSet_17_data_[] = { 1094844480UL, 2097152UL, 4286578688UL, 575UL, 0UL, 0UL, 0UL, 0UL }; +const unsigned long PIXCfgParser::_tokenSet_17_data_[] = { 0UL, 1UL, 60UL, 0UL, 0UL, 0UL, 0UL, 0UL }; +// "range" "eq" "gt" "lt" "neq" +const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_17(_tokenSet_17_data_,8); +const unsigned long PIXCfgParser::_tokenSet_18_data_[] = { 134217744UL, 1025UL, 15164UL, 0UL, 0UL, 0UL, 0UL, 0UL }; +// NEWLINE OBJECT "range" OBJECT_GROUP "eq" "gt" "lt" "neq" "log" "log-input" +// "established" "fragments" "time-range" +const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_18(_tokenSet_18_data_,8); +const unsigned long PIXCfgParser::_tokenSet_19_data_[] = { 134222706UL, 703595537UL, 8518524UL, 12288UL, 0UL, 0UL, 0UL, 0UL }; +// EOF NEWLINE "quit" "ip" "names" "name" WORD OBJECT "range" INT_CONST +// OBJECT_GROUP "crypto" "no" "certificate" "PIX" "ASA" "hostname" "access-list" +// "eq" "gt" "lt" "neq" "interface" "log" "log-input" "established" "fragments" +// "time-range" "controller" LINE_COMMENT "exit" "nameif" "access-group" +// COLON_COMMENT +const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_19(_tokenSet_19_data_,8); +const unsigned long PIXCfgParser::_tokenSet_20_data_[] = { 134222706UL, 703595536UL, 8516416UL, 12288UL, 0UL, 0UL, 0UL, 0UL }; +// EOF NEWLINE "quit" "ip" "names" "name" WORD OBJECT INT_CONST OBJECT_GROUP +// "crypto" "no" "certificate" "PIX" "ASA" "hostname" "access-list" "interface" +// "log" "log-input" "fragments" "time-range" "controller" LINE_COMMENT +// "exit" "nameif" "access-group" COLON_COMMENT +const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_20(_tokenSet_20_data_,8); +const unsigned long PIXCfgParser::_tokenSet_21_data_[] = { 2281702400UL, 1025UL, 252UL, 0UL, 0UL, 0UL, 0UL, 0UL }; +// IPV4 OBJECT "host" "range" OBJECT_GROUP "eq" "gt" "lt" "neq" "interface" +// "any" +const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_21(_tokenSet_21_data_,8); +const unsigned long PIXCfgParser::_tokenSet_22_data_[] = { 134222864UL, 1041UL, 15164UL, 0UL, 0UL, 0UL, 0UL, 0UL }; +// NEWLINE IPV4 WORD OBJECT "range" INT_CONST OBJECT_GROUP "eq" "gt" "lt" +// "neq" "log" "log-input" "established" "fragments" "time-range" +const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_22(_tokenSet_22_data_,8); +const unsigned long PIXCfgParser::_tokenSet_23_data_[] = { 1094844480UL, 2097152UL, 4286578688UL, 575UL, 0UL, 0UL, 0UL, 0UL }; // "ip" "igmp" "ospf" "pim" "description" "no" "nameif" "vlan" "speed" // "duplex" "ddns" "forward" "delay" "hold-time" "ipv6" "mac-address" "multicast" // PPPOE "rip" "security-level" "shutdown" "switchport" -const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_17(_tokenSet_17_data_,8); -const unsigned long PIXCfgParser::_tokenSet_18_data_[] = { 1094844480UL, 2097152UL, 4286676992UL, 575UL, 0UL, 0UL, 0UL, 0UL }; +const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_23(_tokenSet_23_data_,8); +const unsigned long PIXCfgParser::_tokenSet_24_data_[] = { 1094844480UL, 2097152UL, 4286676992UL, 575UL, 0UL, 0UL, 0UL, 0UL }; // "ip" "igmp" "ospf" "pim" "description" "no" LINE_COMMENT "exit" "nameif" // "vlan" "speed" "duplex" "ddns" "forward" "delay" "hold-time" "ipv6" // "mac-address" "multicast" PPPOE "rip" "security-level" "shutdown" "switchport" -const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_18(_tokenSet_18_data_,8); +const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_24(_tokenSet_24_data_,8); diff --git a/src/parsers/PIXCfgParser.hpp b/src/parsers/PIXCfgParser.hpp index 7f0a233a9..1b8304cbd 100644 --- a/src/parsers/PIXCfgParser.hpp +++ b/src/parsers/PIXCfgParser.hpp @@ -46,18 +46,21 @@ class CUSTOM_API PIXCfgParser : public ANTLR_USE_NAMESPACE(antlr)LLkParser, publ virtual void reportError(const ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { importer->addMessageToLog("Parser error: " + ex.toString()); + std::cerr << ex.toString() << std::endl; } /// Parser error-reporting function can be overridden in subclass virtual void reportError(const ANTLR_USE_NAMESPACE(std)string& s) { importer->addMessageToLog("Parser error: " + s); + std::cerr << s << std::endl; } /// Parser warning-reporting function can be overridden in subclass virtual void reportWarning(const ANTLR_USE_NAMESPACE(std)string& s) { importer->addMessageToLog("Parser warning: " + s); + std::cerr << s << std::endl; } #line 38 "PIXCfgParser.hpp" @@ -145,15 +148,19 @@ public: public: void remark(); public: void rule_extended(); public: void rule_standard(); - public: void ip_protocols(); public: void hostaddr_expr(); + public: void ip_protocols(); public: void time_range(); public: void fragments(); public: void log(); public: void icmp_spec(); - public: void acl_xoperator_src(); + public: void tcp_udp_rule_extended(); + public: void hostaddr_expr_1(); + public: void acl_tcp_udp_dst_port_spec(); + public: void hostaddr_expr_2(); public: void acl_xoperator_dst(); public: void established(); + public: void hostaddr_expr_3(); public: void single_port_op(); public: void port_range(); public: void port_spec(); @@ -188,10 +195,10 @@ protected: private: static const char* tokenNames[]; #ifndef NO_STATIC_CONSTS - static const int NUM_TOKENS = 145; + static const int NUM_TOKENS = 146; #else enum { - NUM_TOKENS = 145 + NUM_TOKENS = 146 }; #endif @@ -233,6 +240,18 @@ private: static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_17; static const unsigned long _tokenSet_18_data_[]; static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_18; + static const unsigned long _tokenSet_19_data_[]; + static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_19; + static const unsigned long _tokenSet_20_data_[]; + static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_20; + static const unsigned long _tokenSet_21_data_[]; + static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_21; + static const unsigned long _tokenSet_22_data_[]; + static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_22; + static const unsigned long _tokenSet_23_data_[]; + static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_23; + static const unsigned long _tokenSet_24_data_[]; + static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_24; }; #endif /*INC_PIXCfgParser_hpp_*/ diff --git a/src/parsers/PIXCfgParserTokenTypes.hpp b/src/parsers/PIXCfgParserTokenTypes.hpp index 2f8074e6e..6a0b59fea 100644 --- a/src/parsers/PIXCfgParserTokenTypes.hpp +++ b/src/parsers/PIXCfgParserTokenTypes.hpp @@ -125,34 +125,35 @@ struct CUSTOM_API PIXCfgParserTokenTypes { NEG_INT_CONST = 114, DIGIT = 115, HEXDIGIT = 116, - PIPE_CHAR = 117, - NUMBER_SIGN = 118, - PERCENT = 119, - AMPERSAND = 120, - APOSTROPHE = 121, - OPENING_PAREN = 122, - CLOSING_PAREN = 123, - STAR = 124, - PLUS = 125, - COMMA = 126, - MINUS = 127, - DOT = 128, - SLASH = 129, - COLON = 130, - SEMICOLON = 131, - LESS_THAN = 132, - EQUALS = 133, - GREATER_THAN = 134, - QUESTION = 135, - COMMERCIAL_AT = 136, - OPENING_SQUARE = 137, - CLOSING_SQUARE = 138, - CARET = 139, - UNDERLINE = 140, - OPENING_BRACE = 141, - CLOSING_BRACE = 142, - TILDE = 143, - EXLAMATION = 144, + NUMBER_ADDRESS_OR_WORD = 117, + PIPE_CHAR = 118, + NUMBER_SIGN = 119, + PERCENT = 120, + AMPERSAND = 121, + APOSTROPHE = 122, + OPENING_PAREN = 123, + CLOSING_PAREN = 124, + STAR = 125, + PLUS = 126, + COMMA = 127, + MINUS = 128, + DOT = 129, + SLASH = 130, + COLON = 131, + SEMICOLON = 132, + LESS_THAN = 133, + EQUALS = 134, + GREATER_THAN = 135, + QUESTION = 136, + COMMERCIAL_AT = 137, + OPENING_SQUARE = 138, + CLOSING_SQUARE = 139, + CARET = 140, + UNDERLINE = 141, + OPENING_BRACE = 142, + CLOSING_BRACE = 143, + TILDE = 144, + EXLAMATION = 145, NULL_TREE_LOOKAHEAD = 3 }; #ifdef __cplusplus diff --git a/src/parsers/PIXCfgParserTokenTypes.txt b/src/parsers/PIXCfgParserTokenTypes.txt index c212c0137..9bd1a5e2a 100644 --- a/src/parsers/PIXCfgParserTokenTypes.txt +++ b/src/parsers/PIXCfgParserTokenTypes.txt @@ -23,7 +23,7 @@ PCP="pcp"=23 PIM="pim"=24 PPTP="pptp"=25 SNP="snp"=26 -OBJECT="object"=27 +OBJECT=27 NETWORK="network"=28 NAT="nat"=29 DESCRIPTION="description"=30 @@ -38,7 +38,7 @@ TCP="tcp"=38 UDP="udp"=39 SOURCE="source"=40 DESTINATION="destination"=41 -OBJECT_GROUP="object-group"=42 +OBJECT_GROUP=42 GROUP_OBJECT="group-object"=43 NETWORK_OBJECT="network-object"=44 PROTOCOL="protocol"=45 @@ -113,31 +113,32 @@ HEX_CONST=113 NEG_INT_CONST=114 DIGIT=115 HEXDIGIT=116 -PIPE_CHAR=117 -NUMBER_SIGN=118 -PERCENT=119 -AMPERSAND=120 -APOSTROPHE=121 -OPENING_PAREN=122 -CLOSING_PAREN=123 -STAR=124 -PLUS=125 -COMMA=126 -MINUS=127 -DOT=128 -SLASH=129 -COLON=130 -SEMICOLON=131 -LESS_THAN=132 -EQUALS=133 -GREATER_THAN=134 -QUESTION=135 -COMMERCIAL_AT=136 -OPENING_SQUARE=137 -CLOSING_SQUARE=138 -CARET=139 -UNDERLINE=140 -OPENING_BRACE=141 -CLOSING_BRACE=142 -TILDE=143 -EXLAMATION=144 +NUMBER_ADDRESS_OR_WORD=117 +PIPE_CHAR=118 +NUMBER_SIGN=119 +PERCENT=120 +AMPERSAND=121 +APOSTROPHE=122 +OPENING_PAREN=123 +CLOSING_PAREN=124 +STAR=125 +PLUS=126 +COMMA=127 +MINUS=128 +DOT=129 +SLASH=130 +COLON=131 +SEMICOLON=132 +LESS_THAN=133 +EQUALS=134 +GREATER_THAN=135 +QUESTION=136 +COMMERCIAL_AT=137 +OPENING_SQUARE=138 +CLOSING_SQUARE=139 +CARET=140 +UNDERLINE=141 +OPENING_BRACE=142 +CLOSING_BRACE=143 +TILDE=144 +EXLAMATION=145 diff --git a/src/parsers/pix.g b/src/parsers/pix.g index d3205559a..eb7a7e139 100644 --- a/src/parsers/pix.g +++ b/src/parsers/pix.g @@ -90,18 +90,21 @@ options virtual void reportError(const ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { importer->addMessageToLog("Parser error: " + ex.toString()); + std::cerr << ex.toString() << std::endl; } /// Parser error-reporting function can be overridden in subclass virtual void reportError(const ANTLR_USE_NAMESPACE(std)string& s) { importer->addMessageToLog("Parser error: " + s); + std::cerr << s << std::endl; } /// Parser warning-reporting function can be overridden in subclass virtual void reportWarning(const ANTLR_USE_NAMESPACE(std)string& s) { importer->addMessageToLog("Parser warning: " + s); + std::cerr << s << std::endl; } } @@ -899,6 +902,21 @@ deny_standard: STANDARD DENY //**************************************************************** // the difference between standard and extended acls should be in these rules + +// standard acl only matches destination address +rule_standard : + { + importer->tmp_a = "0.0.0.0"; + importer->tmp_nm = "0.0.0.0"; + importer->SaveTmpAddrToSrc(); + } + hostaddr_expr + { + importer->SaveTmpAddrToDst(); + *dbg << "(dst) " << std::endl; + } + ; + rule_extended : ( ip_protocols @@ -920,40 +938,125 @@ rule_extended : (fragments)? (log)? | - (TCP|UDP) - { - importer->protocol = LT(0)->getText(); - *dbg << "protocol " << LT(0)->getText() << " "; - } - hostaddr_expr { importer->SaveTmpAddrToSrc(); *dbg << "(src) "; } - (acl_xoperator_src)? - hostaddr_expr { importer->SaveTmpAddrToDst(); *dbg << "(dst) "; } - (acl_xoperator_dst)? - (established)? - (time_range)? - (fragments)? - (log)? + tcp_udp_rule_extended ) { *dbg << std::endl; } ; -// standard acl only matches destination address -rule_standard : +tcp_udp_rule_extended : + ( TCP | UDP ) { - importer->tmp_a = "0.0.0.0"; - importer->tmp_nm = "0.0.0.0"; - importer->SaveTmpAddrToSrc(); - } - hostaddr_expr - { - importer->SaveTmpAddrToDst(); - *dbg << "(dst) " << std::endl; + importer->protocol = LT(0)->getText(); + *dbg << "protocol " << LT(0)->getText() << " "; } + hostaddr_expr { importer->SaveTmpAddrToSrc(); *dbg << "(src) "; } + ( + (OBJECT_GROUP) => ( + // This object-group can be either + // source port or destination address + // + // Using disambiguating predicate; it must be the first element + // in the production (i.e. nothing should precede {}?) + { importer->isKnownServiceGroupName(LT(2)->getText()) }? + OBJECT_GROUP src_grp_name:WORD + { + importer->src_port_spec = src_grp_name->getText(); + *dbg << "src port spec: " + << src_grp_name->getText() << std::endl; + } + // destination address spec follows; hostaddr_expr matches + // OBJECT | OBJECT_GROUP among pure addresses + hostaddr_expr_1 + { + importer->SaveTmpAddrToDst(); + *dbg << "(dst) "; + } + acl_tcp_udp_dst_port_spec + | + // still object-group after src address but this group is not + // a known service group - must be dest. address group + hostaddr_expr_2 + { + importer->SaveTmpAddrToDst(); + *dbg << "(dst) "; + } + acl_tcp_udp_dst_port_spec + ) + | + // not "object-group" keyword after src address spec. + OBJECT dst_addr_name:WORD (acl_xoperator_dst)? (established)? + { + // looks like "object foo" at this point can only be dest addr. + // (judging by cli prompts on 8.3) + importer->tmp_a = dst_addr_name->getText(); + importer->tmp_nm = ""; + importer->SaveTmpAddrToDst(); + *dbg << "dst addr object " << dst_addr_name->getText() << " "; + } + acl_tcp_udp_dst_port_spec + | + // if not object-group and object, then it can optionally + // be regular inline port spec, followed by dest address spec + ( + xoperator + { + importer->SaveTmpPortToSrc(); + } + )? + hostaddr_expr_3 { importer->SaveTmpAddrToDst(); *dbg << "(dst) "; } + acl_tcp_udp_dst_port_spec + ) + (time_range)? + (fragments)? + (log)? ; //**************************************************************** + +acl_tcp_udp_dst_port_spec : + ( + // destination port spec. Can be blank, a named + // object, object-group or inline + + (OBJECT_GROUP) => ( + // This object-group can be only destination port + OBJECT_GROUP dst_port_group_name:WORD + { + importer->dst_port_spec = dst_port_group_name->getText(); + *dbg << "dst port spec: " + << dst_port_group_name->getText() << std::endl; + } + (established)? + ) + | + // not "object-group" + OBJECT dst_port_obj_name:WORD + { + importer->dst_port_spec = dst_port_obj_name->getText(); + *dbg << "dst addr object " << dst_port_obj_name->getText() + << std::endl; + } + (established)? + | + // if not object-group and object, then it can optionally + // be regular inline port spec + (acl_xoperator_dst)? + (established)? + ) +; + +acl_xoperator_dst : xoperator + { + importer->SaveTmpPortToDst(); + } + ; + +xoperator : single_port_op | port_range ; + +//**************************************************************** + ip_protocols : ( ( ip_protocol_names | ICMP6 ) @@ -989,20 +1092,6 @@ icmp_spec : ) ; -acl_xoperator_src : xoperator - { - importer->SaveTmpPortToSrc(); - } - ; - -acl_xoperator_dst : xoperator - { - importer->SaveTmpPortToDst(); - } - ; - -xoperator : single_port_op | port_range ; - single_port_op : (P_EQ | P_GT | P_LT | P_NEQ ) { importer->tmp_port_op = LT(0)->getText(); @@ -1037,6 +1126,11 @@ pair_of_ports_spec : (s1:WORD|s2:INT_CONST) (e1:WORD|e2:INT_CONST) } ; +// using these to help with debugging +hostaddr_expr_1 : hostaddr_expr ; +hostaddr_expr_2 : hostaddr_expr ; +hostaddr_expr_3 : hostaddr_expr ; + hostaddr_expr : INTRFACE intf_name:WORD { @@ -1606,8 +1700,9 @@ tokens NAMES = "names"; NAME = "name"; - OBJECT = "object"; - OBJECT_GROUP = "object-group"; +// OBJECT = "object"; +// OBJECT_GROUP = "object-group"; + GROUP_OBJECT = "group-object"; NETWORK_OBJECT = "network-object"; SERVICE_OBJECT = "service-object"; @@ -1634,7 +1729,6 @@ tokens } - LINE_COMMENT : "!" (~('\r' | '\n'))* NEWLINE ; // This is for lines like these that appear at the top of "show run" @@ -1657,6 +1751,9 @@ INT_CONST:; protected HEX_CONST:; +protected +NUMBER:; + protected NEG_INT_CONST:; @@ -1666,7 +1763,14 @@ DIGIT : '0'..'9' ; protected HEXDIGIT : 'a'..'f' ; -NUMBER : +protected +OBJECT :; + +protected +OBJECT_GROUP :; + + +NUMBER_ADDRESS_OR_WORD : ( ( DIGIT ) => ( @@ -1675,6 +1779,7 @@ NUMBER : { _ttype = IPV4; } | ( (DIGIT)+ DOT (DIGIT)+ )=> ( (DIGIT)+ DOT (DIGIT)+ ) + { _ttype = NUMBER; } | ( DIGIT )+ { _ttype = INT_CONST; } ) @@ -1685,6 +1790,16 @@ NUMBER : ( COLON ( 'a'..'f' | '0'..'9' )* )+ ) { _ttype = IPV6; } ) + | + ("obj" "ect") => + ( + "object" + ( + ("-gr" "oup") { _ttype = OBJECT_GROUP; } + | + "" { _ttype = OBJECT; } + ) + ) | ( 'a'..'z' | 'A'..'Z' | '$' ) ( '!'..'/' | '0'..'9' | ':' | ';' | '<' | '=' | '>' | diff --git a/src/unit_tests/ImporterTest/test_data/asa8.3-acl-object-groups.test b/src/unit_tests/ImporterTest/test_data/asa8.3-acl-object-groups.test new file mode 100644 index 000000000..addaeb63b --- /dev/null +++ b/src/unit_tests/ImporterTest/test_data/asa8.3-acl-object-groups.test @@ -0,0 +1,199 @@ +: Saved +: +ASA Version 8.3(2) +! +hostname asa5505 + + +interface Vlan1 + nameif inside + security-level 100 + ip address 192.168.1.1 255.255.255.0 +exit + +interface Vlan2 + nameif outside + security-level 0 + ip address dhcp setroute +exit + +interface Ethernet0/0 + description Switch port 0/0 +exit + + +no logging buffered +no logging console +no logging timestamp +no logging on + + +timeout xlate 0:0:0 +timeout conn 0:0:0 +timeout udp 0:0:0 +timeout sunrpc 0:0:0 +timeout h323 0:0:0 +timeout sip 0:0:0 +timeout sip_media 0:0:0 +timeout half-closed 0:0:0 +timeout uauth 0:0:0 + + +clear config ssh +aaa authentication ssh console LOCAL + +clear config snmp-server +no snmp-server enable traps + +clear config ntp + + +no service resetinbound +no service resetoutside +no sysopt connection timewait +no sysopt nodnsalias inbound +no sysopt nodnsalias outbound + + +class-map inspection_default + match default-inspection-traffic + +policy-map global_policy + class inspection_default + +service-policy global_policy global + + + +clear xlate +clear config nat +clear config access-list +clear config icmp +clear config telnet +clear config object-group +clear config object + + +object service http.0 + service tcp destination eq 80 +exit + +object service https.0 + service tcp destination eq 443 +exit + +object network server-1.0 + host 192.168.1.100 +exit + +object network Internal_net.0 + subnet 192.168.1.0 255.255.255.0 +exit + +object network external_net.0 + subnet 192.0.2.0 255.255.255.0 + +object-group service srv-group-1 tcp + port-object eq 80 + port-object eq 443 +exit + +object service ip2 + service eigrp + +object-group protocol pg1 + protocol-object 111 + protocol-object ah + protocol-object ip + protocol-object eigrp + +object-group network src-network-group-1 + network-object 192.168.1.0 255.255.255.0 + network-object 192.168.2.0 255.255.255.0 + +object-group network dst-network-group-1 + network-object object external_net.0 + + + +!################ +! + +access-list inside_in extended permit object-group pg1 192.168.1.0 255.255.255.0 any + + +access-list inside_in extended permit tcp object server-1.0 any + +access-list inside_in extended permit tcp object server-1.0 host 192.0.2.1 + +access-list inside_in extended permit tcp object server-1.0 192.0.2.0 255.255.255.0 + +access-list inside_in extended permit tcp object server-1.0 object external_net.0 + +access-list inside_in extended permit tcp object server-1.0 object-group dst-network-group-1 + + +! named object in both source and destination +! +access-list inside_in extended permit tcp object server-1.0 object external_net.0 + + +! src port definitions +! +access-list inside_in extended permit tcp object server-1.0 eq 80 any + +access-list inside_in extended permit tcp object server-1.0 lt 1024 any + +access-list inside_in extended permit tcp object server-1.0 gt 1024 any + +access-list inside_in extended permit tcp object server-1.0 range 1000 1100 any + + +! ASA 8.3 does not take this acl definition (assumes object http.0 is dest address) +! access-list inside_in extended permit tcp object server-1.0 object http.0 any + +access-list inside_in extended permit tcp object server-1.0 object-group srv-group-1 any + + + + +! dest port is defined using in-line port operators +! +access-list inside_in extended permit tcp object server-1.0 any eq 80 + +access-list inside_in extended permit tcp object server-1.0 host 192.0.2.1 eq 80 + +access-list inside_in extended permit tcp object server-1.0 192.0.2.0 255.255.255.0 eq 80 + +access-list inside_in extended permit tcp object server-1.0 object external_net.0 eq 80 + +access-list inside_in extended permit tcp object server-1.0 object-group dst-network-group-1 eq 80 + + +! object-group service is used to define destination ports +! +access-list inside_in extended permit tcp object server-1.0 any object-group srv-group-1 + +access-list inside_in extended permit tcp object server-1.0 host 192.0.2.1 object-group srv-group-1 + +access-list inside_in extended permit tcp object server-1.0 192.0.2.0 255.255.255.0 object-group srv-group-1 + +access-list inside_in extended permit tcp object server-1.0 object external_net.0 object-group srv-group-1 + + + + +! object-group service is used to define source ports +! +access-list inside_in extended permit tcp object server-1.0 object-group srv-group-1 any + +access-list inside_in extended permit tcp object server-1.0 object-group srv-group-1 host 192.0.2.1 + +access-list inside_in extended permit tcp object server-1.0 object-group srv-group-1 192.0.2.0 255.255.255.0 + +access-list inside_in extended permit tcp object server-1.0 object-group srv-group-1 object external_net.0 + +access-list inside_in extended permit tcp object server-1.0 object-group srv-group-1 object-group dst-network-group-1 + + +access-group inside_in in interface inside diff --git a/src/unit_tests/ImporterTest/test_data/asa8.3-acl.test b/src/unit_tests/ImporterTest/test_data/asa8.3-acl.test index 95889612c..c3f1d0406 100755 --- a/src/unit_tests/ImporterTest/test_data/asa8.3-acl.test +++ b/src/unit_tests/ImporterTest/test_data/asa8.3-acl.test @@ -158,7 +158,10 @@ access-list inside_in extended deny ip any any log 0 interval 300 ! port definitions in both source and destination ! the following is unsupported at this time , see #2273 -! access-list inside_in extended permit tcp object server-1.0 object-group id5102X14531.srv.tcp.0 any +access-list inside_in extended permit tcp object server-1.0 object-group id5102X14531.srv.tcp.0 any + +access-list inside_in extended permit tcp object server-1.0 object-group dst-network-group-1 + access-list inside_in extended permit tcp object server-1.0 eq 80 any access-list inside_in extended permit tcp object server-1.0 gt 1010 any access-list inside_in extended permit tcp object server-1.0 lt 1024 any @@ -202,6 +205,11 @@ access-list outside_out standard permit 192.0.2.0 255.255.255.0 access-list outside_out standard permit host 192.0.2.1 access-list outside_out standard permit any +! tests for access lists using object groups for both source service and destination address + + + + ! access-group statements