pix parser recognizes "interface <label>" in access lists

This commit is contained in:
Vadim Kurland
2011-03-24 20:11:12 -07:00
parent 410b895796
commit 1673e3f213
10 changed files with 907 additions and 622 deletions
+2
View File
@@ -540,6 +540,7 @@ FWObject* Importer::makeSrcObj()
(src_a==InetAddr::getAny().toString() &&
src_nm==InetAddr::getAny().toString()))
return NULL; // this is 'any'
if (src_nm=="") src_nm = InetAddr::getAllOnes().toString();
ObjectSignature sig;
@@ -556,6 +557,7 @@ FWObject* Importer::makeDstObj()
(dst_a==InetAddr::getAny().toString() &&
dst_nm==InetAddr::getAny().toString()))
return NULL; // this is 'any'
if (dst_nm=="") dst_nm=InetAddr::getAllOnes().toString();
ObjectSignature sig;
+30
View File
@@ -111,6 +111,21 @@ void PIXImporter::clearTempVars()
FWObject* PIXImporter::makeSrcObj()
{
if (src_nm == "interface")
{
map<const string,Interface*>::iterator it;
for (it=all_interfaces.begin(); it!=all_interfaces.end(); ++it)
{
Interface *intf = it->second;
if (intf->getLabel() == src_a)
{
return intf;
}
}
throw ImporterException(
QString("Cannot find interface with label '%1'").arg(src_a.c_str()));
}
if (named_objects_registry.count(src_a.c_str()) > 0)
{
return named_objects_registry[src_a.c_str()];
@@ -120,6 +135,21 @@ FWObject* PIXImporter::makeSrcObj()
FWObject* PIXImporter::makeDstObj()
{
if (dst_nm == "interface")
{
map<const string,Interface*>::iterator it;
for (it=all_interfaces.begin(); it!=all_interfaces.end(); ++it)
{
Interface *intf = it->second;
if (intf->getLabel() == dst_a)
{
return intf;
}
}
throw ImporterException(
QString("Cannot find interface with label '%1'").arg(dst_a.c_str()));
}
if (named_objects_registry.count(dst_a.c_str()) > 0)
{
return named_objects_registry[dst_a.c_str()];
+131 -131
View File
@@ -47,25 +47,25 @@ void PIXCfgLexer::initLiterals()
literals["name"] = 9;
literals["names"] = 8;
literals["ospf"] = 22;
literals["established"] = 74;
literals["mac-address"] = 89;
literals["nameif"] = 93;
literals["established"] = 75;
literals["mac-address"] = 88;
literals["nameif"] = 79;
literals["subnet"] = 33;
literals["ipsec"] = 20;
literals["controller"] = 77;
literals["controller"] = 78;
literals["object"] = 27;
literals["pcp"] = 23;
literals["remark"] = 101;
literals["remark"] = 99;
literals["access-list"] = 61;
literals["snp"] = 26;
literals["hostname"] = 59;
literals["hold-time"] = 87;
literals["hold-time"] = 86;
literals["tcp-udp"] = 49;
literals["community-list"] = 7;
literals["permit"] = 63;
literals["pptp"] = 25;
literals["interval"] = 73;
literals["security-level"] = 94;
literals["interval"] = 74;
literals["security-level"] = 92;
literals["no"] = 53;
literals["source"] = 40;
literals["igrp"] = 18;
@@ -79,7 +79,7 @@ void PIXCfgLexer::initLiterals()
literals["icmp-type"] = 48;
literals["PIX"] = 55;
literals["icmp-object"] = 47;
literals["exit"] = 80;
literals["exit"] = 101;
literals["nat"] = 29;
literals["object-group"] = 42;
literals["range"] = 32;
@@ -89,51 +89,51 @@ void PIXCfgLexer::initLiterals()
literals["ah"] = 13;
literals["host"] = 31;
literals["secondary"] = 104;
literals["interface"] = 78;
literals["rip"] = 92;
literals["interface"] = 70;
literals["rip"] = 91;
literals["protocol-object"] = 46;
literals["icmp6"] = 37;
literals["standard"] = 65;
literals["network"] = 28;
literals["service"] = 34;
literals["vlan"] = 81;
literals["access"] = 100;
literals["multicast"] = 90;
literals["any"] = 70;
literals["dhcp"] = 97;
literals["speed"] = 82;
literals["vlan"] = 80;
literals["access"] = 98;
literals["multicast"] = 89;
literals["any"] = 71;
literals["dhcp"] = 95;
literals["speed"] = 81;
literals["deny"] = 64;
literals["neq"] = 69;
literals["esp"] = 15;
literals["address"] = 96;
literals["address"] = 94;
literals["network-object"] = 44;
literals["shutdown"] = 95;
literals["delay"] = 86;
literals["shutdown"] = 93;
literals["delay"] = 85;
literals["certificate"] = 54;
literals["udp"] = 39;
literals["fragments"] = 75;
literals["fragments"] = 76;
literals["eq"] = 66;
literals["destination"] = 41;
literals["duplex"] = 83;
literals["duplex"] = 82;
literals["setroute"] = 105;
literals["ip"] = 6;
literals["eigrp"] = 14;
literals["log-input"] = 72;
literals["switchport"] = 99;
literals["log-input"] = 73;
literals["switchport"] = 97;
literals["description"] = 30;
literals["extended"] = 62;
literals["igmp"] = 17;
literals["access-group"] = 102;
literals["ddns"] = 84;
literals["access-group"] = 100;
literals["ddns"] = 83;
literals["Version"] = 57;
literals["log"] = 71;
literals["forward"] = 85;
literals["log"] = 72;
literals["forward"] = 84;
literals["ASA"] = 56;
literals["lt"] = 68;
literals["ipv6"] = 88;
literals["ipv6"] = 87;
literals["port-object"] = 51;
literals["time-range"] = 76;
literals["standby"] = 98;
literals["time-range"] = 77;
literals["standby"] = 96;
literals["icmp"] = 35;
literals["tcp"] = 38;
}
@@ -449,11 +449,11 @@ void PIXCfgLexer::mLINE_COMMENT(bool _createToken) {
}
}
else {
goto _loop195;
goto _loop204;
}
}
_loop195:;
_loop204:;
} // ( ... )*
mNEWLINE(false);
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
@@ -485,7 +485,7 @@ void PIXCfgLexer::mNEWLINE(bool _createToken) {
}
if ( inputState->guessing==0 ) {
#line 1608 "pix.g"
#line 1637 "pix.g"
newline();
#line 491 "PIXCfgLexer.cpp"
}
@@ -511,11 +511,11 @@ void PIXCfgLexer::mCOLON_COMMENT(bool _createToken) {
}
}
else {
goto _loop199;
goto _loop208;
}
}
_loop199:;
_loop208:;
} // ( ... )*
mNEWLINE(false);
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
@@ -609,7 +609,7 @@ void PIXCfgLexer::mWhitespace(bool _createToken) {
}
}
if ( inputState->guessing==0 ) {
#line 1603 "pix.g"
#line 1632 "pix.g"
_ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP;
#line 615 "PIXCfgLexer.cpp"
}
@@ -694,15 +694,15 @@ void PIXCfgLexer::mNUMBER(bool _createToken) {
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
{
bool synPredMatched247 = false;
bool synPredMatched256 = false;
if (((_tokenSet_2.member(LA(1))) && (_tokenSet_3.member(LA(2))) && (true))) {
int _m247 = mark();
synPredMatched247 = true;
int _m256 = mark();
synPredMatched256 = true;
inputState->guessing++;
try {
{
{ // ( ... )+
int _cnt246=0;
int _cnt255=0;
for (;;) {
switch ( LA(1)) {
case 0x61 /* 'a' */ :
@@ -731,27 +731,27 @@ void PIXCfgLexer::mNUMBER(bool _createToken) {
}
default:
{
if ( _cnt246>=1 ) { goto _loop246; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
if ( _cnt255>=1 ) { goto _loop255; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
}
_cnt246++;
_cnt255++;
}
_loop246:;
_loop255:;
} // ( ... )+
mCOLON(false);
}
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) {
synPredMatched247 = false;
synPredMatched256 = false;
}
rewind(_m247);
rewind(_m256);
inputState->guessing--;
}
if ( synPredMatched247 ) {
if ( synPredMatched256 ) {
{
{
{ // ( ... )+
int _cnt251=0;
int _cnt260=0;
for (;;) {
switch ( LA(1)) {
case 0x61 /* 'a' */ :
@@ -780,15 +780,15 @@ void PIXCfgLexer::mNUMBER(bool _createToken) {
}
default:
{
if ( _cnt251>=1 ) { goto _loop251; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
if ( _cnt260>=1 ) { goto _loop260; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
}
_cnt251++;
_cnt260++;
}
_loop251:;
_loop260:;
} // ( ... )+
{ // ( ... )+
int _cnt255=0;
int _cnt264=0;
for (;;) {
if ((LA(1) == 0x3a /* ':' */ )) {
mCOLON(false);
@@ -821,34 +821,34 @@ void PIXCfgLexer::mNUMBER(bool _createToken) {
}
default:
{
goto _loop254;
goto _loop263;
}
}
}
_loop254:;
_loop263:;
} // ( ... )*
}
else {
if ( _cnt255>=1 ) { goto _loop255; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
if ( _cnt264>=1 ) { goto _loop264; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt255++;
_cnt264++;
}
_loop255:;
_loop264:;
} // ( ... )+
}
if ( inputState->guessing==0 ) {
#line 1642 "pix.g"
#line 1671 "pix.g"
_ttype = IPV6;
#line 844 "PIXCfgLexer.cpp"
}
}
}
else {
bool synPredMatched212 = false;
bool synPredMatched221 = false;
if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (true) && (true))) {
int _m212 = mark();
synPredMatched212 = true;
int _m221 = mark();
synPredMatched221 = true;
inputState->guessing++;
try {
{
@@ -856,235 +856,235 @@ void PIXCfgLexer::mNUMBER(bool _createToken) {
}
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) {
synPredMatched212 = false;
synPredMatched221 = false;
}
rewind(_m212);
rewind(_m221);
inputState->guessing--;
}
if ( synPredMatched212 ) {
if ( synPredMatched221 ) {
{
bool synPredMatched221 = false;
bool synPredMatched230 = false;
if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3))))) {
int _m221 = mark();
synPredMatched221 = true;
int _m230 = mark();
synPredMatched230 = true;
inputState->guessing++;
try {
{
{ // ( ... )+
int _cnt216=0;
int _cnt225=0;
for (;;) {
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
mDIGIT(false);
}
else {
if ( _cnt216>=1 ) { goto _loop216; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
if ( _cnt225>=1 ) { goto _loop225; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt216++;
_cnt225++;
}
_loop216:;
_loop225:;
} // ( ... )+
mDOT(false);
{ // ( ... )+
int _cnt218=0;
int _cnt227=0;
for (;;) {
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
mDIGIT(false);
}
else {
if ( _cnt218>=1 ) { goto _loop218; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
if ( _cnt227>=1 ) { goto _loop227; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt218++;
_cnt227++;
}
_loop218:;
_loop227:;
} // ( ... )+
mDOT(false);
{ // ( ... )+
int _cnt220=0;
int _cnt229=0;
for (;;) {
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
mDIGIT(false);
}
else {
if ( _cnt220>=1 ) { goto _loop220; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
if ( _cnt229>=1 ) { goto _loop229; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt220++;
_cnt229++;
}
_loop220:;
_loop229:;
} // ( ... )+
}
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) {
synPredMatched221 = false;
synPredMatched230 = false;
}
rewind(_m221);
rewind(_m230);
inputState->guessing--;
}
if ( synPredMatched221 ) {
if ( synPredMatched230 ) {
{
{ // ( ... )+
int _cnt224=0;
int _cnt233=0;
for (;;) {
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
mDIGIT(false);
}
else {
if ( _cnt224>=1 ) { goto _loop224; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
if ( _cnt233>=1 ) { goto _loop233; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt224++;
_cnt233++;
}
_loop224:;
_loop233:;
} // ( ... )+
mDOT(false);
{ // ( ... )+
int _cnt226=0;
int _cnt235=0;
for (;;) {
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
mDIGIT(false);
}
else {
if ( _cnt226>=1 ) { goto _loop226; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
if ( _cnt235>=1 ) { goto _loop235; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt226++;
_cnt235++;
}
_loop226:;
_loop235:;
} // ( ... )+
mDOT(false);
{ // ( ... )+
int _cnt228=0;
int _cnt237=0;
for (;;) {
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
mDIGIT(false);
}
else {
if ( _cnt228>=1 ) { goto _loop228; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
if ( _cnt237>=1 ) { goto _loop237; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt228++;
_cnt237++;
}
_loop228:;
_loop237:;
} // ( ... )+
mDOT(false);
{ // ( ... )+
int _cnt230=0;
int _cnt239=0;
for (;;) {
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
mDIGIT(false);
}
else {
if ( _cnt230>=1 ) { goto _loop230; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
if ( _cnt239>=1 ) { goto _loop239; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt230++;
_cnt239++;
}
_loop230:;
_loop239:;
} // ( ... )+
}
if ( inputState->guessing==0 ) {
#line 1631 "pix.g"
#line 1660 "pix.g"
_ttype = IPV4;
#line 991 "PIXCfgLexer.cpp"
}
}
else {
bool synPredMatched236 = false;
bool synPredMatched245 = false;
if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3))))) {
int _m236 = mark();
synPredMatched236 = true;
int _m245 = mark();
synPredMatched245 = true;
inputState->guessing++;
try {
{
{ // ( ... )+
int _cnt233=0;
int _cnt242=0;
for (;;) {
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
mDIGIT(false);
}
else {
if ( _cnt233>=1 ) { goto _loop233; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
if ( _cnt242>=1 ) { goto _loop242; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt233++;
_cnt242++;
}
_loop233:;
_loop242:;
} // ( ... )+
mDOT(false);
{ // ( ... )+
int _cnt235=0;
int _cnt244=0;
for (;;) {
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
mDIGIT(false);
}
else {
if ( _cnt235>=1 ) { goto _loop235; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
if ( _cnt244>=1 ) { goto _loop244; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt235++;
_cnt244++;
}
_loop235:;
_loop244:;
} // ( ... )+
}
}
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) {
synPredMatched236 = false;
synPredMatched245 = false;
}
rewind(_m236);
rewind(_m245);
inputState->guessing--;
}
if ( synPredMatched236 ) {
if ( synPredMatched245 ) {
{
{ // ( ... )+
int _cnt239=0;
int _cnt248=0;
for (;;) {
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
mDIGIT(false);
}
else {
if ( _cnt239>=1 ) { goto _loop239; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
if ( _cnt248>=1 ) { goto _loop248; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt239++;
_cnt248++;
}
_loop239:;
_loop248:;
} // ( ... )+
mDOT(false);
{ // ( ... )+
int _cnt241=0;
int _cnt250=0;
for (;;) {
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
mDIGIT(false);
}
else {
if ( _cnt241>=1 ) { goto _loop241; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
if ( _cnt250>=1 ) { goto _loop250; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt241++;
_cnt250++;
}
_loop241:;
_loop250:;
} // ( ... )+
}
}
else if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (true) && (true)) {
{ // ( ... )+
int _cnt243=0;
int _cnt252=0;
for (;;) {
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
mDIGIT(false);
}
else {
if ( _cnt243>=1 ) { goto _loop243; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
if ( _cnt252>=1 ) { goto _loop252; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
}
_cnt243++;
_cnt252++;
}
_loop243:;
_loop252:;
} // ( ... )+
if ( inputState->guessing==0 ) {
#line 1635 "pix.g"
#line 1664 "pix.g"
_ttype = INT_CONST;
#line 1090 "PIXCfgLexer.cpp"
}
@@ -1322,14 +1322,14 @@ void PIXCfgLexer::mNUMBER(bool _createToken) {
}
default:
{
goto _loop258;
goto _loop267;
}
}
}
_loop258:;
_loop267:;
} // ( ... )*
if ( inputState->guessing==0 ) {
#line 1648 "pix.g"
#line 1677 "pix.g"
_ttype = WORD;
#line 1335 "PIXCfgLexer.cpp"
}
@@ -1373,11 +1373,11 @@ void PIXCfgLexer::mSTRING(bool _createToken) {
matchNot('\"' /* charlit */ );
}
else {
goto _loop261;
goto _loop270;
}
}
_loop261:;
_loop270:;
} // ( ... )*
match('\"' /* charlit */ );
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
File diff suppressed because it is too large Load Diff
+14
View File
@@ -92,6 +92,7 @@ public:
public: void community_list_command();
public: void unknown_ip_command();
public: void intrface();
public: void nameif_top_level();
public: void controller();
public: void access_list_commands();
public: void access_group();
@@ -157,6 +158,7 @@ public:
public: void port_range();
public: void port_spec();
public: void pair_of_ports_spec();
public: void interface_command();
public: void interface_parameters();
public: void intf_address();
public: void vlan_interface();
@@ -221,6 +223,18 @@ private:
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_13;
static const unsigned long _tokenSet_14_data_[];
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_14;
static const unsigned long _tokenSet_15_data_[];
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_15;
static const unsigned long _tokenSet_16_data_[];
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_16;
static const unsigned long _tokenSet_17_data_[];
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_17;
static const unsigned long _tokenSet_18_data_[];
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_18;
static const unsigned long _tokenSet_19_data_[];
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_19;
static const unsigned long _tokenSet_20_data_[];
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_20;
};
#endif /*INC_PIXCfgParser_hpp_*/
+33 -33
View File
@@ -78,39 +78,39 @@ struct CUSTOM_API PIXCfgParserTokenTypes {
P_GT = 67,
P_LT = 68,
P_NEQ = 69,
ANY = 70,
LOG = 71,
LOG_INPUT = 72,
INTERVAL = 73,
ESTABLISHED = 74,
FRAGMENTS = 75,
TIME_RANGE = 76,
CONTROLLER = 77,
INTRFACE = 78,
LINE_COMMENT = 79,
EXIT = 80,
VLAN = 81,
SPEED = 82,
DUPLEX = 83,
DDNS = 84,
FORWARD = 85,
DELAY = 86,
HOLD_TIME = 87,
IPV6_C = 88,
MAC_ADDRESS = 89,
MULTICAST = 90,
PPPOE = 91,
RIP = 92,
NAMEIF = 93,
SEC_LEVEL = 94,
SHUTDOWN = 95,
ADDRESS = 96,
DHCP = 97,
STANDBY = 98,
SWITCHPORT = 99,
ACCESS = 100,
REMARK = 101,
ACCESS_GROUP = 102,
INTRFACE = 70,
ANY = 71,
LOG = 72,
LOG_INPUT = 73,
INTERVAL = 74,
ESTABLISHED = 75,
FRAGMENTS = 76,
TIME_RANGE = 77,
CONTROLLER = 78,
NAMEIF = 79,
VLAN = 80,
SPEED = 81,
DUPLEX = 82,
DDNS = 83,
FORWARD = 84,
DELAY = 85,
HOLD_TIME = 86,
IPV6_C = 87,
MAC_ADDRESS = 88,
MULTICAST = 89,
PPPOE = 90,
RIP = 91,
SEC_LEVEL = 92,
SHUTDOWN = 93,
ADDRESS = 94,
DHCP = 95,
STANDBY = 96,
SWITCHPORT = 97,
ACCESS = 98,
REMARK = 99,
ACCESS_GROUP = 100,
EXIT = 101,
LINE_COMMENT = 102,
COLON_COMMENT = 103,
SECONDARY = 104,
SETROUTE = 105,
+33 -33
View File
@@ -66,39 +66,39 @@ P_EQ="eq"=66
P_GT="gt"=67
P_LT="lt"=68
P_NEQ="neq"=69
ANY="any"=70
LOG="log"=71
LOG_INPUT="log-input"=72
INTERVAL="interval"=73
ESTABLISHED="established"=74
FRAGMENTS="fragments"=75
TIME_RANGE="time-range"=76
CONTROLLER="controller"=77
INTRFACE="interface"=78
LINE_COMMENT=79
EXIT="exit"=80
VLAN="vlan"=81
SPEED="speed"=82
DUPLEX="duplex"=83
DDNS="ddns"=84
FORWARD="forward"=85
DELAY="delay"=86
HOLD_TIME="hold-time"=87
IPV6_C="ipv6"=88
MAC_ADDRESS="mac-address"=89
MULTICAST="multicast"=90
PPPOE=91
RIP="rip"=92
NAMEIF="nameif"=93
SEC_LEVEL="security-level"=94
SHUTDOWN="shutdown"=95
ADDRESS="address"=96
DHCP="dhcp"=97
STANDBY="standby"=98
SWITCHPORT="switchport"=99
ACCESS="access"=100
REMARK="remark"=101
ACCESS_GROUP="access-group"=102
INTRFACE="interface"=70
ANY="any"=71
LOG="log"=72
LOG_INPUT="log-input"=73
INTERVAL="interval"=74
ESTABLISHED="established"=75
FRAGMENTS="fragments"=76
TIME_RANGE="time-range"=77
CONTROLLER="controller"=78
NAMEIF="nameif"=79
VLAN="vlan"=80
SPEED="speed"=81
DUPLEX="duplex"=82
DDNS="ddns"=83
FORWARD="forward"=84
DELAY="delay"=85
HOLD_TIME="hold-time"=86
IPV6_C="ipv6"=87
MAC_ADDRESS="mac-address"=88
MULTICAST="multicast"=89
PPPOE=90
RIP="rip"=91
SEC_LEVEL="security-level"=92
SHUTDOWN="shutdown"=93
ADDRESS="address"=94
DHCP="dhcp"=95
STANDBY="standby"=96
SWITCHPORT="switchport"=97
ACCESS="access"=98
REMARK="remark"=99
ACCESS_GROUP="access-group"=100
EXIT="exit"=101
LINE_COMMENT=102
COLON_COMMENT=103
SECONDARY="secondary"=104
SETROUTE="setroute"=105
+45 -16
View File
@@ -119,6 +119,8 @@ cfgfile :
unknown_ip_command
|
intrface
|
nameif_top_level
|
controller
|
@@ -843,7 +845,7 @@ access_list_commands : ACCESS_LIST name:WORD
;
//****************************************************************
permit_extended: EXTENDED PERMIT
permit_extended: ( EXTENDED )? PERMIT
{
importer->setCurrentLineNumber(LT(0)->getLine());
importer->newPolicyRule();
@@ -856,7 +858,7 @@ permit_extended: EXTENDED PERMIT
}
;
deny_extended: EXTENDED DENY
deny_extended: ( EXTENDED )? DENY
{
importer->setCurrentLineNumber(LT(0)->getLine());
importer->newPolicyRule();
@@ -1036,6 +1038,13 @@ pair_of_ports_spec : (s1:WORD|s2:INT_CONST) (e1:WORD|e2:INT_CONST)
;
hostaddr_expr :
INTRFACE intf_name:WORD
{
importer->tmp_a = intf_name->getText();
importer->tmp_nm = "interface";
*dbg << "object " << intf_name->getText() << " ";
}
|
( ( OBJECT | OBJECT_GROUP ) name:WORD )
{
importer->tmp_a = name->getText();
@@ -1065,7 +1074,7 @@ hostaddr_expr :
}
;
log : (LOG | LOG_INPUT) (INT_CONST INTERVAL INT_CONST)?
log : (LOG | LOG_INPUT) ( (INT_CONST (INTERVAL INT_CONST)? )? | WORD )
{
importer->logging = true;
*dbg << "logging ";
@@ -1142,31 +1151,50 @@ controller : CONTROLLER
// vlans in pix6 config format are not parsed
intrface : INTRFACE in:WORD
intrface : INTRFACE interface_command
;
interface_command : in:WORD
{
importer->setCurrentLineNumber(LT(0)->getLine());
importer->newInterface( in->getText() );
*dbg << in->getLine() << ":"
<< " INTRFACE: " << in->getText() << std::endl;
consumeUntil(NEWLINE);
}
(
(
interface_parameters
)+
( INT_CONST | WORD )+ // pix 6
|
( )
{
importer->ignoreCurrentInterface();
*dbg<< LT(1)->getLine() << ":"
<< " EMPTY INTERFACE " << std::endl;
}
( // pix 7
NEWLINE
(
(
interface_parameters
)+
|
( )
{
importer->ignoreCurrentInterface();
*dbg<< LT(1)->getLine() << ":"
<< " EMPTY INTERFACE " << std::endl;
}
)
)
)
NEWLINE ( LINE_COMMENT | EXIT )
// NEWLINE ( LINE_COMMENT | EXIT )
;
nameif_top_level : NAMEIF p_intf:WORD intf_label:WORD sec_level:WORD
{
std::string label = (intf_label) ? intf_label->getText() : "";
std::string seclevel = (sec_level) ? sec_level->getText() : "";
importer->setInterfaceParametes(p_intf->getText(), label, seclevel);
*dbg << " NAMEIF: "
<< p_intf->getText() << label << seclevel << std::endl;
}
;
interface_parameters :
NEWLINE
{
importer->setCurrentLineNumber(LT(0)->getLine());
}
@@ -1189,6 +1217,7 @@ interface_parameters :
|
unsupported_interface_commands
)
NEWLINE
;
vlan_interface : VLAN vlan_id:INT_CONST
+27 -20
View File
@@ -2,7 +2,7 @@
:
PIX Version 6.3(5)
interface ethernet0 auto
interface ethernet1 auto
interface ethernet1 100baseTX
nameif ethernet0 outside security0
nameif ethernet1 inside security100
enable password XXXXXXXXXXXXXXXX encrypted
@@ -53,13 +53,14 @@ access-list outside_acl_in remark 0 (ethernet0)
access-list outside_acl_in deny ip host 10.1.1.202 any log 5
access-list outside_acl_in deny ip 10.1.1.0 255.255.255.0 any log 5
access-list outside_acl_in remark 3 (global)
access-list outside_acl_in permit icmp any interface outside object-group outside.id12363X2458.srv.icmp.0
access-list outside_acl_in permit icmp any interface outside echo
! access-list outside_acl_in permit icmp any interface outside object-group outside.id12363X2458.srv.icmp.0
access-list outside_acl_in remark 4 (global)
access-list outside_acl_in remark fw uses DHCP
access-list outside_acl_in remark plus many DHCP requests
access-list outside_acl_in remark from cable modem
access-list outside_acl_in permit udp any interface outside object-group outside.id12376X2458.srv.udp.0
access-list outside_acl_in permit udp any host 255.255.255.255 object-group outside.id12376X2458.srv.udp.0
! access-list outside_acl_in permit udp any interface outside object-group outside.id12376X2458.srv.udp.0
! access-list outside_acl_in permit udp any host 255.255.255.255 object-group outside.id12376X2458.srv.udp.0
access-list outside_acl_in remark 6 (global)
access-list outside_acl_in deny tcp any interface outside eq ident
access-list outside_acl_in remark 7 (global)
@@ -70,11 +71,11 @@ access-list outside_acl_in remark block probing ssh connections, so no
access-list outside_acl_in remark need to limit
access-list outside_acl_in permit tcp any interface outside eq ssh
access-list outside_acl_in permit tcp any interface outside eq www
access-list outside_acl_in permit tcp any host 10.1.1.43 object-group outside.id12438X2458.srv.tcp.0
! access-list outside_acl_in permit tcp any host 10.1.1.43 object-group outside.id12438X2458.srv.tcp.0
access-list outside_acl_in remark 11 (global)
access-list outside_acl_in permit tcp any interface outside eq 8765
access-list outside_acl_in permit tcp any interface outside eq 2222
access-list outside_acl_in permit tcp any host 10.1.1.46 object-group outside.id12466X2458.srv.tcp.0
! access-list outside_acl_in permit tcp any host 10.1.1.46 object-group outside.id12466X2458.srv.tcp.0
access-list outside_acl_in remark 17 (global)
access-list outside_acl_in permit icmp any interface outside
access-list outside_acl_in permit icmp any any
@@ -84,24 +85,24 @@ access-list outside_acl_in deny ip any any log 5
access-list inside_acl_in remark 1 (global)
access-list inside_acl_in permit tcp 10.1.1.0 255.255.255.0 host 10.1.1.202 eq www
access-list inside_acl_in permit udp 10.1.1.0 255.255.255.0 host 10.1.1.202 eq snmp
access-list inside_acl_in remark 2 (global)
access-list inside_acl_in permit icmp host 10.1.1.202 host 10.1.1.202 object-group inside.id12349X2458.srv.icmp.0
access-list inside_acl_in permit icmp host 10.1.1.202 any object-group inside.id12349X2458.srv.icmp.0
access-list inside_acl_in remark 3 (global)
access-list inside_acl_in permit icmp any host 10.1.1.202 object-group outside.id12363X2458.srv.icmp.0
! access-list inside_acl_in remark 2 (global)
! access-list inside_acl_in permit icmp host 10.1.1.202 host 10.1.1.202 object-group inside.id12349X2458.srv.icmp.0
! access-list inside_acl_in permit icmp host 10.1.1.202 any object-group inside.id12349X2458.srv.icmp.0
! access-list inside_acl_in remark 3 (global)
! access-list inside_acl_in permit icmp any host 10.1.1.202 object-group outside.id12363X2458.srv.icmp.0
access-list inside_acl_in remark 5 (global)
access-list inside_acl_in permit ip host 10.1.1.202 any
access-list inside_acl_in remark 6 (global)
access-list inside_acl_in deny tcp any host 10.1.1.202 eq ident
access-list inside_acl_in remark 7 (global)
access-list inside_acl_in permit tcp any host 10.1.1.10 eq smtp
access-list inside_acl_in remark 10 (global)
access-list inside_acl_in remark using swatch to automatically
access-list inside_acl_in remark block probing ssh connections, so no
access-list inside_acl_in remark need to limit
access-list inside_acl_in permit tcp any host 10.1.1.43 object-group outside.id12438X2458.srv.tcp.0
access-list inside_acl_in remark 11 (global)
access-list inside_acl_in permit tcp any host 10.1.1.46 object-group outside.id12466X2458.srv.tcp.0
! access-list inside_acl_in remark 10 (global)
! access-list inside_acl_in remark using swatch to automatically
! access-list inside_acl_in remark block probing ssh connections, so no
! access-list inside_acl_in remark need to limit
! access-list inside_acl_in permit tcp any host 10.1.1.43 object-group outside.id12438X2458.srv.tcp.0
! access-list inside_acl_in remark 11 (global)
! access-list inside_acl_in permit tcp any host 10.1.1.46 object-group outside.id12466X2458.srv.tcp.0
access-list inside_acl_in remark 17 (global)
access-list inside_acl_in permit icmp any host 10.1.1.202
access-list inside_acl_in permit icmp any any
@@ -122,6 +123,10 @@ access-list id12656X2458.0 permit tcp host 10.1.1.46 eq 8765 any
access-list id12670X2458.0 permit tcp host 10.1.1.32 eq 5900 any
access-list id12684X2458.0 permit tcp host 10.1.1.102 eq 5901 any
access-list id12743X2458.0 permit ip 10.1.1.0 255.255.255.0 any
access-group outside_acl_in in interface outside
access-group inside_acl_in in interface inside
no pager
logging on
logging timestamp
@@ -165,8 +170,10 @@ static (inside,outside) tcp interface 2222 access-list id12642X2458.0 0 0
static (inside,outside) tcp interface 8765 access-list id12656X2458.0 0 0
static (inside,outside) tcp interface 5900 access-list id12670X2458.0 0 0
static (inside,outside) tcp interface 5901 access-list id12684X2458.0 0 0
access-group outside_acl_in in interface outside
access-group inside_acl_in in interface inside
! access-group outside_acl_in in interface outside
! access-group inside_acl_in in interface inside
timeout xlate 3:00:00
timeout conn 1:00:00 half-closed 0:00:00 udp 0:02:00 rpc 0:10:00 h225 1:00:00
timeout h323 0:05:00 mgcp 0:05:00 sip 0:30:00 sip_media 0:00:00
@@ -59,6 +59,8 @@ interface Ethernet5
no security-level
no ip address
!
interface Ethernet6
!
passwd MMMMMMMMMMMMMMMM encrypted
boot system flash:/pix721.bin
ftp mode passive
@@ -91,6 +93,10 @@ access-list inside_in extended deny ip any object-group outside.id12051X6282.src
access-list inside_in extended permit ip 10.1.1.0 255.255.255.0 any
access-list inside_in extended deny ip any any log warnings
access-list id12251X6282.0 extended permit ip 10.1.1.0 255.255.255.0 any
access-group inside_in in interface inside
access-group outside_in in interface outside
pager lines 24
logging enable
logging emblem