[fwbuilder-commits] [SCM] Firewall Builder GUI and Policy Compilers Open Source Code branch, develo
Brought to you by:
mikehorn
From: <gi...@ir...> - 2011-04-08 02:14:39
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Firewall Builder GUI and Policy Compilers Open Source Code". The branch, development has been updated via c3a922b4a3588b168263321ee7d0585784ad16ee (commit) from c1194cced196f260a5b0e5a38054342dc7f187de (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit c3a922b4a3588b168263321ee7d0585784ad16ee Author: Vadim Kurland <va...@sl...> Date: Thu Apr 7 19:25:44 2011 -0700 see #2295 fixes for FWSM diff --git a/doc/ChangeLog b/doc/ChangeLog index 63e34c0..25c1b5b 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,5 +1,8 @@ 2011-04-07 vadim <va...@ne...> + * pix.g (network_top_level_command): see #2295 fixes in the grammar + to support import of FWSM configs + * PIXImporter.cpp (fixServiceObjectUsedForBothSrcAndDstPorts): see #2265 "ASA 8.3 acl import: access-list commands using two named objects or object-groups", see #2290 "Access lists that diff --git a/src/import/Importer.cpp b/src/import/Importer.cpp index c4ed7b2..e18d6a0 100644 --- a/src/import/Importer.cpp +++ b/src/import/Importer.cpp @@ -240,6 +240,12 @@ void Importer::setDiscoveredVersion(const std::string &v) addMessageToLog("Version: " + v); } +void Importer::setDiscoveredPlatform(const std::string &v) +{ + discovered_platform = v; + addMessageToLog("Platform: " + v); +} + void Importer::newInterface(const std::string &name) { if (all_interfaces.count(name)>0) return; diff --git a/src/import/Importer.h b/src/import/Importer.h index cecd9fd..3441625 100644 --- a/src/import/Importer.h +++ b/src/import/Importer.h @@ -120,6 +120,7 @@ protected: std::string platform; + std::string discovered_platform; std::string discovered_version; libfwbuilder::Interface* current_interface; @@ -283,6 +284,7 @@ public: int errorCounter() { return error_counter; } + virtual void setDiscoveredPlatform(const std::string &v); virtual void setDiscoveredVersion(const std::string &v); virtual void setHostName(const std::string &hn); virtual void newInterface(const std::string &interface_name); diff --git a/src/import/PIXImporter.cpp b/src/import/PIXImporter.cpp index 9ba03b8..1cd1909 100644 --- a/src/import/PIXImporter.cpp +++ b/src/import/PIXImporter.cpp @@ -652,11 +652,24 @@ Firewall* PIXImporter::finalize() if (haveFirewallObject()) { Firewall *fw = Firewall::cast(getFirewallObject()); - fw->setStr("host_OS", "pix_os"); - Resources::setDefaultTargetOptions("pix_os" , fw); + + QString pl = QString(discovered_platform.c_str()).toLower(); + if (pl == "asa") pl = "pix"; + + string host_os; + + if (pl == "pix") host_os = "pix_os"; + if (pl == "fwsm") host_os = "fwsm_os"; + + if (! host_os.empty()) + { + fw->setStr("host_OS", host_os); + Resources::setDefaultTargetOptions(host_os , fw); + } string version = findBestVersionMatch( - "pix", discovered_version.c_str()).toStdString(); + pl, discovered_version.c_str()).toStdString(); + if ( ! version.empty()) fw->setStr("version", version); diff --git a/src/parsers/PIXCfgLexer.cpp b/src/parsers/PIXCfgLexer.cpp index 9274bf7..cfff0e0 100644 --- a/src/parsers/PIXCfgLexer.cpp +++ b/src/parsers/PIXCfgLexer.cpp @@ -44,152 +44,153 @@ PIXCfgLexer::PIXCfgLexer(const ANTLR_USE_NAMESPACE(antlr)LexerSharedInputState& void PIXCfgLexer::initLiterals() { - literals["full"] = 125; - literals["parameter-problem"] = 91; + literals["full"] = 126; + literals["parameter-problem"] = 92; + literals["FWSM"] = 67; literals["port-object"] = 54; - literals["notifications"] = 111; - literals["duplex"] = 131; + literals["notifications"] = 112; + literals["duplex"] = 132; literals["dns"] = 56; literals["no"] = 63; - literals["static"] = 161; - literals["esp"] = 16; - literals["time-range"] = 117; - literals["gre"] = 17; - literals["timestamp-request"] = 98; - literals["echo"] = 80; - literals["speed"] = 130; - literals["warnings"] = 112; + literals["static"] = 162; + literals["esp"] = 18; + literals["time-range"] = 118; + literals["gre"] = 19; + literals["timestamp-request"] = 99; + literals["echo"] = 81; + literals["speed"] = 131; + literals["warnings"] = 113; literals["resetoutbound"] = 61; literals["timeout"] = 8; - literals["eigrp"] = 15; + literals["eigrp"] = 17; literals["icmp-type"] = 51; - literals["permit"] = 73; - literals["remark"] = 151; - literals["network"] = 29; - literals["igmp"] = 18; + literals["permit"] = 74; + literals["remark"] = 152; + literals["network"] = 10; + literals["igmp"] = 20; literals["range"] = 32; literals["destination"] = 44; - literals["setroute"] = 164; - literals["vlan"] = 129; - literals["debugging"] = 107; - literals["controller"] = 118; - literals["interface"] = 101; - literals["dhcp"] = 143; - literals["aui"] = 122; - literals["Version"] = 67; - literals["auto"] = 123; + literals["setroute"] = 165; + literals["vlan"] = 130; + literals["debugging"] = 108; + literals["controller"] = 119; + literals["interface"] = 102; + literals["dhcp"] = 144; + literals["aui"] = 123; + literals["Version"] = 68; + literals["auto"] = 124; literals["subnet"] = 33; - literals["time-exceeded"] = 96; - literals["outside"] = 119; - literals["shutdown"] = 141; + literals["time-exceeded"] = 97; + literals["outside"] = 120; + literals["shutdown"] = 142; literals["group-object"] = 46; - literals["eq"] = 76; - literals["fragments"] = 116; - literals["norandomseq"] = 162; - literals["unreachable"] = 100; - literals["delay"] = 134; + literals["eq"] = 77; + literals["fragments"] = 117; + literals["norandomseq"] = 163; + literals["unreachable"] = 101; + literals["delay"] = 135; literals["ip"] = 6; - literals["security-level"] = 140; - literals["mobile-redirect"] = 90; - literals["ospf"] = 23; - literals["name"] = 10; - literals["errors"] = 109; - literals["mask-request"] = 89; + literals["security-level"] = 141; + literals["mobile-redirect"] = 91; + literals["ospf"] = 25; + literals["name"] = 12; + literals["errors"] = 110; + literals["mask-request"] = 90; literals["PIX"] = 65; - literals["any"] = 102; + literals["any"] = 103; literals["ASA"] = 66; - literals["pptp"] = 26; - literals["redirect"] = 92; - literals["forward"] = 133; - literals["timestamp-reply"] = 97; + literals["pptp"] = 27; + literals["redirect"] = 93; + literals["forward"] = 134; + literals["timestamp-reply"] = 98; literals["description"] = 30; - literals["alerts"] = 105; - literals["netmask"] = 160; - literals["lt"] = 78; + literals["alerts"] = 106; + literals["netmask"] = 161; + literals["lt"] = 79; literals["internal"] = 58; - literals["bnc"] = 124; - literals["global"] = 158; - literals["nos"] = 22; - literals["extended"] = 72; + literals["bnc"] = 125; + literals["global"] = 159; + literals["nos"] = 24; + literals["extended"] = 73; literals["certificate"] = 64; literals["service"] = 34; literals["telnet"] = 37; literals["udp"] = 42; - literals["hold-time"] = 135; - literals["baseT"] = 126; - literals["ipinip"] = 20; - literals["standby"] = 144; + literals["hold-time"] = 136; + literals["baseT"] = 127; + literals["ipinip"] = 22; + literals["standby"] = 145; literals["crypto"] = 55; - literals["object"] = 28; - literals["pim"] = 25; - literals["secondary"] = 163; - literals["emergencies"] = 108; - literals["disable"] = 113; - literals["mask-reply"] = 88; + literals["object"] = 29; + literals["pim"] = 9; + literals["secondary"] = 164; + literals["emergencies"] = 109; + literals["disable"] = 114; + literals["mask-reply"] = 89; literals["tcp"] = 41; literals["tcp-udp"] = 52; literals["source"] = 43; - literals["names"] = 9; + literals["names"] = 11; literals["icmp"] = 38; literals["http"] = 35; literals["call-home"] = 57; - literals["log"] = 103; - literals["snp"] = 27; - literals["mac-address"] = 137; - literals["established"] = 82; - literals["deny"] = 74; - literals["information-request"] = 87; + literals["log"] = 104; + literals["snp"] = 28; + literals["mac-address"] = 138; + literals["established"] = 83; + literals["deny"] = 75; + literals["information-request"] = 88; literals["ssh"] = 36; literals["protocol-object"] = 49; - literals["gt"] = 77; - literals["ah"] = 14; - literals["interval"] = 115; + literals["gt"] = 78; + literals["ah"] = 16; + literals["interval"] = 116; literals["resetoutside"] = 62; - literals["ddns"] = 132; - literals["ipv6"] = 136; - literals["rip"] = 81; - literals["baseTX"] = 127; - literals["access-group"] = 152; - literals["critical"] = 106; - literals["standard"] = 75; + literals["ddns"] = 133; + literals["ipv6"] = 137; + literals["rip"] = 82; + literals["baseTX"] = 128; + literals["access-group"] = 153; + literals["critical"] = 107; + literals["standard"] = 76; literals["quit"] = 5; literals["community-list"] = 7; literals["network-object"] = 47; - literals["hostname"] = 69; - literals["server"] = 150; - literals["information-reply"] = 86; + literals["hostname"] = 70; + literals["server"] = 151; + literals["information-reply"] = 87; literals["icmp6"] = 40; - literals["authentication-certificate"] = 149; - literals["switchport"] = 145; - literals["ipsec"] = 21; - literals["conversion-error"] = 84; + literals["authentication-certificate"] = 150; + literals["switchport"] = 146; + literals["ipsec"] = 23; + literals["conversion-error"] = 85; literals["host"] = 31; - literals["echo-reply"] = 85; - literals["nameif"] = 128; - literals["pcp"] = 24; + literals["echo-reply"] = 86; + literals["nameif"] = 129; + literals["pcp"] = 26; literals["service-object"] = 53; - literals["nat"] = 154; - literals["access-list"] = 71; - literals["informational"] = 110; - literals["igrp"] = 19; - literals["traceroute"] = 99; - literals["address"] = 142; - literals["log-input"] = 104; - literals["router-advertisement"] = 93; + literals["nat"] = 155; + literals["access-list"] = 72; + literals["informational"] = 111; + literals["igrp"] = 21; + literals["traceroute"] = 100; + literals["address"] = 143; + literals["log-input"] = 105; + literals["router-advertisement"] = 94; literals["resetinbound"] = 60; - literals["router-solicitation"] = 94; - literals["access"] = 146; + literals["router-solicitation"] = 95; + literals["access"] = 147; literals["icmp-object"] = 50; - literals["source-quench"] = 95; - literals["scopy"] = 147; + literals["source-quench"] = 96; + literals["scopy"] = 148; literals["protocol"] = 48; literals["object-group"] = 45; - literals["inactive"] = 114; - literals["multicast"] = 138; - literals["exit"] = 121; - literals["version"] = 148; - literals["neq"] = 79; - literals["alternate-address"] = 83; + literals["inactive"] = 115; + literals["multicast"] = 139; + literals["exit"] = 122; + literals["version"] = 149; + literals["neq"] = 80; + literals["alternate-address"] = 84; literals["password-recovery"] = 59; } @@ -504,11 +505,11 @@ void PIXCfgLexer::mLINE_COMMENT(bool _createToken) { } } else { - goto _loop284; + goto _loop286; } } - _loop284:; + _loop286:; } // ( ... )* mNEWLINE(false); if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { @@ -540,9 +541,9 @@ void PIXCfgLexer::mNEWLINE(bool _createToken) { } if ( inputState->guessing==0 ) { -#line 2422 "pix.g" +#line 2460 "pix.g" newline(); -#line 546 "PIXCfgLexer.cpp" +#line 547 "PIXCfgLexer.cpp" } if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { _token = makeToken(_ttype); @@ -566,11 +567,11 @@ void PIXCfgLexer::mCOLON_COMMENT(bool _createToken) { } } else { - goto _loop288; + goto _loop290; } } - _loop288:; + _loop290:; } // ( ... )* mNEWLINE(false); if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { @@ -664,9 +665,9 @@ void PIXCfgLexer::mWhitespace(bool _createToken) { } } if ( inputState->guessing==0 ) { -#line 2417 "pix.g" +#line 2455 "pix.g" _ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP; -#line 670 "PIXCfgLexer.cpp" +#line 671 "PIXCfgLexer.cpp" } if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { _token = makeToken(_ttype); @@ -762,15 +763,15 @@ void PIXCfgLexer::mNUMBER_ADDRESS_OR_WORD(bool _createToken) { ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex; { - bool synPredMatched337 = false; + bool synPredMatched339 = false; if (((_tokenSet_2.member(LA(1))) && (_tokenSet_3.member(LA(2))) && (true))) { - int _m337 = mark(); - synPredMatched337 = true; + int _m339 = mark(); + synPredMatched339 = true; inputState->guessing++; try { { { // ( ... )+ - int _cnt336=0; + int _cnt338=0; for (;;) { switch ( LA(1)) { case 0x61 /* 'a' */ : @@ -799,27 +800,27 @@ void PIXCfgLexer::mNUMBER_ADDRESS_OR_WORD(bool _createToken) { } default: { - if ( _cnt336>=1 ) { goto _loop336; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + if ( _cnt338>=1 ) { goto _loop338; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} } } - _cnt336++; + _cnt338++; } - _loop336:; + _loop338:; } // ( ... )+ mCOLON(false); } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) { - synPredMatched337 = false; + synPredMatched339 = false; } - rewind(_m337); + rewind(_m339); inputState->guessing--; } - if ( synPredMatched337 ) { + if ( synPredMatched339 ) { { { { // ( ... )+ - int _cnt341=0; + int _cnt343=0; for (;;) { switch ( LA(1)) { case 0x61 /* 'a' */ : @@ -848,15 +849,15 @@ void PIXCfgLexer::mNUMBER_ADDRESS_OR_WORD(bool _createToken) { } default: { - if ( _cnt341>=1 ) { goto _loop341; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + if ( _cnt343>=1 ) { goto _loop343; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} } } - _cnt341++; + _cnt343++; } - _loop341:; + _loop343:; } // ( ... )+ { // ( ... )+ - int _cnt345=0; + int _cnt347=0; for (;;) { if ((LA(1) == 0x3a /* ':' */ )) { mCOLON(false); @@ -889,34 +890,34 @@ void PIXCfgLexer::mNUMBER_ADDRESS_OR_WORD(bool _createToken) { } default: { - goto _loop344; + goto _loop346; } } } - _loop344:; + _loop346:; } // ( ... )* } else { - if ( _cnt345>=1 ) { goto _loop345; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + if ( _cnt347>=1 ) { goto _loop347; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} } - _cnt345++; + _cnt347++; } - _loop345:; + _loop347:; } // ( ... )+ } if ( inputState->guessing==0 ) { -#line 2463 "pix.g" +#line 2501 "pix.g" _ttype = IPV6; -#line 912 "PIXCfgLexer.cpp" +#line 913 "PIXCfgLexer.cpp" } } } else { - bool synPredMatched302 = false; + bool synPredMatched304 = false; if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (true) && (true))) { - int _m302 = mark(); - synPredMatched302 = true; + int _m304 = mark(); + synPredMatched304 = true; inputState->guessing++; try { { @@ -924,90 +925,75 @@ void PIXCfgLexer::mNUMBER_ADDRESS_OR_WORD(bool _createToken) { } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) { - synPredMatched302 = false; + synPredMatched304 = false; } - rewind(_m302); + rewind(_m304); inputState->guessing--; } - if ( synPredMatched302 ) { + if ( synPredMatched304 ) { { - bool synPredMatched311 = false; + bool synPredMatched313 = false; if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3))))) { - int _m311 = mark(); - synPredMatched311 = true; + int _m313 = mark(); + synPredMatched313 = true; inputState->guessing++; try { { { // ( ... )+ - int _cnt306=0; + int _cnt308=0; for (;;) { if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { mDIGIT(false); } else { - if ( _cnt306>=1 ) { goto _loop306; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + if ( _cnt308>=1 ) { goto _loop308; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} } - _cnt306++; + _cnt308++; } - _loop306:; + _loop308:; } // ( ... )+ mDOT(false); { // ( ... )+ - int _cnt308=0; + int _cnt310=0; for (;;) { if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { mDIGIT(false); } else { - if ( _cnt308>=1 ) { goto _loop308; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + if ( _cnt310>=1 ) { goto _loop310; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} } - _cnt308++; + _cnt310++; } - _loop308:; + _loop310:; } // ( ... )+ mDOT(false); { // ( ... )+ - int _cnt310=0; + int _cnt312=0; for (;;) { if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { mDIGIT(false); } else { - if ( _cnt310>=1 ) { goto _loop310; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + if ( _cnt312>=1 ) { goto _loop312; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} } - _cnt310++; + _cnt312++; } - _loop310:; + _loop312:; } // ( ... )+ } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) { - synPredMatched311 = false; + synPredMatched313 = false; } - rewind(_m311); + rewind(_m313); inputState->guessing--; } - if ( synPredMatched311 ) { + if ( synPredMatched313 ) { { { // ( ... )+ - int _cnt314=0; - for (;;) { - if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { - mDIGIT(false); - } - else { - if ( _cnt314>=1 ) { goto _loop314; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} - } - - _cnt314++; - } - _loop314:; - } // ( ... )+ - mDOT(false); - { // ( ... )+ int _cnt316=0; for (;;) { if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { @@ -1051,115 +1037,130 @@ void PIXCfgLexer::mNUMBER_ADDRESS_OR_WORD(bool _createToken) { } _loop320:; } // ( ... )+ + mDOT(false); + { // ( ... )+ + int _cnt322=0; + for (;;) { + if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { + mDIGIT(false); + } + else { + if ( _cnt322>=1 ) { goto _loop322; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + } + + _cnt322++; + } + _loop322:; + } // ( ... )+ } if ( inputState->guessing==0 ) { -#line 2451 "pix.g" +#line 2489 "pix.g" _ttype = IPV4; -#line 1059 "PIXCfgLexer.cpp" +#line 1060 "PIXCfgLexer.cpp" } } else { - bool synPredMatched326 = false; + bool synPredMatched328 = false; if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3))))) { - int _m326 = mark(); - synPredMatched326 = true; + int _m328 = mark(); + synPredMatched328 = true; inputState->guessing++; try { { { // ( ... )+ - int _cnt323=0; + int _cnt325=0; for (;;) { if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { mDIGIT(false); } else { - if ( _cnt323>=1 ) { goto _loop323; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + if ( _cnt325>=1 ) { goto _loop325; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} } - _cnt323++; + _cnt325++; } - _loop323:; + _loop325:; } // ( ... )+ mDOT(false); { // ( ... )+ - int _cnt325=0; + int _cnt327=0; for (;;) { if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { mDIGIT(false); } else { - if ( _cnt325>=1 ) { goto _loop325; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + if ( _cnt327>=1 ) { goto _loop327; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} } - _cnt325++; + _cnt327++; } - _loop325:; + _loop327:; } // ( ... )+ } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) { - synPredMatched326 = false; + synPredMatched328 = false; } - rewind(_m326); + rewind(_m328); inputState->guessing--; } - if ( synPredMatched326 ) { + if ( synPredMatched328 ) { { { // ( ... )+ - int _cnt329=0; + int _cnt331=0; for (;;) { if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { mDIGIT(false); } else { - if ( _cnt329>=1 ) { goto _loop329; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + if ( _cnt331>=1 ) { goto _loop331; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} } - _cnt329++; + _cnt331++; } - _loop329:; + _loop331:; } // ( ... )+ mDOT(false); { // ( ... )+ - int _cnt331=0; + int _cnt333=0; for (;;) { if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { mDIGIT(false); } else { - if ( _cnt331>=1 ) { goto _loop331; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + if ( _cnt333>=1 ) { goto _loop333; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} } - _cnt331++; + _cnt333++; } - _loop331:; + _loop333:; } // ( ... )+ } if ( inputState->guessing==0 ) { -#line 2454 "pix.g" +#line 2492 "pix.g" _ttype = NUMBER; -#line 1142 "PIXCfgLexer.cpp" +#line 1143 "PIXCfgLexer.cpp" } } else if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (true) && (true)) { { // ( ... )+ - int _cnt333=0; + int _cnt335=0; for (;;) { if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) { mDIGIT(false); } else { - if ( _cnt333>=1 ) { goto _loop333; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} + if ( _cnt335>=1 ) { goto _loop335; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());} } - _cnt333++; + _cnt335++; } - _loop333:; + _loop335:; } // ( ... )+ if ( inputState->guessing==0 ) { -#line 2456 "pix.g" +#line 2494 "pix.g" _ttype = INT_CONST; -#line 1163 "PIXCfgLexer.cpp" +#line 1164 "PIXCfgLexer.cpp" } } else { @@ -1412,16 +1413,16 @@ void PIXCfgLexer::mNUMBER_ADDRESS_OR_WORD(bool _createToken) { } default: { - goto _loop348; + goto _loop350; } } } - _loop348:; + _loop350:; } // ( ... )* if ( inputState->guessing==0 ) { -#line 2471 "pix.g" +#line 2509 "pix.g" _ttype = WORD; -#line 1425 "PIXCfgLexer.cpp" +#line 1426 "PIXCfgLexer.cpp" } } else { @@ -1463,11 +1464,11 @@ void PIXCfgLexer::mSTRING(bool _createToken) { matchNot('\"' /* charlit */ ); } else { - goto _loop351; + goto _loop353; } } - _loop351:; + _loop353:; } // ( ... )* match('\"' /* charlit */ ); if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) { @@ -1850,7 +1851,7 @@ const unsigned long PIXCfgLexer::_tokenSet_0_data_[] = { 4294958072UL, 1UL, 0UL, // 0x90 0x91 0x92 0x93 0x94 0x95 0x96 0x97 0x98 0x99 0x9a 0x9b 0x9c 0x9d // 0x9e 0x9f 0xa0 0xa1 0xa2 0xa3 0xa4 0xa5 0xa6 0xa7 0xa8 0xa9 0xaa 0xab // 0xac 0xad 0xae 0xaf 0xb0 0xb1 0xb2 0xb3 0xb4 0xb5 0xb6 0xb7 0xb8 0xb9 -// 0xba 0xbb 0xbc 0xbd 0xbe 0xbf 0xc0 0xc1 0xc2 +// 0xba 0xbb 0xbc 0xbd 0xbe 0xbf 0xc0 0xc1 0xc2 0xc3 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 @@ -1862,7 +1863,7 @@ const unsigned long PIXCfgLexer::_tokenSet_1_data_[] = { 4294958072UL, 429496729 // 0x92 0x93 0x94 0x95 0x96 0x97 0x98 0x99 0x9a 0x9b 0x9c 0x9d 0x9e 0x9f // 0xa0 0xa1 0xa2 0xa3 0xa4 0xa5 0xa6 0xa7 0xa8 0xa9 0xaa 0xab 0xac 0xad // 0xae 0xaf 0xb0 0xb1 0xb2 0xb3 0xb4 0xb5 0xb6 0xb7 0xb8 0xb9 0xba 0xbb -// 0xbc 0xbd 0xbe 0xbf 0xc0 0xc1 0xc2 +// 0xbc 0xbd 0xbe 0xbf 0xc0 0xc1 0xc2 0xc3 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 @@ -1887,6 +1888,6 @@ const unsigned long PIXCfgLexer::_tokenSet_6_data_[] = { 4294967288UL, 429496729 // 0x92 0x93 0x94 0x95 0x96 0x97 0x98 0x99 0x9a 0x9b 0x9c 0x9d 0x9e 0x9f // 0xa0 0xa1 0xa2 0xa3 0xa4 0xa5 0xa6 0xa7 0xa8 0xa9 0xaa 0xab 0xac 0xad // 0xae 0xaf 0xb0 0xb1 0xb2 0xb3 0xb4 0xb5 0xb6 0xb7 0xb8 0xb9 0xba 0xbb -// 0xbc 0xbd 0xbe 0xbf 0xc0 0xc1 0xc2 +// 0xbc 0xbd 0xbe 0xbf 0xc0 0xc1 0xc2 0xc3 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 8ed1938..f9421cd 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 { // ( ... )+ @@ -59,6 +60,7 @@ void PIXCfgParser::cfgfile() { } case PIX_WORD: case ASA_WORD: + case FWSM_WORD: { version(); break; @@ -178,6 +180,16 @@ void PIXCfgParser::cfgfile() { service_top_level_command(); break; } + case PIM: + { + pim_top_level_command(); + break; + } + case NETWORK: + { + network_top_level_command(); + break; + } case WORD: { unknown_command(); @@ -195,6 +207,9 @@ void PIXCfgParser::cfgfile() { else if ((LA(1) == IP) && (LA(2) == WORD)) { unknown_ip_command(); } + else if ((LA(1) == IP) && (LA(2) == ADDRESS)) { + intf_address(); + } else if ((LA(1) == OBJECT) && (LA(2) == NETWORK)) { named_object_network(); } @@ -236,6 +251,7 @@ void PIXCfgParser::cfgfile() { } void PIXCfgParser::comment() { + Tracer traceInOut(this, "comment"); try { // for error handling { @@ -268,6 +284,10 @@ void PIXCfgParser::comment() { } void PIXCfgParser::version() { + Tracer traceInOut(this, "version"); +#line 876 "pix.g" + std::string platform; +#line 291 "PIXCfgParser.cpp" try { // for error handling { @@ -282,23 +302,36 @@ void PIXCfgParser::version() { match(ASA_WORD); break; } + case FWSM_WORD: + { + match(FWSM_WORD); + break; + } default: { throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); } } } + if ( inputState->guessing==0 ) { +#line 880 "pix.g" + + platform = LT(0)->getText(); + +#line 322 "PIXCfgParser.cpp" + } match(VERSION_WORD_CAP); match(NUMBER); if ( inputState->guessing==0 ) { -#line 855 "pix.g" +#line 884 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); + importer->setDiscoveredPlatform(platform); importer->setDiscoveredVersion(LT(0)->getText()); *dbg << "VERSION " << LT(0)->getText() << std::endl; consumeUntil(NEWLINE); -#line 302 "PIXCfgParser.cpp" +#line 335 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -312,6 +345,7 @@ void PIXCfgParser::version() { } void PIXCfgParser::hostname() { + Tracer traceInOut(this, "hostname"); try { // for error handling match(HOSTNAME); @@ -334,15 +368,13 @@ void PIXCfgParser::hostname() { } } if ( inputState->guessing==0 ) { -#line 865 "pix.g" +#line 895 "pix.g" importer->setCurrentLineNumber(LT(0)->getLine()); importer->setHostName( LT(0)->getText() ); - *dbg << "HOSTNAME " - << "LT0=" << LT(0)->getText() - << std::endl; + *dbg << "HOSTNAME " << "LT0=" << LT(0)->getText() << std::endl; -#line 346 "PIXCfgParser.cpp" +#line 378 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -356,16 +388,17 @@ void PIXCfgParser::hostname() { } void PIXCfgParser::community_list_command() { + Tracer traceInOut(this, "community_list_command"); try { // for error handling match(IP); match(COMMUNITY_LIST); if ( inputState->guessing==0 ) { -#line 197 "pix.g" +#line 203 "pix.g" consumeUntil(NEWLINE); -#line 369 "PIXCfgParser.cpp" +#line 402 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -379,16 +412,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 794 "pix.g" +#line 816 "pix.g" consumeUntil(NEWLINE); -#line 392 "PIXCfgParser.cpp" +#line 426 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -402,6 +436,7 @@ void PIXCfgParser::unknown_ip_command() { } void PIXCfgParser::intrface() { + Tracer traceInOut(this, "intrface"); try { // for error handling match(INTRFACE); @@ -429,34 +464,35 @@ void PIXCfgParser::intrface() { } void PIXCfgParser::nameif_top_level() { -#line 1424 "pix.g" + Tracer traceInOut(this, "nameif_top_level"); +#line 1452 "pix.g" std::string intf_name, intf_label, sec_level; -#line 437 "PIXCfgParser.cpp" +#line 473 "PIXCfgParser.cpp" try { // for error handling match(NAMEIF); match(WORD); if ( inputState->guessing==0 ) { -#line 1429 "pix.g" +#line 1457 "pix.g" intf_name = LT(0)->getText(); -#line 445 "PIXCfgParser.cpp" +#line 481 "PIXCfgParser.cpp" } interface_label(); if ( inputState->guessing==0 ) { -#line 1430 "pix.g" +#line 1458 "pix.g" intf_label = LT(0)->getText(); -#line 451 "PIXCfgParser.cpp" +#line 487 "PIXCfgParser.cpp" } match(WORD); if ( inputState->guessing==0 ) { -#line 1431 "pix.g" +#line 1459 "pix.g" sec_level = LT(0)->getText(); -#line 457 "PIXCfgParser.cpp" +#line 493 "PIXCfgParser.cpp" } if ( inputState->guessing==0 ) { -#line 1432 "pix.g" +#line 1460 "pix.g" importer->setInterfaceParametes(intf_name, intf_label, sec_level); *dbg << " NAMEIF: " @@ -464,7 +500,44 @@ void PIXCfgParser::nameif_top_level() { << intf_label << " " << sec_level << std::endl; -#line 468 "PIXCfgParser.cpp" +#line 504 "PIXCfgParser.cpp" + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + if( inputState->guessing == 0 ) { + reportError(ex); + recover(ex,_tokenSet_1); + } else { + throw; + } + } +} + +void PIXCfgParser::intf_address() { + Tracer traceInOut(this, "intf_address"); + + try { // for error handling + match(IP); + match(ADDRESS); + { + switch ( LA(1)) { + case WORD: + case OUTSIDE: + { + v6_ip_address(); + break; + } + case IPV4: + case DHCP: + { + v7_ip_address(); + break; + } + default: + { + throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename()); + } + } } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -478,16 +551,17 @@ void PIXCfgParser::nameif_top_level() { } void PIXCfgParser::controller() { + Tracer traceInOut(this, "controller"); try { // for error handling match(CONTROLLER); if ( inputState->guessing==0 ) { -#line 1336 "pix.g" +#line 1364 "pix.g" importer->clearCurrentInterface(); consumeUntil(NEWLINE); -#line 491 "PIXCfgParser.cpp" +#line 565 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -501,6 +575,7 @@ void PIXCfgParser::controller() { } void PIXCfgParser::access_list_commands() { + Tracer traceInOut(this, "access_list_commands"); ANTLR_USE_NAMESPACE(antlr)RefToken name = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling @@ -508,7 +583,7 @@ void PIXCfgParser::access_list_commands() { name = LT(1); match(WORD); if ( inputState->guessing==0 ) { -#line 877 "pix.g" +#line 905 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -517,7 +592,7 @@ void PIXCfgParser::access_list_commands() { *dbg << name->getLine() << ":" << " ACL ext " << name->getText() << std::endl; -#line 521 "PIXCfgParser.cpp" +#line 596 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -556,12 +631,12 @@ void PIXCfgParser::access_list_commands() { } } if ( inputState->guessing==0 ) { -#line 900 "pix.g" +#line 928 "pix.g" *dbg << LT(0)->getLine() << ":" << " ACL line end" << std::endl << std::endl; -#line 565 "PIXCfgParser.cpp" +#line 640 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -575,15 +650,16 @@ void PIXCfgParser::access_list_commands() { } void PIXCfgParser::ssh_command() { + Tracer traceInOut(this, "ssh_command"); try { // for error handling match(SSH); if ( inputState->guessing==0 ) { -#line 1672 "pix.g" +#line 1708 "pix.g" importer->clear(); -#line 587 "PIXCfgParser.cpp" +#line 663 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -594,11 +670,11 @@ void PIXCfgParser::ssh_command() { match(INT_CONST); } if ( inputState->guessing==0 ) { -#line 1677 "pix.g" +#line 1713 "pix.g" // set ssh timeout here -#line 602 "PIXCfgParser.cpp" +#line 678 "PIXCfgParser.cpp" } break; } @@ -623,16 +699,16 @@ void PIXCfgParser::ssh_command() { { hostaddr_expr(); if ( inputState->guessing==0 ) { -#line 1687 "pix.g" +#line 1723 "pix.g" importer->SaveTmpAddrToSrc(); -#line 631 "PIXCfgParser.cpp" +#line 707 "PIXCfgParser.cpp" } interface_label(); } if ( inputState->guessing==0 ) { -#line 1692 "pix.g" +#line 1728 "pix.g" std::string intf_label = LT(0)->getText(); std::string acl_name = "ssh_commands_" + intf_label; @@ -649,7 +725,7 @@ void PIXCfgParser::ssh_command() { importer->pushRule(); *dbg << std::endl; -#line 653 "PIXCfgParser.cpp" +#line 729 "PIXCfgParser.cpp" } break; } @@ -671,15 +747,16 @@ void PIXCfgParser::ssh_command() { } void PIXCfgParser::telnet_command() { + Tracer traceInOut(this, "telnet_command"); try { // for error handling match(TELNET); if ( inputState->guessing==0 ) { -#line 1712 "pix.g" +#line 1748 "pix.g" importer->clear(); -#line 683 "PIXCfgParser.cpp" +#line 760 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -701,16 +778,16 @@ void PIXCfgParser::telnet_command() { { hostaddr_expr(); if ( inputState->guessing==0 ) { -#line 1719 "pix.g" +#line 1755 "pix.g" importer->SaveTmpAddrToSrc(); -#line 709 "PIXCfgParser.cpp" +#line 786 "PIXCfgParser.cpp" } interface_label(); } if ( inputState->guessing==0 ) { -#line 1724 "pix.g" +#line 1760 "pix.g" std::string intf_label = LT(0)->getText(); std::string acl_name = "telnet_commands_" + intf_label; @@ -727,7 +804,7 @@ void PIXCfgParser::telnet_command() { importer->pushRule(); *dbg << std::endl; -#line 731 "PIXCfgParser.cpp" +#line 808 "PIXCfgParser.cpp" } break; } @@ -749,15 +826,16 @@ void PIXCfgParser::telnet_command() { } void PIXCfgParser::http_command() { + Tracer traceInOut(this, "http_command"); try { // for error handling match(HTTP); if ( inputState->guessing==0 ) { -#line 1746 "pix.g" +#line 1782 "pix.g" importer->clear(); -#line 761 "PIXCfgParser.cpp" +#line 839 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -789,11 +867,11 @@ void PIXCfgParser::http_command() { } } if ( inputState->guessing==0 ) { -#line 1751 "pix.g" +#line 1787 "pix.g" consumeUntil(NEWLINE); -#line 797 "PIXCfgParser.cpp" +#line 875 "PIXCfgParser.cpp" } break; } @@ -807,16 +885,16 @@ void PIXCfgParser::http_command() { { hostaddr_expr(); if ( inputState->guessing==0 ) { -#line 1757 "pix.g" +#line 1793 "pix.g" importer->SaveTmpAddrToSrc(); -#line 815 "PIXCfgParser.cpp" +#line 893 "PIXCfgParser.cpp" } interface_label(); } if ( inputState->guessing==0 ) { -#line 1762 "pix.g" +#line 1798 "pix.g" std::string intf_label = LT(0)->getText(); std::string acl_name = "http_commands_" + intf_label; @@ -834,7 +912,7 @@ void PIXCfgParser::http_command() { importer->pushRule(); *dbg << std::endl; -#line 838 "PIXCfgParser.cpp" +#line 916 "PIXCfgParser.cpp" } break; } @@ -856,6 +934,7 @@ void PIXCfgParser::http_command() { } void PIXCfgParser::icmp_top_level_command() { + Tracer traceInOut(this, "icmp_top_level_command"); ANTLR_USE_NAMESPACE(antlr)RefToken permit = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken deny = ANTLR_USE_NAMESPACE(antlr)nullToken; @@ -868,11 +947,11 @@ void PIXCfgParser::icmp_top_level_command() { { match(UNREACHABLE); if ( inputState->guessing==0 ) { -#line 1792 "pix.g" +#line 1828 "pix.g" consumeUntil(NEWLINE); -#line 876 "PIXCfgParser.cpp" +#line 955 "PIXCfgParser.cpp" } } break; @@ -902,19 +981,19 @@ void PIXCfgParser::icmp_top_level_command() { } } if ( inputState->guessing==0 ) { -#line 1799 "pix.g" +#line 1835 "pix.g" importer->clear(); -#line 910 "PIXCfgParser.cpp" +#line 989 "PIXCfgParser.cpp" } hostaddr_expr(); if ( inputState->guessing==0 ) { -#line 1803 "pix.g" +#line 1839 "pix.g" importer->SaveTmpAddrToSrc(); -#line 918 "PIXCfgParser.cpp" +#line 997 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -940,7 +1019,7 @@ void PIXCfgParser::icmp_top_level_command() { } interface_label(); if ( inputState->guessing==0 ) { -#line 1808 "pix.g" +#line 1844 "pix.g" std::string intf_label = LT(0)->getText(); std::string acl_name = "icmp_commands_" + intf_label; @@ -955,7 +1034,7 @@ void PIXCfgParser::icmp_top_level_command() { acl_name, intf_label, "in" ); importer->pushRule(); -#line 959 "PIXCfgParser.cpp" +#line 1038 "PIXCfgParser.cpp" } } break; @@ -978,17 +1057,18 @@ void PIXCfgParser::icmp_top_level_command() { } void PIXCfgParser::nat_top_level_command() { + Tracer traceInOut(this, "nat_top_level_command"); try { // for error handling match(NAT); match(OPENING_PAREN); if ( inputState->guessing==0 ) { -#line 1894 "pix.g" +#line 1930 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); -#line 992 "PIXCfgParser.cpp" +#line 1072 "PIXCfgParser.cpp" } { if ((LA(1) == WORD || LA(1) == OUTSIDE) && (LA(2) == CLOSING_PAREN)) { @@ -1014,32 +1094,33 @@ void PIXCfgParser::nat_top_level_command() { } void PIXCfgParser::global_top_level_command() { + Tracer traceInOut(this, "global_top_level_command"); ANTLR_USE_NAMESPACE(antlr)RefToken num = ANTLR_USE_NAMESPACE(antlr)nullToken; try { // for error handling match(GLOBAL); match(OPENING_PAREN); if ( inputState->guessing==0 ) { -#line 1990 "pix.g" +#line 2026 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); -#line 1029 "PIXCfgParser.cpp" +#line 1110 "PIXCfgParser.cpp" } interface_label(); if ( inputState->guessing==0 ) { -#line 1995 "pix.g" +#line 2031 "pix.g" importer->tmp_global_pool.pool_interface = LT(0)->getText(); -#line 1037 "PIXCfgParser.cpp" +#line 1118 "PIXCfgParser.cpp" } match(CLOSING_PAREN); num = LT(1); match(INT_CONST); if ( inputState->guessing==0 ) { -#line 2000 "pix.g" +#line 2036 "pix.g" importer->tmp_global_pool.str_num = num->getText(); importer->tmp_global_pool.netmask = "255.255.255.255"; @@ -1048,7 +1129,7 @@ void PIXCfgParser::global_top_level_command() { << " " << importer->tmp_global_pool.pool_interface; -#line 1052 "PIXCfgParser.cpp" +#line 1133 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -1056,12 +1137,12 @@ void PIXCfgParser::global_top_level_command() { { match(INTRFACE); if ( inputState->guessing==0 ) { -#line 2013 "pix.g" +#line 2049 "pix.g" importer->tmp_global_pool.start = LT(0)->getText(); importer->tmp_global_pool.end = LT(0)->getText(); -#line 1065 "PIXCfgParser.cpp" +#line 1146 "PIXCfgParser.cpp" } break; } @@ -1070,12 +1151,12 @@ void PIXCfgParser::global_top_level_command() { { single_addr(); if ( inputState->guessing==0 ) { -#line 2019 "pix.g" +#line 2055 "pix.g" importer->tmp_global_pool.start = importer->tmp_a; importer->tmp_global_pool.end = importer->tmp_a; -#line 1079 "PIXCfgParser.cpp" +#line 1160 "PIXCfgParser.cpp" } break; } @@ -1092,11 +1173,11 @@ void PIXCfgParser::global_top_level_command() { match(MINUS); single_addr(); if ( inputState->guessing==0 ) { -#line 2028 "pix.g" +#line 2064 "pix.g" importer->tmp_global_pool.end = importer->tmp_a; -#line 1100 "PIXCfgParser.cpp" +#line 1181 "PIXCfgParser.cpp" } break; } @@ -1118,11 +1199,11 @@ void PIXCfgParser::global_top_level_command() { match(NETMASK); match(IPV4); if ( inputState->guessing==0 ) { -#line 2037 "pix.g" +#line 2073 "pix.g" importer->tmp_global_pool.netmask = LT(0)->getText(); -#line 1126 "PIXCfgParser.cpp" +#line 1207 "PIXCfgParser.cpp" } break; } @@ -1138,7 +1219,7 @@ void PIXCfgParser::global_top_level_command() { } match(NEWLINE); if ( inputState->guessing==0 ) { -#line 2043 "pix.g" +#line 2079 "pix.g" importer->addGlobalPool(); *dbg << " " << importer->tmp_global_pool.start @@ -1146,7 +1227,7 @@ void PIXCfgParser::global_top_level_command() { << " " << importer->tmp_global_pool.netmask << std::endl; -#line 1150 "PIXCfgParser.cpp" +#line 1231 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1160,40 +1241,41 @@ void PIXCfgParser::global_top_level_command() { } void PIXCfgParser::static_top_level_command() { + Tracer traceInOut(this, "static_top_level_command"); try { // for error handling match(STATIC); match(OPENING_PAREN); if ( inputState->guessing==0 ) { -#line 2055 "pix.g" +#line 2091 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); -#line 1174 "PIXCfgParser.cpp" +#line 1256 "PIXCfgParser.cpp" } interface_label(); if ( inputState->guessing==0 ) { -#line 2059 "pix.g" +#line 2095 "pix.g" importer->prenat_interface = LT(0)->getText(); -#line 1180 "PIXCfgParser.cpp" +#line 1262 "PIXCfgParser.cpp" } match(COMMA); interface_label(); if ( inputState->guessing==0 ) { -#line 2061 "pix.g" +#line 2097 "pix.g" importer->postnat_interface = LT(0)->getText(); -#line 1187 "PIXCfgParser.cpp" +#line 1269 "PIXCfgParser.cpp" } match(CLOSING_PAREN); if ( inputState->guessing==0 ) { -#line 2063 "pix.g" +#line 2099 "pix.g" importer->newUnidirRuleSet("nat", libfwbuilder::NAT::TYPENAME ); *dbg << " DNAT rule "; importer->rule_type = libfwbuilder::NATRule::DNAT; -#line 1197 "PIXCfgParser.cpp" +#line 1279 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -1218,12 +1300,12 @@ void PIXCfgParser::static_top_level_command() { } match(NEWLINE); if ( inputState->guessing==0 ) { -#line 2078 "pix.g" +#line 2114 "pix.g" importer->pushNATRule(); *dbg << std::endl; -#line 1227 "PIXCfgParser.cpp" +#line 1309 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1237,6 +1319,7 @@ void PIXCfgParser::static_top_level_command() { } void PIXCfgParser::access_group() { + Tracer traceInOut(this, "access_group"); ANTLR_USE_NAMESPACE(antlr)RefToken aclname = ANTLR_USE_NAMESPACE(antlr)nullToken; ANTLR_USE_NAMESPACE(antlr)RefToken dir = ANTLR_USE_NAMESPACE(antlr)nullToken; @@ -1249,7 +1332,7 @@ void PIXCfgParser::access_group() { match(INTRFACE); interface_label(); if ( inputState->guessing==0 ) { -#line 1867 "pix.g" +#line 1903 "pix.g" std::string intf_label = LT(0)->getText(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -1262,7 +1345,7 @@ void PIXCfgParser::access_group() { << " " << intf_label << " " << dir->getText() << std::endl; -#line 1266 "PIXCfgParser.cpp" +#line 1349 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1276,6 +1359,7 @@ void PIXCfgParser::access_group() { } void PIXCfgParser::exit() { + Tracer traceInOut(this, "exit"); try { // for error handling match(EXIT); @@ -1291,17 +1375,18 @@ void PIXCfgParser::exit() { } void PIXCfgParser::certificate() { + Tracer traceInOut(this, "certificate"); try { // for error handling match(CERTIFICATE); match(WORD); if ( inputState->guessing==0 ) { -#line 847 "pix.g" +#line 869 "pix.g" consumeUntil(NEWLINE); consumeUntil(QUIT); -#line 1305 "PIXCfgParser.cpp" +#line 1390 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1315,15 +1400,16 @@ void PIXCfgParser::certificate() { } void PIXCfgParser::quit() { + Tracer traceInOut(this, "quit"); try { // for error handling match(QUIT); if ( inputState->guessing==0 ) { -#line 190 "pix.g" +#line 196 "pix.g" consumeUntil(NEWLINE); -#line 1327 "PIXCfgParser.cpp" +#line 1413 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1337,6 +1423,7 @@ void PIXCfgParser::quit() { } void PIXCfgParser::names_section() { + Tracer traceInOut(this, "names_section"); try { // for error handling match(NAMES); @@ -1352,6 +1439,7 @@ void PIXCfgParser::names_section() { } void PIXCfgParser::name_entry() { + Tracer traceInOut(this, "name_entry"); try { // for error handling match(NAME); @@ -1385,6 +1473,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 @@ -1394,7 +1483,7 @@ void PIXCfgParser::named_object_network() { match(WORD); match(NEWLINE); if ( inputState->guessing==0 ) { -#line 238 "pix.g" +#line 260 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -1402,7 +1491,7 @@ void PIXCfgParser::named_object_network() { *dbg << name->getLine() << ":" << " Named Object " << name->getText() << std::endl; -#line 1406 "PIXCfgParser.cpp" +#line 1495 "PIXCfgParser.cpp" } { // ( ... )* for (;;) { @@ -1424,11 +1513,11 @@ void PIXCfgParser::named_object_network() { named_object_nat(); } else { - goto _loop16; + goto _loop18; } } } - _loop16:; + _loop18:; } // ( ... )* } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1442,17 +1531,18 @@ void PIXCfgParser::named_object_network() { } void PIXCfgParser::named_object_service() { + Tracer traceInOut(this, "named_object_service"); try { // for error handling match(OBJECT); match(SERVICE); if ( inputState->guessing==0 ) { -#line 351 "pix.g" +#line 373 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); -#line 1456 "PIXCfgParser.cpp" +#line 1546 "PIXCfgParser.cpp" } { switch ( LA(1)) { @@ -1483,12 +1573,12 @@ void PIXCfgParser::named_object_service() { } } if ( inputState->guessing==0 ) { -#line 356 "pix.g" +#line 378 "pix.g" importer->newNamedObjectService(LT(0)->getText()); *dbg << " NAMED OBJECT " << LT(0)->getText() << std::endl; -#line 1492 "PIXCfgParser.cpp" +#line 1582 "PIXCfgParser.cpp" } match(NEWLINE); { // ( ... )* @@ -1500,11 +1590,11 @@ void PIXCfgParser::named_object_service() { named_object_service_parameters(); } else { - goto _loop33; + goto _loop35; } } - _loop33:; + _loop35:; } // ( ... )* } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1518,6 +1608,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 @@ -1527,7 +1618,7 @@ void PIXCfgParser::object_group_network() { match(WORD); match(NEWLINE); if ( inputState->guessing==0 ) { -#line 471 "pix.g" +#line 493 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -1535,7 +1626,7 @@ void PIXCfgParser::object_group_network() { *dbg << name->getLine() << ":" << " Object Group " << name->getText() << std::endl; -#line 1539 "PIXCfgParser.cpp" +#line 1630 "PIXCfgParser.cpp" } { // ( ... )* for (;;) { @@ -1543,11 +1634,11 @@ void PIXCfgParser::object_group_network() { object_group_network_parameters(); } else { - goto _loop52; + goto _loop54; } } - _loop52:; + _loop54:; } // ( ... )* } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1561,6 +1652,7 @@ 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; @@ -1603,7 +1695,7 @@ void PIXCfgParser::object_group_service() { } match(NEWLINE); if ( inputState->guessing==0 ) { -#line 693 "pix.g" +#line 715 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -1614,7 +1706,7 @@ void PIXCfgParser::object_group_service() { *dbg << name->getLine() << ":" << " Object Group " << name->getText() << std::endl; -#line 1618 "PIXCfgParser.cpp" +#line 1710 "PIXCfgParser.cpp" } { // ( ... )* for (;;) { @@ -1622,11 +1714,11 @@ void PIXCfgParser::object_group_service() { object_group_service_parameters(); } else { - goto _loop84; + goto _loop86; } } - _loop84:; + _loop86:; } // ( ... )* } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1640,6 +1732,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 @@ -1649,7 +1742,7 @@ void PIXCfgParser::object_group_protocol() { match(WORD); match(NEWLINE); if ( inputState->guessing==0 ) { -#line 569 "pix.g" +#line 591 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -1657,21 +1750,21 @@ void PIXCfgParser::object_group_protocol() { *dbg << name->getLine() << ":" << " Object Group " << name->getText() << std::endl; -#line 1661 "PIXCfgParser.cpp" +#line 1754 "PIXCfgParser.cpp" } { // ( ... )+ - int _cnt64=0; + int _cnt66=0; for (;;) { if ((LA(1) == DESCRIPTION || LA(1) == GROUP_OBJECT || LA(1) == PROTOCOL_OBJECT)) { object_group_protocol_parameters(); } else { - if ( _cnt64>=1 ) { goto _loop64; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());} + if ( _cnt66>=1 ) { goto _loop66; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());} } - _cnt64++; + _cnt66++; } - _loop64:; + _loop66:; } // ( ... )+ } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1685,6 +1778,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 @@ -1694,7 +1788,7 @@ void PIXCfgParser::object_group_icmp_8_0() { match(WORD); match(NEWLINE); if ( inputState->guessing==0 ) { -#line 624 "pix.g" +#line 646 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -1702,7 +1796,7 @@ void PIXCfgParser::object_group_icmp_8_0() { *dbg << name->getLine() << ":" << " Object Group " << name->getText() << std::endl; -#line 1706 "PIXCfgParser.cpp" +#line 1800 "PIXCfgParser.cpp" } { // ( ... )* for (;;) { @@ -1710,11 +1804,11 @@ void PIXCfgParser::object_group_icmp_8_0() { object_group_icmp_parameters(); } else { - goto _loop72; + goto _loop74; } } - _loop72:; + _loop74:; } // ( ... )* } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1728,6 +1822,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 @@ -1737,7 +1832,7 @@ void PIXCfgParser::object_group_icmp_8_3() { match(WORD); match(NEWLINE); if ( inputState->guessing==0 ) { -#line 637 "pix.g" +#line 659 "pix.g" importer->clear(); importer->setCurrentLineNumber(LT(0)->getLine()); @@ -1745,7 +1840,7 @@ void PIXCfgParser::object_group_icmp_8_3() { *dbg << name->getLine() << ":" << " Object Group " << name->getText() << std::endl; -#line 1749 "PIXCfgParser.cpp" +#line 1844 "PIXCfgParser.cpp" } { // ( ... )* for (;;) { @@ -1753,11 +1848,11 @@ void PIXCfgParser::object_group_icmp_8_3() { object_group_icmp_parameters(); } else { - goto _loop75; + goto _loop77; } } - _loop75:; + _loop77:; } // ( ... )* } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1771,15 +1866,16 @@ 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 787 "pix.g" +#line 809 "pix.g" consumeUntil(NEWLINE); -#line 1783 "PIXCfgParser.cpp" +#line 1879 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1793,17 +1889,18 @@ void PIXCfgParser::crypto() { } void PIXCfgParser::no_commands() { + Tracer traceInOut(this, "no_commands"); try { // for error handling match(NO); if ( inputState->guessing==0 ) { -#line 838 "pix.g" +#line 860 "pix.g" *dbg << " TOP LEVEL \"NO\" COMMAND: " << LT(0)->getText() << std::endl; consumeUntil(NEWLINE); -#line 1807 "PIXCfgParser.cpp" +#line 1904 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1817,15 +1914,16 @@ void PIXCfgParser::no_commands() { } void PIXCfgParser::timeout_command() { + Tracer traceInOut(this, "timeout_command"); try { // for error handling match(TIMEOUT); if ( inputState->guessing==0 ) { -#line 204 "pix.g" +#line 210 "pix.g" consumeUntil(NEWLINE); -#line 1829 "PIXCfgParser.cpp" +#line 1927 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1839,15 +1937,16 @@ void PIXCfgParser::timeout_command() { } void PIXCfgParser::dns_command() { + Tracer traceInOut(this, "dns_command"); try { // for error handling match(DNS); if ( inputState->guessing==0 ) { -#line 808 "pix.g" +#line 830 "pix.g" consumeUntil(NEWLINE); -#line 1851 "PIXCfgParser.cpp" +#line 1950 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1861,6 +1960,7 @@ void PIXCfgParser::dns_command() { } void PIXCfgParser::service_top_level_command() { + Tracer traceInOut(this, "service_top_level_command"); try { // for error handling match(SERVICE); @@ -1903,11 +2003,57 @@ void PIXCfgParser::service_top_level_command() { } } if ( inputState->guessing==0 ) { -#line 831 "pix.g" +#line 853 "pix.g" + + consumeUntil(NEWLINE); + +#line 2011 "PIXCfgParser.cpp" + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + if( inputState->guessing == 0 ) { + reportError(ex); + recover(ex,_tokenSet_1); + } else { + throw; + } + } +} + +void PIXCfgParser::pim_top_level_command() { + Tracer traceInOut(this, "pim_top_level_command"); + + try { // for error handling + match(PIM); + if ( inputState->guessing==0 ) { +#line 218 "pix.g" + + consumeUntil(NEWLINE); + +#line 2034 "PIXCfgParser.cpp" + } + } + catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { + if( inputState->guessing == 0 ) { + reportError(ex); + recover(ex,_tokenSet_1); + } else { + throw; + } + } +} + +void PIXCfgParser::network_top_level_command() { + Tracer traceInOut(this, "network_top_level_command"); + + try { // for error handling + match(NETWORK); + if ( inputState->guessing==0 ) { +#line 226 "pix.g" consumeUntil(NEWLINE); -#line 1911 "PIXCfgParser.cpp" +#line 2057 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1921,15 +2067,16 @@ void PIXCfgParser::service_top_level_command() { } void PIXCfgParser::unknown_command() { + Tracer traceInOut(this, "unknown_command"); try { // for error handling match(WORD); if ( inputState->guessing==0 ) { -#line 801 "pix.g" +#line 823 "pix.g" consumeUntil(NEWLINE); -#line 1933 "PIXCfgParser.cpp" +#line 2080 "PIXCfgParser.cpp" } } catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) { @@ -1943,6 +2090,7 @@ void PIXCfgParser::unknown_command() { } void PIXCfgParser::name_entry_ipv4() { + Tracer t... [truncated message content] |