From ef3485df4a48cf52c75bcb198057c624139fb432 Mon Sep 17 00:00:00 2001 From: Vadim Kurland Date: Fri, 15 Apr 2011 16:51:15 -0700 Subject: [PATCH] see #2354 fixed parser to recognize top level "ip" commands that we do not use but that should not cause parser error --- src/parsers/IOSCfgLexer.cpp | 283 +++++++------- src/parsers/IOSCfgParser.cpp | 361 +++++++++++------- src/parsers/IOSCfgParser.hpp | 5 +- src/parsers/IOSCfgParserTokenTypes.hpp | 125 +++--- src/parsers/IOSCfgParserTokenTypes.txt | 125 +++--- src/parsers/iosacl.g | 33 +- src/unit_tests/ImporterTest/test_data/ios.fwb | 132 +++---- .../ImporterTest/test_data/ios.output | 153 ++++---- .../ImporterTest/test_data/ios.test | 19 + 9 files changed, 688 insertions(+), 548 deletions(-) diff --git a/src/parsers/IOSCfgLexer.cpp b/src/parsers/IOSCfgLexer.cpp index d5603e7fc..237ecd01b 100644 --- a/src/parsers/IOSCfgLexer.cpp +++ b/src/parsers/IOSCfgLexer.cpp @@ -44,41 +44,42 @@ IOSCfgLexer::IOSCfgLexer(const ANTLR_USE_NAMESPACE(antlr)LexerSharedInputState& void IOSCfgLexer::initLiterals() { - literals["host"] = 27; + literals["host"] = 9; literals["log"] = 30; - literals["access-list"] = 14; + literals["access-list"] = 17; literals["interface"] = 37; - literals["remark"] = 39; - literals["certificate"] = 9; - literals["exit"] = 44; - literals["udp"] = 21; - literals["tcp"] = 20; + literals["remark"] = 40; + literals["certificate"] = 12; + literals["exit"] = 45; + literals["udp"] = 22; + literals["point-to-point"] = 38; + literals["tcp"] = 8; literals["controller"] = 36; - literals["eq"] = 22; + literals["eq"] = 23; literals["ip"] = 5; - literals["access-group"] = 41; + literals["access-group"] = 42; literals["time-range"] = 34; - literals["version"] = 10; - literals["community-list"] = 7; - literals["icmp"] = 19; - literals["description"] = 38; - literals["secondary"] = 43; - literals["lt"] = 24; - literals["range"] = 26; + literals["version"] = 13; + literals["community-list"] = 10; + literals["icmp"] = 7; + literals["description"] = 39; + literals["secondary"] = 44; + literals["lt"] = 25; + literals["range"] = 27; literals["log-input"] = 31; - literals["standard"] = 46; - literals["gt"] = 23; - literals["permit"] = 17; - literals["extended"] = 16; - literals["address"] = 42; + literals["standard"] = 47; + literals["gt"] = 24; + literals["permit"] = 20; + literals["extended"] = 19; + literals["address"] = 43; literals["established"] = 32; - literals["neq"] = 25; + literals["neq"] = 26; literals["quit"] = 6; literals["vlan"] = 35; literals["any"] = 29; - literals["deny"] = 18; - literals["shutdown"] = 40; - literals["hostname"] = 12; + literals["deny"] = 21; + literals["shutdown"] = 41; + literals["hostname"] = 15; literals["fragments"] = 33; } @@ -394,11 +395,11 @@ void IOSCfgLexer::mLINE_COMMENT(bool _createToken) { } } else { - goto _loop83; + goto _loop85; } } - _loop83:; + _loop85:; } // ( ... )* if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { _token = makeToken(_ttype); @@ -477,9 +478,9 @@ void IOSCfgLexer::mWhitespace(bool _createToken) { } } if ( inputState->guessing==0 ) { -#line 725 "iosacl.g" +#line 756 "iosacl.g" _ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP; -#line 483 "IOSCfgLexer.cpp" +#line 484 "IOSCfgLexer.cpp" } if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { _token = makeToken(_ttype); @@ -510,9 +511,9 @@ void IOSCfgLexer::mNEWLINE(bool _createToken) { } if ( inputState->guessing==0 ) { -#line 730 "iosacl.g" +#line 761 "iosacl.g" newline(); -#line 516 "IOSCfgLexer.cpp" +#line 517 "IOSCfgLexer.cpp" } if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { _token = makeToken(_ttype); @@ -624,29 +625,14 @@ void IOSCfgLexer::mNUMBER(bool _createToken) { ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex; { - bool synPredMatched102 = false; + bool synPredMatched104 = false; if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (_tokenSet_2.member(LA(2))) && (_tokenSet_2.member(LA(3))) && (_tokenSet_2.member(LA(4))) && (_tokenSet_2.member(LA(5))) && (_tokenSet_2.member(LA(6))) && (_tokenSet_2.member(LA(7))) && (true) && (true) && (true))) { - int _m102 = mark(); - synPredMatched102 = true; + int _m104 = mark(); + synPredMatched104 = true; inputState->guessing++; try { { { // ( ... )+ - int _cnt97=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt97>=1 ) { goto _loop97; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt97++; - } - _loop97:; - } // ( ... )+ - mDOT(false); - { // ( ... )+ int _cnt99=0; for (;;) { if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { @@ -675,32 +661,32 @@ void IOSCfgLexer::mNUMBER(bool _createToken) { } _loop101:; } // ( ... )+ + mDOT(false); + { // ( ... )+ + int _cnt103=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt103>=1 ) { goto _loop103; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt103++; + } + _loop103:; + } // ( ... )+ } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) { - synPredMatched102 = false; + synPredMatched104 = false; } - rewind(_m102); + rewind(_m104); inputState->guessing--; } - if ( synPredMatched102 ) { + if ( synPredMatched104 ) { { { // ( ... )+ - int _cnt105=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt105>=1 ) { goto _loop105; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt105++; - } - _loop105:; - } // ( ... )+ - mDOT(false); - { // ( ... )+ int _cnt107=0; for (;;) { if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { @@ -744,37 +730,37 @@ void IOSCfgLexer::mNUMBER(bool _createToken) { } _loop111:; } // ( ... )+ + mDOT(false); + { // ( ... )+ + int _cnt113=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt113>=1 ) { goto _loop113; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt113++; + } + _loop113:; + } // ( ... )+ } if ( inputState->guessing==0 ) { -#line 750 "iosacl.g" +#line 781 "iosacl.g" _ttype = IPV4; -#line 752 "IOSCfgLexer.cpp" +#line 753 "IOSCfgLexer.cpp" } } else { - bool synPredMatched117 = false; + bool synPredMatched119 = false; if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (_tokenSet_2.member(LA(2))) && (_tokenSet_2.member(LA(3))) && (true) && (true) && (true) && (true) && (true) && (true) && (true))) { - int _m117 = mark(); - synPredMatched117 = true; + int _m119 = mark(); + synPredMatched119 = true; inputState->guessing++; try { { { // ( ... )+ - int _cnt114=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt114>=1 ) { goto _loop114; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt114++; - } - _loop114:; - } // ( ... )+ - mDOT(false); - { // ( ... )+ int _cnt116=0; for (;;) { if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { @@ -788,32 +774,32 @@ void IOSCfgLexer::mNUMBER(bool _createToken) { } _loop116:; } // ( ... )+ + mDOT(false); + { // ( ... )+ + int _cnt118=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt118>=1 ) { goto _loop118; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt118++; + } + _loop118:; + } // ( ... )+ } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) { - synPredMatched117 = false; + synPredMatched119 = false; } - rewind(_m117); + rewind(_m119); inputState->guessing--; } - if ( synPredMatched117 ) { + if ( synPredMatched119 ) { { { // ( ... )+ - int _cnt120=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt120>=1 ) { goto _loop120; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt120++; - } - _loop120:; - } // ( ... )+ - mDOT(false); - { // ( ... )+ int _cnt122=0; for (;;) { if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { @@ -827,34 +813,7 @@ void IOSCfgLexer::mNUMBER(bool _createToken) { } _loop122:; } // ( ... )+ - } - } - else if ((LA(1) == 0x30 /* '0' */ ) && (LA(2) == 0x78 /* 'x' */ )) { - { - match('0' /* charlit */ ); - match('x' /* charlit */ ); - { // ( ... )+ - int _cnt127=0; - for (;;) { - if ((_tokenSet_3.member(LA(1)))) { - mHEXDIGIT(false); - } - else { - if ( _cnt127>=1 ) { goto _loop127; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt127++; - } - _loop127:; - } // ( ... )+ - } - if ( inputState->guessing==0 ) { -#line 756 "iosacl.g" - _ttype = HEX_CONST; -#line 855 "IOSCfgLexer.cpp" - } - } - else if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (true) && (true) && (true) && (true) && (true) && (true) && (true) && (true) && (true)) { + mDOT(false); { // ( ... )+ int _cnt124=0; for (;;) { @@ -869,10 +828,52 @@ void IOSCfgLexer::mNUMBER(bool _createToken) { } _loop124:; } // ( ... )+ + } + } + else if ((LA(1) == 0x30 /* '0' */ ) && (LA(2) == 0x78 /* 'x' */ )) { + { + match('0' /* charlit */ ); + match('x' /* charlit */ ); + { // ( ... )+ + int _cnt129=0; + for (;;) { + if ((_tokenSet_3.member(LA(1)))) { + mHEXDIGIT(false); + } + else { + if ( _cnt129>=1 ) { goto _loop129; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt129++; + } + _loop129:; + } // ( ... )+ + } if ( inputState->guessing==0 ) { -#line 754 "iosacl.g" +#line 787 "iosacl.g" + _ttype = HEX_CONST; +#line 856 "IOSCfgLexer.cpp" + } + } + else if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (true) && (true) && (true) && (true) && (true) && (true) && (true) && (true) && (true)) { + { // ( ... )+ + int _cnt126=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt126>=1 ) { goto _loop126; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt126++; + } + _loop126:; + } // ( ... )+ + if ( inputState->guessing==0 ) { +#line 785 "iosacl.g" _ttype = INT_CONST; -#line 876 "IOSCfgLexer.cpp" +#line 877 "IOSCfgLexer.cpp" } } else { @@ -1133,11 +1134,11 @@ void IOSCfgLexer::mWORD(bool _createToken) { } default: { - goto _loop131; + goto _loop133; } } } - _loop131:; + _loop133:; } // ( ... )* if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { _token = makeToken(_ttype); @@ -1159,11 +1160,11 @@ void IOSCfgLexer::mSTRING(bool _createToken) { matchNot('\"' /* charlit */ ); } else { - goto _loop134; + goto _loop136; } } - _loop134:; + _loop136:; } // ( ... )* match('\"' /* charlit */ ); if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { @@ -1547,7 +1548,7 @@ const unsigned long IOSCfgLexer::_tokenSet_1_data_[] = { 4294958072UL, 429496729 // 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 ! \" # $ % // & \' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G -// H I J K L M N +// H I J K L M N O const ANTLR_USE_NAMESPACE(antlr)BitSet IOSCfgLexer::_tokenSet_1(_tokenSet_1_data_,16); const unsigned long IOSCfgLexer::_tokenSet_2_data_[] = { 0UL, 67059712UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL }; // . 0 1 2 3 4 5 6 7 8 9 @@ -1559,6 +1560,6 @@ const unsigned long IOSCfgLexer::_tokenSet_4_data_[] = { 4294967288UL, 429496729 // 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa 0xb 0xc 0xd 0xe 0xf 0x10 0x11 0x12 0x13 // 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f ! # $ // % & \' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F -// G H I J K L M N +// G H I J K L M N O const ANTLR_USE_NAMESPACE(antlr)BitSet IOSCfgLexer::_tokenSet_4(_tokenSet_4_data_,16); diff --git a/src/parsers/IOSCfgParser.cpp b/src/parsers/IOSCfgParser.cpp index 22a949965..8bf486a30 100644 --- a/src/parsers/IOSCfgParser.cpp +++ b/src/parsers/IOSCfgParser.cpp @@ -169,7 +169,7 @@ void IOSCfgParser::version() { v = LT(1); match(NUMBER); if ( inputState->guessing==0 ) { -#line 171 "iosacl.g" +#line 193 "iosacl.g" *dbg << "VERSION " << v->getText() << std::endl; @@ -209,7 +209,7 @@ void IOSCfgParser::hostname() { } } if ( inputState->guessing==0 ) { -#line 178 "iosacl.g" +#line 200 "iosacl.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->setHostName( LT(0)->getText() ); @@ -252,6 +252,13 @@ void IOSCfgParser::ip_commands() { community_list_command(); break; } + case ICMP: + case TCP: + case HOST: + { + ip_unused_command(); + break; + } case WORD: { unknown_command(); @@ -282,14 +289,40 @@ void IOSCfgParser::intrface() { in = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 505 "iosacl.g" +#line 527 "iosacl.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->newInterface( in->getText() ); *dbg << in->getLine() << ":" << " INTRFACE: " << in->getText() << std::endl; -#line 293 "IOSCfgParser.cpp" +#line 300 "IOSCfgParser.cpp" + } + { + switch ( LA(1)) { + case POINT_TO_POINT: + { + match(POINT_TO_POINT); + if ( inputState->guessing==0 ) { +#line 535 "iosacl.g" + + importer->addMessageToLog( + QString("Warning: point-to-point interfaces " + "are not supported")); + +#line 314 "IOSCfgParser.cpp" + } + break; + } + case NEWLINE: + { + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); + } + } } match(NEWLINE); } @@ -308,13 +341,13 @@ void IOSCfgParser::controller() { try { // for error handling match(CONTROLLER); if ( inputState->guessing==0 ) { -#line 495 "iosacl.g" +#line 517 "iosacl.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->clearCurrentInterface(); consumeUntil(NEWLINE); -#line 318 "IOSCfgParser.cpp" +#line 351 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -350,13 +383,13 @@ void IOSCfgParser::vlan() { } } if ( inputState->guessing==0 ) { -#line 485 "iosacl.g" +#line 507 "iosacl.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->clearCurrentInterface(); consumeUntil(NEWLINE); -#line 360 "IOSCfgParser.cpp" +#line 393 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -377,14 +410,14 @@ void IOSCfgParser::access_list_commands() { acl_num = LT(1); match(INT_CONST); if ( inputState->guessing==0 ) { -#line 194 "iosacl.g" +#line 216 "iosacl.g" importer->newUnidirRuleSet( std::string("acl_") + acl_num->getText(), libfwbuilder::Policy::TYPENAME); *dbg << acl_num->getLine() << ":" << " ACL #" << acl_num->getText() << " "; -#line 388 "IOSCfgParser.cpp" +#line 421 "IOSCfgParser.cpp" } { if ((LA(1) == PERMIT) && (LA(2) == IPV4 || LA(2) == ANY)) { @@ -438,7 +471,7 @@ void IOSCfgParser::description() { try { // for error handling match(DESCRIPTION); if ( inputState->guessing==0 ) { -#line 517 "iosacl.g" +#line 547 "iosacl.g" importer->setCurrentLineNumber(LT(0)->getLine()); *dbg << LT(1)->getLine() << ":"; @@ -452,7 +485,7 @@ void IOSCfgParser::description() { *dbg << " DESCRIPTION " << descr << std::endl; //consumeUntil(NEWLINE); -#line 456 "IOSCfgParser.cpp" +#line 489 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -470,12 +503,12 @@ void IOSCfgParser::shutdown() { try { // for error handling match(SHUTDOWN); if ( inputState->guessing==0 ) { -#line 553 "iosacl.g" +#line 583 "iosacl.g" *dbg<< LT(1)->getLine() << ":" << " INTERFACE SHUTDOWN " << std::endl; -#line 479 "IOSCfgParser.cpp" +#line 512 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -494,12 +527,12 @@ void IOSCfgParser::certificate() { match(CERTIFICATE); match(WORD); if ( inputState->guessing==0 ) { -#line 163 "iosacl.g" +#line 185 "iosacl.g" consumeUntil(NEWLINE); consumeUntil(QUIT); -#line 503 "IOSCfgParser.cpp" +#line 536 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -517,11 +550,11 @@ void IOSCfgParser::quit() { try { // for error handling match(QUIT); if ( inputState->guessing==0 ) { -#line 142 "iosacl.g" +#line 153 "iosacl.g" consumeUntil(NEWLINE); -#line 525 "IOSCfgParser.cpp" +#line 558 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -539,11 +572,11 @@ void IOSCfgParser::unknown_command() { try { // for error handling match(WORD); if ( inputState->guessing==0 ) { -#line 156 "iosacl.g" +#line 178 "iosacl.g" consumeUntil(NEWLINE); -#line 547 "IOSCfgParser.cpp" +#line 580 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -565,13 +598,13 @@ void IOSCfgParser::ip_access_list_ext() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 216 "iosacl.g" +#line 238 "iosacl.g" importer->newUnidirRuleSet( name->getText(), libfwbuilder::Policy::TYPENAME ); *dbg << name->getLine() << ":" << " ACL ext " << name->getText() << std::endl; -#line 575 "IOSCfgParser.cpp" +#line 608 "IOSCfgParser.cpp" } match(NEWLINE); { // ( ... )* @@ -600,19 +633,19 @@ void IOSCfgParser::ip_access_list_ext() { match(NEWLINE); } else { - goto _loop17; + goto _loop18; } } } - _loop17:; + _loop18:; } // ( ... )* if ( inputState->guessing==0 ) { -#line 233 "iosacl.g" +#line 255 "iosacl.g" *dbg << LT(0)->getLine() << ":" << " ACL end" << std::endl << std::endl; -#line 616 "IOSCfgParser.cpp" +#line 649 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -660,11 +693,53 @@ void IOSCfgParser::community_list_command() { try { // for error handling match(COMMUNITY_LIST); if ( inputState->guessing==0 ) { -#line 149 "iosacl.g" +#line 171 "iosacl.g" consumeUntil(NEWLINE); -#line 668 "IOSCfgParser.cpp" +#line 701 "IOSCfgParser.cpp" + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + if( inputState->guessing == 0 ) { + reportError(ex); + recover(ex,_tokenSet_2); + } else { + throw; + } + } +} + +void IOSCfgParser::ip_unused_command() { + + try { // for error handling + switch ( LA(1)) { + case ICMP: + { + match(ICMP); + break; + } + case TCP: + { + match(TCP); + break; + } + case HOST: + { + match(HOST); + if ( inputState->guessing==0 ) { +#line 164 "iosacl.g" + + consumeUntil(NEWLINE); + +#line 736 "IOSCfgParser.cpp" + } + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); + } } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -682,22 +757,22 @@ void IOSCfgParser::permit_std() { try { // for error handling match(PERMIT); if ( inputState->guessing==0 ) { -#line 268 "iosacl.g" +#line 290 "iosacl.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->newPolicyRule(); importer->action = "permit"; *dbg << LT(1)->getLine() << ":" << " permit "; -#line 693 "IOSCfgParser.cpp" +#line 768 "IOSCfgParser.cpp" } rule_std(); if ( inputState->guessing==0 ) { -#line 275 "iosacl.g" +#line 297 "iosacl.g" importer->pushRule(); -#line 701 "IOSCfgParser.cpp" +#line 776 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -715,23 +790,23 @@ void IOSCfgParser::deny_std() { try { // for error handling match(DENY); if ( inputState->guessing==0 ) { -#line 281 "iosacl.g" +#line 303 "iosacl.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->newPolicyRule(); importer->action = "deny"; *dbg << LT(1)->getLine() << ":" << " deny "; -#line 726 "IOSCfgParser.cpp" +#line 801 "IOSCfgParser.cpp" } rule_std(); match(NEWLINE); if ( inputState->guessing==0 ) { -#line 288 "iosacl.g" +#line 310 "iosacl.g" importer->pushRule(); -#line 735 "IOSCfgParser.cpp" +#line 810 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -749,22 +824,22 @@ void IOSCfgParser::permit_ext() { try { // for error handling match(PERMIT); if ( inputState->guessing==0 ) { -#line 241 "iosacl.g" +#line 263 "iosacl.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->newPolicyRule(); importer->action = "permit"; *dbg << LT(1)->getLine() << ":" << " permit "; -#line 760 "IOSCfgParser.cpp" +#line 835 "IOSCfgParser.cpp" } rule_ext(); if ( inputState->guessing==0 ) { -#line 248 "iosacl.g" +#line 270 "iosacl.g" importer->pushRule(); -#line 768 "IOSCfgParser.cpp" +#line 843 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -782,23 +857,23 @@ void IOSCfgParser::deny_ext() { try { // for error handling match(DENY); if ( inputState->guessing==0 ) { -#line 254 "iosacl.g" +#line 276 "iosacl.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->newPolicyRule(); importer->action = "deny"; *dbg << LT(1)->getLine() << ":" << " deny "; -#line 793 "IOSCfgParser.cpp" +#line 868 "IOSCfgParser.cpp" } rule_ext(); match(NEWLINE); if ( inputState->guessing==0 ) { -#line 261 "iosacl.g" +#line 283 "iosacl.g" importer->pushRule(); -#line 802 "IOSCfgParser.cpp" +#line 877 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -816,7 +891,7 @@ void IOSCfgParser::remark() { try { // for error handling match(REMARK); if ( inputState->guessing==0 ) { -#line 536 "iosacl.g" +#line 566 "iosacl.g" importer->setCurrentLineNumber(LT(0)->getLine()); *dbg << LT(1)->getLine() << ":"; @@ -830,7 +905,7 @@ void IOSCfgParser::remark() { *dbg << " REMARK " << rem << std::endl; //consumeUntil(NEWLINE); -#line 834 "IOSCfgParser.cpp" +#line 909 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -854,15 +929,15 @@ void IOSCfgParser::rule_ext() { ip_protocols(); hostaddr_ext(); if ( inputState->guessing==0 ) { -#line 298 "iosacl.g" +#line 320 "iosacl.g" importer->SaveTmpAddrToSrc(); *dbg << "(src) "; -#line 860 "IOSCfgParser.cpp" +#line 935 "IOSCfgParser.cpp" } hostaddr_ext(); if ( inputState->guessing==0 ) { -#line 299 "iosacl.g" +#line 321 "iosacl.g" importer->SaveTmpAddrToDst(); *dbg << "(dst) "; -#line 866 "IOSCfgParser.cpp" +#line 941 "IOSCfgParser.cpp" } { switch ( LA(1)) { @@ -981,24 +1056,24 @@ void IOSCfgParser::rule_ext() { { match(ICMP); if ( inputState->guessing==0 ) { -#line 305 "iosacl.g" +#line 327 "iosacl.g" importer->protocol = LT(0)->getText(); *dbg << "protocol " << LT(0)->getText() << " "; -#line 990 "IOSCfgParser.cpp" +#line 1065 "IOSCfgParser.cpp" } hostaddr_ext(); if ( inputState->guessing==0 ) { -#line 309 "iosacl.g" +#line 331 "iosacl.g" importer->SaveTmpAddrToSrc(); *dbg << "(src) "; -#line 996 "IOSCfgParser.cpp" +#line 1071 "IOSCfgParser.cpp" } hostaddr_ext(); if ( inputState->guessing==0 ) { -#line 310 "iosacl.g" +#line 332 "iosacl.g" importer->SaveTmpAddrToDst(); *dbg << "(dst) "; -#line 1002 "IOSCfgParser.cpp" +#line 1077 "IOSCfgParser.cpp" } { if ((LA(1) == WORD || LA(1) == INT_CONST) && (_tokenSet_4.member(LA(2)))) { @@ -1146,18 +1221,18 @@ void IOSCfgParser::rule_ext() { } } if ( inputState->guessing==0 ) { -#line 317 "iosacl.g" +#line 339 "iosacl.g" importer->protocol = LT(0)->getText(); *dbg << "protocol " << LT(0)->getText() << " "; -#line 1155 "IOSCfgParser.cpp" +#line 1230 "IOSCfgParser.cpp" } hostaddr_ext(); if ( inputState->guessing==0 ) { -#line 321 "iosacl.g" +#line 343 "iosacl.g" importer->SaveTmpAddrToSrc(); *dbg << "(src) "; -#line 1161 "IOSCfgParser.cpp" +#line 1236 "IOSCfgParser.cpp" } { switch ( LA(1)) { @@ -1169,9 +1244,9 @@ void IOSCfgParser::rule_ext() { { xoperator(); if ( inputState->guessing==0 ) { -#line 322 "iosacl.g" +#line 344 "iosacl.g" importer->SaveTmpPortToSrc(); -#line 1175 "IOSCfgParser.cpp" +#line 1250 "IOSCfgParser.cpp" } break; } @@ -1189,9 +1264,9 @@ void IOSCfgParser::rule_ext() { } hostaddr_ext(); if ( inputState->guessing==0 ) { -#line 323 "iosacl.g" +#line 345 "iosacl.g" importer->SaveTmpAddrToDst(); *dbg << "(dst) "; -#line 1195 "IOSCfgParser.cpp" +#line 1270 "IOSCfgParser.cpp" } { switch ( LA(1)) { @@ -1203,9 +1278,9 @@ void IOSCfgParser::rule_ext() { { xoperator(); if ( inputState->guessing==0 ) { -#line 324 "iosacl.g" +#line 346 "iosacl.g" importer->SaveTmpPortToDst(); -#line 1209 "IOSCfgParser.cpp" +#line 1284 "IOSCfgParser.cpp" } break; } @@ -1401,11 +1476,11 @@ void IOSCfgParser::rule_ext() { } } if ( inputState->guessing==0 ) { -#line 330 "iosacl.g" +#line 352 "iosacl.g" *dbg << std::endl; -#line 1409 "IOSCfgParser.cpp" +#line 1484 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1424,9 +1499,9 @@ void IOSCfgParser::rule_std() { { hostaddr_std(); if ( inputState->guessing==0 ) { -#line 338 "iosacl.g" +#line 360 "iosacl.g" importer->SaveTmpAddrToSrc(); *dbg << "(std) "; -#line 1430 "IOSCfgParser.cpp" +#line 1505 "IOSCfgParser.cpp" } { switch ( LA(1)) { @@ -1463,11 +1538,11 @@ void IOSCfgParser::rule_std() { } } if ( inputState->guessing==0 ) { -#line 341 "iosacl.g" +#line 363 "iosacl.g" *dbg << std::endl; -#line 1471 "IOSCfgParser.cpp" +#line 1546 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1502,12 +1577,12 @@ void IOSCfgParser::ip_protocols() { } } if ( inputState->guessing==0 ) { -#line 349 "iosacl.g" +#line 371 "iosacl.g" importer->protocol = LT(0)->getText(); *dbg << "protocol " << LT(0)->getText() << " "; -#line 1511 "IOSCfgParser.cpp" +#line 1586 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1535,13 +1610,13 @@ void IOSCfgParser::hostaddr_ext() { match(IPV4); } if ( inputState->guessing==0 ) { -#line 401 "iosacl.g" +#line 423 "iosacl.g" importer->tmp_a = h->getText(); importer->tmp_nm = "0.0.0.0"; *dbg << h->getText() << "/0.0.0.0"; -#line 1545 "IOSCfgParser.cpp" +#line 1620 "IOSCfgParser.cpp" } break; } @@ -1554,13 +1629,13 @@ void IOSCfgParser::hostaddr_ext() { match(IPV4); } if ( inputState->guessing==0 ) { -#line 408 "iosacl.g" +#line 430 "iosacl.g" importer->tmp_a = a->getText(); importer->tmp_nm = m->getText(); *dbg << a->getText() << "/" << m->getText(); -#line 1564 "IOSCfgParser.cpp" +#line 1639 "IOSCfgParser.cpp" } break; } @@ -1568,13 +1643,13 @@ void IOSCfgParser::hostaddr_ext() { { match(ANY); if ( inputState->guessing==0 ) { -#line 415 "iosacl.g" +#line 437 "iosacl.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 1578 "IOSCfgParser.cpp" +#line 1653 "IOSCfgParser.cpp" } break; } @@ -1602,12 +1677,12 @@ void IOSCfgParser::time_range() { tr_name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 467 "iosacl.g" +#line 489 "iosacl.g" importer->time_range_name = tr_name->getText(); *dbg << "time_range " << tr_name->getText() << " "; -#line 1611 "IOSCfgParser.cpp" +#line 1686 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1625,12 +1700,12 @@ void IOSCfgParser::fragments() { try { // for error handling match(FRAGMENTS); if ( inputState->guessing==0 ) { -#line 460 "iosacl.g" +#line 482 "iosacl.g" importer->fragments = true; *dbg << "fragments "; -#line 1634 "IOSCfgParser.cpp" +#line 1709 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1665,12 +1740,12 @@ void IOSCfgParser::log() { } } if ( inputState->guessing==0 ) { -#line 446 "iosacl.g" +#line 468 "iosacl.g" importer->logging = true; *dbg << "logging "; -#line 1674 "IOSCfgParser.cpp" +#line 1749 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1700,7 +1775,7 @@ void IOSCfgParser::icmp_spec() { match(INT_CONST); } if ( inputState->guessing==0 ) { -#line 357 "iosacl.g" +#line 379 "iosacl.g" importer->icmp_type = icmp_type->getText(); importer->icmp_code = icmp_code->getText(); @@ -1708,7 +1783,7 @@ void IOSCfgParser::icmp_spec() { *dbg << icmp_type->getText() << " " << icmp_code->getText() << " "; -#line 1712 "IOSCfgParser.cpp" +#line 1787 "IOSCfgParser.cpp" } break; } @@ -1717,12 +1792,12 @@ void IOSCfgParser::icmp_spec() { icmp_word = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 366 "iosacl.g" +#line 388 "iosacl.g" importer->icmp_spec = icmp_word->getText(); *dbg << icmp_word->getText() << " "; -#line 1726 "IOSCfgParser.cpp" +#line 1801 "IOSCfgParser.cpp" } break; } @@ -1781,12 +1856,12 @@ void IOSCfgParser::established() { try { // for error handling match(ESTABLISHED); if ( inputState->guessing==0 ) { -#line 453 "iosacl.g" +#line 475 "iosacl.g" importer->established = true; *dbg << "established "; -#line 1790 "IOSCfgParser.cpp" +#line 1865 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1811,13 +1886,13 @@ void IOSCfgParser::hostaddr_std() { match(IPV4); } if ( inputState->guessing==0 ) { -#line 424 "iosacl.g" +#line 446 "iosacl.g" importer->tmp_a = h->getText(); importer->tmp_nm = "0.0.0.0"; *dbg << h->getText() << "/0.0.0.0"; -#line 1821 "IOSCfgParser.cpp" +#line 1896 "IOSCfgParser.cpp" } } else if ((LA(1) == IPV4) && (LA(2) == IPV4)) { @@ -1828,25 +1903,25 @@ void IOSCfgParser::hostaddr_std() { match(IPV4); } if ( inputState->guessing==0 ) { -#line 431 "iosacl.g" +#line 453 "iosacl.g" importer->tmp_a = a->getText(); importer->tmp_nm = m->getText(); *dbg << a->getText() << "/" << m->getText(); -#line 1838 "IOSCfgParser.cpp" +#line 1913 "IOSCfgParser.cpp" } } else if ((LA(1) == ANY)) { match(ANY); if ( inputState->guessing==0 ) { -#line 438 "iosacl.g" +#line 460 "iosacl.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 1850 "IOSCfgParser.cpp" +#line 1925 "IOSCfgParser.cpp" } } else { @@ -1896,12 +1971,12 @@ void IOSCfgParser::single_port_op() { } } if ( inputState->guessing==0 ) { -#line 377 "iosacl.g" +#line 399 "iosacl.g" importer->tmp_port_op = LT(0)->getText(); *dbg << LT(0)->getText() << " "; -#line 1905 "IOSCfgParser.cpp" +#line 1980 "IOSCfgParser.cpp" } port_spec(); } @@ -1920,12 +1995,12 @@ void IOSCfgParser::port_range() { try { // for error handling match(P_RANGE); if ( inputState->guessing==0 ) { -#line 385 "iosacl.g" +#line 407 "iosacl.g" importer->tmp_port_op = LT(0)->getText(); *dbg << LT(0)->getText() << " "; -#line 1929 "IOSCfgParser.cpp" +#line 2004 "IOSCfgParser.cpp" } port_spec(); port_spec(); @@ -1962,12 +2037,12 @@ void IOSCfgParser::port_spec() { } } if ( inputState->guessing==0 ) { -#line 393 "iosacl.g" +#line 415 "iosacl.g" importer->tmp_port_spec += (std::string(" ") + LT(0)->getText()); *dbg << LT(0)->getText() << " "; -#line 1971 "IOSCfgParser.cpp" +#line 2046 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1991,7 +2066,7 @@ void IOSCfgParser::access_group_by_name() { dir = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 579 "iosacl.g" +#line 609 "iosacl.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->setInterfaceAndDirectionForRuleSet( @@ -2002,7 +2077,7 @@ void IOSCfgParser::access_group_by_name() { << " INTRFACE: ACL '" << acln->getText() << "'" << " " << dir->getText() << std::endl; -#line 2006 "IOSCfgParser.cpp" +#line 2081 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -2026,7 +2101,7 @@ void IOSCfgParser::access_group_by_number() { dir = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 595 "iosacl.g" +#line 625 "iosacl.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->setInterfaceAndDirectionForRuleSet( @@ -2037,7 +2112,7 @@ void IOSCfgParser::access_group_by_number() { << " INTRFACE: ACL '" << acln->getText() << "'" << " " << dir->getText() << std::endl; -#line 2041 "IOSCfgParser.cpp" +#line 2116 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -2080,7 +2155,7 @@ void IOSCfgParser::intf_address() { } } if ( inputState->guessing==0 ) { -#line 608 "iosacl.g" +#line 638 "iosacl.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->addInterfaceAddress(a->getText(), m->getText()); @@ -2093,7 +2168,7 @@ void IOSCfgParser::intf_address() { } *dbg << std::endl; -#line 2097 "IOSCfgParser.cpp" +#line 2172 "IOSCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -2117,6 +2192,9 @@ const char* IOSCfgParser::tokenNames[] = { "NEWLINE", "\"ip\"", "\"quit\"", + "\"icmp\"", + "\"tcp\"", + "\"host\"", "\"community-list\"", "WORD", "\"certificate\"", @@ -2129,15 +2207,12 @@ const char* IOSCfgParser::tokenNames[] = { "\"extended\"", "\"permit\"", "\"deny\"", - "\"icmp\"", - "\"tcp\"", "\"udp\"", "\"eq\"", "\"gt\"", "\"lt\"", "\"neq\"", "\"range\"", - "\"host\"", "IPV4", "\"any\"", "\"log\"", @@ -2148,6 +2223,7 @@ const char* IOSCfgParser::tokenNames[] = { "\"vlan\"", "\"controller\"", "\"interface\"", + "\"point-to-point\"", "\"description\"", "\"remark\"", "\"shutdown\"", @@ -2195,70 +2271,71 @@ const char* IOSCfgParser::tokenNames[] = { const unsigned long IOSCfgParser::_tokenSet_0_data_[] = { 2UL, 0UL, 0UL, 0UL }; // EOF const ANTLR_USE_NAMESPACE(antlr)BitSet IOSCfgParser::_tokenSet_0(_tokenSet_0_data_,4); -const unsigned long IOSCfgParser::_tokenSet_1_data_[] = { 415602UL, 12792UL, 0UL, 0UL }; +const unsigned long IOSCfgParser::_tokenSet_1_data_[] = { 3324018UL, 25528UL, 0UL, 0UL }; // EOF NEWLINE "ip" "quit" WORD "certificate" "version" "hostname" "access-list" // "permit" "deny" "vlan" "controller" "interface" "description" "remark" // "shutdown" "exit" LINE_COMMENT const ANTLR_USE_NAMESPACE(antlr)BitSet IOSCfgParser::_tokenSet_1(_tokenSet_1_data_,4); -const unsigned long IOSCfgParser::_tokenSet_2_data_[] = { 22386UL, 12664UL, 0UL, 0UL }; +const unsigned long IOSCfgParser::_tokenSet_2_data_[] = { 178290UL, 25272UL, 0UL, 0UL }; // EOF NEWLINE "ip" "quit" WORD "certificate" "version" "hostname" "access-list" // "vlan" "controller" "interface" "description" "shutdown" "exit" LINE_COMMENT const ANTLR_USE_NAMESPACE(antlr)BitSet IOSCfgParser::_tokenSet_2(_tokenSet_2_data_,4); -const unsigned long IOSCfgParser::_tokenSet_3_data_[] = { 3670304UL, 0UL, 0UL, 0UL }; -// "ip" WORD "icmp" "tcp" "udp" +const unsigned long IOSCfgParser::_tokenSet_3_data_[] = { 4196768UL, 0UL, 0UL, 0UL }; +// "ip" "icmp" "tcp" WORD "udp" const ANTLR_USE_NAMESPACE(antlr)BitSet IOSCfgParser::_tokenSet_3(_tokenSet_3_data_,4); -const unsigned long IOSCfgParser::_tokenSet_4_data_[] = { 3221673842UL, 12798UL, 0UL, 0UL }; +const unsigned long IOSCfgParser::_tokenSet_4_data_[] = { 3224811634UL, 25534UL, 0UL, 0UL }; // EOF NEWLINE "ip" "quit" WORD "certificate" "version" "hostname" "access-list" // INT_CONST "permit" "deny" "log" "log-input" "fragments" "time-range" // "vlan" "controller" "interface" "description" "remark" "shutdown" "exit" // LINE_COMMENT const ANTLR_USE_NAMESPACE(antlr)BitSet IOSCfgParser::_tokenSet_4(_tokenSet_4_data_,4); -const unsigned long IOSCfgParser::_tokenSet_5_data_[] = { 3221641074UL, 12798UL, 0UL, 0UL }; +const unsigned long IOSCfgParser::_tokenSet_5_data_[] = { 3224549490UL, 25534UL, 0UL, 0UL }; // EOF NEWLINE "ip" "quit" WORD "certificate" "version" "hostname" "access-list" // "permit" "deny" "log" "log-input" "fragments" "time-range" "vlan" "controller" // "interface" "description" "remark" "shutdown" "exit" LINE_COMMENT const ANTLR_USE_NAMESPACE(antlr)BitSet IOSCfgParser::_tokenSet_5(_tokenSet_5_data_,4); -const unsigned long IOSCfgParser::_tokenSet_6_data_[] = { 3225354226UL, 14328UL, 0UL, 0UL }; -// EOF NEWLINE "ip" "quit" "community-list" WORD "certificate" "version" -// NUMBER "hostname" STRING "access-list" INT_CONST "permit" "deny" "icmp" -// "tcp" "udp" "log" "log-input" "vlan" "controller" "interface" "description" +const unsigned long IOSCfgParser::_tokenSet_6_data_[] = { 3229089778UL, 28600UL, 0UL, 0UL }; +// EOF NEWLINE "ip" "quit" "icmp" "tcp" "host" "community-list" WORD "certificate" +// "version" NUMBER "hostname" STRING "access-list" INT_CONST "permit" +// "deny" "udp" "log" "log-input" "vlan" "controller" "interface" "description" // "remark" "shutdown" "access-group" "address" "exit" LINE_COMMENT const ANTLR_USE_NAMESPACE(antlr)BitSet IOSCfgParser::_tokenSet_6(_tokenSet_6_data_,4); -const unsigned long IOSCfgParser::_tokenSet_7_data_[] = { 939524096UL, 0UL, 0UL, 0UL }; +const unsigned long IOSCfgParser::_tokenSet_7_data_[] = { 805306880UL, 0UL, 0UL, 0UL }; // "host" IPV4 "any" const ANTLR_USE_NAMESPACE(antlr)BitSet IOSCfgParser::_tokenSet_7(_tokenSet_7_data_,4); -const unsigned long IOSCfgParser::_tokenSet_8_data_[] = { 4291221362UL, 12799UL, 0UL, 0UL }; -// EOF NEWLINE "ip" "quit" WORD "certificate" "version" "hostname" "access-list" -// INT_CONST "permit" "deny" "eq" "gt" "lt" "neq" "range" "host" IPV4 "any" -// "log" "log-input" "established" "fragments" "time-range" "vlan" "controller" -// "interface" "description" "remark" "shutdown" "exit" LINE_COMMENT +const unsigned long IOSCfgParser::_tokenSet_8_data_[] = { 4290165362UL, 25535UL, 0UL, 0UL }; +// EOF NEWLINE "ip" "quit" "host" WORD "certificate" "version" "hostname" +// "access-list" INT_CONST "permit" "deny" "eq" "gt" "lt" "neq" "range" +// IPV4 "any" "log" "log-input" "established" "fragments" "time-range" +// "vlan" "controller" "interface" "description" "remark" "shutdown" "exit" +// LINE_COMMENT const ANTLR_USE_NAMESPACE(antlr)BitSet IOSCfgParser::_tokenSet_8(_tokenSet_8_data_,4); -const unsigned long IOSCfgParser::_tokenSet_9_data_[] = { 3221641074UL, 12794UL, 0UL, 0UL }; +const unsigned long IOSCfgParser::_tokenSet_9_data_[] = { 3224549490UL, 25530UL, 0UL, 0UL }; // EOF NEWLINE "ip" "quit" WORD "certificate" "version" "hostname" "access-list" // "permit" "deny" "log" "log-input" "fragments" "vlan" "controller" "interface" // "description" "remark" "shutdown" "exit" LINE_COMMENT const ANTLR_USE_NAMESPACE(antlr)BitSet IOSCfgParser::_tokenSet_9(_tokenSet_9_data_,4); -const unsigned long IOSCfgParser::_tokenSet_10_data_[] = { 3221641074UL, 12792UL, 0UL, 0UL }; +const unsigned long IOSCfgParser::_tokenSet_10_data_[] = { 3224549490UL, 25528UL, 0UL, 0UL }; // EOF NEWLINE "ip" "quit" WORD "certificate" "version" "hostname" "access-list" // "permit" "deny" "log" "log-input" "vlan" "controller" "interface" "description" // "remark" "shutdown" "exit" LINE_COMMENT const ANTLR_USE_NAMESPACE(antlr)BitSet IOSCfgParser::_tokenSet_10(_tokenSet_10_data_,4); -const unsigned long IOSCfgParser::_tokenSet_11_data_[] = { 4161165170UL, 12799UL, 0UL, 0UL }; -// EOF NEWLINE "ip" "quit" WORD "certificate" "version" "hostname" "access-list" -// "permit" "deny" "host" IPV4 "any" "log" "log-input" "established" "fragments" -// "time-range" "vlan" "controller" "interface" "description" "remark" -// "shutdown" "exit" LINE_COMMENT +const unsigned long IOSCfgParser::_tokenSet_11_data_[] = { 4029856370UL, 25535UL, 0UL, 0UL }; +// EOF NEWLINE "ip" "quit" "host" WORD "certificate" "version" "hostname" +// "access-list" "permit" "deny" IPV4 "any" "log" "log-input" "established" +// "fragments" "time-range" "vlan" "controller" "interface" "description" +// "remark" "shutdown" "exit" LINE_COMMENT const ANTLR_USE_NAMESPACE(antlr)BitSet IOSCfgParser::_tokenSet_11(_tokenSet_11_data_,4); -const unsigned long IOSCfgParser::_tokenSet_12_data_[] = { 3221247858UL, 12664UL, 0UL, 0UL }; +const unsigned long IOSCfgParser::_tokenSet_12_data_[] = { 3221403762UL, 25272UL, 0UL, 0UL }; // EOF NEWLINE "ip" "quit" WORD "certificate" "version" "hostname" "access-list" // "log" "log-input" "vlan" "controller" "interface" "description" "shutdown" // "exit" LINE_COMMENT const ANTLR_USE_NAMESPACE(antlr)BitSet IOSCfgParser::_tokenSet_12(_tokenSet_12_data_,4); -const unsigned long IOSCfgParser::_tokenSet_13_data_[] = { 4161197938UL, 12799UL, 0UL, 0UL }; -// EOF NEWLINE "ip" "quit" WORD "certificate" "version" "hostname" "access-list" -// INT_CONST "permit" "deny" "host" IPV4 "any" "log" "log-input" "established" -// "fragments" "time-range" "vlan" "controller" "interface" "description" -// "remark" "shutdown" "exit" LINE_COMMENT +const unsigned long IOSCfgParser::_tokenSet_13_data_[] = { 4030118514UL, 25535UL, 0UL, 0UL }; +// EOF NEWLINE "ip" "quit" "host" WORD "certificate" "version" "hostname" +// "access-list" INT_CONST "permit" "deny" IPV4 "any" "log" "log-input" +// "established" "fragments" "time-range" "vlan" "controller" "interface" +// "description" "remark" "shutdown" "exit" LINE_COMMENT const ANTLR_USE_NAMESPACE(antlr)BitSet IOSCfgParser::_tokenSet_13(_tokenSet_13_data_,4); const unsigned long IOSCfgParser::_tokenSet_14_data_[] = { 16UL, 0UL, 0UL, 0UL }; // NEWLINE diff --git a/src/parsers/IOSCfgParser.hpp b/src/parsers/IOSCfgParser.hpp index 9d4ac73bc..e0d4f2c81 100644 --- a/src/parsers/IOSCfgParser.hpp +++ b/src/parsers/IOSCfgParser.hpp @@ -102,6 +102,7 @@ public: public: void ip_access_list_ext(); public: void interface_known_ip_commands(); public: void community_list_command(); + public: void ip_unused_command(); public: void permit_std(); public: void deny_std(); public: void permit_ext(); @@ -135,10 +136,10 @@ protected: private: static const char* tokenNames[]; #ifndef NO_STATIC_CONSTS - static const int NUM_TOKENS = 79; + static const int NUM_TOKENS = 80; #else enum { - NUM_TOKENS = 79 + NUM_TOKENS = 80 }; #endif diff --git a/src/parsers/IOSCfgParserTokenTypes.hpp b/src/parsers/IOSCfgParserTokenTypes.hpp index 11057516a..837f24f49 100644 --- a/src/parsers/IOSCfgParserTokenTypes.hpp +++ b/src/parsers/IOSCfgParserTokenTypes.hpp @@ -15,27 +15,27 @@ struct CUSTOM_API IOSCfgParserTokenTypes { NEWLINE = 4, IP = 5, QUIT = 6, - COMMUNITY_LIST = 7, - WORD = 8, - CERTIFICATE = 9, - IOSVERSION = 10, - NUMBER = 11, - HOSTNAME = 12, - STRING = 13, - ACCESS_LIST = 14, - INT_CONST = 15, - EXTENDED = 16, - PERMIT = 17, - DENY = 18, - ICMP = 19, - TCP = 20, - UDP = 21, - P_EQ = 22, - P_GT = 23, - P_LT = 24, - P_NEQ = 25, - P_RANGE = 26, - HOST = 27, + ICMP = 7, + TCP = 8, + HOST = 9, + COMMUNITY_LIST = 10, + WORD = 11, + CERTIFICATE = 12, + IOSVERSION = 13, + NUMBER = 14, + HOSTNAME = 15, + STRING = 16, + ACCESS_LIST = 17, + INT_CONST = 18, + EXTENDED = 19, + PERMIT = 20, + DENY = 21, + UDP = 22, + P_EQ = 23, + P_GT = 24, + P_LT = 25, + P_NEQ = 26, + P_RANGE = 27, IPV4 = 28, ANY = 29, LOG = 30, @@ -46,47 +46,48 @@ struct CUSTOM_API IOSCfgParserTokenTypes { VLAN = 35, CONTROLLER = 36, INTRFACE = 37, - DESCRIPTION = 38, - REMARK = 39, - SHUTDOWN = 40, - ACCESS_GROUP = 41, - ADDRESS = 42, - SECONDARY = 43, - EXIT = 44, - LINE_COMMENT = 45, - STANDARD = 46, - Whitespace = 47, - HEX_CONST = 48, - NEG_INT_CONST = 49, - DIGIT = 50, - HEXDIGIT = 51, - PIPE_CHAR = 52, - NUMBER_SIGN = 53, - PERCENT = 54, - AMPERSAND = 55, - APOSTROPHE = 56, - OPENING_PAREN = 57, - CLOSING_PAREN = 58, - STAR = 59, - PLUS = 60, - COMMA = 61, - MINUS = 62, - DOT = 63, - SLASH = 64, - COLON = 65, - SEMICOLON = 66, - LESS_THAN = 67, - EQUALS = 68, - GREATER_THAN = 69, - QUESTION = 70, - COMMERCIAL_AT = 71, - OPENING_SQUARE = 72, - CLOSING_SQUARE = 73, - CARET = 74, - UNDERLINE = 75, - OPENING_BRACE = 76, - CLOSING_BRACE = 77, - TILDE = 78, + POINT_TO_POINT = 38, + DESCRIPTION = 39, + REMARK = 40, + SHUTDOWN = 41, + ACCESS_GROUP = 42, + ADDRESS = 43, + SECONDARY = 44, + EXIT = 45, + LINE_COMMENT = 46, + STANDARD = 47, + Whitespace = 48, + HEX_CONST = 49, + NEG_INT_CONST = 50, + DIGIT = 51, + HEXDIGIT = 52, + PIPE_CHAR = 53, + NUMBER_SIGN = 54, + PERCENT = 55, + AMPERSAND = 56, + APOSTROPHE = 57, + OPENING_PAREN = 58, + CLOSING_PAREN = 59, + STAR = 60, + PLUS = 61, + COMMA = 62, + MINUS = 63, + DOT = 64, + SLASH = 65, + COLON = 66, + SEMICOLON = 67, + LESS_THAN = 68, + EQUALS = 69, + GREATER_THAN = 70, + QUESTION = 71, + COMMERCIAL_AT = 72, + OPENING_SQUARE = 73, + CLOSING_SQUARE = 74, + CARET = 75, + UNDERLINE = 76, + OPENING_BRACE = 77, + CLOSING_BRACE = 78, + TILDE = 79, NULL_TREE_LOOKAHEAD = 3 }; #ifdef __cplusplus diff --git a/src/parsers/IOSCfgParserTokenTypes.txt b/src/parsers/IOSCfgParserTokenTypes.txt index 488f219b7..0b49128c2 100644 --- a/src/parsers/IOSCfgParserTokenTypes.txt +++ b/src/parsers/IOSCfgParserTokenTypes.txt @@ -3,27 +3,27 @@ IOSCfgParser // output token vocab name NEWLINE=4 IP="ip"=5 QUIT="quit"=6 -COMMUNITY_LIST="community-list"=7 -WORD=8 -CERTIFICATE="certificate"=9 -IOSVERSION="version"=10 -NUMBER=11 -HOSTNAME="hostname"=12 -STRING=13 -ACCESS_LIST="access-list"=14 -INT_CONST=15 -EXTENDED="extended"=16 -PERMIT="permit"=17 -DENY="deny"=18 -ICMP="icmp"=19 -TCP="tcp"=20 -UDP="udp"=21 -P_EQ="eq"=22 -P_GT="gt"=23 -P_LT="lt"=24 -P_NEQ="neq"=25 -P_RANGE="range"=26 -HOST="host"=27 +ICMP="icmp"=7 +TCP="tcp"=8 +HOST="host"=9 +COMMUNITY_LIST="community-list"=10 +WORD=11 +CERTIFICATE="certificate"=12 +IOSVERSION="version"=13 +NUMBER=14 +HOSTNAME="hostname"=15 +STRING=16 +ACCESS_LIST="access-list"=17 +INT_CONST=18 +EXTENDED="extended"=19 +PERMIT="permit"=20 +DENY="deny"=21 +UDP="udp"=22 +P_EQ="eq"=23 +P_GT="gt"=24 +P_LT="lt"=25 +P_NEQ="neq"=26 +P_RANGE="range"=27 IPV4=28 ANY="any"=29 LOG="log"=30 @@ -34,44 +34,45 @@ TIME_RANGE="time-range"=34 VLAN="vlan"=35 CONTROLLER="controller"=36 INTRFACE="interface"=37 -DESCRIPTION="description"=38 -REMARK="remark"=39 -SHUTDOWN="shutdown"=40 -ACCESS_GROUP="access-group"=41 -ADDRESS="address"=42 -SECONDARY="secondary"=43 -EXIT="exit"=44 -LINE_COMMENT=45 -STANDARD="standard"=46 -Whitespace=47 -HEX_CONST=48 -NEG_INT_CONST=49 -DIGIT=50 -HEXDIGIT=51 -PIPE_CHAR=52 -NUMBER_SIGN=53 -PERCENT=54 -AMPERSAND=55 -APOSTROPHE=56 -OPENING_PAREN=57 -CLOSING_PAREN=58 -STAR=59 -PLUS=60 -COMMA=61 -MINUS=62 -DOT=63 -SLASH=64 -COLON=65 -SEMICOLON=66 -LESS_THAN=67 -EQUALS=68 -GREATER_THAN=69 -QUESTION=70 -COMMERCIAL_AT=71 -OPENING_SQUARE=72 -CLOSING_SQUARE=73 -CARET=74 -UNDERLINE=75 -OPENING_BRACE=76 -CLOSING_BRACE=77 -TILDE=78 +POINT_TO_POINT="point-to-point"=38 +DESCRIPTION="description"=39 +REMARK="remark"=40 +SHUTDOWN="shutdown"=41 +ACCESS_GROUP="access-group"=42 +ADDRESS="address"=43 +SECONDARY="secondary"=44 +EXIT="exit"=45 +LINE_COMMENT=46 +STANDARD="standard"=47 +Whitespace=48 +HEX_CONST=49 +NEG_INT_CONST=50 +DIGIT=51 +HEXDIGIT=52 +PIPE_CHAR=53 +NUMBER_SIGN=54 +PERCENT=55 +AMPERSAND=56 +APOSTROPHE=57 +OPENING_PAREN=58 +CLOSING_PAREN=59 +STAR=60 +PLUS=61 +COMMA=62 +MINUS=63 +DOT=64 +SLASH=65 +COLON=66 +SEMICOLON=67 +LESS_THAN=68 +EQUALS=69 +GREATER_THAN=70 +QUESTION=71 +COMMERCIAL_AT=72 +OPENING_SQUARE=73 +CLOSING_SQUARE=74 +CARET=75 +UNDERLINE=76 +OPENING_BRACE=77 +CLOSING_BRACE=78 +TILDE=79 diff --git a/src/parsers/iosacl.g b/src/parsers/iosacl.g index 010a05684..6a009aece 100644 --- a/src/parsers/iosacl.g +++ b/src/parsers/iosacl.g @@ -134,7 +134,18 @@ cfgfile : //**************************************************************** -ip_commands : IP ( ip_access_list_ext | interface_known_ip_commands | community_list_command | unknown_command ) +ip_commands : IP + ( + ip_access_list_ext + | + interface_known_ip_commands + | + community_list_command + | + ip_unused_command + | + unknown_command + ) ; //**************************************************************** @@ -144,6 +155,17 @@ quit : QUIT } ; +//**************************************************************** +// these are "ip ..." top level commands that we do not use but parser +// should not abort on. Unlike unknown_command, these have known token as +// a second word so they dont match unknown_command which expects WORD. + +ip_unused_command : ICMP | TCP | HOST + { + consumeUntil(NEWLINE); + } + ; + //**************************************************************** community_list_command : COMMUNITY_LIST { @@ -508,6 +530,14 @@ intrface : INTRFACE in:WORD *dbg << in->getLine() << ":" << " INTRFACE: " << in->getText() << std::endl; } + ( + POINT_TO_POINT + { + importer->addMessageToLog( + QString("Warning: point-to-point interfaces " + "are not supported")); + } + )? NEWLINE ; @@ -717,6 +747,7 @@ tokens EXTENDED = "extended" ; STANDARD = "standard" ; + POINT_TO_POINT = "point-to-point" ; } LINE_COMMENT : "!" (~('\r' | '\n'))* ; // NEWLINE ; diff --git a/src/unit_tests/ImporterTest/test_data/ios.fwb b/src/unit_tests/ImporterTest/test_data/ios.fwb index e8457d4a7..ad4f5547b 100644 --- a/src/unit_tests/ImporterTest/test_data/ios.fwb +++ b/src/unit_tests/ImporterTest/test_data/ios.fwb @@ -1,6 +1,6 @@ - + @@ -432,64 +432,64 @@ - - - - - - + + + + + + - + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - - - - - + + + + + + + + + - - - - - - + + + + + + @@ -501,7 +501,7 @@ - + @@ -521,7 +521,7 @@ - + @@ -541,7 +541,7 @@ - + @@ -561,7 +561,7 @@ - + @@ -581,7 +581,7 @@ - + @@ -601,7 +601,7 @@ - + @@ -621,7 +621,7 @@ - + @@ -641,7 +641,7 @@ - + @@ -661,7 +661,7 @@ - + @@ -681,7 +681,7 @@ - + @@ -701,7 +701,7 @@ - + @@ -721,7 +721,7 @@ - + @@ -741,7 +741,7 @@ - + @@ -761,7 +761,7 @@ - + @@ -781,7 +781,7 @@ - + @@ -801,7 +801,7 @@ - + @@ -826,19 +826,23 @@ - - - + + + - + - - - + + + - - + + + + + + @@ -852,7 +856,7 @@ - - + + diff --git a/src/unit_tests/ImporterTest/test_data/ios.output b/src/unit_tests/ImporterTest/test_data/ios.output index ac01c59b7..359ece983 100644 --- a/src/unit_tests/ImporterTest/test_data/ios.output +++ b/src/unit_tests/ImporterTest/test_data/ios.output @@ -1,79 +1,84 @@ 10: Host name: "c3620" -104: New interface: FastEthernet0/0 -105: Interface address: 192.168.100.100/255.255.255.0 -106: Interface address: 10.3.14.201/255.255.255.0 -107: Interface FastEthernet0/0 ruleset fe0_0_acl_in direction 'in' -108: Interface FastEthernet0/0 ruleset fe0_0_acl_out direction 'out' -113: New interface: Ethernet1/0 -114: Interface comment: Test [ test ] { test } ( and one more test) / weird:characters#$%^&*/ -115: Interface address: 192.168.171.2/255.255.255.0 -116: Interface Ethernet1/0 ruleset e1_0_acl_in direction 'in' -117: Interface Ethernet1/0 ruleset e1_0_acl_out direction 'out' -123: New interface: Serial1/0 -129: New interface: Ethernet1/1 -130: Interface address: 10.10.10.10/255.255.255.0 -134: Interface Ethernet1/1 ruleset acl_133 direction 'in' -135: Interface Ethernet1/1 ruleset acl_133 direction 'out' -139: New interface: Ethernet1/2 -140: Interface address: 10.10.20.20/255.255.255.0 -145: Interface Ethernet1/2 ruleset acl_133 direction 'in' -146: Interface Ethernet1/2 ruleset acl_133 direction 'out' -175: access list rule: access list e1_0_acl_in, action deny -176: access list rule: access list e1_0_acl_in, action permit -177: access list rule: access list e1_0_acl_in, action permit -178: access list rule: access list e1_0_acl_in, action permit -179: access list rule: access list e1_0_acl_in, action deny -182: access list rule: access list e1_0_acl_out, action permit -183: access list rule: access list e1_0_acl_out, action deny -186: access list rule: access list fe0_0_acl_in, action permit -187: access list rule: access list fe0_0_acl_in, action permit -188: access list rule: access list fe0_0_acl_in, action permit -189: access list rule: access list fe0_0_acl_in, action deny -192: access list rule: access list fe0_0_acl_out, action permit -193: access list rule: access list fe0_0_acl_out, action deny -196: Rule comment: / / path1/path2/path3 -197: Rule comment: access list comment -199: access list rule: access list outside, action permit -201: access list rule: access list outside, action permit -203: access list rule: access list outside, action permit -205: access list rule: access list outside, action permit -206: access list rule: access list outside, action deny -208: access list rule: access list outside, action permit -210: access list rule: access list outside, action permit -211: access list rule: access list outside, action permit -214: access list rule: access list outside, action deny -215: access list rule: access list outside, action deny -216: access list rule: access list outside, action deny -217: access list rule: access list outside, action deny -219: access list rule: access list outside, action permit +106: New interface: FastEthernet0/0 +107: Interface address: 192.168.100.100/255.255.255.0 +108: Interface address: 10.3.14.201/255.255.255.0 +109: Interface FastEthernet0/0 ruleset fe0_0_acl_in direction 'in' +110: Interface FastEthernet0/0 ruleset fe0_0_acl_out direction 'out' +115: New interface: Ethernet1/0 +116: Interface comment: Test [ test ] { test } ( and one more test) / weird:characters#$%^&*/ +117: Interface address: 192.168.171.2/255.255.255.0 +118: Interface Ethernet1/0 ruleset e1_0_acl_in direction 'in' +119: Interface Ethernet1/0 ruleset e1_0_acl_out direction 'out' +125: New interface: Serial1/0 +131: New interface: Ethernet1/1 +132: Interface address: 10.10.10.10/255.255.255.0 +136: Interface Ethernet1/1 ruleset acl_133 direction 'in' +137: Interface Ethernet1/1 ruleset acl_133 direction 'out' +141: New interface: Ethernet1/2 +142: Interface address: 10.10.20.20/255.255.255.0 +147: Interface Ethernet1/2 ruleset acl_133 direction 'in' +148: Interface Ethernet1/2 ruleset acl_133 direction 'out' +152: New interface: ATM0 +161: New interface: ATM0.1 +161: Warning: point-to-point interfaces are not supported +162: Interface comment: $FW_OUTSIDE$$ES_WAN$ +165: Interface address: 10.0.0.1/255.255.255.252 +194: access list rule: access list e1_0_acl_in, action deny +195: access list rule: access list e1_0_acl_in, action permit +196: access list rule: access list e1_0_acl_in, action permit +197: access list rule: access list e1_0_acl_in, action permit +198: access list rule: access list e1_0_acl_in, action deny +201: access list rule: access list e1_0_acl_out, action permit +202: access list rule: access list e1_0_acl_out, action deny +205: access list rule: access list fe0_0_acl_in, action permit +206: access list rule: access list fe0_0_acl_in, action permit +207: access list rule: access list fe0_0_acl_in, action permit +208: access list rule: access list fe0_0_acl_in, action deny +211: access list rule: access list fe0_0_acl_out, action permit +212: access list rule: access list fe0_0_acl_out, action deny +215: Rule comment: / / path1/path2/path3 +216: Rule comment: access list comment +218: access list rule: access list outside, action permit 220: access list rule: access list outside, action permit 222: access list rule: access list outside, action permit 224: access list rule: access list outside, action permit -226: access list rule: access list outside, action permit +225: access list rule: access list outside, action deny 227: access list rule: access list outside, action permit -228: access list rule: access list outside, action permit -232: access list rule: access list outside, action permit -233: access list rule: access list outside, action permit -234: access list rule: access list outside, action permit -236: access list rule: access list outside, action permit -237: access list rule: access list outside, action deny -242: access list rule: access list tmp_acl, action permit -243: access list rule: access list tmp_acl, action deny -245: access list rule: access list acl_133, action permit -246: access list rule: access list acl_133, action permit -247: access list rule: access list acl_133, action deny -248: access list rule: access list acl_144, action permit -249: access list rule: access list acl_144, action permit -250: access list rule: access list acl_144, action permit -251: access list rule: access list acl_144, action permit -252: access list rule: access list acl_144, action permit -253: access list rule: access list acl_144, action permit -254: access list rule: access list acl_144, action permit -255: access list rule: access list acl_144, action permit -256: access list rule: access list acl_199, action permit -257: access list rule: access list acl_199, action permit -259: Rule comment: Standard access lists are 1 to 99 and 1300 to 1999 -260: access list rule: access list acl_1300, action permit -261: access list rule: access list acl_1300, action permit -262: access list rule: access list acl_1300, action permit -263: access list rule: access list acl_1300, action permit +229: access list rule: access list outside, action permit +230: access list rule: access list outside, action permit +233: access list rule: access list outside, action deny +234: access list rule: access list outside, action deny +235: access list rule: access list outside, action deny +236: access list rule: access list outside, action deny +238: access list rule: access list outside, action permit +239: access list rule: access list outside, action permit +241: access list rule: access list outside, action permit +243: access list rule: access list outside, action permit +245: access list rule: access list outside, action permit +246: access list rule: access list outside, action permit +247: access list rule: access list outside, action permit +251: access list rule: access list outside, action permit +252: access list rule: access list outside, action permit +253: access list rule: access list outside, action permit +255: access list rule: access list outside, action permit +256: access list rule: access list outside, action deny +261: access list rule: access list tmp_acl, action permit +262: access list rule: access list tmp_acl, action deny +264: access list rule: access list acl_133, action permit +265: access list rule: access list acl_133, action permit +266: access list rule: access list acl_133, action deny +267: access list rule: access list acl_144, action permit +268: access list rule: access list acl_144, action permit +269: access list rule: access list acl_144, action permit +270: access list rule: access list acl_144, action permit +271: access list rule: access list acl_144, action permit +272: access list rule: access list acl_144, action permit +273: access list rule: access list acl_144, action permit +274: access list rule: access list acl_144, action permit +275: access list rule: access list acl_199, action permit +276: access list rule: access list acl_199, action permit +278: Rule comment: Standard access lists are 1 to 99 and 1300 to 1999 +279: access list rule: access list acl_1300, action permit +280: access list rule: access list acl_1300, action permit +281: access list rule: access list acl_1300, action permit +282: access list rule: access list acl_1300, action permit diff --git a/src/unit_tests/ImporterTest/test_data/ios.test b/src/unit_tests/ImporterTest/test_data/ios.test index e1483608a..bd4051bea 100644 --- a/src/unit_tests/ImporterTest/test_data/ios.test +++ b/src/unit_tests/ImporterTest/test_data/ios.test @@ -25,6 +25,8 @@ clock timezone PST -7 ip subnet-zero ! ! +ip tcp synwait-time 10 +ip cef ip domain-name fwbuilder.org ip name-server 10.1.1.10 ! @@ -147,6 +149,23 @@ interface Ethernet1/2 no shutdown half-duplex ! +interface ATM0 + no ip address + no ip redirects + no ip unreachables + no ip proxy-arp + ip route-cache flow + no atm ilmi-keepalive + dsl operating-mode auto +! +interface ATM0.1 point-to-point + description $FW_OUTSIDE$$ES_WAN$ + no snmp trap link-status + pvc 0/38 + ip address 10.0.0.1 255.255.255.252 + encapsulation aal5mux ppp dialer + dialer pool-member 1 +! router ospf 1 network 10.3.14.0 0.0.0.255 area 0 !