mirror of
https://github.com/fwbuilder/fwbuilder
synced 2026-09-15 09:29:36 +02:00
* parsers/pix.g (port_object): see #2234 added support for import
of "obejct-group service name tcp|udp" constructs in ASA 8.3 with subsequent "port-object" statements.
This commit is contained in:
@@ -1,3 +1,9 @@
|
||||
2011-03-22 vadim <vadim@netcitadel.com>
|
||||
|
||||
* parsers/pix.g (port_object): see #2234 added support for import
|
||||
of "obejct-group service name tcp|udp" constructs in ASA 8.3 with
|
||||
subsequent "port-object" statements.
|
||||
|
||||
2011-03-21 vadim <vadim@netcitadel.com>
|
||||
|
||||
* PortRangeConverter.h (PortRangeConverter): see #2252 TCP and UDP
|
||||
|
||||
@@ -97,6 +97,7 @@ void PIXImporter::clear()
|
||||
current_object_group = NULL;
|
||||
object_group_name = "";
|
||||
object_group_comment = "";
|
||||
object_group_service_protocol = "";
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -499,6 +500,8 @@ void PIXImporter::newObjectGroupService(const string &name)
|
||||
maker.createObject(ServiceGroup::TYPENAME, name)));
|
||||
named_objects_registry[object_group_name] = current_object_group;
|
||||
|
||||
object_group_service_protocol = "";
|
||||
|
||||
*logger << "Object Group (service) " + name;
|
||||
}
|
||||
|
||||
@@ -578,6 +581,9 @@ void PIXImporter::addIPServiceToObjectGroup()
|
||||
void PIXImporter::addTCPUDPServiceToObjectGroup()
|
||||
{
|
||||
FWObject *new_obj = NULL;
|
||||
if (protocol.empty() && ! object_group_service_protocol.isEmpty())
|
||||
protocol = object_group_service_protocol.toStdString();
|
||||
|
||||
if (protocol == "tcp") new_obj = createTCPService();
|
||||
if (protocol == "udp") new_obj = createUDPService();
|
||||
if (new_obj)
|
||||
|
||||
@@ -49,6 +49,7 @@ class PIXImporter : public IOSImporter
|
||||
|
||||
QString object_group_name;
|
||||
QString object_group_comment;
|
||||
QString object_group_service_protocol;
|
||||
libfwbuilder::FWObject *current_object_group;
|
||||
|
||||
QMap<QString,libfwbuilder::FWObject*> named_objects_registry;
|
||||
@@ -96,6 +97,9 @@ class PIXImporter : public IOSImporter
|
||||
void newObjectGroupProtocol(const std::string &group_name);
|
||||
void newObjectGroupICMP(const std::string &group_name);
|
||||
|
||||
void setObjectGroupServiceProtocol(const std::string &proto)
|
||||
{ object_group_service_protocol = proto.c_str(); }
|
||||
|
||||
void setObjectGroupDescription(const std::string &descr);
|
||||
|
||||
void addNamedObjectToObjectGroup(const std::string &object_name);
|
||||
|
||||
+210
-209
@@ -47,22 +47,22 @@ void PIXCfgLexer::initLiterals()
|
||||
literals["name"] = 9;
|
||||
literals["names"] = 8;
|
||||
literals["ospf"] = 22;
|
||||
literals["established"] = 68;
|
||||
literals["mac-address"] = 82;
|
||||
literals["nameif"] = 87;
|
||||
literals["established"] = 70;
|
||||
literals["mac-address"] = 85;
|
||||
literals["nameif"] = 89;
|
||||
literals["subnet"] = 33;
|
||||
literals["controller"] = 71;
|
||||
literals["controller"] = 73;
|
||||
literals["object"] = 27;
|
||||
literals["pcp"] = 23;
|
||||
literals["remark"] = 95;
|
||||
literals["access-list"] = 58;
|
||||
literals["remark"] = 97;
|
||||
literals["access-list"] = 60;
|
||||
literals["snp"] = 26;
|
||||
literals["hostname"] = 56;
|
||||
literals["hold-time"] = 80;
|
||||
literals["hostname"] = 58;
|
||||
literals["hold-time"] = 83;
|
||||
literals["community-list"] = 7;
|
||||
literals["permit"] = 59;
|
||||
literals["security-level"] = 88;
|
||||
literals["no"] = 86;
|
||||
literals["permit"] = 61;
|
||||
literals["security-level"] = 90;
|
||||
literals["no"] = 52;
|
||||
literals["source"] = 40;
|
||||
literals["igrp"] = 18;
|
||||
literals["group-object"] = 43;
|
||||
@@ -70,65 +70,66 @@ void PIXCfgLexer::initLiterals()
|
||||
literals["nos"] = 21;
|
||||
literals["ipinip"] = 19;
|
||||
literals["quit"] = 5;
|
||||
literals["crypto"] = 50;
|
||||
literals["crypto"] = 51;
|
||||
literals["protocol"] = 45;
|
||||
literals["icmp-type"] = 48;
|
||||
literals["PIX"] = 52;
|
||||
literals["PIX"] = 54;
|
||||
literals["icmp-object"] = 47;
|
||||
literals["exit"] = 97;
|
||||
literals["exit"] = 76;
|
||||
literals["nat"] = 29;
|
||||
literals["object-group"] = 42;
|
||||
literals["range"] = 32;
|
||||
literals["service-object"] = 49;
|
||||
literals["gre"] = 16;
|
||||
literals["gt"] = 62;
|
||||
literals["gt"] = 64;
|
||||
literals["ah"] = 13;
|
||||
literals["host"] = 31;
|
||||
literals["secondary"] = 99;
|
||||
literals["interface"] = 72;
|
||||
literals["rip"] = 85;
|
||||
literals["secondary"] = 100;
|
||||
literals["interface"] = 74;
|
||||
literals["rip"] = 88;
|
||||
literals["protocol-object"] = 46;
|
||||
literals["icmp6"] = 37;
|
||||
literals["standard"] = 102;
|
||||
literals["standard"] = 103;
|
||||
literals["network"] = 28;
|
||||
literals["service"] = 34;
|
||||
literals["vlan"] = 74;
|
||||
literals["access"] = 94;
|
||||
literals["multicast"] = 83;
|
||||
literals["any"] = 65;
|
||||
literals["dhcp"] = 91;
|
||||
literals["speed"] = 75;
|
||||
literals["deny"] = 60;
|
||||
literals["neq"] = 64;
|
||||
literals["address"] = 90;
|
||||
literals["vlan"] = 77;
|
||||
literals["access"] = 96;
|
||||
literals["multicast"] = 86;
|
||||
literals["any"] = 67;
|
||||
literals["dhcp"] = 93;
|
||||
literals["speed"] = 78;
|
||||
literals["deny"] = 62;
|
||||
literals["neq"] = 66;
|
||||
literals["address"] = 92;
|
||||
literals["esp"] = 15;
|
||||
literals["network-object"] = 44;
|
||||
literals["shutdown"] = 89;
|
||||
literals["delay"] = 79;
|
||||
literals["certificate"] = 51;
|
||||
literals["shutdown"] = 91;
|
||||
literals["delay"] = 82;
|
||||
literals["certificate"] = 53;
|
||||
literals["udp"] = 39;
|
||||
literals["fragments"] = 69;
|
||||
literals["eq"] = 61;
|
||||
literals["fragments"] = 71;
|
||||
literals["eq"] = 63;
|
||||
literals["destination"] = 41;
|
||||
literals["duplex"] = 76;
|
||||
literals["setroute"] = 100;
|
||||
literals["duplex"] = 79;
|
||||
literals["setroute"] = 101;
|
||||
literals["ip"] = 6;
|
||||
literals["eigrp"] = 14;
|
||||
literals["log-input"] = 67;
|
||||
literals["switchport"] = 93;
|
||||
literals["log-input"] = 69;
|
||||
literals["switchport"] = 95;
|
||||
literals["description"] = 30;
|
||||
literals["extended"] = 101;
|
||||
literals["extended"] = 102;
|
||||
literals["igmp"] = 17;
|
||||
literals["access-group"] = 96;
|
||||
literals["ddns"] = 77;
|
||||
literals["Version"] = 54;
|
||||
literals["log"] = 66;
|
||||
literals["forward"] = 78;
|
||||
literals["ASA"] = 53;
|
||||
literals["lt"] = 63;
|
||||
literals["ipv6"] = 81;
|
||||
literals["time-range"] = 70;
|
||||
literals["standby"] = 92;
|
||||
literals["access-group"] = 98;
|
||||
literals["ddns"] = 80;
|
||||
literals["Version"] = 56;
|
||||
literals["log"] = 68;
|
||||
literals["forward"] = 81;
|
||||
literals["ASA"] = 55;
|
||||
literals["lt"] = 65;
|
||||
literals["ipv6"] = 84;
|
||||
literals["port-object"] = 50;
|
||||
literals["time-range"] = 72;
|
||||
literals["standby"] = 94;
|
||||
literals["icmp"] = 35;
|
||||
literals["tcp"] = 38;
|
||||
}
|
||||
@@ -444,11 +445,11 @@ void PIXCfgLexer::mLINE_COMMENT(bool _createToken) {
|
||||
}
|
||||
}
|
||||
else {
|
||||
goto _loop184;
|
||||
goto _loop188;
|
||||
}
|
||||
|
||||
}
|
||||
_loop184:;
|
||||
_loop188:;
|
||||
} // ( ... )*
|
||||
mNEWLINE(false);
|
||||
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
|
||||
@@ -480,9 +481,9 @@ void PIXCfgLexer::mNEWLINE(bool _createToken) {
|
||||
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 1552 "pix.g"
|
||||
#line 1577 "pix.g"
|
||||
newline();
|
||||
#line 486 "PIXCfgLexer.cpp"
|
||||
#line 487 "PIXCfgLexer.cpp"
|
||||
}
|
||||
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
|
||||
_token = makeToken(_ttype);
|
||||
@@ -506,11 +507,11 @@ void PIXCfgLexer::mCOLON_COMMENT(bool _createToken) {
|
||||
}
|
||||
}
|
||||
else {
|
||||
goto _loop188;
|
||||
goto _loop192;
|
||||
}
|
||||
|
||||
}
|
||||
_loop188:;
|
||||
_loop192:;
|
||||
} // ( ... )*
|
||||
mNEWLINE(false);
|
||||
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
|
||||
@@ -604,9 +605,9 @@ void PIXCfgLexer::mWhitespace(bool _createToken) {
|
||||
}
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 1547 "pix.g"
|
||||
#line 1572 "pix.g"
|
||||
_ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP;
|
||||
#line 610 "PIXCfgLexer.cpp"
|
||||
#line 611 "PIXCfgLexer.cpp"
|
||||
}
|
||||
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
|
||||
_token = makeToken(_ttype);
|
||||
@@ -689,15 +690,15 @@ void PIXCfgLexer::mNUMBER(bool _createToken) {
|
||||
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
|
||||
|
||||
{
|
||||
bool synPredMatched236 = false;
|
||||
bool synPredMatched240 = false;
|
||||
if (((_tokenSet_2.member(LA(1))) && (_tokenSet_3.member(LA(2))) && (true))) {
|
||||
int _m236 = mark();
|
||||
synPredMatched236 = true;
|
||||
int _m240 = mark();
|
||||
synPredMatched240 = true;
|
||||
inputState->guessing++;
|
||||
try {
|
||||
{
|
||||
{ // ( ... )+
|
||||
int _cnt235=0;
|
||||
int _cnt239=0;
|
||||
for (;;) {
|
||||
switch ( LA(1)) {
|
||||
case 0x61 /* 'a' */ :
|
||||
@@ -726,27 +727,27 @@ void PIXCfgLexer::mNUMBER(bool _createToken) {
|
||||
}
|
||||
default:
|
||||
{
|
||||
if ( _cnt235>=1 ) { goto _loop235; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
if ( _cnt239>=1 ) { goto _loop239; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
}
|
||||
_cnt235++;
|
||||
_cnt239++;
|
||||
}
|
||||
_loop235:;
|
||||
_loop239:;
|
||||
} // ( ... )+
|
||||
mCOLON(false);
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) {
|
||||
synPredMatched236 = false;
|
||||
synPredMatched240 = false;
|
||||
}
|
||||
rewind(_m236);
|
||||
rewind(_m240);
|
||||
inputState->guessing--;
|
||||
}
|
||||
if ( synPredMatched236 ) {
|
||||
if ( synPredMatched240 ) {
|
||||
{
|
||||
{
|
||||
{ // ( ... )+
|
||||
int _cnt240=0;
|
||||
int _cnt244=0;
|
||||
for (;;) {
|
||||
switch ( LA(1)) {
|
||||
case 0x61 /* 'a' */ :
|
||||
@@ -775,15 +776,15 @@ void PIXCfgLexer::mNUMBER(bool _createToken) {
|
||||
}
|
||||
default:
|
||||
{
|
||||
if ( _cnt240>=1 ) { goto _loop240; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
if ( _cnt244>=1 ) { goto _loop244; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
}
|
||||
_cnt240++;
|
||||
_cnt244++;
|
||||
}
|
||||
_loop240:;
|
||||
_loop244:;
|
||||
} // ( ... )+
|
||||
{ // ( ... )+
|
||||
int _cnt244=0;
|
||||
int _cnt248=0;
|
||||
for (;;) {
|
||||
if ((LA(1) == 0x3a /* ':' */ )) {
|
||||
mCOLON(false);
|
||||
@@ -816,34 +817,34 @@ void PIXCfgLexer::mNUMBER(bool _createToken) {
|
||||
}
|
||||
default:
|
||||
{
|
||||
goto _loop243;
|
||||
goto _loop247;
|
||||
}
|
||||
}
|
||||
}
|
||||
_loop243:;
|
||||
_loop247:;
|
||||
} // ( ... )*
|
||||
}
|
||||
else {
|
||||
if ( _cnt244>=1 ) { goto _loop244; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
if ( _cnt248>=1 ) { goto _loop248; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt244++;
|
||||
_cnt248++;
|
||||
}
|
||||
_loop244:;
|
||||
_loop248:;
|
||||
} // ( ... )+
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 1586 "pix.g"
|
||||
#line 1611 "pix.g"
|
||||
_ttype = IPV6;
|
||||
#line 839 "PIXCfgLexer.cpp"
|
||||
#line 840 "PIXCfgLexer.cpp"
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
bool synPredMatched201 = false;
|
||||
bool synPredMatched205 = false;
|
||||
if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (true) && (true))) {
|
||||
int _m201 = mark();
|
||||
synPredMatched201 = true;
|
||||
int _m205 = mark();
|
||||
synPredMatched205 = true;
|
||||
inputState->guessing++;
|
||||
try {
|
||||
{
|
||||
@@ -851,51 +852,21 @@ void PIXCfgLexer::mNUMBER(bool _createToken) {
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) {
|
||||
synPredMatched201 = false;
|
||||
synPredMatched205 = false;
|
||||
}
|
||||
rewind(_m201);
|
||||
rewind(_m205);
|
||||
inputState->guessing--;
|
||||
}
|
||||
if ( synPredMatched201 ) {
|
||||
if ( synPredMatched205 ) {
|
||||
{
|
||||
bool synPredMatched210 = false;
|
||||
bool synPredMatched214 = false;
|
||||
if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3))))) {
|
||||
int _m210 = mark();
|
||||
synPredMatched210 = true;
|
||||
int _m214 = mark();
|
||||
synPredMatched214 = true;
|
||||
inputState->guessing++;
|
||||
try {
|
||||
{
|
||||
{ // ( ... )+
|
||||
int _cnt205=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt205>=1 ) { goto _loop205; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt205++;
|
||||
}
|
||||
_loop205:;
|
||||
} // ( ... )+
|
||||
mDOT(false);
|
||||
{ // ( ... )+
|
||||
int _cnt207=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt207>=1 ) { goto _loop207; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt207++;
|
||||
}
|
||||
_loop207:;
|
||||
} // ( ... )+
|
||||
mDOT(false);
|
||||
{ // ( ... )+
|
||||
int _cnt209=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
@@ -909,47 +880,47 @@ void PIXCfgLexer::mNUMBER(bool _createToken) {
|
||||
}
|
||||
_loop209:;
|
||||
} // ( ... )+
|
||||
mDOT(false);
|
||||
{ // ( ... )+
|
||||
int _cnt211=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt211>=1 ) { goto _loop211; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt211++;
|
||||
}
|
||||
_loop211:;
|
||||
} // ( ... )+
|
||||
mDOT(false);
|
||||
{ // ( ... )+
|
||||
int _cnt213=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt213>=1 ) { goto _loop213; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt213++;
|
||||
}
|
||||
_loop213:;
|
||||
} // ( ... )+
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) {
|
||||
synPredMatched210 = false;
|
||||
synPredMatched214 = false;
|
||||
}
|
||||
rewind(_m210);
|
||||
rewind(_m214);
|
||||
inputState->guessing--;
|
||||
}
|
||||
if ( synPredMatched210 ) {
|
||||
if ( synPredMatched214 ) {
|
||||
{
|
||||
{ // ( ... )+
|
||||
int _cnt213=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt213>=1 ) { goto _loop213; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt213++;
|
||||
}
|
||||
_loop213:;
|
||||
} // ( ... )+
|
||||
mDOT(false);
|
||||
{ // ( ... )+
|
||||
int _cnt215=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt215>=1 ) { goto _loop215; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt215++;
|
||||
}
|
||||
_loop215:;
|
||||
} // ( ... )+
|
||||
mDOT(false);
|
||||
{ // ( ... )+
|
||||
int _cnt217=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
@@ -978,92 +949,90 @@ void PIXCfgLexer::mNUMBER(bool _createToken) {
|
||||
}
|
||||
_loop219:;
|
||||
} // ( ... )+
|
||||
mDOT(false);
|
||||
{ // ( ... )+
|
||||
int _cnt221=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt221>=1 ) { goto _loop221; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt221++;
|
||||
}
|
||||
_loop221:;
|
||||
} // ( ... )+
|
||||
mDOT(false);
|
||||
{ // ( ... )+
|
||||
int _cnt223=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt223>=1 ) { goto _loop223; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt223++;
|
||||
}
|
||||
_loop223:;
|
||||
} // ( ... )+
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 1575 "pix.g"
|
||||
#line 1600 "pix.g"
|
||||
_ttype = IPV4;
|
||||
#line 986 "PIXCfgLexer.cpp"
|
||||
#line 987 "PIXCfgLexer.cpp"
|
||||
}
|
||||
}
|
||||
else {
|
||||
bool synPredMatched225 = false;
|
||||
bool synPredMatched229 = false;
|
||||
if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (_tokenSet_4.member(LA(2))) && (_tokenSet_4.member(LA(3))))) {
|
||||
int _m225 = mark();
|
||||
synPredMatched225 = true;
|
||||
int _m229 = mark();
|
||||
synPredMatched229 = true;
|
||||
inputState->guessing++;
|
||||
try {
|
||||
{
|
||||
{ // ( ... )+
|
||||
int _cnt222=0;
|
||||
int _cnt226=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt222>=1 ) { goto _loop222; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
if ( _cnt226>=1 ) { goto _loop226; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt222++;
|
||||
_cnt226++;
|
||||
}
|
||||
_loop222:;
|
||||
_loop226:;
|
||||
} // ( ... )+
|
||||
mDOT(false);
|
||||
{ // ( ... )+
|
||||
int _cnt224=0;
|
||||
int _cnt228=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt224>=1 ) { goto _loop224; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
if ( _cnt228>=1 ) { goto _loop228; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt224++;
|
||||
_cnt228++;
|
||||
}
|
||||
_loop224:;
|
||||
_loop228:;
|
||||
} // ( ... )+
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) {
|
||||
synPredMatched225 = false;
|
||||
synPredMatched229 = false;
|
||||
}
|
||||
rewind(_m225);
|
||||
rewind(_m229);
|
||||
inputState->guessing--;
|
||||
}
|
||||
if ( synPredMatched225 ) {
|
||||
if ( synPredMatched229 ) {
|
||||
{
|
||||
{ // ( ... )+
|
||||
int _cnt228=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt228>=1 ) { goto _loop228; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt228++;
|
||||
}
|
||||
_loop228:;
|
||||
} // ( ... )+
|
||||
mDOT(false);
|
||||
{ // ( ... )+
|
||||
int _cnt230=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt230>=1 ) { goto _loop230; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt230++;
|
||||
}
|
||||
_loop230:;
|
||||
} // ( ... )+
|
||||
}
|
||||
}
|
||||
else if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (true) && (true)) {
|
||||
{ // ( ... )+
|
||||
int _cnt232=0;
|
||||
for (;;) {
|
||||
@@ -1078,10 +1047,42 @@ void PIXCfgLexer::mNUMBER(bool _createToken) {
|
||||
}
|
||||
_loop232:;
|
||||
} // ( ... )+
|
||||
mDOT(false);
|
||||
{ // ( ... )+
|
||||
int _cnt234=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt234>=1 ) { goto _loop234; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt234++;
|
||||
}
|
||||
_loop234:;
|
||||
} // ( ... )+
|
||||
}
|
||||
}
|
||||
else if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (true) && (true)) {
|
||||
{ // ( ... )+
|
||||
int _cnt236=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt236>=1 ) { goto _loop236; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt236++;
|
||||
}
|
||||
_loop236:;
|
||||
} // ( ... )+
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 1579 "pix.g"
|
||||
#line 1604 "pix.g"
|
||||
_ttype = INT_CONST;
|
||||
#line 1085 "PIXCfgLexer.cpp"
|
||||
#line 1086 "PIXCfgLexer.cpp"
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -1317,16 +1318,16 @@ void PIXCfgLexer::mNUMBER(bool _createToken) {
|
||||
}
|
||||
default:
|
||||
{
|
||||
goto _loop247;
|
||||
goto _loop251;
|
||||
}
|
||||
}
|
||||
}
|
||||
_loop247:;
|
||||
_loop251:;
|
||||
} // ( ... )*
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 1592 "pix.g"
|
||||
#line 1617 "pix.g"
|
||||
_ttype = WORD;
|
||||
#line 1330 "PIXCfgLexer.cpp"
|
||||
#line 1331 "PIXCfgLexer.cpp"
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -1368,11 +1369,11 @@ void PIXCfgLexer::mSTRING(bool _createToken) {
|
||||
matchNot('\"' /* charlit */ );
|
||||
}
|
||||
else {
|
||||
goto _loop250;
|
||||
goto _loop254;
|
||||
}
|
||||
|
||||
}
|
||||
_loop250:;
|
||||
_loop254:;
|
||||
} // ( ... )*
|
||||
match('\"' /* charlit */ );
|
||||
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
|
||||
@@ -1751,7 +1752,7 @@ void PIXCfgLexer::mEXLAMATION(bool _createToken) {
|
||||
const unsigned long PIXCfgLexer::_tokenSet_0_data_[] = { 4294958072UL, 1UL, 0UL, 2147483648UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
|
||||
// 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xe 0xf 0x10 0x11 0x12 0x13 0x14
|
||||
// 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x7f 0x80 0x81
|
||||
// 0x82 0x83 0x84 0x85 0x86 0x87
|
||||
// 0x82 0x83 0x84 0x85 0x86 0x87 0x88
|
||||
const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgLexer::_tokenSet_0(_tokenSet_0_data_,16);
|
||||
const unsigned long PIXCfgLexer::_tokenSet_1_data_[] = { 4294958072UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
|
||||
// 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xe 0xf 0x10 0x11 0x12 0x13 0x14
|
||||
@@ -1759,7 +1760,7 @@ const unsigned long PIXCfgLexer::_tokenSet_1_data_[] = { 4294958072UL, 429496729
|
||||
// & \' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G
|
||||
// H I J K L M N O P Q R S T U V W X Y Z [ 0x5c ] ^ _ ` a b c d e f g h
|
||||
// i j k l m n o p q r s t u v w x y z { | } ~ 0x7f 0x80 0x81 0x82 0x83
|
||||
// 0x84 0x85 0x86 0x87
|
||||
// 0x84 0x85 0x86 0x87 0x88
|
||||
const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgLexer::_tokenSet_1(_tokenSet_1_data_,16);
|
||||
const unsigned long PIXCfgLexer::_tokenSet_2_data_[] = { 0UL, 67043328UL, 0UL, 126UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
|
||||
// 0 1 2 3 4 5 6 7 8 9 a b c d e f
|
||||
@@ -1780,6 +1781,6 @@ const unsigned long PIXCfgLexer::_tokenSet_6_data_[] = { 4294967288UL, 429496729
|
||||
// % & \' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F
|
||||
// G H I J K L M N O P Q R S T U V W X Y Z [ 0x5c ] ^ _ ` a b c d e f g
|
||||
// h i j k l m n o p q r s t u v w x y z { | } ~ 0x7f 0x80 0x81 0x82 0x83
|
||||
// 0x84 0x85 0x86 0x87
|
||||
// 0x84 0x85 0x86 0x87 0x88
|
||||
const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgLexer::_tokenSet_6(_tokenSet_6_data_,16);
|
||||
|
||||
|
||||
+536
-338
File diff suppressed because it is too large
Load Diff
@@ -108,6 +108,7 @@ public:
|
||||
public: void object_group_icmp_8_0();
|
||||
public: void object_group_icmp_8_3();
|
||||
public: void crypto();
|
||||
public: void no_commands();
|
||||
public: void unknown_command();
|
||||
public: void ip_protocol_names();
|
||||
public: void named_object_network_parameters();
|
||||
@@ -135,6 +136,7 @@ public:
|
||||
public: void icmp_object();
|
||||
public: void object_group_service_parameters();
|
||||
public: void service_object();
|
||||
public: void port_object();
|
||||
public: void permit_ext();
|
||||
public: void deny_ext();
|
||||
public: void remark();
|
||||
@@ -179,10 +181,10 @@ protected:
|
||||
private:
|
||||
static const char* tokenNames[];
|
||||
#ifndef NO_STATIC_CONSTS
|
||||
static const int NUM_TOKENS = 136;
|
||||
static const int NUM_TOKENS = 137;
|
||||
#else
|
||||
enum {
|
||||
NUM_TOKENS = 136
|
||||
NUM_TOKENS = 137
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -212,6 +214,8 @@ private:
|
||||
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_11;
|
||||
static const unsigned long _tokenSet_12_data_[];
|
||||
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_12;
|
||||
static const unsigned long _tokenSet_13_data_[];
|
||||
static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_13;
|
||||
};
|
||||
|
||||
#endif /*INC_PIXCfgParser_hpp_*/
|
||||
|
||||
@@ -58,92 +58,93 @@ struct CUSTOM_API PIXCfgParserTokenTypes {
|
||||
ICMP_OBJECT = 47,
|
||||
ICMP_TYPE = 48,
|
||||
SERVICE_OBJECT = 49,
|
||||
CRYPTO = 50,
|
||||
CERTIFICATE = 51,
|
||||
PIX_WORD = 52,
|
||||
ASA_WORD = 53,
|
||||
VERSION_WORD = 54,
|
||||
NUMBER = 55,
|
||||
HOSTNAME = 56,
|
||||
STRING = 57,
|
||||
ACCESS_LIST = 58,
|
||||
PERMIT = 59,
|
||||
DENY = 60,
|
||||
P_EQ = 61,
|
||||
P_GT = 62,
|
||||
P_LT = 63,
|
||||
P_NEQ = 64,
|
||||
ANY = 65,
|
||||
LOG = 66,
|
||||
LOG_INPUT = 67,
|
||||
ESTABLISHED = 68,
|
||||
FRAGMENTS = 69,
|
||||
TIME_RANGE = 70,
|
||||
CONTROLLER = 71,
|
||||
INTRFACE = 72,
|
||||
LINE_COMMENT = 73,
|
||||
VLAN = 74,
|
||||
SPEED = 75,
|
||||
DUPLEX = 76,
|
||||
DDNS = 77,
|
||||
FORWARD = 78,
|
||||
DELAY = 79,
|
||||
HOLD_TIME = 80,
|
||||
IPV6_C = 81,
|
||||
MAC_ADDRESS = 82,
|
||||
MULTICAST = 83,
|
||||
PPPOE = 84,
|
||||
RIP = 85,
|
||||
NO = 86,
|
||||
NAMEIF = 87,
|
||||
SEC_LEVEL = 88,
|
||||
SHUTDOWN = 89,
|
||||
ADDRESS = 90,
|
||||
DHCP = 91,
|
||||
STANDBY = 92,
|
||||
SWITCHPORT = 93,
|
||||
ACCESS = 94,
|
||||
REMARK = 95,
|
||||
ACCESS_GROUP = 96,
|
||||
EXIT = 97,
|
||||
COLON_COMMENT = 98,
|
||||
SECONDARY = 99,
|
||||
SETROUTE = 100,
|
||||
EXTENDED = 101,
|
||||
STANDARD = 102,
|
||||
Whitespace = 103,
|
||||
HEX_CONST = 104,
|
||||
NEG_INT_CONST = 105,
|
||||
DIGIT = 106,
|
||||
HEXDIGIT = 107,
|
||||
PIPE_CHAR = 108,
|
||||
NUMBER_SIGN = 109,
|
||||
PERCENT = 110,
|
||||
AMPERSAND = 111,
|
||||
APOSTROPHE = 112,
|
||||
OPENING_PAREN = 113,
|
||||
CLOSING_PAREN = 114,
|
||||
STAR = 115,
|
||||
PLUS = 116,
|
||||
COMMA = 117,
|
||||
MINUS = 118,
|
||||
DOT = 119,
|
||||
SLASH = 120,
|
||||
COLON = 121,
|
||||
SEMICOLON = 122,
|
||||
LESS_THAN = 123,
|
||||
EQUALS = 124,
|
||||
GREATER_THAN = 125,
|
||||
QUESTION = 126,
|
||||
COMMERCIAL_AT = 127,
|
||||
OPENING_SQUARE = 128,
|
||||
CLOSING_SQUARE = 129,
|
||||
CARET = 130,
|
||||
UNDERLINE = 131,
|
||||
OPENING_BRACE = 132,
|
||||
CLOSING_BRACE = 133,
|
||||
TILDE = 134,
|
||||
EXLAMATION = 135,
|
||||
PORT_OBJECT = 50,
|
||||
CRYPTO = 51,
|
||||
NO = 52,
|
||||
CERTIFICATE = 53,
|
||||
PIX_WORD = 54,
|
||||
ASA_WORD = 55,
|
||||
VERSION_WORD = 56,
|
||||
NUMBER = 57,
|
||||
HOSTNAME = 58,
|
||||
STRING = 59,
|
||||
ACCESS_LIST = 60,
|
||||
PERMIT = 61,
|
||||
DENY = 62,
|
||||
P_EQ = 63,
|
||||
P_GT = 64,
|
||||
P_LT = 65,
|
||||
P_NEQ = 66,
|
||||
ANY = 67,
|
||||
LOG = 68,
|
||||
LOG_INPUT = 69,
|
||||
ESTABLISHED = 70,
|
||||
FRAGMENTS = 71,
|
||||
TIME_RANGE = 72,
|
||||
CONTROLLER = 73,
|
||||
INTRFACE = 74,
|
||||
LINE_COMMENT = 75,
|
||||
EXIT = 76,
|
||||
VLAN = 77,
|
||||
SPEED = 78,
|
||||
DUPLEX = 79,
|
||||
DDNS = 80,
|
||||
FORWARD = 81,
|
||||
DELAY = 82,
|
||||
HOLD_TIME = 83,
|
||||
IPV6_C = 84,
|
||||
MAC_ADDRESS = 85,
|
||||
MULTICAST = 86,
|
||||
PPPOE = 87,
|
||||
RIP = 88,
|
||||
NAMEIF = 89,
|
||||
SEC_LEVEL = 90,
|
||||
SHUTDOWN = 91,
|
||||
ADDRESS = 92,
|
||||
DHCP = 93,
|
||||
STANDBY = 94,
|
||||
SWITCHPORT = 95,
|
||||
ACCESS = 96,
|
||||
REMARK = 97,
|
||||
ACCESS_GROUP = 98,
|
||||
COLON_COMMENT = 99,
|
||||
SECONDARY = 100,
|
||||
SETROUTE = 101,
|
||||
EXTENDED = 102,
|
||||
STANDARD = 103,
|
||||
Whitespace = 104,
|
||||
HEX_CONST = 105,
|
||||
NEG_INT_CONST = 106,
|
||||
DIGIT = 107,
|
||||
HEXDIGIT = 108,
|
||||
PIPE_CHAR = 109,
|
||||
NUMBER_SIGN = 110,
|
||||
PERCENT = 111,
|
||||
AMPERSAND = 112,
|
||||
APOSTROPHE = 113,
|
||||
OPENING_PAREN = 114,
|
||||
CLOSING_PAREN = 115,
|
||||
STAR = 116,
|
||||
PLUS = 117,
|
||||
COMMA = 118,
|
||||
MINUS = 119,
|
||||
DOT = 120,
|
||||
SLASH = 121,
|
||||
COLON = 122,
|
||||
SEMICOLON = 123,
|
||||
LESS_THAN = 124,
|
||||
EQUALS = 125,
|
||||
GREATER_THAN = 126,
|
||||
QUESTION = 127,
|
||||
COMMERCIAL_AT = 128,
|
||||
OPENING_SQUARE = 129,
|
||||
CLOSING_SQUARE = 130,
|
||||
CARET = 131,
|
||||
UNDERLINE = 132,
|
||||
OPENING_BRACE = 133,
|
||||
CLOSING_BRACE = 134,
|
||||
TILDE = 135,
|
||||
EXLAMATION = 136,
|
||||
NULL_TREE_LOOKAHEAD = 3
|
||||
};
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -46,89 +46,90 @@ PROTOCOL_OBJECT="protocol-object"=46
|
||||
ICMP_OBJECT="icmp-object"=47
|
||||
ICMP_TYPE="icmp-type"=48
|
||||
SERVICE_OBJECT="service-object"=49
|
||||
CRYPTO="crypto"=50
|
||||
CERTIFICATE="certificate"=51
|
||||
PIX_WORD="PIX"=52
|
||||
ASA_WORD="ASA"=53
|
||||
VERSION_WORD="Version"=54
|
||||
NUMBER=55
|
||||
HOSTNAME="hostname"=56
|
||||
STRING=57
|
||||
ACCESS_LIST="access-list"=58
|
||||
PERMIT="permit"=59
|
||||
DENY="deny"=60
|
||||
P_EQ="eq"=61
|
||||
P_GT="gt"=62
|
||||
P_LT="lt"=63
|
||||
P_NEQ="neq"=64
|
||||
ANY="any"=65
|
||||
LOG="log"=66
|
||||
LOG_INPUT="log-input"=67
|
||||
ESTABLISHED="established"=68
|
||||
FRAGMENTS="fragments"=69
|
||||
TIME_RANGE="time-range"=70
|
||||
CONTROLLER="controller"=71
|
||||
INTRFACE="interface"=72
|
||||
LINE_COMMENT=73
|
||||
VLAN="vlan"=74
|
||||
SPEED="speed"=75
|
||||
DUPLEX="duplex"=76
|
||||
DDNS="ddns"=77
|
||||
FORWARD="forward"=78
|
||||
DELAY="delay"=79
|
||||
HOLD_TIME="hold-time"=80
|
||||
IPV6_C="ipv6"=81
|
||||
MAC_ADDRESS="mac-address"=82
|
||||
MULTICAST="multicast"=83
|
||||
PPPOE=84
|
||||
RIP="rip"=85
|
||||
NO="no"=86
|
||||
NAMEIF="nameif"=87
|
||||
SEC_LEVEL="security-level"=88
|
||||
SHUTDOWN="shutdown"=89
|
||||
ADDRESS="address"=90
|
||||
DHCP="dhcp"=91
|
||||
STANDBY="standby"=92
|
||||
SWITCHPORT="switchport"=93
|
||||
ACCESS="access"=94
|
||||
REMARK="remark"=95
|
||||
ACCESS_GROUP="access-group"=96
|
||||
EXIT="exit"=97
|
||||
COLON_COMMENT=98
|
||||
SECONDARY="secondary"=99
|
||||
SETROUTE="setroute"=100
|
||||
EXTENDED="extended"=101
|
||||
STANDARD="standard"=102
|
||||
Whitespace=103
|
||||
HEX_CONST=104
|
||||
NEG_INT_CONST=105
|
||||
DIGIT=106
|
||||
HEXDIGIT=107
|
||||
PIPE_CHAR=108
|
||||
NUMBER_SIGN=109
|
||||
PERCENT=110
|
||||
AMPERSAND=111
|
||||
APOSTROPHE=112
|
||||
OPENING_PAREN=113
|
||||
CLOSING_PAREN=114
|
||||
STAR=115
|
||||
PLUS=116
|
||||
COMMA=117
|
||||
MINUS=118
|
||||
DOT=119
|
||||
SLASH=120
|
||||
COLON=121
|
||||
SEMICOLON=122
|
||||
LESS_THAN=123
|
||||
EQUALS=124
|
||||
GREATER_THAN=125
|
||||
QUESTION=126
|
||||
COMMERCIAL_AT=127
|
||||
OPENING_SQUARE=128
|
||||
CLOSING_SQUARE=129
|
||||
CARET=130
|
||||
UNDERLINE=131
|
||||
OPENING_BRACE=132
|
||||
CLOSING_BRACE=133
|
||||
TILDE=134
|
||||
EXLAMATION=135
|
||||
PORT_OBJECT="port-object"=50
|
||||
CRYPTO="crypto"=51
|
||||
NO="no"=52
|
||||
CERTIFICATE="certificate"=53
|
||||
PIX_WORD="PIX"=54
|
||||
ASA_WORD="ASA"=55
|
||||
VERSION_WORD="Version"=56
|
||||
NUMBER=57
|
||||
HOSTNAME="hostname"=58
|
||||
STRING=59
|
||||
ACCESS_LIST="access-list"=60
|
||||
PERMIT="permit"=61
|
||||
DENY="deny"=62
|
||||
P_EQ="eq"=63
|
||||
P_GT="gt"=64
|
||||
P_LT="lt"=65
|
||||
P_NEQ="neq"=66
|
||||
ANY="any"=67
|
||||
LOG="log"=68
|
||||
LOG_INPUT="log-input"=69
|
||||
ESTABLISHED="established"=70
|
||||
FRAGMENTS="fragments"=71
|
||||
TIME_RANGE="time-range"=72
|
||||
CONTROLLER="controller"=73
|
||||
INTRFACE="interface"=74
|
||||
LINE_COMMENT=75
|
||||
EXIT="exit"=76
|
||||
VLAN="vlan"=77
|
||||
SPEED="speed"=78
|
||||
DUPLEX="duplex"=79
|
||||
DDNS="ddns"=80
|
||||
FORWARD="forward"=81
|
||||
DELAY="delay"=82
|
||||
HOLD_TIME="hold-time"=83
|
||||
IPV6_C="ipv6"=84
|
||||
MAC_ADDRESS="mac-address"=85
|
||||
MULTICAST="multicast"=86
|
||||
PPPOE=87
|
||||
RIP="rip"=88
|
||||
NAMEIF="nameif"=89
|
||||
SEC_LEVEL="security-level"=90
|
||||
SHUTDOWN="shutdown"=91
|
||||
ADDRESS="address"=92
|
||||
DHCP="dhcp"=93
|
||||
STANDBY="standby"=94
|
||||
SWITCHPORT="switchport"=95
|
||||
ACCESS="access"=96
|
||||
REMARK="remark"=97
|
||||
ACCESS_GROUP="access-group"=98
|
||||
COLON_COMMENT=99
|
||||
SECONDARY="secondary"=100
|
||||
SETROUTE="setroute"=101
|
||||
EXTENDED="extended"=102
|
||||
STANDARD="standard"=103
|
||||
Whitespace=104
|
||||
HEX_CONST=105
|
||||
NEG_INT_CONST=106
|
||||
DIGIT=107
|
||||
HEXDIGIT=108
|
||||
PIPE_CHAR=109
|
||||
NUMBER_SIGN=110
|
||||
PERCENT=111
|
||||
AMPERSAND=112
|
||||
APOSTROPHE=113
|
||||
OPENING_PAREN=114
|
||||
CLOSING_PAREN=115
|
||||
STAR=116
|
||||
PLUS=117
|
||||
COMMA=118
|
||||
MINUS=119
|
||||
DOT=120
|
||||
SLASH=121
|
||||
COLON=122
|
||||
SEMICOLON=123
|
||||
LESS_THAN=124
|
||||
EQUALS=125
|
||||
GREATER_THAN=126
|
||||
QUESTION=127
|
||||
COMMERCIAL_AT=128
|
||||
OPENING_SQUARE=129
|
||||
CLOSING_SQUARE=130
|
||||
CARET=131
|
||||
UNDERLINE=132
|
||||
OPENING_BRACE=133
|
||||
CLOSING_BRACE=134
|
||||
TILDE=135
|
||||
EXLAMATION=136
|
||||
|
||||
+27
-2
@@ -151,6 +151,8 @@ cfgfile :
|
||||
object_group_icmp_8_3
|
||||
|
|
||||
crypto
|
||||
|
|
||||
no_commands
|
||||
|
|
||||
unknown_command
|
||||
|
|
||||
@@ -662,11 +664,13 @@ icmp_object : ICMP_OBJECT
|
||||
|
||||
//****************************************************************
|
||||
|
||||
object_group_service : OBJECT_GROUP SERVICE name:WORD
|
||||
object_group_service : OBJECT_GROUP SERVICE name:WORD ( tcp:TCP | udp:UDP )?
|
||||
{
|
||||
importer->clear();
|
||||
importer->setCurrentLineNumber(LT(0)->getLine());
|
||||
importer->newObjectGroupService(name->getText());
|
||||
if (tcp) importer->setObjectGroupServiceProtocol("tcp");
|
||||
if (udp) importer->setObjectGroupServiceProtocol("udp");
|
||||
*dbg << name->getLine() << ":"
|
||||
<< " Object Group " << name->getText() << std::endl;
|
||||
}
|
||||
@@ -683,6 +687,8 @@ object_group_service_parameters :
|
||||
group_object
|
||||
|
|
||||
service_object
|
||||
|
|
||||
port_object
|
||||
)
|
||||
;
|
||||
|
||||
@@ -735,6 +741,15 @@ service_object : SERVICE_OBJECT
|
||||
)
|
||||
;
|
||||
|
||||
port_object : PORT_OBJECT xoperator
|
||||
{
|
||||
importer->setCurrentLineNumber(LT(0)->getLine());
|
||||
importer->SaveTmpPortToDst();
|
||||
importer->addTCPUDPServiceToObjectGroup();
|
||||
*dbg << " PORT OBJECT TCP/UDP" << LT(0)->getText() << " ";
|
||||
}
|
||||
;
|
||||
|
||||
//****************************************************************
|
||||
crypto : CRYPTO
|
||||
{
|
||||
@@ -756,6 +771,15 @@ unknown_command : WORD
|
||||
}
|
||||
;
|
||||
|
||||
//****************************************************************
|
||||
no_commands : NO
|
||||
{
|
||||
*dbg << " TOP LEVEL \"NO\" COMMAND: "
|
||||
<< LT(0)->getText() << std::endl;
|
||||
consumeUntil(NEWLINE);
|
||||
}
|
||||
;
|
||||
|
||||
//****************************************************************
|
||||
certificate : CERTIFICATE WORD
|
||||
{
|
||||
@@ -1112,7 +1136,7 @@ intrface : INTRFACE in:WORD
|
||||
<< " EMPTY INTERFACE " << std::endl;
|
||||
}
|
||||
)
|
||||
NEWLINE LINE_COMMENT
|
||||
NEWLINE ( LINE_COMMENT | EXIT )
|
||||
;
|
||||
|
||||
interface_parameters :
|
||||
@@ -1521,6 +1545,7 @@ tokens
|
||||
GROUP_OBJECT = "group-object";
|
||||
NETWORK_OBJECT = "network-object";
|
||||
SERVICE_OBJECT = "service-object";
|
||||
PORT_OBJECT = "port-object";
|
||||
PROTOCOL_OBJECT = "protocol-object";
|
||||
ICMP_OBJECT = "icmp-object";
|
||||
ICMP_TYPE = "icmp-type";
|
||||
|
||||
@@ -0,0 +1,274 @@
|
||||
: Saved
|
||||
:
|
||||
ASA Version 8.3(2)
|
||||
!
|
||||
hostname asa5505
|
||||
!
|
||||
interface Vlan1
|
||||
description inside interface
|
||||
nameif inside
|
||||
security-level 100
|
||||
ip address dhcp setroute
|
||||
!
|
||||
interface Vlan2
|
||||
description outside interface
|
||||
nameif outside
|
||||
security-level 0
|
||||
ip address 192.168.2.1 255.255.255.0
|
||||
!
|
||||
interface Ethernet0/0
|
||||
description Switch port 0/0
|
||||
switchport access vlan 2
|
||||
!
|
||||
|
||||
!
|
||||
object network internal_subnet_1
|
||||
subnet 192.168.1.0 255.255.255.192
|
||||
description Internal Subnet 1
|
||||
object network internal_subnet_2
|
||||
subnet 192.168.1.64 255.255.255.192
|
||||
description Internal Subnet 2
|
||||
! this object matches network in standard objects lib, but it should be created anyway
|
||||
object network internal_subnet_3
|
||||
subnet 192.168.1.0 255.255.255.0
|
||||
description Internal Subnet 1
|
||||
! this object matches internale_subnet_1 but has different name and should be created
|
||||
object network internal_subnet_4
|
||||
subnet 192.168.1.0 255.255.255.192
|
||||
|
||||
object network Internal_net
|
||||
subnet 192.168.1.0 255.255.255.0
|
||||
object network outside_range-1
|
||||
range 22.22.22.30 22.22.22.40
|
||||
object network range_1
|
||||
range 10.1.1.1 10.1.1.100
|
||||
object network firewall90:FastEthernet1:ip-1
|
||||
host 22.22.22.23
|
||||
object network hostA:eth0
|
||||
host 192.168.1.10
|
||||
object network spamhost1
|
||||
host 61.150.47.112
|
||||
object network spamhost2
|
||||
host 61.150.47.113
|
||||
object network external_gw2
|
||||
host 22.22.22.100
|
||||
!
|
||||
! Example of a named object with "nat" command
|
||||
!
|
||||
object network my-range-obj
|
||||
range 10.2.2.1 10.2.2.10
|
||||
object network my-inside-net
|
||||
subnet 192.168.2.0 255.255.255.0
|
||||
nat (inside,outside) dynamic my-range-ob
|
||||
!
|
||||
|
||||
! ipv6 addresses
|
||||
!
|
||||
object network ipv6-host-object-1
|
||||
host 2001:0db8:85a3:0000:0000:8a2e:0370:7334
|
||||
description Example of IPv6 host object
|
||||
object network ipv6-network-object-1
|
||||
subnet 2001::/64
|
||||
description IPv6 network object example
|
||||
object network ipv6-host-object-3
|
||||
host fe80::202:b3ff:fe1e:8329
|
||||
description Example of IPv6 host object
|
||||
object network ipv6-host-object-3
|
||||
host a1b2:c3d4:e5f6:b3ff:fe1e:8329:0:1234
|
||||
description Example of IPv6 host object
|
||||
|
||||
! empty named object definition
|
||||
object network dummy-address
|
||||
!
|
||||
! more good network objects after the empty one
|
||||
object network internal_subnet_5
|
||||
subnet 10.10.1.0 255.255.255.0
|
||||
!
|
||||
! another test for an empty object and non-empty object but no comments this time
|
||||
object network dummy-address-1
|
||||
object network internal_subnet_6
|
||||
subnet 10.10.2.0 255.255.255.0
|
||||
!
|
||||
object network ipv6-host-object-2
|
||||
host 2001:af::1
|
||||
description Test IPv6 host
|
||||
object network host-1
|
||||
host 10.0.0.1
|
||||
|
||||
!
|
||||
object service smtp
|
||||
service tcp destination eq smtp
|
||||
object service http
|
||||
service tcp destination eq www
|
||||
object service squid
|
||||
service tcp destination eq 3128
|
||||
object service smtps
|
||||
service tcp destination eq 465
|
||||
!
|
||||
object service icmp1
|
||||
service icmp echo
|
||||
object service icmp2
|
||||
service icmp unreachable
|
||||
object service ip5
|
||||
service 111
|
||||
!
|
||||
|
||||
object service tcp-src-1
|
||||
service tcp source lt 1024
|
||||
object service tcp-src-2
|
||||
service tcp source gt 1024
|
||||
object service tcp-src-3
|
||||
service tcp source eq 80
|
||||
object service tcp-src-4
|
||||
service tcp source neq 88
|
||||
object service tcp-src-5
|
||||
service tcp source range 1000 1010
|
||||
!
|
||||
object service tcp-dst-1
|
||||
service tcp destination lt 1024
|
||||
object service tcp-dst-2
|
||||
service tcp destination gt 1024
|
||||
object service tcp-dst-3
|
||||
service tcp destination eq 80
|
||||
object service tcp-dst-4
|
||||
service tcp destination neq 88
|
||||
object service tcp-dst-5
|
||||
service tcp destination range 1001 1011
|
||||
!
|
||||
|
||||
object service tcp-src-dst-1
|
||||
service tcp source lt 1024 destination eq 80
|
||||
object service tcp-src-dst-2
|
||||
service tcp source gt 1024 destination eq 2222
|
||||
object service tcp-src-dst-3
|
||||
service tcp source eq 80 destination gt 1024
|
||||
object service tcp-src-dst-4
|
||||
service tcp source neq 88 destination gt 1024
|
||||
object service tcp-src-dst-5
|
||||
service tcp source range 1002 1012 destination gt 1024
|
||||
!
|
||||
|
||||
object service udp-src-1
|
||||
service udp source lt 1024
|
||||
object service udp-src-2
|
||||
service udp source gt 1024
|
||||
object service udp-src-3
|
||||
service udp source eq 80
|
||||
object service udp-src-4
|
||||
service udp source neq 88
|
||||
object service udp-src-5
|
||||
service udp source range 1000 1010
|
||||
!
|
||||
object service udp-dst-1
|
||||
service udp destination lt 1024
|
||||
object service udp-dst-2
|
||||
service udp destination gt 1024
|
||||
object service udp-dst-3
|
||||
service udp destination eq 80
|
||||
object service udp-dst-4
|
||||
service udp destination neq 88
|
||||
object service udp-dst-5
|
||||
service udp destination range 1001 1011
|
||||
!
|
||||
|
||||
object service ip1
|
||||
service ip
|
||||
object service ip2
|
||||
service eigrp
|
||||
object service icmp6-1
|
||||
service icmp6 neighbor-advertisement
|
||||
!
|
||||
! named object using unknown protocol name
|
||||
object service ip3
|
||||
service some_weird_protocol
|
||||
|
||||
! incomplete statement
|
||||
!
|
||||
object service ip4
|
||||
|
||||
!
|
||||
object-group network outside.id178211X29963.osrc.net.0
|
||||
network-object object internal_subnet_1
|
||||
network-object object internal_subnet_2
|
||||
object-group network outside.id21353X4994.osrc.net.0
|
||||
network-object object internal_subnet_1
|
||||
network-object object Internal_net
|
||||
network-object object internal_subnet_2
|
||||
object-group network outside.id77971X5929.osrc.net.1
|
||||
network-object object internal_subnet_1
|
||||
network-object object internal_subnet_2
|
||||
object-group network outside.id77971X5929.odst.net.1
|
||||
network-object object spamhost1
|
||||
network-object object spamhost2
|
||||
object-group network outside.id77971X5929.tsrc.net.1
|
||||
network-object object outside_range-1
|
||||
network-object object external_gw2
|
||||
object-group network outside.id77971X5929.osrc.net.0
|
||||
network-object object internal_subnet_1
|
||||
network-object object internal_subnet_2
|
||||
object-group network outside.id77971X5929.odst.net.0
|
||||
network-object object spamhost1
|
||||
network-object object spamhost2
|
||||
object-group network outside.id77971X5929.tsrc.net.0
|
||||
network-object object outside_range-1
|
||||
network-object object external_gw2
|
||||
|
||||
object-group service outside.id77971X5929.osrv.1
|
||||
service-object object smtp
|
||||
service-object object smtps
|
||||
|
||||
object-group service sg1
|
||||
service-object ip
|
||||
service-object eigrp
|
||||
service-object gre
|
||||
service-object 111
|
||||
object-group service sg2
|
||||
service-object icmp echo
|
||||
service-object icmp echo-reply
|
||||
service-object icmp 111
|
||||
object-group service sg3
|
||||
service-object tcp source gt 1024 destination eq www
|
||||
service-object tcp source gt 1024 destination range 10000 10010
|
||||
service-object tcp source gt 1024 destination neq www
|
||||
service-object tcp source gt 1024 destination lt 1024
|
||||
service-object tcp destination eq 22
|
||||
object-group service sg4
|
||||
service-object tcp source gt 1024
|
||||
service-object tcp source lt 1024
|
||||
service-object tcp source eq www
|
||||
service-object tcp source neq www
|
||||
object-group service sg5
|
||||
service-object udp source gt 1024
|
||||
service-object udp source gt 1024 destination eq www
|
||||
service-object udp destination eq domain
|
||||
service-object udp destination eq 5353
|
||||
service-object object udp-dst-1
|
||||
service-object object udp-dst-2
|
||||
group-object sg1
|
||||
group-object sg2
|
||||
!
|
||||
object-group protocol pg1
|
||||
protocol-object 111
|
||||
protocol-object ah
|
||||
protocol-object ip
|
||||
protocol-object eigrp
|
||||
object-group protocol pg2
|
||||
protocol-object 112
|
||||
protocol-object object ip5
|
||||
group-object pg1
|
||||
!
|
||||
object-group icmp-type ig1
|
||||
icmp-object echo
|
||||
icmp-object 111
|
||||
object-group icmp-type ig2
|
||||
icmp-object echo-reply
|
||||
icmp-object 112
|
||||
object-group icmp-type ig3
|
||||
icmp-object mask-reply
|
||||
group-object ig1
|
||||
|
||||
object-group service id5102X14531.srv.tcp.0 tcp
|
||||
port-object eq 80
|
||||
port-object eq 443
|
||||
exit
|
||||
|
||||
@@ -229,9 +229,6 @@ object-group network outside.id77971X5929.osrc.net.1
|
||||
object-group network outside.id77971X5929.odst.net.1
|
||||
network-object object spamhost1
|
||||
network-object object spamhost2
|
||||
object-group service outside.id77971X5929.osrv.1
|
||||
service-object object smtp
|
||||
service-object object smtps
|
||||
object-group network outside.id77971X5929.tsrc.net.1
|
||||
network-object object outside_range-1
|
||||
network-object object external_gw2
|
||||
@@ -244,6 +241,16 @@ object-group network outside.id77971X5929.odst.net.0
|
||||
object-group network outside.id77971X5929.tsrc.net.0
|
||||
network-object object outside_range-1
|
||||
network-object object external_gw2
|
||||
|
||||
object-group service outside.id77971X5929.osrv.1
|
||||
service-object object smtp
|
||||
service-object object smtps
|
||||
|
||||
object-group service id5102X14531.srv.tcp.0 tcp
|
||||
port-object eq 80
|
||||
port-object eq 443
|
||||
exit
|
||||
|
||||
!
|
||||
object-group service sg1
|
||||
service-object ip
|
||||
|
||||
Reference in New Issue
Block a user