diff --git a/doc/ChangeLog b/doc/ChangeLog index 9075970d3..50ce90a07 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,9 @@ +2011-03-22 vadim + + * parsers/pix.g (port_object): see #2234 added support for import + of "obejct-group service name tcp|udp" constructs in ASA 8.3 with + subsequent "port-object" statements. + 2011-03-21 vadim * PortRangeConverter.h (PortRangeConverter): see #2252 TCP and UDP diff --git a/src/import/PIXImporter.cpp b/src/import/PIXImporter.cpp index 98cf73a3a..e3b71b0b1 100644 --- a/src/import/PIXImporter.cpp +++ b/src/import/PIXImporter.cpp @@ -97,6 +97,7 @@ void PIXImporter::clear() current_object_group = NULL; object_group_name = ""; object_group_comment = ""; + object_group_service_protocol = ""; } /* @@ -499,6 +500,8 @@ void PIXImporter::newObjectGroupService(const string &name) maker.createObject(ServiceGroup::TYPENAME, name))); named_objects_registry[object_group_name] = current_object_group; + object_group_service_protocol = ""; + *logger << "Object Group (service) " + name; } @@ -578,6 +581,9 @@ void PIXImporter::addIPServiceToObjectGroup() void PIXImporter::addTCPUDPServiceToObjectGroup() { FWObject *new_obj = NULL; + if (protocol.empty() && ! object_group_service_protocol.isEmpty()) + protocol = object_group_service_protocol.toStdString(); + if (protocol == "tcp") new_obj = createTCPService(); if (protocol == "udp") new_obj = createUDPService(); if (new_obj) diff --git a/src/import/PIXImporter.h b/src/import/PIXImporter.h index 08b8b7045..2f83928e7 100644 --- a/src/import/PIXImporter.h +++ b/src/import/PIXImporter.h @@ -49,6 +49,7 @@ class PIXImporter : public IOSImporter QString object_group_name; QString object_group_comment; + QString object_group_service_protocol; libfwbuilder::FWObject *current_object_group; QMap named_objects_registry; @@ -96,6 +97,9 @@ class PIXImporter : public IOSImporter void newObjectGroupProtocol(const std::string &group_name); void newObjectGroupICMP(const std::string &group_name); + void setObjectGroupServiceProtocol(const std::string &proto) + { object_group_service_protocol = proto.c_str(); } + void setObjectGroupDescription(const std::string &descr); void addNamedObjectToObjectGroup(const std::string &object_name); diff --git a/src/parsers/PIXCfgLexer.cpp b/src/parsers/PIXCfgLexer.cpp index 6ecf1677b..0d4382890 100644 --- a/src/parsers/PIXCfgLexer.cpp +++ b/src/parsers/PIXCfgLexer.cpp @@ -47,22 +47,22 @@ void PIXCfgLexer::initLiterals() literals["name"] = 9; literals["names"] = 8; literals["ospf"] = 22; - literals["established"] = 68; - literals["mac-address"] = 82; - literals["nameif"] = 87; + literals["established"] = 70; + literals["mac-address"] = 85; + literals["nameif"] = 89; literals["subnet"] = 33; - literals["controller"] = 71; + literals["controller"] = 73; literals["object"] = 27; literals["pcp"] = 23; - literals["remark"] = 95; - literals["access-list"] = 58; + literals["remark"] = 97; + literals["access-list"] = 60; literals["snp"] = 26; - literals["hostname"] = 56; - literals["hold-time"] = 80; + literals["hostname"] = 58; + literals["hold-time"] = 83; literals["community-list"] = 7; - literals["permit"] = 59; - literals["security-level"] = 88; - literals["no"] = 86; + literals["permit"] = 61; + literals["security-level"] = 90; + literals["no"] = 52; literals["source"] = 40; literals["igrp"] = 18; literals["group-object"] = 43; @@ -70,65 +70,66 @@ void PIXCfgLexer::initLiterals() literals["nos"] = 21; literals["ipinip"] = 19; literals["quit"] = 5; - literals["crypto"] = 50; + literals["crypto"] = 51; literals["protocol"] = 45; literals["icmp-type"] = 48; - literals["PIX"] = 52; + literals["PIX"] = 54; literals["icmp-object"] = 47; - literals["exit"] = 97; + literals["exit"] = 76; literals["nat"] = 29; literals["object-group"] = 42; literals["range"] = 32; literals["service-object"] = 49; literals["gre"] = 16; - literals["gt"] = 62; + literals["gt"] = 64; literals["ah"] = 13; literals["host"] = 31; - literals["secondary"] = 99; - literals["interface"] = 72; - literals["rip"] = 85; + literals["secondary"] = 100; + literals["interface"] = 74; + literals["rip"] = 88; literals["protocol-object"] = 46; literals["icmp6"] = 37; - literals["standard"] = 102; + literals["standard"] = 103; literals["network"] = 28; literals["service"] = 34; - literals["vlan"] = 74; - literals["access"] = 94; - literals["multicast"] = 83; - literals["any"] = 65; - literals["dhcp"] = 91; - literals["speed"] = 75; - literals["deny"] = 60; - literals["neq"] = 64; - literals["address"] = 90; + literals["vlan"] = 77; + literals["access"] = 96; + literals["multicast"] = 86; + literals["any"] = 67; + literals["dhcp"] = 93; + literals["speed"] = 78; + literals["deny"] = 62; + literals["neq"] = 66; + literals["address"] = 92; literals["esp"] = 15; literals["network-object"] = 44; - literals["shutdown"] = 89; - literals["delay"] = 79; - literals["certificate"] = 51; + literals["shutdown"] = 91; + literals["delay"] = 82; + literals["certificate"] = 53; literals["udp"] = 39; - literals["fragments"] = 69; - literals["eq"] = 61; + literals["fragments"] = 71; + literals["eq"] = 63; literals["destination"] = 41; - literals["duplex"] = 76; - literals["setroute"] = 100; + literals["duplex"] = 79; + literals["setroute"] = 101; literals["ip"] = 6; literals["eigrp"] = 14; - literals["log-input"] = 67; - literals["switchport"] = 93; + literals["log-input"] = 69; + literals["switchport"] = 95; literals["description"] = 30; - literals["extended"] = 101; + literals["extended"] = 102; literals["igmp"] = 17; - literals["access-group"] = 96; - literals["ddns"] = 77; - literals["Version"] = 54; - literals["log"] = 66; - literals["forward"] = 78; - literals["ASA"] = 53; - literals["lt"] = 63; - literals["ipv6"] = 81; - literals["time-range"] = 70; - literals["standby"] = 92; + literals["access-group"] = 98; + literals["ddns"] = 80; + literals["Version"] = 56; + literals["log"] = 68; + literals["forward"] = 81; + literals["ASA"] = 55; + literals["lt"] = 65; + literals["ipv6"] = 84; + literals["port-object"] = 50; + literals["time-range"] = 72; + literals["standby"] = 94; literals["icmp"] = 35; literals["tcp"] = 38; } @@ -444,11 +445,11 @@ void PIXCfgLexer::mLINE_COMMENT(bool _createToken) { } } else { - goto _loop184; + goto _loop188; } } - _loop184:; + _loop188:; } // ( ... )* mNEWLINE(false); if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { @@ -480,9 +481,9 @@ void PIXCfgLexer::mNEWLINE(bool _createToken) { } if ( inputState->guessing==0 ) { -#line 1552 "pix.g" +#line 1577 "pix.g" newline(); -#line 486 "PIXCfgLexer.cpp" +#line 487 "PIXCfgLexer.cpp" } if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { _token = makeToken(_ttype); @@ -506,11 +507,11 @@ void PIXCfgLexer::mCOLON_COMMENT(bool _createToken) { } } else { - goto _loop188; + goto _loop192; } } - _loop188:; + _loop192:; } // ( ... )* mNEWLINE(false); if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { @@ -604,9 +605,9 @@ void PIXCfgLexer::mWhitespace(bool _createToken) { } } if ( inputState->guessing==0 ) { -#line 1547 "pix.g" +#line 1572 "pix.g" _ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP; -#line 610 "PIXCfgLexer.cpp" +#line 611 "PIXCfgLexer.cpp" } if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { _token = makeToken(_ttype); @@ -689,15 +690,15 @@ void PIXCfgLexer::mNUMBER(bool _createToken) { ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex; { - bool synPredMatched236 = false; + bool synPredMatched240 = false; if (((_tokenSet_2.member(LA(1))) && (_tokenSet_3.member(LA(2))) && (true))) { - int _m236 = mark(); - synPredMatched236 = true; + int _m240 = mark(); + synPredMatched240 = true; inputState->guessing++; try { { { // ( ... )+ - int _cnt235=0; + int _cnt239=0; for (;;) { switch ( LA(1)) { case 0x61 /* 'a' */ : @@ -726,27 +727,27 @@ void PIXCfgLexer::mNUMBER(bool _createToken) { } default: { - if ( _cnt235>=1 ) { goto _loop235; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + if ( _cnt239>=1 ) { goto _loop239; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} } } - _cnt235++; + _cnt239++; } - _loop235:; + _loop239:; } // ( ... )+ mCOLON(false); } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) { - synPredMatched236 = false; + synPredMatched240 = false; } - rewind(_m236); + rewind(_m240); inputState->guessing--; } - if ( synPredMatched236 ) { + if ( synPredMatched240 ) { { { { // ( ... )+ - int _cnt240=0; + int _cnt244=0; for (;;) { switch ( LA(1)) { case 0x61 /* 'a' */ : @@ -775,15 +776,15 @@ void PIXCfgLexer::mNUMBER(bool _createToken) { } default: { - if ( _cnt240>=1 ) { goto _loop240; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + if ( _cnt244>=1 ) { goto _loop244; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} } } - _cnt240++; + _cnt244++; } - _loop240:; + _loop244:; } // ( ... )+ { // ( ... )+ - int _cnt244=0; + int _cnt248=0; for (;;) { if ((LA(1) == 0x3a /* ':' */ )) { mCOLON(false); @@ -816,34 +817,34 @@ void PIXCfgLexer::mNUMBER(bool _createToken) { } default: { - goto _loop243; + goto _loop247; } } } - _loop243:; + _loop247:; } // ( ... )* } else { - if ( _cnt244>=1 ) { goto _loop244; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + if ( _cnt248>=1 ) { goto _loop248; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} } - _cnt244++; + _cnt248++; } - _loop244:; + _loop248:; } // ( ... )+ } if ( inputState->guessing==0 ) { -#line 1586 "pix.g" +#line 1611 "pix.g" _ttype = IPV6; -#line 839 "PIXCfgLexer.cpp" +#line 840 "PIXCfgLexer.cpp" } } } else { - bool synPredMatched201 = false; + bool synPredMatched205 = false; if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (true) && (true))) { - int _m201 = mark(); - synPredMatched201 = true; + int _m205 = mark(); + synPredMatched205 = true; inputState->guessing++; try { { @@ -851,51 +852,21 @@ void PIXCfgLexer::mNUMBER(bool _createToken) { } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) { - synPredMatched201 = false; + synPredMatched205 = false; } - rewind(_m201); + rewind(_m205); inputState->guessing--; } - if ( synPredMatched201 ) { + if ( synPredMatched205 ) { { - bool synPredMatched210 = false; + bool synPredMatched214 = false; if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3))))) { - int _m210 = mark(); - synPredMatched210 = true; + int _m214 = mark(); + synPredMatched214 = true; inputState->guessing++; try { { { // ( ... )+ - int _cnt205=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt205>=1 ) { goto _loop205; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt205++; - } - _loop205:; - } // ( ... )+ - mDOT(false); - { // ( ... )+ - int _cnt207=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt207>=1 ) { goto _loop207; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt207++; - } - _loop207:; - } // ( ... )+ - mDOT(false); - { // ( ... )+ int _cnt209=0; for (;;) { if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { @@ -909,47 +880,47 @@ void PIXCfgLexer::mNUMBER(bool _createToken) { } _loop209:; } // ( ... )+ + mDOT(false); + { // ( ... )+ + int _cnt211=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt211>=1 ) { goto _loop211; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt211++; + } + _loop211:; + } // ( ... )+ + mDOT(false); + { // ( ... )+ + int _cnt213=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt213>=1 ) { goto _loop213; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt213++; + } + _loop213:; + } // ( ... )+ } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) { - synPredMatched210 = false; + synPredMatched214 = false; } - rewind(_m210); + rewind(_m214); inputState->guessing--; } - if ( synPredMatched210 ) { + if ( synPredMatched214 ) { { { // ( ... )+ - int _cnt213=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt213>=1 ) { goto _loop213; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt213++; - } - _loop213:; - } // ( ... )+ - mDOT(false); - { // ( ... )+ - int _cnt215=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt215>=1 ) { goto _loop215; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt215++; - } - _loop215:; - } // ( ... )+ - mDOT(false); - { // ( ... )+ int _cnt217=0; for (;;) { if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { @@ -978,92 +949,90 @@ void PIXCfgLexer::mNUMBER(bool _createToken) { } _loop219:; } // ( ... )+ + mDOT(false); + { // ( ... )+ + int _cnt221=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt221>=1 ) { goto _loop221; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt221++; + } + _loop221:; + } // ( ... )+ + mDOT(false); + { // ( ... )+ + int _cnt223=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt223>=1 ) { goto _loop223; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt223++; + } + _loop223:; + } // ( ... )+ } if ( inputState->guessing==0 ) { -#line 1575 "pix.g" +#line 1600 "pix.g" _ttype = IPV4; -#line 986 "PIXCfgLexer.cpp" +#line 987 "PIXCfgLexer.cpp" } } else { - bool synPredMatched225 = false; + bool synPredMatched229 = false; if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3))))) { - int _m225 = mark(); - synPredMatched225 = true; + int _m229 = mark(); + synPredMatched229 = true; inputState->guessing++; try { { { // ( ... )+ - int _cnt222=0; + int _cnt226=0; for (;;) { if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { mDIGIT(false); } else { - if ( _cnt222>=1 ) { goto _loop222; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + if ( _cnt226>=1 ) { goto _loop226; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} } - _cnt222++; + _cnt226++; } - _loop222:; + _loop226:; } // ( ... )+ mDOT(false); { // ( ... )+ - int _cnt224=0; + int _cnt228=0; for (;;) { if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { mDIGIT(false); } else { - if ( _cnt224>=1 ) { goto _loop224; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + if ( _cnt228>=1 ) { goto _loop228; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} } - _cnt224++; + _cnt228++; } - _loop224:; + _loop228:; } // ( ... )+ } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) { - synPredMatched225 = false; + synPredMatched229 = false; } - rewind(_m225); + rewind(_m229); inputState->guessing--; } - if ( synPredMatched225 ) { + if ( synPredMatched229 ) { { - { // ( ... )+ - int _cnt228=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt228>=1 ) { goto _loop228; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt228++; - } - _loop228:; - } // ( ... )+ - mDOT(false); - { // ( ... )+ - int _cnt230=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt230>=1 ) { goto _loop230; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt230++; - } - _loop230:; - } // ( ... )+ - } - } - else if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (true) && (true)) { { // ( ... )+ int _cnt232=0; for (;;) { @@ -1078,10 +1047,42 @@ void PIXCfgLexer::mNUMBER(bool _createToken) { } _loop232:; } // ( ... )+ + mDOT(false); + { // ( ... )+ + int _cnt234=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt234>=1 ) { goto _loop234; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt234++; + } + _loop234:; + } // ( ... )+ + } + } + else if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (true) && (true)) { + { // ( ... )+ + int _cnt236=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt236>=1 ) { goto _loop236; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt236++; + } + _loop236:; + } // ( ... )+ if ( inputState->guessing==0 ) { -#line 1579 "pix.g" +#line 1604 "pix.g" _ttype = INT_CONST; -#line 1085 "PIXCfgLexer.cpp" +#line 1086 "PIXCfgLexer.cpp" } } else { @@ -1317,16 +1318,16 @@ void PIXCfgLexer::mNUMBER(bool _createToken) { } default: { - goto _loop247; + goto _loop251; } } } - _loop247:; + _loop251:; } // ( ... )* if ( inputState->guessing==0 ) { -#line 1592 "pix.g" +#line 1617 "pix.g" _ttype = WORD; -#line 1330 "PIXCfgLexer.cpp" +#line 1331 "PIXCfgLexer.cpp" } } else { @@ -1368,11 +1369,11 @@ void PIXCfgLexer::mSTRING(bool _createToken) { matchNot('\"' /* charlit */ ); } else { - goto _loop250; + goto _loop254; } } - _loop250:; + _loop254:; } // ( ... )* match('\"' /* charlit */ ); if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { @@ -1751,7 +1752,7 @@ void PIXCfgLexer::mEXLAMATION(bool _createToken) { const unsigned long PIXCfgLexer::_tokenSet_0_data_[] = { 4294958072UL, 1UL, 0UL, 2147483648UL, 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 // 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x7f 0x80 0x81 -// 0x82 0x83 0x84 0x85 0x86 0x87 +// 0x82 0x83 0x84 0x85 0x86 0x87 0x88 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 @@ -1759,7 +1760,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 +// 0x84 0x85 0x86 0x87 0x88 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 @@ -1780,6 +1781,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 +// 0x84 0x85 0x86 0x87 0x88 const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgLexer::_tokenSet_6(_tokenSet_6_data_,16); diff --git a/src/parsers/PIXCfgParser.cpp b/src/parsers/PIXCfgParser.cpp index 986199243..f2186e233 100644 --- a/src/parsers/PIXCfgParser.cpp +++ b/src/parsers/PIXCfgParser.cpp @@ -45,6 +45,7 @@ PIXCfgParser::PIXCfgParser(const ANTLR_USE_NAMESPACE(antlr)ParserSharedInputStat } void PIXCfgParser::cfgfile() { + Tracer traceInOut(this, "cfgfile"); try { // for error handling { // ( ... )+ @@ -113,6 +114,11 @@ void PIXCfgParser::cfgfile() { crypto(); break; } + case NO: + { + no_commands(); + break; + } case WORD: { unknown_command(); @@ -174,6 +180,7 @@ void PIXCfgParser::cfgfile() { } void PIXCfgParser::comment() { + Tracer traceInOut(this, "comment"); try { // for error handling { @@ -206,6 +213,7 @@ void PIXCfgParser::comment() { } void PIXCfgParser::version() { + Tracer traceInOut(this, "version"); try { // for error handling { @@ -229,14 +237,14 @@ void PIXCfgParser::version() { match(VERSION_WORD); match(NUMBER); if ( inputState->guessing==0 ) { -#line 769 "pix.g" +#line 793 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->setDiscoveredVersion(LT(0)->getText()); *dbg << "VERSION " << LT(0)->getText() << std::endl; consumeUntil(NEWLINE); -#line 240 "PIXCfgParser.cpp" +#line 248 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -250,6 +258,7 @@ void PIXCfgParser::version() { } void PIXCfgParser::hostname() { + Tracer traceInOut(this, "hostname"); try { // for error handling match(HOSTNAME); @@ -272,7 +281,7 @@ void PIXCfgParser::hostname() { } } if ( inputState->guessing==0 ) { -#line 779 "pix.g" +#line 803 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->setHostName( LT(0)->getText() ); @@ -280,7 +289,7 @@ void PIXCfgParser::hostname() { << "LT0=" << LT(0)->getText() << std::endl; -#line 284 "PIXCfgParser.cpp" +#line 293 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -294,6 +303,7 @@ void PIXCfgParser::hostname() { } void PIXCfgParser::ip_access_list_ext() { + Tracer traceInOut(this, "ip_access_list_ext"); ANTLR_USE_NAMESPACE(antlr)RefToken name = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling @@ -302,7 +312,7 @@ void PIXCfgParser::ip_access_list_ext() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 815 "pix.g" +#line 839 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -311,7 +321,7 @@ void PIXCfgParser::ip_access_list_ext() { *dbg << name->getLine() << ":" << " ACL ext " << name->getText() << std::endl; -#line 315 "PIXCfgParser.cpp" +#line 325 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -348,12 +358,12 @@ void PIXCfgParser::ip_access_list_ext() { } } if ( inputState->guessing==0 ) { -#line 834 "pix.g" +#line 858 "pix.g" *dbg << LT(0)->getLine() << ":" << " ACL line end" << std::endl << std::endl; -#line 357 "PIXCfgParser.cpp" +#line 367 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -367,16 +377,17 @@ void PIXCfgParser::ip_access_list_ext() { } 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 170 "pix.g" +#line 172 "pix.g" consumeUntil(NEWLINE); -#line 380 "PIXCfgParser.cpp" +#line 391 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -390,16 +401,17 @@ 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 747 "pix.g" +#line 762 "pix.g" consumeUntil(NEWLINE); -#line 403 "PIXCfgParser.cpp" +#line 415 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -413,6 +425,7 @@ void PIXCfgParser::unknown_ip_command() { } void PIXCfgParser::intrface() { + Tracer traceInOut(this, "intrface"); ANTLR_USE_NAMESPACE(antlr)RefToken in = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling @@ -420,7 +433,7 @@ void PIXCfgParser::intrface() { in = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 1096 "pix.g" +#line 1120 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->newInterface( in->getText() ); @@ -428,36 +441,36 @@ void PIXCfgParser::intrface() { << " INTRFACE: " << in->getText() << std::endl; consumeUntil(NEWLINE); -#line 432 "PIXCfgParser.cpp" +#line 445 "PIXCfgParser.cpp" } { if ((LA(1) == NEWLINE) && (_tokenSet_2.member(LA(2)))) { { // ( ... )+ - int _cnt149=0; + int _cnt152=0; for (;;) { if ((LA(1) == NEWLINE) && (_tokenSet_2.member(LA(2)))) { interface_parameters(); } else { - if ( _cnt149>=1 ) { goto _loop149; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());} + if ( _cnt152>=1 ) { goto _loop152; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());} } - _cnt149++; + _cnt152++; } - _loop149:; + _loop152:; } // ( ... )+ } - else if ((LA(1) == NEWLINE) && (LA(2) == LINE_COMMENT)) { + else if ((LA(1) == NEWLINE) && (LA(2) == LINE_COMMENT || LA(2) == EXIT)) { { } if ( inputState->guessing==0 ) { -#line 1109 "pix.g" +#line 1133 "pix.g" importer->ignoreCurrentInterface(); *dbg<< LT(1)->getLine() << ":" << " EMPTY INTERFACE " << std::endl; -#line 461 "PIXCfgParser.cpp" +#line 474 "PIXCfgParser.cpp" } } else { @@ -466,7 +479,24 @@ void PIXCfgParser::intrface() { } match(NEWLINE); - match(LINE_COMMENT); + { + switch ( LA(1)) { + case LINE_COMMENT: + { + match(LINE_COMMENT); + break; + } + case EXIT: + { + match(EXIT); + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); + } + } + } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { @@ -479,16 +509,17 @@ void PIXCfgParser::intrface() { } void PIXCfgParser::controller() { + Tracer traceInOut(this, "controller"); try { // for error handling match(CONTROLLER); if ( inputState->guessing==0 ) { -#line 1050 "pix.g" +#line 1074 "pix.g" importer->clearCurrentInterface(); consumeUntil(NEWLINE); -#line 492 "PIXCfgParser.cpp" +#line 523 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -502,6 +533,7 @@ void PIXCfgParser::controller() { } void PIXCfgParser::access_list_commands() { + Tracer traceInOut(this, "access_list_commands"); ANTLR_USE_NAMESPACE(antlr)RefToken acl_num = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling @@ -509,7 +541,7 @@ void PIXCfgParser::access_list_commands() { acl_num = LT(1); match(INT_CONST); if ( inputState->guessing==0 ) { -#line 795 "pix.g" +#line 819 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -518,7 +550,7 @@ void PIXCfgParser::access_list_commands() { *dbg << acl_num->getLine() << ":" << " ACL #" << acl_num->getText() << " "; -#line 522 "PIXCfgParser.cpp" +#line 554 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -555,6 +587,7 @@ void PIXCfgParser::access_list_commands() { } void PIXCfgParser::exit() { + Tracer traceInOut(this, "exit"); try { // for error handling match(EXIT); @@ -570,17 +603,18 @@ void PIXCfgParser::exit() { } void PIXCfgParser::certificate() { + Tracer traceInOut(this, "certificate"); try { // for error handling match(CERTIFICATE); match(WORD); if ( inputState->guessing==0 ) { -#line 761 "pix.g" +#line 785 "pix.g" consumeUntil(NEWLINE); consumeUntil(QUIT); -#line 584 "PIXCfgParser.cpp" +#line 618 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -594,15 +628,16 @@ void PIXCfgParser::certificate() { } void PIXCfgParser::quit() { + Tracer traceInOut(this, "quit"); try { // for error handling match(QUIT); if ( inputState->guessing==0 ) { -#line 163 "pix.g" +#line 165 "pix.g" consumeUntil(NEWLINE); -#line 606 "PIXCfgParser.cpp" +#line 641 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -616,11 +651,12 @@ void PIXCfgParser::quit() { } void PIXCfgParser::names_section() { + Tracer traceInOut(this, "names_section"); try { // for error handling match(NAMES); if ( inputState->guessing==0 ) { -#line 177 "pix.g" +#line 179 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->addMessageToLog( @@ -628,7 +664,7 @@ void PIXCfgParser::names_section() { "Import of configuration that uses \"names\" " "is not supported at this time"); -#line 632 "PIXCfgParser.cpp" +#line 668 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -642,6 +678,7 @@ 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; @@ -671,7 +708,7 @@ void PIXCfgParser::name_entry() { n = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 187 "pix.g" +#line 189 "pix.g" if (a) { @@ -687,7 +724,7 @@ void PIXCfgParser::name_entry() { consumeUntil(NEWLINE); } -#line 691 "PIXCfgParser.cpp" +#line 728 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -701,6 +738,7 @@ 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 @@ -709,7 +747,7 @@ void PIXCfgParser::named_object_network() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 220 "pix.g" +#line 222 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -717,7 +755,7 @@ void PIXCfgParser::named_object_network() { *dbg << name->getLine() << ":" << " Named Object " << name->getText() << std::endl; -#line 721 "PIXCfgParser.cpp" +#line 759 "PIXCfgParser.cpp" } { // ( ... )* for (;;) { @@ -744,6 +782,7 @@ 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 @@ -752,7 +791,7 @@ void PIXCfgParser::named_object_service() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 330 "pix.g" +#line 332 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -760,7 +799,7 @@ void PIXCfgParser::named_object_service() { *dbg << name->getLine() << ":" << " Named Object " << name->getText() << std::endl; -#line 764 "PIXCfgParser.cpp" +#line 803 "PIXCfgParser.cpp" } { // ( ... )* for (;;) { @@ -787,6 +826,7 @@ 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 @@ -795,7 +835,7 @@ void PIXCfgParser::object_group_network() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 445 "pix.g" +#line 447 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -803,7 +843,7 @@ void PIXCfgParser::object_group_network() { *dbg << name->getLine() << ":" << " Object Group " << name->getText() << std::endl; -#line 807 "PIXCfgParser.cpp" +#line 847 "PIXCfgParser.cpp" } { // ( ... )+ int _cnt48=0; @@ -831,37 +871,66 @@ 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; try { // for error handling match(OBJECT_GROUP); match(SERVICE); name = LT(1); match(WORD); + { + switch ( LA(1)) { + case TCP: + { + tcp = LT(1); + match(TCP); + break; + } + case UDP: + { + udp = LT(1); + match(UDP); + break; + } + case NEWLINE: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); + } + } + } if ( inputState->guessing==0 ) { -#line 666 "pix.g" +#line 668 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); importer->newObjectGroupService(name->getText()); + if (tcp) importer->setObjectGroupServiceProtocol("tcp"); + if (udp) importer->setObjectGroupServiceProtocol("udp"); *dbg << name->getLine() << ":" << " Object Group " << name->getText() << std::endl; -#line 851 "PIXCfgParser.cpp" +#line 920 "PIXCfgParser.cpp" } { // ( ... )+ - int _cnt79=0; + int _cnt80=0; for (;;) { - if ((LA(1) == NEWLINE) && (LA(2) == DESCRIPTION || LA(2) == GROUP_OBJECT || LA(2) == SERVICE_OBJECT)) { + if ((LA(1) == NEWLINE) && (_tokenSet_3.member(LA(2)))) { object_group_service_parameters(); } else { - if ( _cnt79>=1 ) { goto _loop79; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());} + if ( _cnt80>=1 ) { goto _loop80; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());} } - _cnt79++; + _cnt80++; } - _loop79:; + _loop80:; } // ( ... )+ } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -875,6 +944,7 @@ 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 @@ -883,7 +953,7 @@ void PIXCfgParser::object_group_protocol() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 543 "pix.g" +#line 545 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -891,7 +961,7 @@ void PIXCfgParser::object_group_protocol() { *dbg << name->getLine() << ":" << " Object Group " << name->getText() << std::endl; -#line 895 "PIXCfgParser.cpp" +#line 965 "PIXCfgParser.cpp" } { // ( ... )+ int _cnt60=0; @@ -919,6 +989,7 @@ 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 @@ -927,7 +998,7 @@ void PIXCfgParser::object_group_icmp_8_0() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 598 "pix.g" +#line 600 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -935,7 +1006,7 @@ void PIXCfgParser::object_group_icmp_8_0() { *dbg << name->getLine() << ":" << " Object Group " << name->getText() << std::endl; -#line 939 "PIXCfgParser.cpp" +#line 1010 "PIXCfgParser.cpp" } { // ( ... )+ int _cnt68=0; @@ -963,6 +1034,7 @@ 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 @@ -971,7 +1043,7 @@ void PIXCfgParser::object_group_icmp_8_3() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 611 "pix.g" +#line 613 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -979,7 +1051,7 @@ void PIXCfgParser::object_group_icmp_8_3() { *dbg << name->getLine() << ":" << " Object Group " << name->getText() << std::endl; -#line 983 "PIXCfgParser.cpp" +#line 1055 "PIXCfgParser.cpp" } { // ( ... )+ int _cnt71=0; @@ -1007,15 +1079,41 @@ 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 740 "pix.g" +#line 755 "pix.g" consumeUntil(NEWLINE); -#line 1019 "PIXCfgParser.cpp" +#line 1092 "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() { + Tracer traceInOut(this, "no_commands"); + + try { // for error handling + match(NO); + if ( inputState->guessing==0 ) { +#line 776 "pix.g" + + *dbg << " TOP LEVEL \"NO\" COMMAND: " + << LT(0)->getText() << std::endl; + consumeUntil(NEWLINE); + +#line 1117 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1029,15 +1127,16 @@ void PIXCfgParser::crypto() { } void PIXCfgParser::unknown_command() { + Tracer traceInOut(this, "unknown_command"); try { // for error handling match(WORD); if ( inputState->guessing==0 ) { -#line 754 "pix.g" +#line 769 "pix.g" consumeUntil(NEWLINE); -#line 1041 "PIXCfgParser.cpp" +#line 1140 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1051,6 +1150,7 @@ void PIXCfgParser::unknown_command() { } void PIXCfgParser::ip_protocol_names() { + Tracer traceInOut(this, "ip_protocol_names"); try { // for error handling { @@ -1140,7 +1240,7 @@ void PIXCfgParser::ip_protocol_names() { catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_3); + recover(ex,_tokenSet_4); } else { throw; } @@ -1148,6 +1248,7 @@ void PIXCfgParser::ip_protocol_names() { } void PIXCfgParser::named_object_network_parameters() { + Tracer traceInOut(this, "named_object_network_parameters"); try { // for error handling { @@ -1195,11 +1296,12 @@ 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 248 "pix.g" +#line 250 "pix.g" importer->addMessageToLog( "Parser warning: " @@ -1207,7 +1309,7 @@ void PIXCfgParser::named_object_nat() { "is not supported at this time"); consumeUntil(NEWLINE); -#line 1211 "PIXCfgParser.cpp" +#line 1313 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1221,6 +1323,7 @@ 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; @@ -1249,7 +1352,7 @@ void PIXCfgParser::host_addr() { } } if ( inputState->guessing==0 ) { -#line 279 "pix.g" +#line 281 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); if (h) @@ -1266,7 +1369,7 @@ void PIXCfgParser::host_addr() { consumeUntil(NEWLINE); } -#line 1270 "PIXCfgParser.cpp" +#line 1373 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1280,6 +1383,7 @@ 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; @@ -1292,7 +1396,7 @@ void PIXCfgParser::range_addr() { match(IPV4); } if ( inputState->guessing==0 ) { -#line 298 "pix.g" +#line 300 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->tmp_range_1 = r1->getText(); @@ -1300,7 +1404,7 @@ void PIXCfgParser::range_addr() { importer->commitNamedAddressRangeObject(); *dbg << r1->getText() << "/" << r2->getText(); -#line 1304 "PIXCfgParser.cpp" +#line 1408 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1314,6 +1418,7 @@ 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; @@ -1347,7 +1452,7 @@ void PIXCfgParser::subnet_addr() { } } if ( inputState->guessing==0 ) { -#line 308 "pix.g" +#line 310 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); if (a) @@ -1364,7 +1469,7 @@ void PIXCfgParser::subnet_addr() { consumeUntil(NEWLINE); } -#line 1368 "PIXCfgParser.cpp" +#line 1473 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1378,11 +1483,12 @@ 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 258 "pix.g" +#line 260 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); *dbg << LT(1)->getLine() << ":"; @@ -1395,7 +1501,7 @@ void PIXCfgParser::named_object_description() { importer->setNamedObjectDescription(descr); *dbg << " DESCRIPTION " << descr << std::endl; -#line 1399 "PIXCfgParser.cpp" +#line 1505 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1409,6 +1515,7 @@ void PIXCfgParser::named_object_description() { } void PIXCfgParser::named_object_service_parameters() { + Tracer traceInOut(this, "named_object_service_parameters"); try { // for error handling { @@ -1421,7 +1528,7 @@ void PIXCfgParser::named_object_service_parameters() { else if ((LA(1) == SERVICE) && (LA(2) == TCP || LA(2) == UDP)) { service_tcp_udp(); } - else if ((LA(1) == SERVICE) && (_tokenSet_4.member(LA(2)))) { + else if ((LA(1) == SERVICE) && (_tokenSet_5.member(LA(2)))) { service_other(); } else if ((LA(1) == SERVICE) && (LA(2) == WORD)) { @@ -1447,6 +1554,7 @@ 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; @@ -1460,11 +1568,11 @@ void PIXCfgParser::service_icmp() { icmp_type = LT(1); match(INT_CONST); if ( inputState->guessing==0 ) { -#line 362 "pix.g" +#line 364 "pix.g" importer->icmp_type = LT(0)->getText(); -#line 1468 "PIXCfgParser.cpp" +#line 1576 "PIXCfgParser.cpp" } break; } @@ -1473,11 +1581,11 @@ void PIXCfgParser::service_icmp() { icmp_word = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 366 "pix.g" +#line 368 "pix.g" importer->icmp_spec = icmp_word->getText(); -#line 1481 "PIXCfgParser.cpp" +#line 1589 "PIXCfgParser.cpp" } break; } @@ -1488,13 +1596,13 @@ void PIXCfgParser::service_icmp() { } } if ( inputState->guessing==0 ) { -#line 370 "pix.g" +#line 372 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->commitNamedICMPServiceObject(); *dbg << "NAMED OBJECT SERVICE ICMP " << LT(0)->getText() << " "; -#line 1498 "PIXCfgParser.cpp" +#line 1606 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1508,6 +1616,7 @@ void PIXCfgParser::service_icmp() { } void PIXCfgParser::service_icmp6() { + Tracer traceInOut(this, "service_icmp6"); try { // for error handling match(SERVICE); @@ -1531,7 +1640,7 @@ void PIXCfgParser::service_icmp6() { } } if ( inputState->guessing==0 ) { -#line 378 "pix.g" +#line 380 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->addMessageToLog("Parser warning: " @@ -1540,7 +1649,7 @@ void PIXCfgParser::service_icmp6() { *dbg << "NAMED OBJECT SERVICE ICMP6 " << LT(0)->getText() << " "; consumeUntil(NEWLINE); -#line 1544 "PIXCfgParser.cpp" +#line 1653 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1554,6 +1663,7 @@ void PIXCfgParser::service_icmp6() { } void PIXCfgParser::service_tcp_udp() { + Tracer traceInOut(this, "service_tcp_udp"); try { // for error handling match(SERVICE); @@ -1576,12 +1686,12 @@ void PIXCfgParser::service_tcp_udp() { } } if ( inputState->guessing==0 ) { -#line 389 "pix.g" +#line 391 "pix.g" importer->protocol = LT(0)->getText(); *dbg << "NAMED OBJECT SERVICE " << LT(0)->getText() << " "; -#line 1585 "PIXCfgParser.cpp" +#line 1695 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -1602,6 +1712,7 @@ void PIXCfgParser::service_tcp_udp() { case DESTINATION: case OBJECT_GROUP: case CRYPTO: + case NO: case CERTIFICATE: case PIX_WORD: case ASA_WORD: @@ -1647,6 +1758,7 @@ void PIXCfgParser::service_tcp_udp() { case OBJECT: case OBJECT_GROUP: case CRYPTO: + case NO: case CERTIFICATE: case PIX_WORD: case ASA_WORD: @@ -1667,12 +1779,12 @@ void PIXCfgParser::service_tcp_udp() { } } if ( inputState->guessing==0 ) { -#line 395 "pix.g" +#line 397 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->commitNamedTCPUDPServiceObject(); -#line 1676 "PIXCfgParser.cpp" +#line 1788 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1686,6 +1798,7 @@ void PIXCfgParser::service_tcp_udp() { } void PIXCfgParser::service_other() { + Tracer traceInOut(this, "service_other"); try { // for error handling match(SERVICE); @@ -1722,14 +1835,14 @@ void PIXCfgParser::service_other() { } } if ( inputState->guessing==0 ) { -#line 414 "pix.g" +#line 416 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->protocol = LT(0)->getText(); importer->commitNamedIPServiceObject(); *dbg << "NAMED OBJECT SERVICE " << LT(0)->getText() << " "; -#line 1733 "PIXCfgParser.cpp" +#line 1846 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1743,12 +1856,13 @@ 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 429 "pix.g" +#line 431 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->protocol = "ip"; @@ -1759,7 +1873,7 @@ void PIXCfgParser::service_unknown() { importer->addMessageToLog(err); *dbg << "UNKNOWN SERVICE " << LT(0)->getText() << " "; -#line 1763 "PIXCfgParser.cpp" +#line 1877 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1773,22 +1887,23 @@ 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 402 "pix.g" +#line 404 "pix.g" importer->SaveTmpPortToSrc(); -#line 1786 "PIXCfgParser.cpp" +#line 1901 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_5); + recover(ex,_tokenSet_6); } else { throw; } @@ -1796,6 +1911,7 @@ void PIXCfgParser::src_port_spec() { } void PIXCfgParser::dst_port_spec() { + Tracer traceInOut(this, "dst_port_spec"); try { // for error handling { @@ -1821,11 +1937,11 @@ void PIXCfgParser::dst_port_spec() { } xoperator(); if ( inputState->guessing==0 ) { -#line 408 "pix.g" +#line 410 "pix.g" importer->SaveTmpPortToDst(); -#line 1829 "PIXCfgParser.cpp" +#line 1945 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1839,6 +1955,7 @@ void PIXCfgParser::dst_port_spec() { } void PIXCfgParser::xoperator() { + Tracer traceInOut(this, "xoperator"); try { // for error handling switch ( LA(1)) { @@ -1864,7 +1981,7 @@ void PIXCfgParser::xoperator() { catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_6); + recover(ex,_tokenSet_7); } else { throw; } @@ -1872,6 +1989,7 @@ void PIXCfgParser::xoperator() { } void PIXCfgParser::object_group_network_parameters() { + Tracer traceInOut(this, "object_group_network_parameters"); try { // for error handling match(NEWLINE); @@ -1910,11 +2028,12 @@ 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 469 "pix.g" +#line 471 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); *dbg << LT(1)->getLine() << ":"; @@ -1927,7 +2046,7 @@ void PIXCfgParser::object_group_description() { importer->setObjectGroupDescription(descr); *dbg << " DESCRIPTION " << descr << std::endl; -#line 1931 "PIXCfgParser.cpp" +#line 2050 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1941,6 +2060,7 @@ 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 @@ -1948,14 +2068,14 @@ void PIXCfgParser::group_object() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 484 "pix.g" +#line 486 "pix.g" importer->clearTempVars(); importer->setCurrentLineNumber(LT(0)->getLine()); importer->addNamedObjectToObjectGroup(name->getText()); *dbg << " GROUP MEMBER " << name->getLine() << std::endl; -#line 1959 "PIXCfgParser.cpp" +#line 2079 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1969,6 +2089,7 @@ 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; @@ -1979,12 +2100,12 @@ void PIXCfgParser::network_object() { try { // for error handling match(NETWORK_OBJECT); if ( inputState->guessing==0 ) { -#line 493 "pix.g" +#line 495 "pix.g" importer->clearTempVars(); importer->setCurrentLineNumber(LT(0)->getLine()); -#line 1988 "PIXCfgParser.cpp" +#line 2109 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -2016,7 +2137,7 @@ void PIXCfgParser::network_object() { } } if ( inputState->guessing==0 ) { -#line 499 "pix.g" +#line 501 "pix.g" if (a) { @@ -2032,7 +2153,7 @@ void PIXCfgParser::network_object() { consumeUntil(NEWLINE); } -#line 2036 "PIXCfgParser.cpp" +#line 2157 "PIXCfgParser.cpp" } break; } @@ -2060,7 +2181,7 @@ void PIXCfgParser::network_object() { } } if ( inputState->guessing==0 ) { -#line 516 "pix.g" +#line 518 "pix.g" if (h) { @@ -2076,7 +2197,7 @@ void PIXCfgParser::network_object() { consumeUntil(NEWLINE); } -#line 2080 "PIXCfgParser.cpp" +#line 2201 "PIXCfgParser.cpp" } break; } @@ -2086,12 +2207,12 @@ void PIXCfgParser::network_object() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 533 "pix.g" +#line 535 "pix.g" importer->addNamedObjectToObjectGroup(name->getText()); *dbg << " GROUP MEMBER " << name->getLine() << std::endl; -#line 2095 "PIXCfgParser.cpp" +#line 2216 "PIXCfgParser.cpp" } break; } @@ -2113,6 +2234,7 @@ void PIXCfgParser::network_object() { } void PIXCfgParser::object_group_protocol_parameters() { + Tracer traceInOut(this, "object_group_protocol_parameters"); try { // for error handling match(NEWLINE); @@ -2151,17 +2273,18 @@ 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 567 "pix.g" +#line 569 "pix.g" importer->clearTempVars(); importer->setCurrentLineNumber(LT(0)->getLine()); -#line 2165 "PIXCfgParser.cpp" +#line 2288 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -2233,14 +2356,14 @@ void PIXCfgParser::protocol_object() { } } if ( inputState->guessing==0 ) { -#line 573 "pix.g" +#line 575 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->protocol = LT(0)->getText(); importer->addIPServiceToObjectGroup(); *dbg << " GROUP MEMBER " << LT(0)->getText() << " "; -#line 2244 "PIXCfgParser.cpp" +#line 2367 "PIXCfgParser.cpp" } break; } @@ -2248,13 +2371,13 @@ void PIXCfgParser::protocol_object() { { match(ICMP6); if ( inputState->guessing==0 ) { -#line 581 "pix.g" +#line 583 "pix.g" importer->addMessageToLog( "Parser warning: IPv6 import is not supported. "); consumeUntil(NEWLINE); -#line 2258 "PIXCfgParser.cpp" +#line 2381 "PIXCfgParser.cpp" } break; } @@ -2264,12 +2387,12 @@ void PIXCfgParser::protocol_object() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 588 "pix.g" +#line 590 "pix.g" importer->addNamedObjectToObjectGroup(name->getText()); *dbg << " GROUP MEMBER " << name->getLine() << std::endl; -#line 2273 "PIXCfgParser.cpp" +#line 2396 "PIXCfgParser.cpp" } break; } @@ -2291,6 +2414,7 @@ void PIXCfgParser::protocol_object() { } void PIXCfgParser::object_group_icmp_parameters() { + Tracer traceInOut(this, "object_group_icmp_parameters"); try { // for error handling match(NEWLINE); @@ -2329,6 +2453,7 @@ 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; @@ -2336,12 +2461,12 @@ void PIXCfgParser::icmp_object() { try { // for error handling match(ICMP_OBJECT); if ( inputState->guessing==0 ) { -#line 635 "pix.g" +#line 637 "pix.g" importer->clearTempVars(); importer->setCurrentLineNumber(LT(0)->getLine()); -#line 2345 "PIXCfgParser.cpp" +#line 2470 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -2355,11 +2480,11 @@ void PIXCfgParser::icmp_object() { icmp_type = LT(1); match(INT_CONST); if ( inputState->guessing==0 ) { -#line 642 "pix.g" +#line 644 "pix.g" importer->icmp_type = LT(0)->getText(); -#line 2363 "PIXCfgParser.cpp" +#line 2488 "PIXCfgParser.cpp" } break; } @@ -2368,11 +2493,11 @@ void PIXCfgParser::icmp_object() { icmp_word = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 646 "pix.g" +#line 648 "pix.g" importer->icmp_spec = icmp_word->getText(); -#line 2376 "PIXCfgParser.cpp" +#line 2501 "PIXCfgParser.cpp" } break; } @@ -2383,12 +2508,12 @@ void PIXCfgParser::icmp_object() { } } if ( inputState->guessing==0 ) { -#line 650 "pix.g" +#line 652 "pix.g" importer->addICMPServiceToObjectGroup(); *dbg << " SERVICE ICMP " << LT(0)->getText() << " "; -#line 2392 "PIXCfgParser.cpp" +#line 2517 "PIXCfgParser.cpp" } break; } @@ -2398,12 +2523,12 @@ void PIXCfgParser::icmp_object() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 656 "pix.g" +#line 658 "pix.g" importer->addNamedObjectToObjectGroup(name->getText()); *dbg << " GROUP MEMBER " << name->getLine() << std::endl; -#line 2407 "PIXCfgParser.cpp" +#line 2532 "PIXCfgParser.cpp" } break; } @@ -2425,6 +2550,7 @@ void PIXCfgParser::icmp_object() { } void PIXCfgParser::object_group_service_parameters() { + Tracer traceInOut(this, "object_group_service_parameters"); try { // for error handling match(NEWLINE); @@ -2445,6 +2571,11 @@ void PIXCfgParser::object_group_service_parameters() { service_object(); break; } + case PORT_OBJECT: + { + port_object(); + break; + } default: { throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); @@ -2463,6 +2594,7 @@ 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; @@ -2470,12 +2602,12 @@ void PIXCfgParser::service_object() { try { // for error handling match(SERVICE_OBJECT); if ( inputState->guessing==0 ) { -#line 690 "pix.g" +#line 696 "pix.g" importer->clearTempVars(); importer->setCurrentLineNumber(LT(0)->getLine()); -#line 2479 "PIXCfgParser.cpp" +#line 2611 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -2529,14 +2661,14 @@ void PIXCfgParser::service_object() { } } if ( inputState->guessing==0 ) { -#line 696 "pix.g" +#line 702 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->protocol = LT(0)->getText(); importer->addIPServiceToObjectGroup(); *dbg << " GROUP MEMBER " << LT(0)->getText() << " "; -#line 2540 "PIXCfgParser.cpp" +#line 2672 "PIXCfgParser.cpp" } break; } @@ -2562,12 +2694,12 @@ void PIXCfgParser::service_object() { } } if ( inputState->guessing==0 ) { -#line 704 "pix.g" +#line 710 "pix.g" importer->protocol = LT(0)->getText(); *dbg << " SERVICE TCP/UDP" << LT(0)->getText() << " "; -#line 2571 "PIXCfgParser.cpp" +#line 2703 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -2588,6 +2720,7 @@ void PIXCfgParser::service_object() { case DESTINATION: case OBJECT_GROUP: case CRYPTO: + case NO: case CERTIFICATE: case PIX_WORD: case ASA_WORD: @@ -2633,6 +2766,7 @@ void PIXCfgParser::service_object() { case OBJECT: case OBJECT_GROUP: case CRYPTO: + case NO: case CERTIFICATE: case PIX_WORD: case ASA_WORD: @@ -2653,11 +2787,11 @@ void PIXCfgParser::service_object() { } } if ( inputState->guessing==0 ) { -#line 710 "pix.g" +#line 716 "pix.g" importer->addTCPUDPServiceToObjectGroup(); -#line 2661 "PIXCfgParser.cpp" +#line 2795 "PIXCfgParser.cpp" } break; } @@ -2671,11 +2805,11 @@ void PIXCfgParser::service_object() { icmp_type = LT(1); match(INT_CONST); if ( inputState->guessing==0 ) { -#line 717 "pix.g" +#line 723 "pix.g" importer->icmp_type = LT(0)->getText(); -#line 2679 "PIXCfgParser.cpp" +#line 2813 "PIXCfgParser.cpp" } break; } @@ -2684,11 +2818,11 @@ void PIXCfgParser::service_object() { icmp_word = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 721 "pix.g" +#line 727 "pix.g" importer->icmp_spec = icmp_word->getText(); -#line 2692 "PIXCfgParser.cpp" +#line 2826 "PIXCfgParser.cpp" } break; } @@ -2699,12 +2833,12 @@ void PIXCfgParser::service_object() { } } if ( inputState->guessing==0 ) { -#line 725 "pix.g" +#line 731 "pix.g" importer->addICMPServiceToObjectGroup(); *dbg << " SERVICE ICMP " << LT(0)->getText() << " "; -#line 2708 "PIXCfgParser.cpp" +#line 2842 "PIXCfgParser.cpp" } break; } @@ -2714,12 +2848,12 @@ void PIXCfgParser::service_object() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 731 "pix.g" +#line 737 "pix.g" importer->addNamedObjectToObjectGroup(name->getText()); *dbg << " GROUP MEMBER " << name->getLine() << std::endl; -#line 2723 "PIXCfgParser.cpp" +#line 2857 "PIXCfgParser.cpp" } break; } @@ -2740,28 +2874,56 @@ 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 745 "pix.g" + + importer->setCurrentLineNumber(LT(0)->getLine()); + importer->SaveTmpPortToDst(); + importer->addTCPUDPServiceToObjectGroup(); + *dbg << " PORT OBJECT TCP/UDP" << LT(0)->getText() << " "; + +#line 2892 "PIXCfgParser.cpp" + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + if( inputState->guessing == 0 ) { + reportError(ex); + recover(ex,_tokenSet_1); + } else { + throw; + } + } +} + void PIXCfgParser::permit_ext() { + Tracer traceInOut(this, "permit_ext"); try { // for error handling match(PERMIT); if ( inputState->guessing==0 ) { -#line 842 "pix.g" +#line 866 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->newPolicyRule(); importer->action = "permit"; *dbg << LT(1)->getLine() << ":" << " permit "; -#line 2756 "PIXCfgParser.cpp" +#line 2918 "PIXCfgParser.cpp" } rule_ext(); match(NEWLINE); if ( inputState->guessing==0 ) { -#line 849 "pix.g" +#line 873 "pix.g" importer->pushRule(); -#line 2765 "PIXCfgParser.cpp" +#line 2927 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -2775,27 +2937,28 @@ void PIXCfgParser::permit_ext() { } void PIXCfgParser::deny_ext() { + Tracer traceInOut(this, "deny_ext"); try { // for error handling match(DENY); if ( inputState->guessing==0 ) { -#line 855 "pix.g" +#line 879 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->newPolicyRule(); importer->action = "deny"; *dbg << LT(1)->getLine() << ":" << " deny "; -#line 2790 "PIXCfgParser.cpp" +#line 2953 "PIXCfgParser.cpp" } rule_ext(); match(NEWLINE); if ( inputState->guessing==0 ) { -#line 862 "pix.g" +#line 886 "pix.g" importer->pushRule(); -#line 2799 "PIXCfgParser.cpp" +#line 2962 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -2809,11 +2972,12 @@ void PIXCfgParser::deny_ext() { } void PIXCfgParser::remark() { + Tracer traceInOut(this, "remark"); try { // for error handling match(REMARK); if ( inputState->guessing==0 ) { -#line 1356 "pix.g" +#line 1380 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); *dbg << LT(1)->getLine() << ":"; @@ -2827,7 +2991,7 @@ void PIXCfgParser::remark() { *dbg << " REMARK " << rem << std::endl; //consumeUntil(NEWLINE); -#line 2831 "PIXCfgParser.cpp" +#line 2995 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -2841,6 +3005,7 @@ void PIXCfgParser::remark() { } void PIXCfgParser::rule_ext() { + Tracer traceInOut(this, "rule_ext"); try { // for error handling { @@ -2864,15 +3029,15 @@ void PIXCfgParser::rule_ext() { ip_protocols(); hostaddr_ext(); if ( inputState->guessing==0 ) { -#line 872 "pix.g" +#line 896 "pix.g" importer->SaveTmpAddrToSrc(); *dbg << "(src) "; -#line 2870 "PIXCfgParser.cpp" +#line 3035 "PIXCfgParser.cpp" } hostaddr_ext(); if ( inputState->guessing==0 ) { -#line 873 "pix.g" +#line 897 "pix.g" importer->SaveTmpAddrToDst(); *dbg << "(dst) "; -#line 2876 "PIXCfgParser.cpp" +#line 3041 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -2937,24 +3102,24 @@ void PIXCfgParser::rule_ext() { { match(ICMP); if ( inputState->guessing==0 ) { -#line 879 "pix.g" +#line 903 "pix.g" importer->protocol = LT(0)->getText(); *dbg << "protocol " << LT(0)->getText() << " "; -#line 2946 "PIXCfgParser.cpp" +#line 3111 "PIXCfgParser.cpp" } hostaddr_ext(); if ( inputState->guessing==0 ) { -#line 883 "pix.g" +#line 907 "pix.g" importer->SaveTmpAddrToSrc(); *dbg << "(src) "; -#line 2952 "PIXCfgParser.cpp" +#line 3117 "PIXCfgParser.cpp" } hostaddr_ext(); if ( inputState->guessing==0 ) { -#line 884 "pix.g" +#line 908 "pix.g" importer->SaveTmpAddrToDst(); *dbg << "(dst) "; -#line 2958 "PIXCfgParser.cpp" +#line 3123 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -3059,18 +3224,18 @@ void PIXCfgParser::rule_ext() { } } if ( inputState->guessing==0 ) { -#line 891 "pix.g" +#line 915 "pix.g" importer->protocol = LT(0)->getText(); *dbg << "protocol " << LT(0)->getText() << " "; -#line 3068 "PIXCfgParser.cpp" +#line 3233 "PIXCfgParser.cpp" } hostaddr_ext(); if ( inputState->guessing==0 ) { -#line 895 "pix.g" +#line 919 "pix.g" importer->SaveTmpAddrToSrc(); *dbg << "(src) "; -#line 3074 "PIXCfgParser.cpp" +#line 3239 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -3082,9 +3247,9 @@ void PIXCfgParser::rule_ext() { { xoperator(); if ( inputState->guessing==0 ) { -#line 896 "pix.g" +#line 920 "pix.g" importer->SaveTmpPortToSrc(); -#line 3088 "PIXCfgParser.cpp" +#line 3253 "PIXCfgParser.cpp" } break; } @@ -3102,9 +3267,9 @@ void PIXCfgParser::rule_ext() { } hostaddr_ext(); if ( inputState->guessing==0 ) { -#line 897 "pix.g" +#line 921 "pix.g" importer->SaveTmpAddrToDst(); *dbg << "(dst) "; -#line 3108 "PIXCfgParser.cpp" +#line 3273 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -3116,9 +3281,9 @@ void PIXCfgParser::rule_ext() { { xoperator(); if ( inputState->guessing==0 ) { -#line 898 "pix.g" +#line 922 "pix.g" importer->SaveTmpPortToDst(); -#line 3122 "PIXCfgParser.cpp" +#line 3287 "PIXCfgParser.cpp" } break; } @@ -3224,34 +3389,11 @@ void PIXCfgParser::rule_ext() { } } if ( inputState->guessing==0 ) { -#line 904 "pix.g" +#line 928 "pix.g" *dbg << std::endl; -#line 3232 "PIXCfgParser.cpp" - } - } - catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { - if( inputState->guessing == 0 ) { - reportError(ex); - recover(ex,_tokenSet_7); - } else { - throw; - } - } -} - -void PIXCfgParser::ip_protocols() { - - try { // for error handling - ip_protocol_names(); - if ( inputState->guessing==0 ) { -#line 911 "pix.g" - - importer->protocol = LT(0)->getText(); - *dbg << "protocol " << LT(0)->getText() << " "; - -#line 3255 "PIXCfgParser.cpp" +#line 3397 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -3264,7 +3406,32 @@ void PIXCfgParser::ip_protocols() { } } +void PIXCfgParser::ip_protocols() { + Tracer traceInOut(this, "ip_protocols"); + + try { // for error handling + ip_protocol_names(); + if ( inputState->guessing==0 ) { +#line 935 "pix.g" + + importer->protocol = LT(0)->getText(); + *dbg << "protocol " << LT(0)->getText() << " "; + +#line 3421 "PIXCfgParser.cpp" + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + if( inputState->guessing == 0 ) { + reportError(ex); + recover(ex,_tokenSet_9); + } else { + throw; + } + } +} + void PIXCfgParser::hostaddr_ext() { + Tracer traceInOut(this, "hostaddr_ext"); 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; @@ -3279,13 +3446,13 @@ void PIXCfgParser::hostaddr_ext() { match(IPV4); } if ( inputState->guessing==0 ) { -#line 974 "pix.g" +#line 998 "pix.g" importer->tmp_a = h->getText(); importer->tmp_nm = "255.255.255.255"; *dbg << h->getText() << "/255.255.255.255"; -#line 3289 "PIXCfgParser.cpp" +#line 3456 "PIXCfgParser.cpp" } break; } @@ -3298,13 +3465,13 @@ void PIXCfgParser::hostaddr_ext() { match(IPV4); } if ( inputState->guessing==0 ) { -#line 981 "pix.g" +#line 1005 "pix.g" importer->tmp_a = a->getText(); importer->tmp_nm = m->getText(); *dbg << a->getText() << "/" << m->getText(); -#line 3308 "PIXCfgParser.cpp" +#line 3475 "PIXCfgParser.cpp" } break; } @@ -3312,13 +3479,13 @@ void PIXCfgParser::hostaddr_ext() { { match(ANY); if ( inputState->guessing==0 ) { -#line 988 "pix.g" +#line 1012 "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 3322 "PIXCfgParser.cpp" +#line 3489 "PIXCfgParser.cpp" } break; } @@ -3328,32 +3495,6 @@ void PIXCfgParser::hostaddr_ext() { } } } - catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { - if( inputState->guessing == 0 ) { - reportError(ex); - recover(ex,_tokenSet_9); - } else { - throw; - } - } -} - -void PIXCfgParser::time_range() { - ANTLR_USE_NAMESPACE(antlr)RefToken tr_name = ANTLR_USE_NAMESPACE(antlr)nullToken; - - try { // for error handling - match(TIME_RANGE); - tr_name = LT(1); - match(WORD); - if ( inputState->guessing==0 ) { -#line 1040 "pix.g" - - importer->time_range_name = tr_name->getText(); - *dbg << "time_range " << tr_name->getText() << " "; - -#line 3355 "PIXCfgParser.cpp" - } - } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); @@ -3364,17 +3505,21 @@ void PIXCfgParser::time_range() { } } -void PIXCfgParser::fragments() { +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 - match(FRAGMENTS); + match(TIME_RANGE); + tr_name = LT(1); + match(WORD); if ( inputState->guessing==0 ) { -#line 1033 "pix.g" +#line 1064 "pix.g" - importer->fragments = true; - *dbg << "fragments "; + importer->time_range_name = tr_name->getText(); + *dbg << "time_range " << tr_name->getText() << " "; -#line 3378 "PIXCfgParser.cpp" +#line 3523 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -3387,7 +3532,32 @@ void PIXCfgParser::fragments() { } } +void PIXCfgParser::fragments() { + Tracer traceInOut(this, "fragments"); + + try { // for error handling + match(FRAGMENTS); + if ( inputState->guessing==0 ) { +#line 1057 "pix.g" + + importer->fragments = true; + *dbg << "fragments "; + +#line 3547 "PIXCfgParser.cpp" + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + if( inputState->guessing == 0 ) { + reportError(ex); + recover(ex,_tokenSet_12); + } else { + throw; + } + } +} + void PIXCfgParser::log() { + Tracer traceInOut(this, "log"); try { // for error handling { @@ -3409,18 +3579,18 @@ void PIXCfgParser::log() { } } if ( inputState->guessing==0 ) { -#line 1019 "pix.g" +#line 1043 "pix.g" importer->logging = true; *dbg << "logging "; -#line 3418 "PIXCfgParser.cpp" +#line 3588 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_7); + recover(ex,_tokenSet_8); } else { throw; } @@ -3428,6 +3598,7 @@ 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; @@ -3444,7 +3615,7 @@ void PIXCfgParser::icmp_spec() { match(INT_CONST); } if ( inputState->guessing==0 ) { -#line 919 "pix.g" +#line 943 "pix.g" importer->icmp_type = icmp_type->getText(); importer->icmp_code = icmp_code->getText(); @@ -3452,7 +3623,7 @@ void PIXCfgParser::icmp_spec() { *dbg << icmp_type->getText() << " " << icmp_code->getText() << " "; -#line 3456 "PIXCfgParser.cpp" +#line 3627 "PIXCfgParser.cpp" } break; } @@ -3461,12 +3632,12 @@ void PIXCfgParser::icmp_spec() { icmp_word = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 928 "pix.g" +#line 952 "pix.g" importer->icmp_spec = icmp_word->getText(); *dbg << icmp_word->getText() << " "; -#line 3470 "PIXCfgParser.cpp" +#line 3641 "PIXCfgParser.cpp" } break; } @@ -3480,7 +3651,7 @@ void PIXCfgParser::icmp_spec() { catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_12); + recover(ex,_tokenSet_13); } else { throw; } @@ -3488,22 +3659,23 @@ void PIXCfgParser::icmp_spec() { } void PIXCfgParser::established() { + Tracer traceInOut(this, "established"); try { // for error handling match(ESTABLISHED); if ( inputState->guessing==0 ) { -#line 1026 "pix.g" +#line 1050 "pix.g" importer->established = true; *dbg << "established "; -#line 3501 "PIXCfgParser.cpp" +#line 3673 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_12); + recover(ex,_tokenSet_13); } else { throw; } @@ -3511,6 +3683,7 @@ void PIXCfgParser::established() { } void PIXCfgParser::single_port_op() { + Tracer traceInOut(this, "single_port_op"); try { // for error handling { @@ -3542,19 +3715,19 @@ void PIXCfgParser::single_port_op() { } } if ( inputState->guessing==0 ) { -#line 939 "pix.g" +#line 963 "pix.g" importer->tmp_port_op = LT(0)->getText(); *dbg << LT(0)->getText() << " "; -#line 3551 "PIXCfgParser.cpp" +#line 3724 "PIXCfgParser.cpp" } port_spec(); } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_6); + recover(ex,_tokenSet_7); } else { throw; } @@ -3562,23 +3735,24 @@ 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 954 "pix.g" +#line 978 "pix.g" importer->tmp_port_op = "range"; *dbg << "range "; -#line 3576 "PIXCfgParser.cpp" +#line 3750 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_6); + recover(ex,_tokenSet_7); } else { throw; } @@ -3586,6 +3760,7 @@ void PIXCfgParser::port_range() { } void PIXCfgParser::port_spec() { + Tracer traceInOut(this, "port_spec"); try { // for error handling { @@ -3607,18 +3782,18 @@ void PIXCfgParser::port_spec() { } } if ( inputState->guessing==0 ) { -#line 947 "pix.g" +#line 971 "pix.g" importer->tmp_port_spec = (std::string(" ") + LT(0)->getText()); *dbg << LT(0)->getText() << " " << importer->tmp_port_spec; -#line 3616 "PIXCfgParser.cpp" +#line 3791 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_6); + recover(ex,_tokenSet_7); } else { throw; } @@ -3626,6 +3801,7 @@ 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; @@ -3673,7 +3849,7 @@ void PIXCfgParser::pair_of_ports_spec() { } } if ( inputState->guessing==0 ) { -#line 961 "pix.g" +#line 985 "pix.g" importer->tmp_port_spec = ""; if (s1) importer->tmp_port_spec += s1->getText(); @@ -3683,13 +3859,13 @@ void PIXCfgParser::pair_of_ports_spec() { if (e2) importer->tmp_port_spec += e2->getText(); *dbg << "pair of ports: " << importer->tmp_port_spec; -#line 3687 "PIXCfgParser.cpp" +#line 3863 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_6); + recover(ex,_tokenSet_7); } else { throw; } @@ -3697,6 +3873,7 @@ void PIXCfgParser::pair_of_ports_spec() { } void PIXCfgParser::hostaddr_std() { + Tracer traceInOut(this, "hostaddr_std"); 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; @@ -3708,13 +3885,13 @@ void PIXCfgParser::hostaddr_std() { match(IPV4); } if ( inputState->guessing==0 ) { -#line 997 "pix.g" +#line 1021 "pix.g" importer->tmp_a = h->getText(); importer->tmp_nm = "0.0.0.0"; *dbg << h->getText() << "/0.0.0.0"; -#line 3718 "PIXCfgParser.cpp" +#line 3895 "PIXCfgParser.cpp" } } else if ((LA(1) == IPV4) && (LA(2) == IPV4)) { @@ -3725,25 +3902,25 @@ void PIXCfgParser::hostaddr_std() { match(IPV4); } if ( inputState->guessing==0 ) { -#line 1004 "pix.g" +#line 1028 "pix.g" importer->tmp_a = a->getText(); importer->tmp_nm = m->getText(); *dbg << a->getText() << "/" << m->getText(); -#line 3735 "PIXCfgParser.cpp" +#line 3912 "PIXCfgParser.cpp" } } else if ((LA(1) == ANY)) { match(ANY); if ( inputState->guessing==0 ) { -#line 1011 "pix.g" +#line 1035 "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 3747 "PIXCfgParser.cpp" +#line 3924 "PIXCfgParser.cpp" } } else { @@ -3762,15 +3939,16 @@ void PIXCfgParser::hostaddr_std() { } void PIXCfgParser::interface_parameters() { + Tracer traceInOut(this, "interface_parameters"); try { // for error handling match(NEWLINE); if ( inputState->guessing==0 ) { -#line 1120 "pix.g" +#line 1144 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); -#line 3774 "PIXCfgParser.cpp" +#line 3952 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -3842,7 +4020,7 @@ void PIXCfgParser::interface_parameters() { catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_7); + recover(ex,_tokenSet_8); } else { throw; } @@ -3850,6 +4028,7 @@ void PIXCfgParser::interface_parameters() { } void PIXCfgParser::intf_address() { + Tracer traceInOut(this, "intf_address"); try { // for error handling match(IP); @@ -3877,7 +4056,7 @@ void PIXCfgParser::intf_address() { catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_7); + recover(ex,_tokenSet_8); } else { throw; } @@ -3885,6 +4064,7 @@ 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 @@ -3892,18 +4072,18 @@ void PIXCfgParser::vlan_interface() { vlan_id = LT(1); match(INT_CONST); if ( inputState->guessing==0 ) { -#line 1145 "pix.g" +#line 1169 "pix.g" importer->setInterfaceVlanId(vlan_id->getText()); *dbg << " VLAN: " << vlan_id->getText() << std::endl; -#line 3901 "PIXCfgParser.cpp" +#line 4081 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_7); + recover(ex,_tokenSet_8); } else { throw; } @@ -3911,6 +4091,7 @@ 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 @@ -3918,18 +4099,18 @@ void PIXCfgParser::sec_level() { sec_level = LT(1); match(INT_CONST); if ( inputState->guessing==0 ) { -#line 1197 "pix.g" +#line 1221 "pix.g" importer->setInterfaceSecurityLevel(sec_level->getText()); *dbg << "SEC_LEVEL: " << sec_level->getText() << std::endl; -#line 3927 "PIXCfgParser.cpp" +#line 4108 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_7); + recover(ex,_tokenSet_8); } else { throw; } @@ -3937,6 +4118,7 @@ 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; @@ -3968,7 +4150,7 @@ void PIXCfgParser::nameif() { } } if ( inputState->guessing==0 ) { -#line 1220 "pix.g" +#line 1244 "pix.g" std::string label = (intf_label) ? intf_label->getText() : ""; std::string seclevel = (sec_level) ? sec_level->getText() : ""; @@ -3976,13 +4158,13 @@ void PIXCfgParser::nameif() { *dbg << " NAMEIF: " << p_intf->getText() << label << seclevel << std::endl; -#line 3980 "PIXCfgParser.cpp" +#line 4162 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_7); + recover(ex,_tokenSet_8); } else { throw; } @@ -3990,11 +4172,12 @@ void PIXCfgParser::nameif() { } void PIXCfgParser::interface_description() { + Tracer traceInOut(this, "interface_description"); try { // for error handling match(DESCRIPTION); if ( inputState->guessing==0 ) { -#line 1232 "pix.g" +#line 1256 "pix.g" *dbg << LT(1)->getLine() << ":"; std::string descr; @@ -4007,13 +4190,13 @@ void PIXCfgParser::interface_description() { *dbg << " DESCRIPTION " << descr << std::endl; //consumeUntil(NEWLINE); -#line 4011 "PIXCfgParser.cpp" +#line 4194 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_7); + recover(ex,_tokenSet_8); } else { throw; } @@ -4021,6 +4204,7 @@ 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 @@ -4030,18 +4214,18 @@ void PIXCfgParser::switchport() { vlan_num = LT(1); match(INT_CONST); if ( inputState->guessing==0 ) { -#line 1344 "pix.g" +#line 1368 "pix.g" importer->addMessageToLog("Switch port vlan " + vlan_num->getText()); *dbg << "Switch port vlan " << vlan_num->getText() << std::endl; -#line 4039 "PIXCfgParser.cpp" +#line 4223 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_7); + recover(ex,_tokenSet_8); } else { throw; } @@ -4049,23 +4233,24 @@ void PIXCfgParser::switchport() { } void PIXCfgParser::shutdown() { + Tracer traceInOut(this, "shutdown"); try { // for error handling match(SHUTDOWN); if ( inputState->guessing==0 ) { -#line 1247 "pix.g" +#line 1271 "pix.g" importer->ignoreCurrentInterface(); *dbg<< LT(1)->getLine() << ":" << " INTERFACE SHUTDOWN " << std::endl; -#line 4063 "PIXCfgParser.cpp" +#line 4248 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_7); + recover(ex,_tokenSet_8); } else { throw; } @@ -4073,6 +4258,7 @@ void PIXCfgParser::shutdown() { } void PIXCfgParser::interface_no_commands() { + Tracer traceInOut(this, "interface_no_commands"); try { // for error handling match(NO); @@ -4110,19 +4296,19 @@ void PIXCfgParser::interface_no_commands() { } } if ( inputState->guessing==0 ) { -#line 1189 "pix.g" +#line 1213 "pix.g" *dbg << " INTERFACE \"NO\" COMMAND: " << LT(0)->getText() << std::endl; consumeUntil(NEWLINE); -#line 4120 "PIXCfgParser.cpp" +#line 4306 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_7); + recover(ex,_tokenSet_8); } else { throw; } @@ -4130,6 +4316,7 @@ void PIXCfgParser::interface_no_commands() { } void PIXCfgParser::unsupported_interface_commands() { + Tracer traceInOut(this, "unsupported_interface_commands"); try { // for error handling { @@ -4211,19 +4398,19 @@ void PIXCfgParser::unsupported_interface_commands() { } } if ( inputState->guessing==0 ) { -#line 1181 "pix.g" +#line 1205 "pix.g" *dbg << " UNSUPPORTED INTERFACE COMMAND: " << LT(0)->getText() << std::endl; consumeUntil(NEWLINE); -#line 4221 "PIXCfgParser.cpp" +#line 4408 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_7); + recover(ex,_tokenSet_8); } else { throw; } @@ -4231,6 +4418,7 @@ 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)) { @@ -4247,7 +4435,7 @@ void PIXCfgParser::v6_ip_address() { catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_7); + recover(ex,_tokenSet_8); } else { throw; } @@ -4255,6 +4443,7 @@ void PIXCfgParser::v6_ip_address() { } void PIXCfgParser::v7_ip_address() { + Tracer traceInOut(this, "v7_ip_address"); try { // for error handling switch ( LA(1)) { @@ -4277,7 +4466,7 @@ void PIXCfgParser::v7_ip_address() { catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_7); + recover(ex,_tokenSet_8); } else { throw; } @@ -4285,6 +4474,7 @@ 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; @@ -4294,7 +4484,7 @@ void PIXCfgParser::v6_dhcp_address() { dhcp = LT(1); match(DHCP); if ( inputState->guessing==0 ) { -#line 1282 "pix.g" +#line 1306 "pix.g" std::string label = lbl->getText(); std::string addr = dhcp->getText(); @@ -4305,13 +4495,13 @@ void PIXCfgParser::v6_dhcp_address() { // which we do not support consumeUntil(NEWLINE); -#line 4309 "PIXCfgParser.cpp" +#line 4499 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_7); + recover(ex,_tokenSet_8); } else { throw; } @@ -4319,6 +4509,7 @@ 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; @@ -4331,7 +4522,7 @@ void PIXCfgParser::v6_static_address() { m = LT(1); match(IPV4); if ( inputState->guessing==0 ) { -#line 1295 "pix.g" +#line 1319 "pix.g" std::string label = lbl->getText(); std::string addr = a->getText(); @@ -4342,13 +4533,13 @@ void PIXCfgParser::v6_static_address() { // in case there are some other parameters after address and netmask consumeUntil(NEWLINE); -#line 4346 "PIXCfgParser.cpp" +#line 4537 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_7); + recover(ex,_tokenSet_8); } else { throw; } @@ -4356,13 +4547,14 @@ 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 1312 "pix.g" +#line 1336 "pix.g" std::string addr = dhcp->getText(); importer->addInterfaceAddress(addr, ""); @@ -4370,13 +4562,13 @@ void PIXCfgParser::v7_dhcp_address() { << " INTRFACE ADDRESS: " << addr << std::endl; consumeUntil(NEWLINE); -#line 4374 "PIXCfgParser.cpp" +#line 4566 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_7); + recover(ex,_tokenSet_8); } else { throw; } @@ -4384,6 +4576,7 @@ 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; @@ -4412,7 +4605,7 @@ void PIXCfgParser::v7_static_address() { } } if ( inputState->guessing==0 ) { -#line 1323 "pix.g" +#line 1347 "pix.g" std::string addr = a->getText(); std::string netm = m->getText(); @@ -4429,13 +4622,13 @@ void PIXCfgParser::v7_static_address() { } consumeUntil(NEWLINE); -#line 4433 "PIXCfgParser.cpp" +#line 4626 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { if( inputState->guessing == 0 ) { reportError(ex); - recover(ex,_tokenSet_7); + recover(ex,_tokenSet_8); } else { throw; } @@ -4443,6 +4636,7 @@ void PIXCfgParser::v7_static_address() { } void PIXCfgParser::access_group_by_name() { + Tracer traceInOut(this, "access_group_by_name"); ANTLR_USE_NAMESPACE(antlr)RefToken acln = 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; @@ -4457,7 +4651,7 @@ void PIXCfgParser::access_group_by_name() { intf_label = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 1374 "pix.g" +#line 1398 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->setInterfaceAndDirectionForRuleSet( @@ -4469,7 +4663,7 @@ void PIXCfgParser::access_group_by_name() { << " " << intf_label->getText() << " " << dir->getText() << std::endl; -#line 4473 "PIXCfgParser.cpp" +#line 4667 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -4536,7 +4730,9 @@ const char* PIXCfgParser::tokenNames[] = { "\"icmp-object\"", "\"icmp-type\"", "\"service-object\"", + "\"port-object\"", "\"crypto\"", + "\"no\"", "\"certificate\"", "\"PIX\"", "\"ASA\"", @@ -4560,6 +4756,7 @@ const char* PIXCfgParser::tokenNames[] = { "\"controller\"", "\"interface\"", "LINE_COMMENT", + "\"exit\"", "\"vlan\"", "\"speed\"", "\"duplex\"", @@ -4572,7 +4769,6 @@ const char* PIXCfgParser::tokenNames[] = { "\"multicast\"", "PPPOE", "\"rip\"", - "\"no\"", "\"nameif\"", "\"security-level\"", "\"shutdown\"", @@ -4583,7 +4779,6 @@ const char* PIXCfgParser::tokenNames[] = { "\"access\"", "\"remark\"", "\"access-group\"", - "\"exit\"", "COLON_COMMENT", "\"secondary\"", "\"setroute\"", @@ -4628,55 +4823,58 @@ const char* PIXCfgParser::tokenNames[] = { const unsigned long PIXCfgParser::_tokenSet_0_data_[] = { 2UL, 0UL, 0UL, 0UL, 0UL, 0UL }; // EOF const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_0(_tokenSet_0_data_,6); -const unsigned long PIXCfgParser::_tokenSet_1_data_[] = { 134222706UL, 87819264UL, 896UL, 6UL, 0UL, 0UL, 0UL, 0UL }; +const unsigned long PIXCfgParser::_tokenSet_1_data_[] = { 134222706UL, 351798272UL, 7680UL, 8UL, 0UL, 0UL, 0UL, 0UL }; // EOF NEWLINE "quit" "ip" "names" "name" WORD "object" "object-group" -// "crypto" "certificate" "PIX" "ASA" "hostname" "access-list" "controller" +// "crypto" "no" "certificate" "PIX" "ASA" "hostname" "access-list" "controller" // "interface" LINE_COMMENT "exit" COLON_COMMENT const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_1(_tokenSet_1_data_,8); -const unsigned long PIXCfgParser::_tokenSet_2_data_[] = { 1094844480UL, 0UL, 603978752UL, 0UL, 0UL, 0UL, 0UL, 0UL }; -// "ip" "igmp" "ospf" "pim" "description" "vlan" "speed" "duplex" "ddns" -// "forward" "delay" "hold-time" "ipv6" "mac-address" "multicast" PPPOE -// "rip" "no" "nameif" "security-level" "shutdown" "switchport" +const unsigned long PIXCfgParser::_tokenSet_2_data_[] = { 1094844480UL, 1048576UL, 2415910912UL, 0UL, 0UL, 0UL, 0UL, 0UL }; +// "ip" "igmp" "ospf" "pim" "description" "no" "vlan" "speed" "duplex" +// "ddns" "forward" "delay" "hold-time" "ipv6" "mac-address" "multicast" +// PPPOE "rip" "nameif" "security-level" "shutdown" "switchport" const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_2(_tokenSet_2_data_,8); -const unsigned long PIXCfgParser::_tokenSet_3_data_[] = { 2281707378UL, 87819264UL, 898UL, 6UL, 0UL, 0UL, 0UL, 0UL }; +const unsigned long PIXCfgParser::_tokenSet_3_data_[] = { 1073741824UL, 395264UL, 0UL, 0UL, 0UL, 0UL }; +// "description" "group-object" "service-object" "port-object" +const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_3(_tokenSet_3_data_,6); +const unsigned long PIXCfgParser::_tokenSet_4_data_[] = { 2281707378UL, 351798272UL, 7688UL, 8UL, 0UL, 0UL, 0UL, 0UL }; // EOF NEWLINE "quit" "ip" "names" "name" IPV4 WORD "object" "host" "object-group" -// "crypto" "certificate" "PIX" "ASA" "hostname" "access-list" "any" "controller" -// "interface" LINE_COMMENT "exit" COLON_COMMENT -const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_3(_tokenSet_3_data_,8); -const unsigned long PIXCfgParser::_tokenSet_4_data_[] = { 134209600UL, 16UL, 0UL, 0UL, 0UL, 0UL }; +// "crypto" "no" "certificate" "PIX" "ASA" "hostname" "access-list" "any" +// "controller" "interface" LINE_COMMENT "exit" COLON_COMMENT +const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_4(_tokenSet_4_data_,8); +const unsigned long PIXCfgParser::_tokenSet_5_data_[] = { 134209600UL, 16UL, 0UL, 0UL, 0UL, 0UL }; // "ip" "ah" "eigrp" "esp" "gre" "igmp" "igrp" "ipinip" IPSEC "nos" "ospf" // "pcp" "pim" PPTP "snp" INT_CONST -const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_4(_tokenSet_4_data_,6); -const unsigned long PIXCfgParser::_tokenSet_5_data_[] = { 134222706UL, 3845916161UL, 897UL, 6UL, 0UL, 0UL, 0UL, 0UL }; +const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_5(_tokenSet_5_data_,6); +const unsigned long PIXCfgParser::_tokenSet_6_data_[] = { 134222706UL, 2499282433UL, 7687UL, 8UL, 0UL, 0UL, 0UL, 0UL }; // EOF NEWLINE "quit" "ip" "names" "name" WORD "object" "range" "destination" -// "object-group" "crypto" "certificate" "PIX" "ASA" "hostname" "access-list" +// "object-group" "crypto" "no" "certificate" "PIX" "ASA" "hostname" "access-list" // "eq" "gt" "lt" "neq" "controller" "interface" LINE_COMMENT "exit" COLON_COMMENT -const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_5(_tokenSet_5_data_,8); -const unsigned long PIXCfgParser::_tokenSet_6_data_[] = { 2281707378UL, 3845916161UL, 1023UL, 6UL, 0UL, 0UL, 0UL, 0UL }; -// EOF NEWLINE "quit" "ip" "names" "name" IPV4 WORD "object" "host" "range" -// "destination" "object-group" "crypto" "certificate" "PIX" "ASA" "hostname" -// "access-list" "eq" "gt" "lt" "neq" "any" "log" "log-input" "established" -// "fragments" "time-range" "controller" "interface" LINE_COMMENT "exit" -// COLON_COMMENT const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_6(_tokenSet_6_data_,8); -const unsigned long PIXCfgParser::_tokenSet_7_data_[] = { 16UL, 0UL, 0UL, 0UL, 0UL, 0UL }; +const unsigned long PIXCfgParser::_tokenSet_7_data_[] = { 2281707378UL, 2499282433UL, 8191UL, 8UL, 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" "any" "log" "log-input" +// "established" "fragments" "time-range" "controller" "interface" LINE_COMMENT +// "exit" COLON_COMMENT +const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_7(_tokenSet_7_data_,8); +const unsigned long PIXCfgParser::_tokenSet_8_data_[] = { 16UL, 0UL, 0UL, 0UL, 0UL, 0UL }; // NEWLINE -const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_7(_tokenSet_7_data_,6); -const unsigned long PIXCfgParser::_tokenSet_8_data_[] = { 2147484672UL, 0UL, 2UL, 0UL, 0UL, 0UL, 0UL, 0UL }; +const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_8(_tokenSet_8_data_,6); +const unsigned long PIXCfgParser::_tokenSet_9_data_[] = { 2147484672UL, 0UL, 8UL, 0UL, 0UL, 0UL, 0UL, 0UL }; // IPV4 "host" "any" -const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_8(_tokenSet_8_data_,8); -const unsigned long PIXCfgParser::_tokenSet_9_data_[] = { 2147488784UL, 3758096401UL, 127UL, 0UL, 0UL, 0UL, 0UL, 0UL }; +const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_9(_tokenSet_9_data_,8); +const unsigned long PIXCfgParser::_tokenSet_10_data_[] = { 2147488784UL, 2147483665UL, 511UL, 0UL, 0UL, 0UL, 0UL, 0UL }; // NEWLINE IPV4 WORD "host" "range" INT_CONST "eq" "gt" "lt" "neq" "any" // "log" "log-input" "established" "fragments" "time-range" -const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_9(_tokenSet_9_data_,8); -const unsigned long PIXCfgParser::_tokenSet_10_data_[] = { 16UL, 0UL, 44UL, 0UL, 0UL, 0UL, 0UL, 0UL }; -// NEWLINE "log" "log-input" "fragments" const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_10(_tokenSet_10_data_,8); -const unsigned long PIXCfgParser::_tokenSet_11_data_[] = { 16UL, 0UL, 12UL, 0UL, 0UL, 0UL, 0UL, 0UL }; -// NEWLINE "log" "log-input" +const unsigned long PIXCfgParser::_tokenSet_11_data_[] = { 16UL, 0UL, 176UL, 0UL, 0UL, 0UL, 0UL, 0UL }; +// NEWLINE "log" "log-input" "fragments" const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_11(_tokenSet_11_data_,8); -const unsigned long PIXCfgParser::_tokenSet_12_data_[] = { 16UL, 0UL, 108UL, 0UL, 0UL, 0UL, 0UL, 0UL }; -// NEWLINE "log" "log-input" "fragments" "time-range" +const unsigned long PIXCfgParser::_tokenSet_12_data_[] = { 16UL, 0UL, 48UL, 0UL, 0UL, 0UL, 0UL, 0UL }; +// NEWLINE "log" "log-input" const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_12(_tokenSet_12_data_,8); +const unsigned long PIXCfgParser::_tokenSet_13_data_[] = { 16UL, 0UL, 432UL, 0UL, 0UL, 0UL, 0UL, 0UL }; +// NEWLINE "log" "log-input" "fragments" "time-range" +const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_13(_tokenSet_13_data_,8); diff --git a/src/parsers/PIXCfgParser.hpp b/src/parsers/PIXCfgParser.hpp index 64ac5f519..e8362b193 100644 --- a/src/parsers/PIXCfgParser.hpp +++ b/src/parsers/PIXCfgParser.hpp @@ -108,6 +108,7 @@ public: public: void object_group_icmp_8_0(); public: void object_group_icmp_8_3(); public: void crypto(); + public: void no_commands(); public: void unknown_command(); public: void ip_protocol_names(); public: void named_object_network_parameters(); @@ -135,6 +136,7 @@ public: public: void icmp_object(); public: void object_group_service_parameters(); public: void service_object(); + public: void port_object(); public: void permit_ext(); public: void deny_ext(); public: void remark(); @@ -179,10 +181,10 @@ protected: private: static const char* tokenNames[]; #ifndef NO_STATIC_CONSTS - static const int NUM_TOKENS = 136; + static const int NUM_TOKENS = 137; #else enum { - NUM_TOKENS = 136 + NUM_TOKENS = 137 }; #endif @@ -212,6 +214,8 @@ private: static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_11; static const unsigned long _tokenSet_12_data_[]; static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_12; + static const unsigned long _tokenSet_13_data_[]; + static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_13; }; #endif /*INC_PIXCfgParser_hpp_*/ diff --git a/src/parsers/PIXCfgParserTokenTypes.hpp b/src/parsers/PIXCfgParserTokenTypes.hpp index 0c1d8bf66..627bd41ca 100644 --- a/src/parsers/PIXCfgParserTokenTypes.hpp +++ b/src/parsers/PIXCfgParserTokenTypes.hpp @@ -58,92 +58,93 @@ struct CUSTOM_API PIXCfgParserTokenTypes { ICMP_OBJECT = 47, ICMP_TYPE = 48, SERVICE_OBJECT = 49, - CRYPTO = 50, - CERTIFICATE = 51, - PIX_WORD = 52, - ASA_WORD = 53, - VERSION_WORD = 54, - NUMBER = 55, - HOSTNAME = 56, - STRING = 57, - ACCESS_LIST = 58, - PERMIT = 59, - DENY = 60, - P_EQ = 61, - P_GT = 62, - P_LT = 63, - P_NEQ = 64, - ANY = 65, - LOG = 66, - LOG_INPUT = 67, - ESTABLISHED = 68, - FRAGMENTS = 69, - TIME_RANGE = 70, - CONTROLLER = 71, - INTRFACE = 72, - LINE_COMMENT = 73, - VLAN = 74, - SPEED = 75, - DUPLEX = 76, - DDNS = 77, - FORWARD = 78, - DELAY = 79, - HOLD_TIME = 80, - IPV6_C = 81, - MAC_ADDRESS = 82, - MULTICAST = 83, - PPPOE = 84, - RIP = 85, - NO = 86, - NAMEIF = 87, - SEC_LEVEL = 88, - SHUTDOWN = 89, - ADDRESS = 90, - DHCP = 91, - STANDBY = 92, - SWITCHPORT = 93, - ACCESS = 94, - REMARK = 95, - ACCESS_GROUP = 96, - EXIT = 97, - COLON_COMMENT = 98, - SECONDARY = 99, - SETROUTE = 100, - EXTENDED = 101, - STANDARD = 102, - Whitespace = 103, - HEX_CONST = 104, - NEG_INT_CONST = 105, - DIGIT = 106, - HEXDIGIT = 107, - PIPE_CHAR = 108, - NUMBER_SIGN = 109, - PERCENT = 110, - AMPERSAND = 111, - APOSTROPHE = 112, - OPENING_PAREN = 113, - CLOSING_PAREN = 114, - STAR = 115, - PLUS = 116, - COMMA = 117, - MINUS = 118, - DOT = 119, - SLASH = 120, - COLON = 121, - SEMICOLON = 122, - LESS_THAN = 123, - EQUALS = 124, - GREATER_THAN = 125, - QUESTION = 126, - COMMERCIAL_AT = 127, - OPENING_SQUARE = 128, - CLOSING_SQUARE = 129, - CARET = 130, - UNDERLINE = 131, - OPENING_BRACE = 132, - CLOSING_BRACE = 133, - TILDE = 134, - EXLAMATION = 135, + PORT_OBJECT = 50, + CRYPTO = 51, + NO = 52, + CERTIFICATE = 53, + PIX_WORD = 54, + ASA_WORD = 55, + VERSION_WORD = 56, + NUMBER = 57, + HOSTNAME = 58, + STRING = 59, + ACCESS_LIST = 60, + PERMIT = 61, + DENY = 62, + P_EQ = 63, + P_GT = 64, + P_LT = 65, + P_NEQ = 66, + ANY = 67, + LOG = 68, + LOG_INPUT = 69, + ESTABLISHED = 70, + FRAGMENTS = 71, + TIME_RANGE = 72, + CONTROLLER = 73, + INTRFACE = 74, + LINE_COMMENT = 75, + EXIT = 76, + VLAN = 77, + SPEED = 78, + DUPLEX = 79, + DDNS = 80, + FORWARD = 81, + DELAY = 82, + HOLD_TIME = 83, + IPV6_C = 84, + MAC_ADDRESS = 85, + MULTICAST = 86, + PPPOE = 87, + RIP = 88, + NAMEIF = 89, + SEC_LEVEL = 90, + SHUTDOWN = 91, + ADDRESS = 92, + DHCP = 93, + STANDBY = 94, + SWITCHPORT = 95, + ACCESS = 96, + REMARK = 97, + ACCESS_GROUP = 98, + COLON_COMMENT = 99, + SECONDARY = 100, + SETROUTE = 101, + EXTENDED = 102, + STANDARD = 103, + Whitespace = 104, + HEX_CONST = 105, + NEG_INT_CONST = 106, + DIGIT = 107, + HEXDIGIT = 108, + PIPE_CHAR = 109, + NUMBER_SIGN = 110, + PERCENT = 111, + AMPERSAND = 112, + APOSTROPHE = 113, + OPENING_PAREN = 114, + CLOSING_PAREN = 115, + STAR = 116, + PLUS = 117, + COMMA = 118, + MINUS = 119, + DOT = 120, + SLASH = 121, + COLON = 122, + SEMICOLON = 123, + LESS_THAN = 124, + EQUALS = 125, + GREATER_THAN = 126, + QUESTION = 127, + COMMERCIAL_AT = 128, + OPENING_SQUARE = 129, + CLOSING_SQUARE = 130, + CARET = 131, + UNDERLINE = 132, + OPENING_BRACE = 133, + CLOSING_BRACE = 134, + TILDE = 135, + EXLAMATION = 136, NULL_TREE_LOOKAHEAD = 3 }; #ifdef __cplusplus diff --git a/src/parsers/PIXCfgParserTokenTypes.txt b/src/parsers/PIXCfgParserTokenTypes.txt index c7aad168c..a42c49956 100644 --- a/src/parsers/PIXCfgParserTokenTypes.txt +++ b/src/parsers/PIXCfgParserTokenTypes.txt @@ -46,89 +46,90 @@ PROTOCOL_OBJECT="protocol-object"=46 ICMP_OBJECT="icmp-object"=47 ICMP_TYPE="icmp-type"=48 SERVICE_OBJECT="service-object"=49 -CRYPTO="crypto"=50 -CERTIFICATE="certificate"=51 -PIX_WORD="PIX"=52 -ASA_WORD="ASA"=53 -VERSION_WORD="Version"=54 -NUMBER=55 -HOSTNAME="hostname"=56 -STRING=57 -ACCESS_LIST="access-list"=58 -PERMIT="permit"=59 -DENY="deny"=60 -P_EQ="eq"=61 -P_GT="gt"=62 -P_LT="lt"=63 -P_NEQ="neq"=64 -ANY="any"=65 -LOG="log"=66 -LOG_INPUT="log-input"=67 -ESTABLISHED="established"=68 -FRAGMENTS="fragments"=69 -TIME_RANGE="time-range"=70 -CONTROLLER="controller"=71 -INTRFACE="interface"=72 -LINE_COMMENT=73 -VLAN="vlan"=74 -SPEED="speed"=75 -DUPLEX="duplex"=76 -DDNS="ddns"=77 -FORWARD="forward"=78 -DELAY="delay"=79 -HOLD_TIME="hold-time"=80 -IPV6_C="ipv6"=81 -MAC_ADDRESS="mac-address"=82 -MULTICAST="multicast"=83 -PPPOE=84 -RIP="rip"=85 -NO="no"=86 -NAMEIF="nameif"=87 -SEC_LEVEL="security-level"=88 -SHUTDOWN="shutdown"=89 -ADDRESS="address"=90 -DHCP="dhcp"=91 -STANDBY="standby"=92 -SWITCHPORT="switchport"=93 -ACCESS="access"=94 -REMARK="remark"=95 -ACCESS_GROUP="access-group"=96 -EXIT="exit"=97 -COLON_COMMENT=98 -SECONDARY="secondary"=99 -SETROUTE="setroute"=100 -EXTENDED="extended"=101 -STANDARD="standard"=102 -Whitespace=103 -HEX_CONST=104 -NEG_INT_CONST=105 -DIGIT=106 -HEXDIGIT=107 -PIPE_CHAR=108 -NUMBER_SIGN=109 -PERCENT=110 -AMPERSAND=111 -APOSTROPHE=112 -OPENING_PAREN=113 -CLOSING_PAREN=114 -STAR=115 -PLUS=116 -COMMA=117 -MINUS=118 -DOT=119 -SLASH=120 -COLON=121 -SEMICOLON=122 -LESS_THAN=123 -EQUALS=124 -GREATER_THAN=125 -QUESTION=126 -COMMERCIAL_AT=127 -OPENING_SQUARE=128 -CLOSING_SQUARE=129 -CARET=130 -UNDERLINE=131 -OPENING_BRACE=132 -CLOSING_BRACE=133 -TILDE=134 -EXLAMATION=135 +PORT_OBJECT="port-object"=50 +CRYPTO="crypto"=51 +NO="no"=52 +CERTIFICATE="certificate"=53 +PIX_WORD="PIX"=54 +ASA_WORD="ASA"=55 +VERSION_WORD="Version"=56 +NUMBER=57 +HOSTNAME="hostname"=58 +STRING=59 +ACCESS_LIST="access-list"=60 +PERMIT="permit"=61 +DENY="deny"=62 +P_EQ="eq"=63 +P_GT="gt"=64 +P_LT="lt"=65 +P_NEQ="neq"=66 +ANY="any"=67 +LOG="log"=68 +LOG_INPUT="log-input"=69 +ESTABLISHED="established"=70 +FRAGMENTS="fragments"=71 +TIME_RANGE="time-range"=72 +CONTROLLER="controller"=73 +INTRFACE="interface"=74 +LINE_COMMENT=75 +EXIT="exit"=76 +VLAN="vlan"=77 +SPEED="speed"=78 +DUPLEX="duplex"=79 +DDNS="ddns"=80 +FORWARD="forward"=81 +DELAY="delay"=82 +HOLD_TIME="hold-time"=83 +IPV6_C="ipv6"=84 +MAC_ADDRESS="mac-address"=85 +MULTICAST="multicast"=86 +PPPOE=87 +RIP="rip"=88 +NAMEIF="nameif"=89 +SEC_LEVEL="security-level"=90 +SHUTDOWN="shutdown"=91 +ADDRESS="address"=92 +DHCP="dhcp"=93 +STANDBY="standby"=94 +SWITCHPORT="switchport"=95 +ACCESS="access"=96 +REMARK="remark"=97 +ACCESS_GROUP="access-group"=98 +COLON_COMMENT=99 +SECONDARY="secondary"=100 +SETROUTE="setroute"=101 +EXTENDED="extended"=102 +STANDARD="standard"=103 +Whitespace=104 +HEX_CONST=105 +NEG_INT_CONST=106 +DIGIT=107 +HEXDIGIT=108 +PIPE_CHAR=109 +NUMBER_SIGN=110 +PERCENT=111 +AMPERSAND=112 +APOSTROPHE=113 +OPENING_PAREN=114 +CLOSING_PAREN=115 +STAR=116 +PLUS=117 +COMMA=118 +MINUS=119 +DOT=120 +SLASH=121 +COLON=122 +SEMICOLON=123 +LESS_THAN=124 +EQUALS=125 +GREATER_THAN=126 +QUESTION=127 +COMMERCIAL_AT=128 +OPENING_SQUARE=129 +CLOSING_SQUARE=130 +CARET=131 +UNDERLINE=132 +OPENING_BRACE=133 +CLOSING_BRACE=134 +TILDE=135 +EXLAMATION=136 diff --git a/src/parsers/pix.g b/src/parsers/pix.g index bb0a20ccc..d341af29d 100644 --- a/src/parsers/pix.g +++ b/src/parsers/pix.g @@ -151,6 +151,8 @@ cfgfile : object_group_icmp_8_3 | crypto + | + no_commands | unknown_command | @@ -662,11 +664,13 @@ icmp_object : ICMP_OBJECT //**************************************************************** -object_group_service : OBJECT_GROUP SERVICE name:WORD +object_group_service : OBJECT_GROUP SERVICE name:WORD ( tcp:TCP | udp:UDP )? { importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); importer->newObjectGroupService(name->getText()); + if (tcp) importer->setObjectGroupServiceProtocol("tcp"); + if (udp) importer->setObjectGroupServiceProtocol("udp"); *dbg << name->getLine() << ":" << " Object Group " << name->getText() << std::endl; } @@ -683,6 +687,8 @@ object_group_service_parameters : group_object | service_object + | + port_object ) ; @@ -735,6 +741,15 @@ service_object : SERVICE_OBJECT ) ; +port_object : PORT_OBJECT xoperator + { + importer->setCurrentLineNumber(LT(0)->getLine()); + importer->SaveTmpPortToDst(); + importer->addTCPUDPServiceToObjectGroup(); + *dbg << " PORT OBJECT TCP/UDP" << LT(0)->getText() << " "; + } + ; + //**************************************************************** crypto : CRYPTO { @@ -756,6 +771,15 @@ unknown_command : WORD } ; +//**************************************************************** +no_commands : NO + { + *dbg << " TOP LEVEL \"NO\" COMMAND: " + << LT(0)->getText() << std::endl; + consumeUntil(NEWLINE); + } + ; + //**************************************************************** certificate : CERTIFICATE WORD { @@ -1112,7 +1136,7 @@ intrface : INTRFACE in:WORD << " EMPTY INTERFACE " << std::endl; } ) - NEWLINE LINE_COMMENT + NEWLINE ( LINE_COMMENT | EXIT ) ; interface_parameters : @@ -1521,6 +1545,7 @@ tokens GROUP_OBJECT = "group-object"; NETWORK_OBJECT = "network-object"; SERVICE_OBJECT = "service-object"; + PORT_OBJECT = "port-object"; PROTOCOL_OBJECT = "protocol-object"; ICMP_OBJECT = "icmp-object"; ICMP_TYPE = "icmp-type"; diff --git a/src/unit_tests/ImporterTest/test_data/asa8.3-objects-and-groups.test b/src/unit_tests/ImporterTest/test_data/asa8.3-objects-and-groups.test new file mode 100644 index 000000000..e68f31832 --- /dev/null +++ b/src/unit_tests/ImporterTest/test_data/asa8.3-objects-and-groups.test @@ -0,0 +1,274 @@ +: Saved +: +ASA Version 8.3(2) +! +hostname asa5505 +! +interface Vlan1 + description inside interface + nameif inside + security-level 100 + ip address dhcp setroute +! +interface Vlan2 + description outside interface + nameif outside + security-level 0 + ip address 192.168.2.1 255.255.255.0 +! +interface Ethernet0/0 + description Switch port 0/0 + switchport access vlan 2 +! + +! +object network internal_subnet_1 + subnet 192.168.1.0 255.255.255.192 + description Internal Subnet 1 +object network internal_subnet_2 + subnet 192.168.1.64 255.255.255.192 + description Internal Subnet 2 +! this object matches network in standard objects lib, but it should be created anyway +object network internal_subnet_3 + subnet 192.168.1.0 255.255.255.0 + description Internal Subnet 1 +! this object matches internale_subnet_1 but has different name and should be created +object network internal_subnet_4 + subnet 192.168.1.0 255.255.255.192 + +object network Internal_net + subnet 192.168.1.0 255.255.255.0 +object network outside_range-1 + range 22.22.22.30 22.22.22.40 +object network range_1 + range 10.1.1.1 10.1.1.100 +object network firewall90:FastEthernet1:ip-1 + host 22.22.22.23 +object network hostA:eth0 + host 192.168.1.10 +object network spamhost1 + host 61.150.47.112 +object network spamhost2 + host 61.150.47.113 +object network external_gw2 + host 22.22.22.100 +! +! Example of a named object with "nat" command +! +object network my-range-obj + range 10.2.2.1 10.2.2.10 +object network my-inside-net + subnet 192.168.2.0 255.255.255.0 + nat (inside,outside) dynamic my-range-ob +! + +! ipv6 addresses +! +object network ipv6-host-object-1 + host 2001:0db8:85a3:0000:0000:8a2e:0370:7334 + description Example of IPv6 host object +object network ipv6-network-object-1 + subnet 2001::/64 + description IPv6 network object example +object network ipv6-host-object-3 + host fe80::202:b3ff:fe1e:8329 + description Example of IPv6 host object +object network ipv6-host-object-3 + host a1b2:c3d4:e5f6:b3ff:fe1e:8329:0:1234 + description Example of IPv6 host object + +! empty named object definition +object network dummy-address +! +! more good network objects after the empty one +object network internal_subnet_5 + subnet 10.10.1.0 255.255.255.0 +! +! another test for an empty object and non-empty object but no comments this time +object network dummy-address-1 +object network internal_subnet_6 + subnet 10.10.2.0 255.255.255.0 +! +object network ipv6-host-object-2 + host 2001:af::1 + description Test IPv6 host +object network host-1 + host 10.0.0.1 + +! +object service smtp + service tcp destination eq smtp +object service http + service tcp destination eq www +object service squid + service tcp destination eq 3128 +object service smtps + service tcp destination eq 465 +! +object service icmp1 + service icmp echo +object service icmp2 + service icmp unreachable +object service ip5 + service 111 +! + +object service tcp-src-1 + service tcp source lt 1024 +object service tcp-src-2 + service tcp source gt 1024 +object service tcp-src-3 + service tcp source eq 80 +object service tcp-src-4 + service tcp source neq 88 +object service tcp-src-5 + service tcp source range 1000 1010 +! +object service tcp-dst-1 + service tcp destination lt 1024 +object service tcp-dst-2 + service tcp destination gt 1024 +object service tcp-dst-3 + service tcp destination eq 80 +object service tcp-dst-4 + service tcp destination neq 88 +object service tcp-dst-5 + service tcp destination range 1001 1011 +! + +object service tcp-src-dst-1 + service tcp source lt 1024 destination eq 80 +object service tcp-src-dst-2 + service tcp source gt 1024 destination eq 2222 +object service tcp-src-dst-3 + service tcp source eq 80 destination gt 1024 +object service tcp-src-dst-4 + service tcp source neq 88 destination gt 1024 +object service tcp-src-dst-5 + service tcp source range 1002 1012 destination gt 1024 +! + +object service udp-src-1 + service udp source lt 1024 +object service udp-src-2 + service udp source gt 1024 +object service udp-src-3 + service udp source eq 80 +object service udp-src-4 + service udp source neq 88 +object service udp-src-5 + service udp source range 1000 1010 +! +object service udp-dst-1 + service udp destination lt 1024 +object service udp-dst-2 + service udp destination gt 1024 +object service udp-dst-3 + service udp destination eq 80 +object service udp-dst-4 + service udp destination neq 88 +object service udp-dst-5 + service udp destination range 1001 1011 +! + +object service ip1 + service ip +object service ip2 + service eigrp +object service icmp6-1 + service icmp6 neighbor-advertisement +! +! named object using unknown protocol name +object service ip3 + service some_weird_protocol + +! incomplete statement +! +object service ip4 + +! +object-group network outside.id178211X29963.osrc.net.0 + network-object object internal_subnet_1 + network-object object internal_subnet_2 +object-group network outside.id21353X4994.osrc.net.0 + network-object object internal_subnet_1 + network-object object Internal_net + network-object object internal_subnet_2 +object-group network outside.id77971X5929.osrc.net.1 + network-object object internal_subnet_1 + network-object object internal_subnet_2 +object-group network outside.id77971X5929.odst.net.1 + network-object object spamhost1 + network-object object spamhost2 +object-group network outside.id77971X5929.tsrc.net.1 + network-object object outside_range-1 + network-object object external_gw2 +object-group network outside.id77971X5929.osrc.net.0 + network-object object internal_subnet_1 + network-object object internal_subnet_2 +object-group network outside.id77971X5929.odst.net.0 + network-object object spamhost1 + network-object object spamhost2 +object-group network outside.id77971X5929.tsrc.net.0 + network-object object outside_range-1 + network-object object external_gw2 + +object-group service outside.id77971X5929.osrv.1 + service-object object smtp + service-object object smtps + +object-group service sg1 + service-object ip + service-object eigrp + service-object gre + service-object 111 +object-group service sg2 + service-object icmp echo + service-object icmp echo-reply + service-object icmp 111 +object-group service sg3 + service-object tcp source gt 1024 destination eq www + service-object tcp source gt 1024 destination range 10000 10010 + service-object tcp source gt 1024 destination neq www + service-object tcp source gt 1024 destination lt 1024 + service-object tcp destination eq 22 +object-group service sg4 + service-object tcp source gt 1024 + service-object tcp source lt 1024 + service-object tcp source eq www + service-object tcp source neq www +object-group service sg5 + service-object udp source gt 1024 + service-object udp source gt 1024 destination eq www + service-object udp destination eq domain + service-object udp destination eq 5353 + service-object object udp-dst-1 + service-object object udp-dst-2 + group-object sg1 + group-object sg2 +! +object-group protocol pg1 + protocol-object 111 + protocol-object ah + protocol-object ip + protocol-object eigrp +object-group protocol pg2 + protocol-object 112 + protocol-object object ip5 + group-object pg1 +! +object-group icmp-type ig1 + icmp-object echo + icmp-object 111 +object-group icmp-type ig2 + icmp-object echo-reply + icmp-object 112 +object-group icmp-type ig3 + icmp-object mask-reply + group-object ig1 + +object-group service id5102X14531.srv.tcp.0 tcp + port-object eq 80 + port-object eq 443 +exit + diff --git a/src/unit_tests/ImporterTest/test_data/asa8.3.test b/src/unit_tests/ImporterTest/test_data/asa8.3.test index de5184f86..2e0a73d27 100755 --- a/src/unit_tests/ImporterTest/test_data/asa8.3.test +++ b/src/unit_tests/ImporterTest/test_data/asa8.3.test @@ -229,9 +229,6 @@ object-group network outside.id77971X5929.osrc.net.1 object-group network outside.id77971X5929.odst.net.1 network-object object spamhost1 network-object object spamhost2 -object-group service outside.id77971X5929.osrv.1 - service-object object smtp - service-object object smtps object-group network outside.id77971X5929.tsrc.net.1 network-object object outside_range-1 network-object object external_gw2 @@ -244,6 +241,16 @@ object-group network outside.id77971X5929.odst.net.0 object-group network outside.id77971X5929.tsrc.net.0 network-object object outside_range-1 network-object object external_gw2 + +object-group service outside.id77971X5929.osrv.1 + service-object object smtp + service-object object smtps + +object-group service id5102X14531.srv.tcp.0 tcp + port-object eq 80 + port-object eq 443 +exit + ! object-group service sg1 service-object ip