mirror of
https://github.com/fwbuilder/fwbuilder
synced 2026-03-23 03:37:15 +01:00
see #87 import of interfaces for pix6,7 and 8 works. PArsing inetrface name, label, security level, address
This commit is contained in:
parent
e799b24496
commit
db4d501ece
@ -259,11 +259,26 @@ void Importer::setDiscoveredVersion(const std::string &v)
|
||||
void Importer::newInterface(const std::string &name)
|
||||
{
|
||||
if (all_interfaces.count(name)>0) return;
|
||||
FWObject *nobj = createObject(fw, Interface::TYPENAME, name);
|
||||
FWObject *nobj = createObject(getFirewallObject(), Interface::TYPENAME, name);
|
||||
current_interface = Interface::cast(nobj);
|
||||
current_interface->setUnnumbered(true);
|
||||
all_interfaces[name] = current_interface;
|
||||
*logger << "Interface: " + name + "\n";
|
||||
*logger << "New interface: " + name + "\n";
|
||||
}
|
||||
|
||||
void Importer::addAddressObjectToInterface(Interface*intf,
|
||||
const string &addr,
|
||||
const string &netm)
|
||||
{
|
||||
intf->setUnnumbered(false);
|
||||
if (addr == "dhcp") intf->setDyn(true);
|
||||
else
|
||||
{
|
||||
string aname = getFirewallObject()->getName() + ":" + intf->getName() + ":ip";
|
||||
FWObject *nobj = createObject(intf, IPv4::TYPENAME, aname);
|
||||
IPv4::cast(nobj)->setAddress( InetAddr(addr) );
|
||||
IPv4::cast(nobj)->setNetmask( InetAddr(netm) );
|
||||
}
|
||||
}
|
||||
|
||||
void Importer::addInterfaceAddress(const std::string &a,
|
||||
@ -271,20 +286,28 @@ void Importer::addInterfaceAddress(const std::string &a,
|
||||
{
|
||||
if (current_interface!=NULL)
|
||||
{
|
||||
std::string aname = getFirewallObject()->getName() + ":"
|
||||
+ current_interface->getName() + ":ip";
|
||||
FWObject *nobj = createObject(current_interface,
|
||||
IPv4::TYPENAME,
|
||||
aname);
|
||||
current_interface->setUnnumbered(false);
|
||||
IPv4::cast(nobj)->setAddress( InetAddr(a) );
|
||||
IPv4::cast(nobj)->setNetmask( InetAddr(nm) );
|
||||
|
||||
addAddressObjectToInterface(current_interface, a, nm);
|
||||
*logger << "Interface address: " + a + "/" + nm + "\n";
|
||||
}
|
||||
}
|
||||
|
||||
void Importer::addInterfaceComment(const std::string &descr)
|
||||
void Importer::addInterfaceAddress(const std::string &label,
|
||||
const std::string &a,
|
||||
const std::string &nm)
|
||||
{
|
||||
map<const string,Interface*>::iterator it;
|
||||
for (it=all_interfaces.begin(); it!=all_interfaces.end(); ++it)
|
||||
{
|
||||
Interface *intf = it->second;
|
||||
if (intf->getLabel() == label)
|
||||
{
|
||||
addAddressObjectToInterface(intf, a, nm);
|
||||
*logger << "Interface address: " + a + "/" + nm + "\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Importer::setInterfaceComment(const std::string &descr)
|
||||
{
|
||||
// current_interface can be NULL if parser encountered command
|
||||
// that looked like interface description but in reality was
|
||||
@ -298,7 +321,7 @@ void Importer::addInterfaceComment(const std::string &descr)
|
||||
}
|
||||
}
|
||||
|
||||
void Importer::addInterfaceLabel(const std::string &descr)
|
||||
void Importer::setInterfaceLabel(const std::string &descr)
|
||||
{
|
||||
if (current_interface!=NULL)
|
||||
{
|
||||
@ -307,6 +330,53 @@ void Importer::addInterfaceLabel(const std::string &descr)
|
||||
}
|
||||
}
|
||||
|
||||
void Importer::setInterfaceParametes(const std::string &phys_intf_or_label,
|
||||
const std::string &label,
|
||||
const std::string &sec_level)
|
||||
{
|
||||
*logger << "Interface parameters: " + phys_intf_or_label + " " + label + " " + sec_level + "\n";
|
||||
if (all_interfaces.count(phys_intf_or_label))
|
||||
{
|
||||
// since first arg. is physical interface name, this must be pix6
|
||||
// "nameif ethernet0 outside security0"
|
||||
Interface *intf = all_interfaces[phys_intf_or_label];
|
||||
intf->setLabel(label);
|
||||
QRegExp pix6_sec_level("security(\\d+)");
|
||||
if (pix6_sec_level.indexIn(sec_level.c_str()) > -1)
|
||||
intf->setSecurityLevel(pix6_sec_level.cap(1).toInt());
|
||||
} else
|
||||
{
|
||||
// since first arg is not physical interface name, it must be a label
|
||||
// as in pix7 config
|
||||
//
|
||||
// interface Ethernet0.101
|
||||
// vlan 101
|
||||
// nameif outside
|
||||
// security-level 0
|
||||
// ip address 192.0.2.253 255.255.255.0
|
||||
setInterfaceLabel(phys_intf_or_label);
|
||||
}
|
||||
}
|
||||
|
||||
void Importer::setInterfaceSecurityLevel(const std::string &seclevel)
|
||||
{
|
||||
if (current_interface!=NULL)
|
||||
{
|
||||
QString sl(seclevel.c_str());
|
||||
current_interface->setSecurityLevel(sl.toInt());
|
||||
}
|
||||
}
|
||||
|
||||
void Importer::setInterfaceVlanId(const std::string &vlan_id)
|
||||
{
|
||||
if (current_interface!=NULL)
|
||||
{
|
||||
current_interface->setStr("type", "8021q");
|
||||
FWOptions *ifopt = (Interface::cast(current_interface))->getOptionsObject();
|
||||
ifopt->setStr("vlan_id", vlan_id);
|
||||
}
|
||||
}
|
||||
|
||||
void Importer::addRuleComment(const std::string &comm)
|
||||
{
|
||||
rule_comment += comm;
|
||||
|
||||
@ -127,6 +127,9 @@ protected:
|
||||
libfwbuilder::FWObject* createObject(libfwbuilder::FWObject *parent,
|
||||
const std::string &objType,
|
||||
const std::string &objName);
|
||||
void addAddressObjectToInterface(libfwbuilder::Interface*intf,
|
||||
const std::string &addr,
|
||||
const std::string &netm);
|
||||
std::string getBadRuleColor();
|
||||
|
||||
// this method returns fw. It is created if fw==NULL
|
||||
@ -275,8 +278,17 @@ public:
|
||||
virtual void clearCurrentInterface() { current_interface = NULL; }
|
||||
virtual void addInterfaceAddress(const std::string &a,
|
||||
const std::string &nm);
|
||||
virtual void addInterfaceComment(const std::string &descr);
|
||||
virtual void addInterfaceLabel(const std::string &descr);
|
||||
virtual void addInterfaceAddress(const std::string &label,
|
||||
const std::string &a,
|
||||
const std::string &nm);
|
||||
virtual void setInterfaceComment(const std::string &descr);
|
||||
virtual void setInterfaceLabel(const std::string &descr);
|
||||
virtual void setInterfaceSecurityLevel(const std::string &seclevel);
|
||||
virtual void setInterfaceParametes(const std::string &phys_intf,
|
||||
const std::string &label,
|
||||
const std::string &sec_level);
|
||||
virtual void setInterfaceVlanId(const std::string &vlan_id);
|
||||
|
||||
virtual void addRuleComment(const std::string &comm);
|
||||
|
||||
/**
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
/* $ANTLR 2.7.6 (20070910): "iosacl.g" -> "IOSCfgLexer.cpp"$ */
|
||||
/* $ANTLR 2.7.7 (20090306): "iosacl.g" -> "IOSCfgLexer.cpp"$ */
|
||||
#line 42 "iosacl.g"
|
||||
|
||||
// gets inserted before the antlr generated includes in the cpp
|
||||
@ -51,37 +51,37 @@ void IOSCfgLexer::initLiterals()
|
||||
literals["access-list"] = 14;
|
||||
literals["interface"] = 37;
|
||||
literals["remark"] = 39;
|
||||
literals["fragments"] = 33;
|
||||
literals["certificate"] = 9;
|
||||
literals["exit"] = 44;
|
||||
literals["udp"] = 21;
|
||||
literals["tcp"] = 20;
|
||||
literals["controller"] = 36;
|
||||
literals["eq"] = 22;
|
||||
literals["ip"] = 5;
|
||||
literals["access-group"] = 41;
|
||||
literals["time-range"] = 34;
|
||||
literals["version"] = 10;
|
||||
literals["community-list"] = 7;
|
||||
literals["icmp"] = 19;
|
||||
literals["description"] = 38;
|
||||
literals["permit"] = 17;
|
||||
literals["lt"] = 24;
|
||||
literals["standard"] = 46;
|
||||
literals["log-input"] = 31;
|
||||
literals["range"] = 26;
|
||||
literals["gt"] = 23;
|
||||
literals["secondary"] = 43;
|
||||
literals["lt"] = 24;
|
||||
literals["range"] = 26;
|
||||
literals["log-input"] = 31;
|
||||
literals["standard"] = 46;
|
||||
literals["gt"] = 23;
|
||||
literals["permit"] = 17;
|
||||
literals["extended"] = 16;
|
||||
literals["address"] = 42;
|
||||
literals["established"] = 32;
|
||||
literals["community-list"] = 7;
|
||||
literals["neq"] = 25;
|
||||
literals["quit"] = 6;
|
||||
literals["vlan"] = 35;
|
||||
literals["time-range"] = 34;
|
||||
literals["any"] = 29;
|
||||
literals["deny"] = 18;
|
||||
literals["access-group"] = 41;
|
||||
literals["shutdown"] = 40;
|
||||
literals["hostname"] = 12;
|
||||
literals["controller"] = 36;
|
||||
literals["certificate"] = 9;
|
||||
literals["fragments"] = 33;
|
||||
}
|
||||
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken IOSCfgLexer::nextToken()
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
|
||||
#line 10 "IOSCfgLexer.hpp"
|
||||
#include <antlr/config.hpp>
|
||||
/* $ANTLR 2.7.6 (20070910): "iosacl.g" -> "IOSCfgLexer.hpp"$ */
|
||||
/* $ANTLR 2.7.7 (20090306): "iosacl.g" -> "IOSCfgLexer.hpp"$ */
|
||||
#include <antlr/CommonToken.hpp>
|
||||
#include <antlr/InputBuffer.hpp>
|
||||
#include <antlr/BitSet.hpp>
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
/* $ANTLR 2.7.6 (20070910): "iosacl.g" -> "IOSCfgParser.cpp"$ */
|
||||
/* $ANTLR 2.7.7 (20090306): "iosacl.g" -> "IOSCfgParser.cpp"$ */
|
||||
#line 42 "iosacl.g"
|
||||
|
||||
// gets inserted before the antlr generated includes in the cpp
|
||||
@ -444,7 +444,7 @@ void IOSCfgParser::description() {
|
||||
descr += LT(1)->getText() + " ";
|
||||
consume();
|
||||
}
|
||||
importer->addInterfaceComment( descr );
|
||||
importer->setInterfaceComment( descr );
|
||||
*dbg << " DESCRIPTION " << descr << std::endl;
|
||||
//consumeUntil(NEWLINE);
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
|
||||
#line 10 "IOSCfgParser.hpp"
|
||||
#include <antlr/config.hpp>
|
||||
/* $ANTLR 2.7.6 (20070910): "iosacl.g" -> "IOSCfgParser.hpp"$ */
|
||||
/* $ANTLR 2.7.7 (20090306): "iosacl.g" -> "IOSCfgParser.hpp"$ */
|
||||
#include <antlr/TokenStream.hpp>
|
||||
#include <antlr/TokenBuffer.hpp>
|
||||
#include "IOSCfgParserTokenTypes.hpp"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
#ifndef INC_IOSCfgParserTokenTypes_hpp_
|
||||
#define INC_IOSCfgParserTokenTypes_hpp_
|
||||
|
||||
/* $ANTLR 2.7.6 (20070910): "iosacl.g" -> "IOSCfgParserTokenTypes.hpp"$ */
|
||||
/* $ANTLR 2.7.7 (20090306): "iosacl.g" -> "IOSCfgParserTokenTypes.hpp"$ */
|
||||
|
||||
#ifndef CUSTOM_API
|
||||
# define CUSTOM_API
|
||||
|
||||
77
src/parsers/IOSCfgParserTokenTypes.txt
Normal file
77
src/parsers/IOSCfgParserTokenTypes.txt
Normal file
@ -0,0 +1,77 @@
|
||||
// $ANTLR 2.7.7 (20090306): iosacl.g -> IOSCfgParserTokenTypes.txt$
|
||||
IOSCfgParser // output token vocab name
|
||||
NEWLINE=4
|
||||
IP="ip"=5
|
||||
QUIT="quit"=6
|
||||
COMMUNITY_LIST="community-list"=7
|
||||
WORD=8
|
||||
CERTIFICATE="certificate"=9
|
||||
IOSVERSION="version"=10
|
||||
NUMBER=11
|
||||
HOSTNAME="hostname"=12
|
||||
STRING=13
|
||||
ACCESS_LIST="access-list"=14
|
||||
INT_CONST=15
|
||||
EXTENDED="extended"=16
|
||||
PERMIT="permit"=17
|
||||
DENY="deny"=18
|
||||
ICMP="icmp"=19
|
||||
TCP="tcp"=20
|
||||
UDP="udp"=21
|
||||
P_EQ="eq"=22
|
||||
P_GT="gt"=23
|
||||
P_LT="lt"=24
|
||||
P_NEQ="neq"=25
|
||||
P_RANGE="range"=26
|
||||
HOST="host"=27
|
||||
IPV4=28
|
||||
ANY="any"=29
|
||||
LOG="log"=30
|
||||
LOG_INPUT="log-input"=31
|
||||
ESTABLISHED="established"=32
|
||||
FRAGMENTS="fragments"=33
|
||||
TIME_RANGE="time-range"=34
|
||||
VLAN="vlan"=35
|
||||
CONTROLLER="controller"=36
|
||||
INTRFACE="interface"=37
|
||||
DESCRIPTION="description"=38
|
||||
REMARK="remark"=39
|
||||
SHUTDOWN="shutdown"=40
|
||||
ACCESS_GROUP="access-group"=41
|
||||
ADDRESS="address"=42
|
||||
SECONDARY="secondary"=43
|
||||
EXIT="exit"=44
|
||||
LINE_COMMENT=45
|
||||
STANDARD="standard"=46
|
||||
Whitespace=47
|
||||
HEX_CONST=48
|
||||
NEG_INT_CONST=49
|
||||
DIGIT=50
|
||||
HEXDIGIT=51
|
||||
PIPE_CHAR=52
|
||||
NUMBER_SIGN=53
|
||||
PERCENT=54
|
||||
AMPERSAND=55
|
||||
APOSTROPHE=56
|
||||
OPENING_PAREN=57
|
||||
CLOSING_PAREN=58
|
||||
STAR=59
|
||||
PLUS=60
|
||||
COMMA=61
|
||||
MINUS=62
|
||||
DOT=63
|
||||
SLASH=64
|
||||
COLON=65
|
||||
SEMICOLON=66
|
||||
LESS_THAN=67
|
||||
EQUALS=68
|
||||
GREATER_THAN=69
|
||||
QUESTION=70
|
||||
COMMERCIAL_AT=71
|
||||
OPENING_SQUARE=72
|
||||
CLOSING_SQUARE=73
|
||||
CARET=74
|
||||
UNDERLINE=75
|
||||
OPENING_BRACE=76
|
||||
CLOSING_BRACE=77
|
||||
TILDE=78
|
||||
@ -1,4 +1,4 @@
|
||||
/* $ANTLR 2.7.7 (20100319): "iptables.g" -> "IPTCfgLexer.cpp"$ */
|
||||
/* $ANTLR 2.7.7 (20090306): "iptables.g" -> "IPTCfgLexer.cpp"$ */
|
||||
#line 42 "iptables.g"
|
||||
|
||||
// gets inserted before the antlr generated includes in the cpp
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
|
||||
#line 10 "IPTCfgLexer.hpp"
|
||||
#include <antlr/config.hpp>
|
||||
/* $ANTLR 2.7.7 (20100319): "iptables.g" -> "IPTCfgLexer.hpp"$ */
|
||||
/* $ANTLR 2.7.7 (20090306): "iptables.g" -> "IPTCfgLexer.hpp"$ */
|
||||
#include <antlr/CommonToken.hpp>
|
||||
#include <antlr/InputBuffer.hpp>
|
||||
#include <antlr/BitSet.hpp>
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
/* $ANTLR 2.7.7 (20100319): "iptables.g" -> "IPTCfgParser.cpp"$ */
|
||||
/* $ANTLR 2.7.7 (20090306): "iptables.g" -> "IPTCfgParser.cpp"$ */
|
||||
#line 42 "iptables.g"
|
||||
|
||||
// gets inserted before the antlr generated includes in the cpp
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
|
||||
#line 10 "IPTCfgParser.hpp"
|
||||
#include <antlr/config.hpp>
|
||||
/* $ANTLR 2.7.7 (20100319): "iptables.g" -> "IPTCfgParser.hpp"$ */
|
||||
/* $ANTLR 2.7.7 (20090306): "iptables.g" -> "IPTCfgParser.hpp"$ */
|
||||
#include <antlr/TokenStream.hpp>
|
||||
#include <antlr/TokenBuffer.hpp>
|
||||
#include "IPTCfgParserTokenTypes.hpp"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
#ifndef INC_IPTCfgParserTokenTypes_hpp_
|
||||
#define INC_IPTCfgParserTokenTypes_hpp_
|
||||
|
||||
/* $ANTLR 2.7.7 (20100319): "iptables.g" -> "IPTCfgParserTokenTypes.hpp"$ */
|
||||
/* $ANTLR 2.7.7 (20090306): "iptables.g" -> "IPTCfgParserTokenTypes.hpp"$ */
|
||||
|
||||
#ifndef CUSTOM_API
|
||||
# define CUSTOM_API
|
||||
|
||||
142
src/parsers/IPTCfgParserTokenTypes.txt
Normal file
142
src/parsers/IPTCfgParserTokenTypes.txt
Normal file
@ -0,0 +1,142 @@
|
||||
// $ANTLR 2.7.7 (20090306): iptables.g -> IPTCfgParserTokenTypes.txt$
|
||||
IPTCfgParser // output token vocab name
|
||||
NEWLINE=4
|
||||
LINE_COMMENT=5
|
||||
COMMIT="COMMIT"=6
|
||||
STAR=7
|
||||
WORD=8
|
||||
INPUT="INPUT"=9
|
||||
FORWARD="FORWARD"=10
|
||||
OUTPUT="OUTPUT"=11
|
||||
PREROUTING="PREROUTING"=12
|
||||
POSTROUTING="POSTROUTING"=13
|
||||
COLON=14
|
||||
MINUS=15
|
||||
OPENING_SQUARE=16
|
||||
INT_CONST=17
|
||||
CLOSING_SQUARE=18
|
||||
ADD_RULE=19
|
||||
UNSUPPORTED_OPTION=20
|
||||
DIGIT=21
|
||||
SLASH=22
|
||||
OPT_MODULE=23
|
||||
OPT_SRC=24
|
||||
EXCLAMATION=25
|
||||
IPV4=26
|
||||
OPT_DST=27
|
||||
OPT_IN_INTF=28
|
||||
OPT_OUT_INTF=29
|
||||
TCP="tcp"=30
|
||||
UDP="udp"=31
|
||||
ICMP="icmp"=32
|
||||
OPT_PROTO=33
|
||||
OPT_TARGET=34
|
||||
REJECT_WITH=35
|
||||
LOG_PREFIX=36
|
||||
STRING=37
|
||||
LOG_TCP_SEQ=38
|
||||
LOG_TCP_OPT=39
|
||||
LOG_IP_OPT=40
|
||||
ULOG_PREFIX=41
|
||||
LOG_LEVEL=42
|
||||
SET_MARK=43
|
||||
HEX_CONST=44
|
||||
SET_TOS=45
|
||||
SAVE_MARK=46
|
||||
RESTORE_MARK=47
|
||||
CONTINUE=48
|
||||
ROUTE_IIF=49
|
||||
ROUTE_OIF=50
|
||||
ROUTE_GW=51
|
||||
ROUTE_TEE=52
|
||||
TO_SOURCE=53
|
||||
TO_DESTINATION=54
|
||||
TO_PORTS=55
|
||||
TO_NETMAP=56
|
||||
CLAMP_MSS=57
|
||||
OPT_FRAGM=58
|
||||
INVALID="INVALID"=59
|
||||
NEW="NEW"=60
|
||||
ESTABLISHED="ESTABLISHED"=61
|
||||
RELATED="RELATED"=62
|
||||
M_STATE="state"=63
|
||||
MATCH_STATE=64
|
||||
COMMA=65
|
||||
M_MARK="mark"=66
|
||||
MATCH_MARK=67
|
||||
M_LIMIT="limit"=68
|
||||
MATCH_LIMIT=69
|
||||
MATCH_LIMIT_BURST=70
|
||||
M_RECENT="recent"=71
|
||||
M_IPRANGE="iprange"=72
|
||||
MATCH_IPRANGE_SRC=73
|
||||
MATCH_IPRANGE_DST=74
|
||||
MATCH_RECENT_SET=75
|
||||
MATCH_RECENT_RCHECK=76
|
||||
MATCH_RECENT_UPDATE=77
|
||||
MATCH_RECENT_REMOVE=78
|
||||
MATCH_RECENT_RTTL=79
|
||||
RSOURCE=80
|
||||
MATCH_RECENT_RDEST=81
|
||||
MATCH_RECENT_NAME=82
|
||||
MATCH_RECENT_SECONDS=83
|
||||
MATCH_RECENT_HITCOUNT=84
|
||||
M_LENGTH="length"=85
|
||||
MATCH_LENGTH=86
|
||||
M_PKTTYPE="pkttype"=87
|
||||
MATCH_PKT_TYPE=88
|
||||
WORD_BROADCAST="broadcast"=89
|
||||
WORD_MULTICAST="multicast"=90
|
||||
WORD_UNICAST="unicast"=91
|
||||
M_MPORT="multiport"=92
|
||||
M_COMMENT="comment"=93
|
||||
MATCH_COMMENT=94
|
||||
MATCH_SRC_MULTIPORT=95
|
||||
MATCH_DST_MULTIPORT=96
|
||||
MATCH_BOTH_MULTIPORT=97
|
||||
MATCH_ICMP_TYPE=98
|
||||
MATCH_SRC_PORT=99
|
||||
MATCH_SRC_PORT_SHORT=100
|
||||
MATCH_DST_PORT=101
|
||||
MATCH_DST_PORT_SHORT=102
|
||||
MATCH_SYN=103
|
||||
SYN="SYN"=104
|
||||
ACK="ACK"=105
|
||||
FIN="FIN"=106
|
||||
RST="RST"=107
|
||||
URG="URG"=108
|
||||
PSH="PSH"=109
|
||||
ALL="ALL"=110
|
||||
NONE="NONE"=111
|
||||
MATCH_TCP_FLAGS=112
|
||||
MATCH_TCP_OPTION=113
|
||||
Whitespace=114
|
||||
IPV6=115
|
||||
MAC_ADDRESS=116
|
||||
NEG_INT_CONST=117
|
||||
HEXDIGIT=118
|
||||
NUM_3DIGIT=119
|
||||
NUM_HEX_4DIGIT=120
|
||||
NUMBER=121
|
||||
ULOG_QTHR=122
|
||||
ULOG_NLG=123
|
||||
ULOG_CPR=124
|
||||
NUMBER_SIGN=125
|
||||
PERCENT=126
|
||||
AMPERSAND=127
|
||||
APOSTROPHE=128
|
||||
OPENING_PAREN=129
|
||||
CLOSING_PAREN=130
|
||||
PLUS=131
|
||||
DOT=132
|
||||
SEMICOLON=133
|
||||
LESS_THAN=134
|
||||
EQUALS=135
|
||||
GREATER_THAN=136
|
||||
QUESTION=137
|
||||
COMMERCIAL_AT=138
|
||||
CARET=139
|
||||
UNDERLINE=140
|
||||
OPENING_BRACE=141
|
||||
CLOSING_BRACE=142
|
||||
TILDE=143
|
||||
@ -47,42 +47,45 @@ PIXCfgLexer::PIXCfgLexer(const ANTLR_USE_NAMESPACE(antlr)LexerSharedInputState&
|
||||
void PIXCfgLexer::initLiterals()
|
||||
{
|
||||
literals["host"] = 28;
|
||||
literals["setroute"] = 46;
|
||||
literals["log"] = 31;
|
||||
literals["access-list"] = 16;
|
||||
literals["interface"] = 37;
|
||||
literals["remark"] = 40;
|
||||
literals["remark"] = 42;
|
||||
literals["certificate"] = 9;
|
||||
literals["exit"] = 48;
|
||||
literals["exit"] = 51;
|
||||
literals["udp"] = 22;
|
||||
literals["tcp"] = 21;
|
||||
literals["controller"] = 36;
|
||||
literals["eq"] = 23;
|
||||
literals["ip"] = 5;
|
||||
literals["access-group"] = 47;
|
||||
literals["access-group"] = 50;
|
||||
literals["time-range"] = 35;
|
||||
literals["community-list"] = 7;
|
||||
literals["icmp"] = 20;
|
||||
literals["description"] = 39;
|
||||
literals["description"] = 41;
|
||||
literals["Version"] = 12;
|
||||
literals["nameif"] = 38;
|
||||
literals["secondary"] = 43;
|
||||
literals["access"] = 45;
|
||||
literals["nameif"] = 40;
|
||||
literals["security-level"] = 39;
|
||||
literals["secondary"] = 47;
|
||||
literals["access"] = 49;
|
||||
literals["lt"] = 25;
|
||||
literals["range"] = 27;
|
||||
literals["switchport"] = 44;
|
||||
literals["switchport"] = 48;
|
||||
literals["log-input"] = 32;
|
||||
literals["standard"] = 52;
|
||||
literals["standard"] = 55;
|
||||
literals["gt"] = 24;
|
||||
literals["permit"] = 18;
|
||||
literals["extended"] = 51;
|
||||
literals["address"] = 42;
|
||||
literals["extended"] = 54;
|
||||
literals["address"] = 44;
|
||||
literals["established"] = 33;
|
||||
literals["dhcp"] = 45;
|
||||
literals["neq"] = 26;
|
||||
literals["quit"] = 6;
|
||||
literals["vlan"] = 46;
|
||||
literals["vlan"] = 38;
|
||||
literals["any"] = 30;
|
||||
literals["deny"] = 19;
|
||||
literals["shutdown"] = 41;
|
||||
literals["shutdown"] = 43;
|
||||
literals["hostname"] = 14;
|
||||
literals["PIX"] = 10;
|
||||
literals["ASA"] = 11;
|
||||
@ -403,11 +406,11 @@ void PIXCfgLexer::mLINE_COMMENT(bool _createToken) {
|
||||
}
|
||||
}
|
||||
else {
|
||||
goto _loop78;
|
||||
goto _loop89;
|
||||
}
|
||||
|
||||
}
|
||||
_loop78:;
|
||||
_loop89:;
|
||||
} // ( ... )*
|
||||
mNEWLINE(false);
|
||||
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
|
||||
@ -439,9 +442,9 @@ void PIXCfgLexer::mNEWLINE(bool _createToken) {
|
||||
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 655 "pix.g"
|
||||
#line 763 "pix.g"
|
||||
newline();
|
||||
#line 445 "PIXCfgLexer.cpp"
|
||||
#line 448 "PIXCfgLexer.cpp"
|
||||
}
|
||||
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
|
||||
_token = makeToken(_ttype);
|
||||
@ -465,11 +468,11 @@ void PIXCfgLexer::mCOLON_COMMENT(bool _createToken) {
|
||||
}
|
||||
}
|
||||
else {
|
||||
goto _loop82;
|
||||
goto _loop93;
|
||||
}
|
||||
|
||||
}
|
||||
_loop82:;
|
||||
_loop93:;
|
||||
} // ( ... )*
|
||||
mNEWLINE(false);
|
||||
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
|
||||
@ -563,9 +566,9 @@ void PIXCfgLexer::mWhitespace(bool _createToken) {
|
||||
}
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 650 "pix.g"
|
||||
#line 758 "pix.g"
|
||||
_ttype = ANTLR_USE_NAMESPACE(antlr)Token::SKIP;
|
||||
#line 569 "PIXCfgLexer.cpp"
|
||||
#line 572 "PIXCfgLexer.cpp"
|
||||
}
|
||||
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
|
||||
_token = makeToken(_ttype);
|
||||
@ -677,208 +680,208 @@ void PIXCfgLexer::mNUMBER(bool _createToken) {
|
||||
ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
|
||||
|
||||
{
|
||||
bool synPredMatched101 = false;
|
||||
bool synPredMatched112 = false;
|
||||
if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (_tokenSet_2.member(LA(2))) && (_tokenSet_2.member(LA(3))) && (_tokenSet_2.member(LA(4))) && (_tokenSet_2.member(LA(5))) && (_tokenSet_2.member(LA(6))) && (_tokenSet_2.member(LA(7))) && (true) && (true) && (true))) {
|
||||
int _m101 = mark();
|
||||
synPredMatched101 = true;
|
||||
int _m112 = mark();
|
||||
synPredMatched112 = true;
|
||||
inputState->guessing++;
|
||||
try {
|
||||
{
|
||||
{ // ( ... )+
|
||||
int _cnt96=0;
|
||||
int _cnt107=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt96>=1 ) { goto _loop96; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
if ( _cnt107>=1 ) { goto _loop107; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt96++;
|
||||
_cnt107++;
|
||||
}
|
||||
_loop96:;
|
||||
_loop107:;
|
||||
} // ( ... )+
|
||||
mDOT(false);
|
||||
{ // ( ... )+
|
||||
int _cnt98=0;
|
||||
int _cnt109=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt98>=1 ) { goto _loop98; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
if ( _cnt109>=1 ) { goto _loop109; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt98++;
|
||||
_cnt109++;
|
||||
}
|
||||
_loop98:;
|
||||
_loop109:;
|
||||
} // ( ... )+
|
||||
mDOT(false);
|
||||
{ // ( ... )+
|
||||
int _cnt100=0;
|
||||
int _cnt111=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt100>=1 ) { goto _loop100; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
if ( _cnt111>=1 ) { goto _loop111; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt100++;
|
||||
_cnt111++;
|
||||
}
|
||||
_loop100:;
|
||||
_loop111:;
|
||||
} // ( ... )+
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) {
|
||||
synPredMatched101 = false;
|
||||
synPredMatched112 = false;
|
||||
}
|
||||
rewind(_m101);
|
||||
rewind(_m112);
|
||||
inputState->guessing--;
|
||||
}
|
||||
if ( synPredMatched101 ) {
|
||||
if ( synPredMatched112 ) {
|
||||
{
|
||||
{ // ( ... )+
|
||||
int _cnt104=0;
|
||||
int _cnt115=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt104>=1 ) { goto _loop104; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
if ( _cnt115>=1 ) { goto _loop115; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt104++;
|
||||
_cnt115++;
|
||||
}
|
||||
_loop104:;
|
||||
_loop115:;
|
||||
} // ( ... )+
|
||||
mDOT(false);
|
||||
{ // ( ... )+
|
||||
int _cnt106=0;
|
||||
int _cnt117=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt106>=1 ) { goto _loop106; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
if ( _cnt117>=1 ) { goto _loop117; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt106++;
|
||||
_cnt117++;
|
||||
}
|
||||
_loop106:;
|
||||
_loop117:;
|
||||
} // ( ... )+
|
||||
mDOT(false);
|
||||
{ // ( ... )+
|
||||
int _cnt108=0;
|
||||
int _cnt119=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt108>=1 ) { goto _loop108; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
if ( _cnt119>=1 ) { goto _loop119; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt108++;
|
||||
_cnt119++;
|
||||
}
|
||||
_loop108:;
|
||||
_loop119:;
|
||||
} // ( ... )+
|
||||
mDOT(false);
|
||||
{ // ( ... )+
|
||||
int _cnt110=0;
|
||||
int _cnt121=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt110>=1 ) { goto _loop110; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
if ( _cnt121>=1 ) { goto _loop121; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt110++;
|
||||
_cnt121++;
|
||||
}
|
||||
_loop110:;
|
||||
_loop121:;
|
||||
} // ( ... )+
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 675 "pix.g"
|
||||
#line 783 "pix.g"
|
||||
_ttype = IPV4;
|
||||
#line 805 "PIXCfgLexer.cpp"
|
||||
#line 808 "PIXCfgLexer.cpp"
|
||||
}
|
||||
}
|
||||
else {
|
||||
bool synPredMatched116 = false;
|
||||
bool synPredMatched127 = false;
|
||||
if ((((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (_tokenSet_2.member(LA(2))) && (_tokenSet_2.member(LA(3))) && (true) && (true) && (true) && (true) && (true) && (true) && (true))) {
|
||||
int _m116 = mark();
|
||||
synPredMatched116 = true;
|
||||
int _m127 = mark();
|
||||
synPredMatched127 = true;
|
||||
inputState->guessing++;
|
||||
try {
|
||||
{
|
||||
{ // ( ... )+
|
||||
int _cnt113=0;
|
||||
int _cnt124=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt113>=1 ) { goto _loop113; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
if ( _cnt124>=1 ) { goto _loop124; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt113++;
|
||||
_cnt124++;
|
||||
}
|
||||
_loop113:;
|
||||
_loop124:;
|
||||
} // ( ... )+
|
||||
mDOT(false);
|
||||
{ // ( ... )+
|
||||
int _cnt115=0;
|
||||
int _cnt126=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt115>=1 ) { goto _loop115; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
if ( _cnt126>=1 ) { goto _loop126; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt115++;
|
||||
_cnt126++;
|
||||
}
|
||||
_loop115:;
|
||||
_loop126:;
|
||||
} // ( ... )+
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& pe) {
|
||||
synPredMatched116 = false;
|
||||
synPredMatched127 = false;
|
||||
}
|
||||
rewind(_m116);
|
||||
rewind(_m127);
|
||||
inputState->guessing--;
|
||||
}
|
||||
if ( synPredMatched116 ) {
|
||||
if ( synPredMatched127 ) {
|
||||
{
|
||||
{ // ( ... )+
|
||||
int _cnt119=0;
|
||||
int _cnt130=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt119>=1 ) { goto _loop119; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
if ( _cnt130>=1 ) { goto _loop130; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt119++;
|
||||
_cnt130++;
|
||||
}
|
||||
_loop119:;
|
||||
_loop130:;
|
||||
} // ( ... )+
|
||||
mDOT(false);
|
||||
{ // ( ... )+
|
||||
int _cnt121=0;
|
||||
int _cnt132=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt121>=1 ) { goto _loop121; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
if ( _cnt132>=1 ) { goto _loop132; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt121++;
|
||||
_cnt132++;
|
||||
}
|
||||
_loop121:;
|
||||
_loop132:;
|
||||
} // ( ... )+
|
||||
}
|
||||
}
|
||||
@ -887,45 +890,45 @@ void PIXCfgLexer::mNUMBER(bool _createToken) {
|
||||
match('0' /* charlit */ );
|
||||
match('x' /* charlit */ );
|
||||
{ // ( ... )+
|
||||
int _cnt126=0;
|
||||
int _cnt137=0;
|
||||
for (;;) {
|
||||
if ((_tokenSet_3.member(LA(1)))) {
|
||||
mHEXDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt126>=1 ) { goto _loop126; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
if ( _cnt137>=1 ) { goto _loop137; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt126++;
|
||||
_cnt137++;
|
||||
}
|
||||
_loop126:;
|
||||
_loop137:;
|
||||
} // ( ... )+
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 681 "pix.g"
|
||||
#line 789 "pix.g"
|
||||
_ttype = HEX_CONST;
|
||||
#line 908 "PIXCfgLexer.cpp"
|
||||
#line 911 "PIXCfgLexer.cpp"
|
||||
}
|
||||
}
|
||||
else if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ )) && (true) && (true) && (true) && (true) && (true) && (true) && (true) && (true) && (true)) {
|
||||
{ // ( ... )+
|
||||
int _cnt123=0;
|
||||
int _cnt134=0;
|
||||
for (;;) {
|
||||
if (((LA(1) >= 0x30 /* '0' */ && LA(1) <= 0x39 /* '9' */ ))) {
|
||||
mDIGIT(false);
|
||||
}
|
||||
else {
|
||||
if ( _cnt123>=1 ) { goto _loop123; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
if ( _cnt134>=1 ) { goto _loop134; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltForCharException(LA(1), getFilename(), getLine(), getColumn());}
|
||||
}
|
||||
|
||||
_cnt123++;
|
||||
_cnt134++;
|
||||
}
|
||||
_loop123:;
|
||||
_loop134:;
|
||||
} // ( ... )+
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 679 "pix.g"
|
||||
#line 787 "pix.g"
|
||||
_ttype = INT_CONST;
|
||||
#line 929 "PIXCfgLexer.cpp"
|
||||
#line 932 "PIXCfgLexer.cpp"
|
||||
}
|
||||
}
|
||||
else {
|
||||
@ -1186,11 +1189,11 @@ void PIXCfgLexer::mWORD(bool _createToken) {
|
||||
}
|
||||
default:
|
||||
{
|
||||
goto _loop130;
|
||||
goto _loop141;
|
||||
}
|
||||
}
|
||||
}
|
||||
_loop130:;
|
||||
_loop141:;
|
||||
} // ( ... )*
|
||||
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
|
||||
_token = makeToken(_ttype);
|
||||
@ -1212,11 +1215,11 @@ void PIXCfgLexer::mSTRING(bool _createToken) {
|
||||
matchNot('\"' /* charlit */ );
|
||||
}
|
||||
else {
|
||||
goto _loop133;
|
||||
goto _loop144;
|
||||
}
|
||||
|
||||
}
|
||||
_loop133:;
|
||||
_loop144:;
|
||||
} // ( ... )*
|
||||
match('\"' /* charlit */ );
|
||||
if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
|
||||
@ -1586,7 +1589,7 @@ const unsigned long PIXCfgLexer::_tokenSet_1_data_[] = { 4294958072UL, 429496729
|
||||
// 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xe 0xf 0x10 0x11 0x12 0x13 0x14
|
||||
// 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f ! \" # $ %
|
||||
// & \' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G
|
||||
// H I J K L M N O P Q R S T
|
||||
// H I J K L M N O P Q R S T U V W
|
||||
const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgLexer::_tokenSet_1(_tokenSet_1_data_,16);
|
||||
const unsigned long PIXCfgLexer::_tokenSet_2_data_[] = { 0UL, 67059712UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
|
||||
// . 0 1 2 3 4 5 6 7 8 9
|
||||
@ -1598,6 +1601,6 @@ const unsigned long PIXCfgLexer::_tokenSet_4_data_[] = { 4294967288UL, 429496729
|
||||
// 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa 0xb 0xc 0xd 0xe 0xf 0x10 0x11 0x12 0x13
|
||||
// 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f ! # $
|
||||
// % & \' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F
|
||||
// G H I J K L M N O P Q R S T
|
||||
// G H I J K L M N O P Q R S T U V W
|
||||
const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgLexer::_tokenSet_4(_tokenSet_4_data_,16);
|
||||
|
||||
|
||||
@ -47,6 +47,7 @@ PIXCfgParser::PIXCfgParser(const ANTLR_USE_NAMESPACE(antlr)ParserSharedInputStat
|
||||
}
|
||||
|
||||
void PIXCfgParser::cfgfile() {
|
||||
Tracer traceInOut(this, "cfgfile");
|
||||
|
||||
try { // for error handling
|
||||
{ // ( ... )+
|
||||
@ -80,6 +81,21 @@ void PIXCfgParser::cfgfile() {
|
||||
intrface();
|
||||
break;
|
||||
}
|
||||
case VLAN:
|
||||
{
|
||||
vlan_interface();
|
||||
break;
|
||||
}
|
||||
case SEC_LEVEL:
|
||||
{
|
||||
sec_level();
|
||||
break;
|
||||
}
|
||||
case NAMEIF:
|
||||
{
|
||||
nameif();
|
||||
break;
|
||||
}
|
||||
case CONTROLLER:
|
||||
{
|
||||
controller();
|
||||
@ -146,6 +162,7 @@ void PIXCfgParser::cfgfile() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::comment() {
|
||||
Tracer traceInOut(this, "comment");
|
||||
|
||||
try { // for error handling
|
||||
{
|
||||
@ -178,6 +195,7 @@ void PIXCfgParser::comment() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::version() {
|
||||
Tracer traceInOut(this, "version");
|
||||
|
||||
try { // for error handling
|
||||
{
|
||||
@ -201,13 +219,13 @@ void PIXCfgParser::version() {
|
||||
match(VERSION_WORD);
|
||||
match(NUMBER);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 150 "pix.g"
|
||||
#line 156 "pix.g"
|
||||
|
||||
importer->setDiscoveredVersion(LT(0)->getText());
|
||||
*dbg << "VERSION " << LT(0)->getText() << std::endl;
|
||||
consumeUntil(NEWLINE);
|
||||
|
||||
#line 211 "PIXCfgParser.cpp"
|
||||
#line 229 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
@ -221,6 +239,7 @@ void PIXCfgParser::version() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::hostname() {
|
||||
Tracer traceInOut(this, "hostname");
|
||||
|
||||
try { // for error handling
|
||||
match(HOSTNAME);
|
||||
@ -243,14 +262,14 @@ void PIXCfgParser::hostname() {
|
||||
}
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 159 "pix.g"
|
||||
#line 165 "pix.g"
|
||||
|
||||
importer->setHostName( LT(0)->getText() );
|
||||
*dbg << "HOSTNAME "
|
||||
<< "LT0=" << LT(0)->getText()
|
||||
<< std::endl;
|
||||
|
||||
#line 254 "PIXCfgParser.cpp"
|
||||
#line 273 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
@ -264,6 +283,7 @@ void PIXCfgParser::hostname() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::ip_commands() {
|
||||
Tracer traceInOut(this, "ip_commands");
|
||||
|
||||
try { // for error handling
|
||||
match(IP);
|
||||
@ -309,6 +329,7 @@ void PIXCfgParser::ip_commands() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::intrface() {
|
||||
Tracer traceInOut(this, "intrface");
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken in = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
|
||||
try { // for error handling
|
||||
@ -316,13 +337,41 @@ void PIXCfgParser::intrface() {
|
||||
in = LT(1);
|
||||
match(WORD);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 420 "pix.g"
|
||||
#line 463 "pix.g"
|
||||
|
||||
importer->newInterface( in->getText() );
|
||||
*dbg << in->getLine() << ":"
|
||||
<< " INTRFACE: " << in->getText() << std::endl;
|
||||
consumeUntil(NEWLINE);
|
||||
|
||||
#line 326 "PIXCfgParser.cpp"
|
||||
#line 348 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
if( inputState->guessing == 0 ) {
|
||||
reportError(ex);
|
||||
recover(ex,_tokenSet_1);
|
||||
} else {
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PIXCfgParser::vlan_interface() {
|
||||
Tracer traceInOut(this, "vlan_interface");
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken vlan_id = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
|
||||
try { // for error handling
|
||||
match(VLAN);
|
||||
vlan_id = LT(1);
|
||||
match(INT_CONST);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 472 "pix.g"
|
||||
|
||||
importer->setInterfaceVlanId(vlan_id->getText());
|
||||
*dbg << " VLAN: " << vlan_id->getText() << std::endl;
|
||||
|
||||
#line 375 "PIXCfgParser.cpp"
|
||||
}
|
||||
match(NEWLINE);
|
||||
}
|
||||
@ -336,17 +385,100 @@ void PIXCfgParser::intrface() {
|
||||
}
|
||||
}
|
||||
|
||||
void PIXCfgParser::sec_level() {
|
||||
Tracer traceInOut(this, "sec_level");
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken sec_level = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
|
||||
try { // for error handling
|
||||
match(SEC_LEVEL);
|
||||
sec_level = LT(1);
|
||||
match(INT_CONST);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 480 "pix.g"
|
||||
|
||||
importer->setInterfaceSecurityLevel(sec_level->getText());
|
||||
*dbg << "SEC_LEVEL: " << sec_level->getText() << std::endl;
|
||||
|
||||
#line 403 "PIXCfgParser.cpp"
|
||||
}
|
||||
match(NEWLINE);
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
if( inputState->guessing == 0 ) {
|
||||
reportError(ex);
|
||||
recover(ex,_tokenSet_1);
|
||||
} else {
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PIXCfgParser::nameif() {
|
||||
Tracer traceInOut(this, "nameif");
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken phys_intf = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken intf_label = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken sec_level = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
|
||||
try { // for error handling
|
||||
match(NAMEIF);
|
||||
phys_intf = LT(1);
|
||||
match(WORD);
|
||||
{
|
||||
switch ( LA(1)) {
|
||||
case NEWLINE:
|
||||
{
|
||||
match(NEWLINE);
|
||||
break;
|
||||
}
|
||||
case WORD:
|
||||
{
|
||||
intf_label = LT(1);
|
||||
match(WORD);
|
||||
sec_level = LT(1);
|
||||
match(WORD);
|
||||
match(NEWLINE);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 488 "pix.g"
|
||||
|
||||
std::string label = (intf_label) ? intf_label->getText() : "";
|
||||
std::string seclevel = (sec_level) ? sec_level->getText() : "";
|
||||
importer->setInterfaceParametes(phys_intf->getText(), label, seclevel);
|
||||
*dbg << " NAMEIF: "
|
||||
<< phys_intf->getText() << label << seclevel << std::endl;
|
||||
|
||||
#line 458 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
if( inputState->guessing == 0 ) {
|
||||
reportError(ex);
|
||||
recover(ex,_tokenSet_1);
|
||||
} else {
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PIXCfgParser::controller() {
|
||||
Tracer traceInOut(this, "controller");
|
||||
|
||||
try { // for error handling
|
||||
match(CONTROLLER);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 411 "pix.g"
|
||||
#line 417 "pix.g"
|
||||
|
||||
importer->clearCurrentInterface();
|
||||
consumeUntil(NEWLINE);
|
||||
|
||||
#line 350 "PIXCfgParser.cpp"
|
||||
#line 482 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
@ -360,6 +492,7 @@ void PIXCfgParser::controller() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::access_list_commands() {
|
||||
Tracer traceInOut(this, "access_list_commands");
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken acl_num = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
|
||||
try { // for error handling
|
||||
@ -367,13 +500,13 @@ void PIXCfgParser::access_list_commands() {
|
||||
acl_num = LT(1);
|
||||
match(INT_CONST);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 174 "pix.g"
|
||||
#line 180 "pix.g"
|
||||
|
||||
importer->newUnidirRuleSet( std::string("acl_") + acl_num->getText() );
|
||||
*dbg << acl_num->getLine() << ":"
|
||||
<< " ACL #" << acl_num->getText() << " ";
|
||||
|
||||
#line 377 "PIXCfgParser.cpp"
|
||||
#line 510 "PIXCfgParser.cpp"
|
||||
}
|
||||
{
|
||||
switch ( LA(1)) {
|
||||
@ -410,6 +543,7 @@ void PIXCfgParser::access_list_commands() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::exit() {
|
||||
Tracer traceInOut(this, "exit");
|
||||
|
||||
try { // for error handling
|
||||
match(EXIT);
|
||||
@ -425,11 +559,12 @@ void PIXCfgParser::exit() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::description() {
|
||||
Tracer traceInOut(this, "description");
|
||||
|
||||
try { // for error handling
|
||||
match(DESCRIPTION);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 440 "pix.g"
|
||||
#line 500 "pix.g"
|
||||
|
||||
*dbg << LT(1)->getLine() << ":";
|
||||
std::string descr;
|
||||
@ -438,11 +573,11 @@ void PIXCfgParser::description() {
|
||||
descr += LT(1)->getText() + " ";
|
||||
consume();
|
||||
}
|
||||
importer->addInterfaceComment( descr );
|
||||
importer->setInterfaceComment( descr );
|
||||
*dbg << " DESCRIPTION " << descr << std::endl;
|
||||
//consumeUntil(NEWLINE);
|
||||
|
||||
#line 446 "PIXCfgParser.cpp"
|
||||
#line 581 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
@ -456,16 +591,17 @@ void PIXCfgParser::description() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::shutdown() {
|
||||
Tracer traceInOut(this, "shutdown");
|
||||
|
||||
try { // for error handling
|
||||
match(SHUTDOWN);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 475 "pix.g"
|
||||
#line 535 "pix.g"
|
||||
|
||||
*dbg<< LT(1)->getLine() << ":"
|
||||
<< " INTERFACE SHUTDOWN " << std::endl;
|
||||
|
||||
#line 469 "PIXCfgParser.cpp"
|
||||
#line 605 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
@ -479,17 +615,18 @@ void PIXCfgParser::shutdown() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::certificate() {
|
||||
Tracer traceInOut(this, "certificate");
|
||||
|
||||
try { // for error handling
|
||||
match(CERTIFICATE);
|
||||
match(WORD);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 142 "pix.g"
|
||||
#line 148 "pix.g"
|
||||
|
||||
consumeUntil(NEWLINE);
|
||||
consumeUntil(QUIT);
|
||||
|
||||
#line 493 "PIXCfgParser.cpp"
|
||||
#line 630 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
@ -503,15 +640,16 @@ void PIXCfgParser::certificate() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::quit() {
|
||||
Tracer traceInOut(this, "quit");
|
||||
|
||||
try { // for error handling
|
||||
match(QUIT);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 121 "pix.g"
|
||||
#line 127 "pix.g"
|
||||
|
||||
consumeUntil(NEWLINE);
|
||||
|
||||
#line 515 "PIXCfgParser.cpp"
|
||||
#line 653 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
@ -525,15 +663,16 @@ void PIXCfgParser::quit() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::unknown_command() {
|
||||
Tracer traceInOut(this, "unknown_command");
|
||||
|
||||
try { // for error handling
|
||||
match(WORD);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 135 "pix.g"
|
||||
#line 141 "pix.g"
|
||||
|
||||
consumeUntil(NEWLINE);
|
||||
|
||||
#line 537 "PIXCfgParser.cpp"
|
||||
#line 676 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
@ -547,6 +686,7 @@ void PIXCfgParser::unknown_command() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::ip_access_list_ext() {
|
||||
Tracer traceInOut(this, "ip_access_list_ext");
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken name = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
|
||||
try { // for error handling
|
||||
@ -554,13 +694,13 @@ void PIXCfgParser::ip_access_list_ext() {
|
||||
name = LT(1);
|
||||
match(WORD);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 191 "pix.g"
|
||||
#line 197 "pix.g"
|
||||
|
||||
importer->newUnidirRuleSet( name->getText() );
|
||||
*dbg << name->getLine() << ":"
|
||||
<< " ACL ext " << name->getText() << std::endl;
|
||||
|
||||
#line 564 "PIXCfgParser.cpp"
|
||||
#line 704 "PIXCfgParser.cpp"
|
||||
}
|
||||
{
|
||||
switch ( LA(1)) {
|
||||
@ -597,12 +737,12 @@ void PIXCfgParser::ip_access_list_ext() {
|
||||
}
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 207 "pix.g"
|
||||
#line 213 "pix.g"
|
||||
|
||||
*dbg << LT(0)->getLine() << ":"
|
||||
<< " ACL line end" << std::endl << std::endl;
|
||||
|
||||
#line 606 "PIXCfgParser.cpp"
|
||||
#line 746 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
@ -616,6 +756,7 @@ void PIXCfgParser::ip_access_list_ext() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::interface_known_commands() {
|
||||
Tracer traceInOut(this, "interface_known_commands");
|
||||
|
||||
try { // for error handling
|
||||
{
|
||||
@ -654,15 +795,16 @@ void PIXCfgParser::interface_known_commands() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::community_list_command() {
|
||||
Tracer traceInOut(this, "community_list_command");
|
||||
|
||||
try { // for error handling
|
||||
match(COMMUNITY_LIST);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 128 "pix.g"
|
||||
#line 134 "pix.g"
|
||||
|
||||
consumeUntil(NEWLINE);
|
||||
|
||||
#line 666 "PIXCfgParser.cpp"
|
||||
#line 808 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
@ -676,26 +818,27 @@ void PIXCfgParser::community_list_command() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::permit_ext() {
|
||||
Tracer traceInOut(this, "permit_ext");
|
||||
|
||||
try { // for error handling
|
||||
match(PERMIT);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 215 "pix.g"
|
||||
#line 221 "pix.g"
|
||||
|
||||
importer->newPolicyRule();
|
||||
importer->action = "permit";
|
||||
*dbg << LT(1)->getLine() << ":" << " permit ";
|
||||
|
||||
#line 690 "PIXCfgParser.cpp"
|
||||
#line 833 "PIXCfgParser.cpp"
|
||||
}
|
||||
rule_ext();
|
||||
match(NEWLINE);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 221 "pix.g"
|
||||
#line 227 "pix.g"
|
||||
|
||||
importer->pushRule();
|
||||
|
||||
#line 699 "PIXCfgParser.cpp"
|
||||
#line 842 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
@ -709,26 +852,27 @@ void PIXCfgParser::permit_ext() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::deny_ext() {
|
||||
Tracer traceInOut(this, "deny_ext");
|
||||
|
||||
try { // for error handling
|
||||
match(DENY);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 227 "pix.g"
|
||||
#line 233 "pix.g"
|
||||
|
||||
importer->newPolicyRule();
|
||||
importer->action = "deny";
|
||||
*dbg << LT(1)->getLine() << ":" << " deny ";
|
||||
|
||||
#line 723 "PIXCfgParser.cpp"
|
||||
#line 867 "PIXCfgParser.cpp"
|
||||
}
|
||||
rule_ext();
|
||||
match(NEWLINE);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 233 "pix.g"
|
||||
#line 239 "pix.g"
|
||||
|
||||
importer->pushRule();
|
||||
|
||||
#line 732 "PIXCfgParser.cpp"
|
||||
#line 876 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
@ -742,11 +886,12 @@ void PIXCfgParser::deny_ext() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::remark() {
|
||||
Tracer traceInOut(this, "remark");
|
||||
|
||||
try { // for error handling
|
||||
match(REMARK);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 460 "pix.g"
|
||||
#line 520 "pix.g"
|
||||
|
||||
*dbg << LT(1)->getLine() << ":";
|
||||
std::string rem;
|
||||
@ -759,7 +904,7 @@ void PIXCfgParser::remark() {
|
||||
*dbg << " REMARK " << rem << std::endl;
|
||||
//consumeUntil(NEWLINE);
|
||||
|
||||
#line 763 "PIXCfgParser.cpp"
|
||||
#line 908 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
@ -773,6 +918,7 @@ void PIXCfgParser::remark() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::rule_ext() {
|
||||
Tracer traceInOut(this, "rule_ext");
|
||||
|
||||
try { // for error handling
|
||||
{
|
||||
@ -783,15 +929,15 @@ void PIXCfgParser::rule_ext() {
|
||||
ip_protocols();
|
||||
hostaddr_ext();
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 243 "pix.g"
|
||||
#line 249 "pix.g"
|
||||
importer->SaveTmpAddrToSrc(); *dbg << "(src) ";
|
||||
#line 789 "PIXCfgParser.cpp"
|
||||
#line 935 "PIXCfgParser.cpp"
|
||||
}
|
||||
hostaddr_ext();
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 244 "pix.g"
|
||||
#line 250 "pix.g"
|
||||
importer->SaveTmpAddrToDst(); *dbg << "(dst) ";
|
||||
#line 795 "PIXCfgParser.cpp"
|
||||
#line 941 "PIXCfgParser.cpp"
|
||||
}
|
||||
{
|
||||
switch ( LA(1)) {
|
||||
@ -856,24 +1002,24 @@ void PIXCfgParser::rule_ext() {
|
||||
{
|
||||
match(ICMP);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 250 "pix.g"
|
||||
#line 256 "pix.g"
|
||||
|
||||
importer->protocol = LT(0)->getText();
|
||||
*dbg << "protocol " << LT(0)->getText() << " ";
|
||||
|
||||
#line 865 "PIXCfgParser.cpp"
|
||||
#line 1011 "PIXCfgParser.cpp"
|
||||
}
|
||||
hostaddr_ext();
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 254 "pix.g"
|
||||
#line 260 "pix.g"
|
||||
importer->SaveTmpAddrToSrc(); *dbg << "(src) ";
|
||||
#line 871 "PIXCfgParser.cpp"
|
||||
#line 1017 "PIXCfgParser.cpp"
|
||||
}
|
||||
hostaddr_ext();
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 255 "pix.g"
|
||||
#line 261 "pix.g"
|
||||
importer->SaveTmpAddrToDst(); *dbg << "(dst) ";
|
||||
#line 877 "PIXCfgParser.cpp"
|
||||
#line 1023 "PIXCfgParser.cpp"
|
||||
}
|
||||
{
|
||||
switch ( LA(1)) {
|
||||
@ -978,18 +1124,18 @@ void PIXCfgParser::rule_ext() {
|
||||
}
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 262 "pix.g"
|
||||
#line 268 "pix.g"
|
||||
|
||||
importer->protocol = LT(0)->getText();
|
||||
*dbg << "protocol " << LT(0)->getText() << " ";
|
||||
|
||||
#line 987 "PIXCfgParser.cpp"
|
||||
#line 1133 "PIXCfgParser.cpp"
|
||||
}
|
||||
hostaddr_ext();
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 266 "pix.g"
|
||||
#line 272 "pix.g"
|
||||
importer->SaveTmpAddrToSrc(); *dbg << "(src) ";
|
||||
#line 993 "PIXCfgParser.cpp"
|
||||
#line 1139 "PIXCfgParser.cpp"
|
||||
}
|
||||
{
|
||||
switch ( LA(1)) {
|
||||
@ -1001,9 +1147,9 @@ void PIXCfgParser::rule_ext() {
|
||||
{
|
||||
xoperator();
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 267 "pix.g"
|
||||
#line 273 "pix.g"
|
||||
importer->SaveTmpPortToSrc();
|
||||
#line 1007 "PIXCfgParser.cpp"
|
||||
#line 1153 "PIXCfgParser.cpp"
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -1021,9 +1167,9 @@ void PIXCfgParser::rule_ext() {
|
||||
}
|
||||
hostaddr_ext();
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 268 "pix.g"
|
||||
#line 274 "pix.g"
|
||||
importer->SaveTmpAddrToDst(); *dbg << "(dst) ";
|
||||
#line 1027 "PIXCfgParser.cpp"
|
||||
#line 1173 "PIXCfgParser.cpp"
|
||||
}
|
||||
{
|
||||
switch ( LA(1)) {
|
||||
@ -1035,9 +1181,9 @@ void PIXCfgParser::rule_ext() {
|
||||
{
|
||||
xoperator();
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 269 "pix.g"
|
||||
#line 275 "pix.g"
|
||||
importer->SaveTmpPortToDst();
|
||||
#line 1041 "PIXCfgParser.cpp"
|
||||
#line 1187 "PIXCfgParser.cpp"
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -1143,11 +1289,11 @@ void PIXCfgParser::rule_ext() {
|
||||
}
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 275 "pix.g"
|
||||
#line 281 "pix.g"
|
||||
|
||||
*dbg << std::endl;
|
||||
|
||||
#line 1151 "PIXCfgParser.cpp"
|
||||
#line 1297 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
@ -1161,6 +1307,7 @@ void PIXCfgParser::rule_ext() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::ip_protocols() {
|
||||
Tracer traceInOut(this, "ip_protocols");
|
||||
|
||||
try { // for error handling
|
||||
{
|
||||
@ -1182,12 +1329,12 @@ void PIXCfgParser::ip_protocols() {
|
||||
}
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 283 "pix.g"
|
||||
#line 289 "pix.g"
|
||||
|
||||
importer->protocol = LT(0)->getText();
|
||||
*dbg << "protocol " << LT(0)->getText() << " ";
|
||||
|
||||
#line 1191 "PIXCfgParser.cpp"
|
||||
#line 1338 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
@ -1201,6 +1348,7 @@ void PIXCfgParser::ip_protocols() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::hostaddr_ext() {
|
||||
Tracer traceInOut(this, "hostaddr_ext");
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken h = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken a = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken m = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
@ -1215,13 +1363,13 @@ void PIXCfgParser::hostaddr_ext() {
|
||||
match(IPV4);
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 335 "pix.g"
|
||||
#line 341 "pix.g"
|
||||
|
||||
importer->tmp_a = h->getText();
|
||||
importer->tmp_nm = "0.0.0.0";
|
||||
*dbg << h->getText() << "/0.0.0.0";
|
||||
|
||||
#line 1225 "PIXCfgParser.cpp"
|
||||
#line 1373 "PIXCfgParser.cpp"
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -1234,13 +1382,13 @@ void PIXCfgParser::hostaddr_ext() {
|
||||
match(IPV4);
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 342 "pix.g"
|
||||
#line 348 "pix.g"
|
||||
|
||||
importer->tmp_a = a->getText();
|
||||
importer->tmp_nm = m->getText();
|
||||
*dbg << a->getText() << "/" << m->getText();
|
||||
|
||||
#line 1244 "PIXCfgParser.cpp"
|
||||
#line 1392 "PIXCfgParser.cpp"
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -1248,13 +1396,13 @@ void PIXCfgParser::hostaddr_ext() {
|
||||
{
|
||||
match(ANY);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 349 "pix.g"
|
||||
#line 355 "pix.g"
|
||||
|
||||
importer->tmp_a = "0.0.0.0";
|
||||
importer->tmp_nm = "0.0.0.0";
|
||||
*dbg << "0.0.0.0/0.0.0.0";
|
||||
|
||||
#line 1258 "PIXCfgParser.cpp"
|
||||
#line 1406 "PIXCfgParser.cpp"
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -1275,6 +1423,7 @@ void PIXCfgParser::hostaddr_ext() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::time_range() {
|
||||
Tracer traceInOut(this, "time_range");
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken tr_name = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
|
||||
try { // for error handling
|
||||
@ -1282,12 +1431,12 @@ void PIXCfgParser::time_range() {
|
||||
tr_name = LT(1);
|
||||
match(WORD);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 401 "pix.g"
|
||||
#line 407 "pix.g"
|
||||
|
||||
importer->time_range_name = tr_name->getText();
|
||||
*dbg << "time_range " << tr_name->getText() << " ";
|
||||
|
||||
#line 1291 "PIXCfgParser.cpp"
|
||||
#line 1440 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
@ -1301,16 +1450,17 @@ void PIXCfgParser::time_range() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::fragments() {
|
||||
Tracer traceInOut(this, "fragments");
|
||||
|
||||
try { // for error handling
|
||||
match(FRAGMENTS);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 394 "pix.g"
|
||||
#line 400 "pix.g"
|
||||
|
||||
importer->fragments = true;
|
||||
*dbg << "fragments ";
|
||||
|
||||
#line 1314 "PIXCfgParser.cpp"
|
||||
#line 1464 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
@ -1324,6 +1474,7 @@ void PIXCfgParser::fragments() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::log() {
|
||||
Tracer traceInOut(this, "log");
|
||||
|
||||
try { // for error handling
|
||||
{
|
||||
@ -1345,12 +1496,12 @@ void PIXCfgParser::log() {
|
||||
}
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 380 "pix.g"
|
||||
#line 386 "pix.g"
|
||||
|
||||
importer->logging = true;
|
||||
*dbg << "logging ";
|
||||
|
||||
#line 1354 "PIXCfgParser.cpp"
|
||||
#line 1505 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
@ -1364,6 +1515,7 @@ void PIXCfgParser::log() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::icmp_spec() {
|
||||
Tracer traceInOut(this, "icmp_spec");
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken icmp_type = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken icmp_code = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken icmp_word = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
@ -1380,7 +1532,7 @@ void PIXCfgParser::icmp_spec() {
|
||||
match(INT_CONST);
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 291 "pix.g"
|
||||
#line 297 "pix.g"
|
||||
|
||||
importer->icmp_type = icmp_type->getText();
|
||||
importer->icmp_code = icmp_code->getText();
|
||||
@ -1388,7 +1540,7 @@ void PIXCfgParser::icmp_spec() {
|
||||
*dbg << icmp_type->getText() << " "
|
||||
<< icmp_code->getText() << " ";
|
||||
|
||||
#line 1392 "PIXCfgParser.cpp"
|
||||
#line 1544 "PIXCfgParser.cpp"
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -1397,12 +1549,12 @@ void PIXCfgParser::icmp_spec() {
|
||||
icmp_word = LT(1);
|
||||
match(WORD);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 300 "pix.g"
|
||||
#line 306 "pix.g"
|
||||
|
||||
importer->icmp_spec = icmp_word->getText();
|
||||
*dbg << icmp_word->getText() << " ";
|
||||
|
||||
#line 1406 "PIXCfgParser.cpp"
|
||||
#line 1558 "PIXCfgParser.cpp"
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -1424,6 +1576,7 @@ void PIXCfgParser::icmp_spec() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::xoperator() {
|
||||
Tracer traceInOut(this, "xoperator");
|
||||
|
||||
try { // for error handling
|
||||
switch ( LA(1)) {
|
||||
@ -1457,16 +1610,17 @@ void PIXCfgParser::xoperator() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::established() {
|
||||
Tracer traceInOut(this, "established");
|
||||
|
||||
try { // for error handling
|
||||
match(ESTABLISHED);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 387 "pix.g"
|
||||
#line 393 "pix.g"
|
||||
|
||||
importer->established = true;
|
||||
*dbg << "established ";
|
||||
|
||||
#line 1470 "PIXCfgParser.cpp"
|
||||
#line 1624 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
@ -1480,6 +1634,7 @@ void PIXCfgParser::established() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::single_port_op() {
|
||||
Tracer traceInOut(this, "single_port_op");
|
||||
|
||||
try { // for error handling
|
||||
{
|
||||
@ -1511,12 +1666,12 @@ void PIXCfgParser::single_port_op() {
|
||||
}
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 311 "pix.g"
|
||||
#line 317 "pix.g"
|
||||
|
||||
importer->tmp_port_op = LT(0)->getText();
|
||||
*dbg << LT(0)->getText() << " ";
|
||||
|
||||
#line 1520 "PIXCfgParser.cpp"
|
||||
#line 1675 "PIXCfgParser.cpp"
|
||||
}
|
||||
port_spec();
|
||||
}
|
||||
@ -1531,16 +1686,17 @@ void PIXCfgParser::single_port_op() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::port_range() {
|
||||
Tracer traceInOut(this, "port_range");
|
||||
|
||||
try { // for error handling
|
||||
match(P_RANGE);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 319 "pix.g"
|
||||
#line 325 "pix.g"
|
||||
|
||||
importer->tmp_port_op = LT(0)->getText();
|
||||
*dbg << LT(0)->getText() << " ";
|
||||
|
||||
#line 1544 "PIXCfgParser.cpp"
|
||||
#line 1700 "PIXCfgParser.cpp"
|
||||
}
|
||||
port_spec();
|
||||
port_spec();
|
||||
@ -1556,6 +1712,7 @@ void PIXCfgParser::port_range() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::port_spec() {
|
||||
Tracer traceInOut(this, "port_spec");
|
||||
|
||||
try { // for error handling
|
||||
{
|
||||
@ -1577,12 +1734,12 @@ void PIXCfgParser::port_spec() {
|
||||
}
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 327 "pix.g"
|
||||
#line 333 "pix.g"
|
||||
|
||||
importer->tmp_port_spec += (std::string(" ") + LT(0)->getText());
|
||||
*dbg << LT(0)->getText() << " ";
|
||||
|
||||
#line 1586 "PIXCfgParser.cpp"
|
||||
#line 1743 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
@ -1596,6 +1753,7 @@ void PIXCfgParser::port_spec() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::hostaddr_std() {
|
||||
Tracer traceInOut(this, "hostaddr_std");
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken h = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken a = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken m = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
@ -1607,13 +1765,13 @@ void PIXCfgParser::hostaddr_std() {
|
||||
match(IPV4);
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 358 "pix.g"
|
||||
#line 364 "pix.g"
|
||||
|
||||
importer->tmp_a = h->getText();
|
||||
importer->tmp_nm = "0.0.0.0";
|
||||
*dbg << h->getText() << "/0.0.0.0";
|
||||
|
||||
#line 1617 "PIXCfgParser.cpp"
|
||||
#line 1775 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
else if ((LA(1) == IPV4) && (LA(2) == IPV4)) {
|
||||
@ -1624,25 +1782,25 @@ void PIXCfgParser::hostaddr_std() {
|
||||
match(IPV4);
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 365 "pix.g"
|
||||
#line 371 "pix.g"
|
||||
|
||||
importer->tmp_a = a->getText();
|
||||
importer->tmp_nm = m->getText();
|
||||
*dbg << a->getText() << "/" << m->getText();
|
||||
|
||||
#line 1634 "PIXCfgParser.cpp"
|
||||
#line 1792 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
else if ((LA(1) == ANY)) {
|
||||
match(ANY);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 372 "pix.g"
|
||||
#line 378 "pix.g"
|
||||
|
||||
importer->tmp_a = "0.0.0.0";
|
||||
importer->tmp_nm = "0.0.0.0";
|
||||
*dbg << "0.0.0.0/0.0.0.0";
|
||||
|
||||
#line 1646 "PIXCfgParser.cpp"
|
||||
#line 1804 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
else {
|
||||
@ -1660,41 +1818,213 @@ void PIXCfgParser::hostaddr_std() {
|
||||
}
|
||||
}
|
||||
|
||||
void PIXCfgParser::nameif() {
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken in = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
void PIXCfgParser::intf_address() {
|
||||
Tracer traceInOut(this, "intf_address");
|
||||
|
||||
try { // for error handling
|
||||
match(NAMEIF);
|
||||
in = LT(1);
|
||||
match(WORD);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 429 "pix.g"
|
||||
|
||||
importer->addInterfaceLabel( in->getText() );
|
||||
*dbg << in->getLine() << ":"
|
||||
<< " INTRFACE LABEL: " << in->getText() << std::endl;
|
||||
|
||||
#line 1678 "PIXCfgParser.cpp"
|
||||
match(ADDRESS);
|
||||
{
|
||||
switch ( LA(1)) {
|
||||
case WORD:
|
||||
{
|
||||
v6_ip_address();
|
||||
break;
|
||||
}
|
||||
case IPV4:
|
||||
case DHCP:
|
||||
{
|
||||
v7_ip_address();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
|
||||
}
|
||||
}
|
||||
}
|
||||
match(NEWLINE);
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
if( inputState->guessing == 0 ) {
|
||||
reportError(ex);
|
||||
recover(ex,_tokenSet_0);
|
||||
recover(ex,_tokenSet_2);
|
||||
} else {
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PIXCfgParser::intf_address() {
|
||||
void PIXCfgParser::switchport() {
|
||||
Tracer traceInOut(this, "switchport");
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken vlan_num = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
|
||||
try { // for error handling
|
||||
match(SWITCHPORT);
|
||||
match(ACCESS);
|
||||
match(VLAN);
|
||||
vlan_num = LT(1);
|
||||
match(WORD);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 620 "pix.g"
|
||||
|
||||
|
||||
#line 1871 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
if( inputState->guessing == 0 ) {
|
||||
reportError(ex);
|
||||
recover(ex,_tokenSet_2);
|
||||
} else {
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PIXCfgParser::v6_ip_address() {
|
||||
Tracer traceInOut(this, "v6_ip_address");
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken lbl = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken dhcp = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken a = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken m = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
|
||||
try { // for error handling
|
||||
lbl = LT(1);
|
||||
match(WORD);
|
||||
{
|
||||
switch ( LA(1)) {
|
||||
case DHCP:
|
||||
{
|
||||
dhcp = LT(1);
|
||||
match(DHCP);
|
||||
break;
|
||||
}
|
||||
case IPV4:
|
||||
{
|
||||
{
|
||||
a = LT(1);
|
||||
match(IPV4);
|
||||
m = LT(1);
|
||||
match(IPV4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 576 "pix.g"
|
||||
|
||||
std::string label = lbl->getText();
|
||||
std::string addr;
|
||||
if (a) addr = a->getText();
|
||||
if (dhcp) addr = dhcp->getText();
|
||||
std::string netm;
|
||||
if (m) netm = m->getText();
|
||||
importer->addInterfaceAddress(label, addr, netm);
|
||||
*dbg << LT(1)->getLine() << ":"
|
||||
<< " INTRFACE ADDRESS: " << addr << "/" << netm << std::endl;
|
||||
|
||||
#line 1931 "PIXCfgParser.cpp"
|
||||
}
|
||||
match(NEWLINE);
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
if( inputState->guessing == 0 ) {
|
||||
reportError(ex);
|
||||
recover(ex,_tokenSet_2);
|
||||
} else {
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PIXCfgParser::v7_ip_address() {
|
||||
Tracer traceInOut(this, "v7_ip_address");
|
||||
|
||||
try { // for error handling
|
||||
switch ( LA(1)) {
|
||||
case DHCP:
|
||||
{
|
||||
v7_dhcp_address();
|
||||
break;
|
||||
}
|
||||
case IPV4:
|
||||
{
|
||||
v7_static_address();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
if( inputState->guessing == 0 ) {
|
||||
reportError(ex);
|
||||
recover(ex,_tokenSet_2);
|
||||
} else {
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PIXCfgParser::v7_dhcp_address() {
|
||||
Tracer traceInOut(this, "v7_dhcp_address");
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken dhcp = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
|
||||
try { // for error handling
|
||||
dhcp = LT(1);
|
||||
match(DHCP);
|
||||
{
|
||||
switch ( LA(1)) {
|
||||
case SETROUTE:
|
||||
{
|
||||
match(SETROUTE);
|
||||
break;
|
||||
}
|
||||
case NEWLINE:
|
||||
{
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(LT(1), getFilename());
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 593 "pix.g"
|
||||
|
||||
std::string addr = dhcp->getText();
|
||||
importer->addInterfaceAddress(addr, "");
|
||||
*dbg << LT(1)->getLine() << ":"
|
||||
<< " INTRFACE ADDRESS: " << addr << std::endl;
|
||||
|
||||
#line 2008 "PIXCfgParser.cpp"
|
||||
}
|
||||
match(NEWLINE);
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
if( inputState->guessing == 0 ) {
|
||||
reportError(ex);
|
||||
recover(ex,_tokenSet_2);
|
||||
} else {
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PIXCfgParser::v7_static_address() {
|
||||
Tracer traceInOut(this, "v7_static_address");
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken a = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken m = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken s = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
|
||||
try { // for error handling
|
||||
match(ADDRESS);
|
||||
a = LT(1);
|
||||
match(IPV4);
|
||||
m = LT(1);
|
||||
@ -1718,46 +2048,22 @@ void PIXCfgParser::intf_address() {
|
||||
}
|
||||
}
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 502 "pix.g"
|
||||
#line 603 "pix.g"
|
||||
|
||||
importer->addInterfaceAddress(a->getText(), m->getText());
|
||||
std::string addr = a->getText();
|
||||
std::string netm = m->getText();
|
||||
importer->addInterfaceAddress(addr, netm);
|
||||
*dbg << LT(1)->getLine() << ":"
|
||||
<< " INTRFACE ADDRESS: " << a->getText()
|
||||
<< "/" << m->getText() << " ";
|
||||
<< " INTRFACE ADDRESS: " << addr << "/" << netm << std::endl;
|
||||
if (s)
|
||||
{
|
||||
*dbg << s->getText();
|
||||
}
|
||||
*dbg << std::endl;
|
||||
|
||||
#line 1734 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
if( inputState->guessing == 0 ) {
|
||||
reportError(ex);
|
||||
recover(ex,_tokenSet_2);
|
||||
} else {
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PIXCfgParser::switchport() {
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken vlan_num = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
|
||||
try { // for error handling
|
||||
match(SWITCHPORT);
|
||||
match(ACCESS);
|
||||
match(VLAN);
|
||||
vlan_num = LT(1);
|
||||
match(WORD);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 516 "pix.g"
|
||||
|
||||
|
||||
#line 1760 "PIXCfgParser.cpp"
|
||||
#line 2065 "PIXCfgParser.cpp"
|
||||
}
|
||||
match(NEWLINE);
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
if( inputState->guessing == 0 ) {
|
||||
@ -1770,6 +2076,7 @@ void PIXCfgParser::switchport() {
|
||||
}
|
||||
|
||||
void PIXCfgParser::access_group_by_name() {
|
||||
Tracer traceInOut(this, "access_group_by_name");
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken acln = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken dir = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
ANTLR_USE_NAMESPACE(antlr)RefToken intf_label = ANTLR_USE_NAMESPACE(antlr)nullToken;
|
||||
@ -1784,7 +2091,7 @@ void PIXCfgParser::access_group_by_name() {
|
||||
intf_label = LT(1);
|
||||
match(WORD);
|
||||
if ( inputState->guessing==0 ) {
|
||||
#line 523 "pix.g"
|
||||
#line 627 "pix.g"
|
||||
|
||||
importer->setInterfaceAndDirectionForRuleSet(
|
||||
acln->getText(),
|
||||
@ -1795,7 +2102,7 @@ void PIXCfgParser::access_group_by_name() {
|
||||
<< " " << intf_label->getText()
|
||||
<< " " << dir->getText() << std::endl;
|
||||
|
||||
#line 1799 "PIXCfgParser.cpp"
|
||||
#line 2106 "PIXCfgParser.cpp"
|
||||
}
|
||||
}
|
||||
catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
|
||||
@ -1850,15 +2157,18 @@ const char* PIXCfgParser::tokenNames[] = {
|
||||
"\"time-range\"",
|
||||
"\"controller\"",
|
||||
"\"interface\"",
|
||||
"\"vlan\"",
|
||||
"\"security-level\"",
|
||||
"\"nameif\"",
|
||||
"\"description\"",
|
||||
"\"remark\"",
|
||||
"\"shutdown\"",
|
||||
"\"address\"",
|
||||
"\"dhcp\"",
|
||||
"\"setroute\"",
|
||||
"\"secondary\"",
|
||||
"\"switchport\"",
|
||||
"\"access\"",
|
||||
"\"vlan\"",
|
||||
"\"access-group\"",
|
||||
"\"exit\"",
|
||||
"LINE_COMMENT",
|
||||
@ -1903,10 +2213,10 @@ const char* PIXCfgParser::tokenNames[] = {
|
||||
const unsigned long PIXCfgParser::_tokenSet_0_data_[] = { 2UL, 0UL, 0UL, 0UL };
|
||||
// EOF
|
||||
const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_0(_tokenSet_0_data_,4);
|
||||
const unsigned long PIXCfgParser::_tokenSet_1_data_[] = { 85874UL, 459440UL, 0UL, 0UL };
|
||||
const unsigned long PIXCfgParser::_tokenSet_1_data_[] = { 85874UL, 3673072UL, 0UL, 0UL };
|
||||
// EOF NEWLINE "ip" "quit" WORD "certificate" "PIX" "ASA" "hostname" "access-list"
|
||||
// "controller" "interface" "description" "shutdown" "exit" LINE_COMMENT
|
||||
// COLON_COMMENT
|
||||
// "controller" "interface" "vlan" "security-level" "nameif" "description"
|
||||
// "shutdown" "exit" LINE_COMMENT COLON_COMMENT
|
||||
const ANTLR_USE_NAMESPACE(antlr)BitSet PIXCfgParser::_tokenSet_1(_tokenSet_1_data_,4);
|
||||
const unsigned long PIXCfgParser::_tokenSet_2_data_[] = { 16UL, 0UL, 0UL, 0UL };
|
||||
// NEWLINE
|
||||
|
||||
@ -71,6 +71,9 @@ public:
|
||||
public: void hostname();
|
||||
public: void ip_commands();
|
||||
public: void intrface();
|
||||
public: void vlan_interface();
|
||||
public: void sec_level();
|
||||
public: void nameif();
|
||||
public: void controller();
|
||||
public: void access_list_commands();
|
||||
public: void exit();
|
||||
@ -98,9 +101,12 @@ public:
|
||||
public: void port_range();
|
||||
public: void port_spec();
|
||||
public: void hostaddr_std();
|
||||
public: void nameif();
|
||||
public: void intf_address();
|
||||
public: void switchport();
|
||||
public: void v6_ip_address();
|
||||
public: void v7_ip_address();
|
||||
public: void v7_dhcp_address();
|
||||
public: void v7_static_address();
|
||||
public: void access_group_by_name();
|
||||
public:
|
||||
ANTLR_USE_NAMESPACE(antlr)RefAST getAST()
|
||||
@ -113,10 +119,10 @@ protected:
|
||||
private:
|
||||
static const char* tokenNames[];
|
||||
#ifndef NO_STATIC_CONSTS
|
||||
static const int NUM_TOKENS = 85;
|
||||
static const int NUM_TOKENS = 88;
|
||||
#else
|
||||
enum {
|
||||
NUM_TOKENS = 85
|
||||
NUM_TOKENS = 88
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
@ -46,53 +46,56 @@ struct CUSTOM_API PIXCfgParserTokenTypes {
|
||||
TIME_RANGE = 35,
|
||||
CONTROLLER = 36,
|
||||
INTRFACE = 37,
|
||||
NAMEIF = 38,
|
||||
DESCRIPTION = 39,
|
||||
REMARK = 40,
|
||||
SHUTDOWN = 41,
|
||||
ADDRESS = 42,
|
||||
SECONDARY = 43,
|
||||
SWITCHPORT = 44,
|
||||
ACCESS = 45,
|
||||
VLAN = 46,
|
||||
ACCESS_GROUP = 47,
|
||||
EXIT = 48,
|
||||
LINE_COMMENT = 49,
|
||||
COLON_COMMENT = 50,
|
||||
EXTENDED = 51,
|
||||
STANDARD = 52,
|
||||
Whitespace = 53,
|
||||
HEX_CONST = 54,
|
||||
NEG_INT_CONST = 55,
|
||||
DIGIT = 56,
|
||||
HEXDIGIT = 57,
|
||||
PIPE_CHAR = 58,
|
||||
NUMBER_SIGN = 59,
|
||||
PERCENT = 60,
|
||||
AMPERSAND = 61,
|
||||
APOSTROPHE = 62,
|
||||
OPENING_PAREN = 63,
|
||||
CLOSING_PAREN = 64,
|
||||
STAR = 65,
|
||||
PLUS = 66,
|
||||
COMMA = 67,
|
||||
MINUS = 68,
|
||||
DOT = 69,
|
||||
SLASH = 70,
|
||||
COLON = 71,
|
||||
SEMICOLON = 72,
|
||||
LESS_THAN = 73,
|
||||
EQUALS = 74,
|
||||
GREATER_THAN = 75,
|
||||
QUESTION = 76,
|
||||
COMMERCIAL_AT = 77,
|
||||
OPENING_SQUARE = 78,
|
||||
CLOSING_SQUARE = 79,
|
||||
CARET = 80,
|
||||
UNDERLINE = 81,
|
||||
OPENING_BRACE = 82,
|
||||
CLOSING_BRACE = 83,
|
||||
TILDE = 84,
|
||||
VLAN = 38,
|
||||
SEC_LEVEL = 39,
|
||||
NAMEIF = 40,
|
||||
DESCRIPTION = 41,
|
||||
REMARK = 42,
|
||||
SHUTDOWN = 43,
|
||||
ADDRESS = 44,
|
||||
DHCP = 45,
|
||||
SETROUTE = 46,
|
||||
SECONDARY = 47,
|
||||
SWITCHPORT = 48,
|
||||
ACCESS = 49,
|
||||
ACCESS_GROUP = 50,
|
||||
EXIT = 51,
|
||||
LINE_COMMENT = 52,
|
||||
COLON_COMMENT = 53,
|
||||
EXTENDED = 54,
|
||||
STANDARD = 55,
|
||||
Whitespace = 56,
|
||||
HEX_CONST = 57,
|
||||
NEG_INT_CONST = 58,
|
||||
DIGIT = 59,
|
||||
HEXDIGIT = 60,
|
||||
PIPE_CHAR = 61,
|
||||
NUMBER_SIGN = 62,
|
||||
PERCENT = 63,
|
||||
AMPERSAND = 64,
|
||||
APOSTROPHE = 65,
|
||||
OPENING_PAREN = 66,
|
||||
CLOSING_PAREN = 67,
|
||||
STAR = 68,
|
||||
PLUS = 69,
|
||||
COMMA = 70,
|
||||
MINUS = 71,
|
||||
DOT = 72,
|
||||
SLASH = 73,
|
||||
COLON = 74,
|
||||
SEMICOLON = 75,
|
||||
LESS_THAN = 76,
|
||||
EQUALS = 77,
|
||||
GREATER_THAN = 78,
|
||||
QUESTION = 79,
|
||||
COMMERCIAL_AT = 80,
|
||||
OPENING_SQUARE = 81,
|
||||
CLOSING_SQUARE = 82,
|
||||
CARET = 83,
|
||||
UNDERLINE = 84,
|
||||
OPENING_BRACE = 85,
|
||||
CLOSING_BRACE = 86,
|
||||
TILDE = 87,
|
||||
NULL_TREE_LOOKAHEAD = 3
|
||||
};
|
||||
#ifdef __cplusplus
|
||||
|
||||
@ -34,50 +34,53 @@ FRAGMENTS="fragments"=34
|
||||
TIME_RANGE="time-range"=35
|
||||
CONTROLLER="controller"=36
|
||||
INTRFACE="interface"=37
|
||||
NAMEIF="nameif"=38
|
||||
DESCRIPTION="description"=39
|
||||
REMARK="remark"=40
|
||||
SHUTDOWN="shutdown"=41
|
||||
ADDRESS="address"=42
|
||||
SECONDARY="secondary"=43
|
||||
SWITCHPORT="switchport"=44
|
||||
ACCESS="access"=45
|
||||
VLAN="vlan"=46
|
||||
ACCESS_GROUP="access-group"=47
|
||||
EXIT="exit"=48
|
||||
LINE_COMMENT=49
|
||||
COLON_COMMENT=50
|
||||
EXTENDED="extended"=51
|
||||
STANDARD="standard"=52
|
||||
Whitespace=53
|
||||
HEX_CONST=54
|
||||
NEG_INT_CONST=55
|
||||
DIGIT=56
|
||||
HEXDIGIT=57
|
||||
PIPE_CHAR=58
|
||||
NUMBER_SIGN=59
|
||||
PERCENT=60
|
||||
AMPERSAND=61
|
||||
APOSTROPHE=62
|
||||
OPENING_PAREN=63
|
||||
CLOSING_PAREN=64
|
||||
STAR=65
|
||||
PLUS=66
|
||||
COMMA=67
|
||||
MINUS=68
|
||||
DOT=69
|
||||
SLASH=70
|
||||
COLON=71
|
||||
SEMICOLON=72
|
||||
LESS_THAN=73
|
||||
EQUALS=74
|
||||
GREATER_THAN=75
|
||||
QUESTION=76
|
||||
COMMERCIAL_AT=77
|
||||
OPENING_SQUARE=78
|
||||
CLOSING_SQUARE=79
|
||||
CARET=80
|
||||
UNDERLINE=81
|
||||
OPENING_BRACE=82
|
||||
CLOSING_BRACE=83
|
||||
TILDE=84
|
||||
VLAN="vlan"=38
|
||||
SEC_LEVEL="security-level"=39
|
||||
NAMEIF="nameif"=40
|
||||
DESCRIPTION="description"=41
|
||||
REMARK="remark"=42
|
||||
SHUTDOWN="shutdown"=43
|
||||
ADDRESS="address"=44
|
||||
DHCP="dhcp"=45
|
||||
SETROUTE="setroute"=46
|
||||
SECONDARY="secondary"=47
|
||||
SWITCHPORT="switchport"=48
|
||||
ACCESS="access"=49
|
||||
ACCESS_GROUP="access-group"=50
|
||||
EXIT="exit"=51
|
||||
LINE_COMMENT=52
|
||||
COLON_COMMENT=53
|
||||
EXTENDED="extended"=54
|
||||
STANDARD="standard"=55
|
||||
Whitespace=56
|
||||
HEX_CONST=57
|
||||
NEG_INT_CONST=58
|
||||
DIGIT=59
|
||||
HEXDIGIT=60
|
||||
PIPE_CHAR=61
|
||||
NUMBER_SIGN=62
|
||||
PERCENT=63
|
||||
AMPERSAND=64
|
||||
APOSTROPHE=65
|
||||
OPENING_PAREN=66
|
||||
CLOSING_PAREN=67
|
||||
STAR=68
|
||||
PLUS=69
|
||||
COMMA=70
|
||||
MINUS=71
|
||||
DOT=72
|
||||
SLASH=73
|
||||
COLON=74
|
||||
SEMICOLON=75
|
||||
LESS_THAN=76
|
||||
EQUALS=77
|
||||
GREATER_THAN=78
|
||||
QUESTION=79
|
||||
COMMERCIAL_AT=80
|
||||
OPENING_SQUARE=81
|
||||
CLOSING_SQUARE=82
|
||||
CARET=83
|
||||
UNDERLINE=84
|
||||
OPENING_BRACE=85
|
||||
CLOSING_BRACE=86
|
||||
TILDE=87
|
||||
|
||||
@ -51,7 +51,7 @@ header "post_include_cpp"
|
||||
#include <antlr/Token.hpp>
|
||||
#include <antlr/TokenBuffer.hpp>
|
||||
|
||||
#include "../gui/IOSImporter.h"
|
||||
#include "../libgui/IOSImporter.h"
|
||||
}
|
||||
|
||||
header
|
||||
@ -496,7 +496,7 @@ description : DESCRIPTION
|
||||
descr += LT(1)->getText() + " ";
|
||||
consume();
|
||||
}
|
||||
importer->addInterfaceComment( descr );
|
||||
importer->setInterfaceComment( descr );
|
||||
*dbg << " DESCRIPTION " << descr << std::endl;
|
||||
//consumeUntil(NEWLINE);
|
||||
}
|
||||
|
||||
@ -51,7 +51,7 @@ header "post_include_cpp"
|
||||
#include <antlr/Token.hpp>
|
||||
#include <antlr/TokenBuffer.hpp>
|
||||
|
||||
#include "../gui/IPTImporter.h"
|
||||
#include "../libgui/IPTImporter.h"
|
||||
|
||||
#include "fwbuilder/TCPService.h"
|
||||
#include "fwbuilder/Logger.h"
|
||||
|
||||
@ -90,6 +90,12 @@ cfgfile :
|
||||
ip_commands
|
||||
|
|
||||
intrface
|
||||
|
|
||||
vlan_interface
|
||||
|
|
||||
sec_level
|
||||
|
|
||||
nameif
|
||||
|
|
||||
controller
|
||||
|
|
||||
@ -415,25 +421,79 @@ controller : CONTROLLER
|
||||
;
|
||||
|
||||
//****************************************************************
|
||||
//
|
||||
// **************** PIX 6 "interface" command:
|
||||
//
|
||||
// interface <hardware_id> [<hw_speed> [shutdown]]
|
||||
// [no] interface <hardware_id> <vlan_id> [logical|physical] [shutdown]
|
||||
// interface <hardware_id> change-vlan <old_vlan_id> <new_vlan_id>
|
||||
// show interface
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// interface ethernet0 auto
|
||||
// interface ethernet1 auto
|
||||
// nameif ethernet0 outside security0
|
||||
// nameif ethernet1 inside security100
|
||||
//
|
||||
// **************** PIX 7 "interface" command
|
||||
//
|
||||
// interface <type> <port>
|
||||
// interface <type> <port>.<subif_number>
|
||||
// no interface <type> <port>.<subif_number>
|
||||
//
|
||||
// Examples:
|
||||
//
|
||||
// interface Ethernet0
|
||||
// no nameif
|
||||
// no security-level
|
||||
// no ip address
|
||||
// !
|
||||
// interface Ethernet0.101
|
||||
// vlan 101
|
||||
// nameif outside
|
||||
// security-level 0
|
||||
// ip address 192.0.2.253 255.255.255.0
|
||||
// !
|
||||
|
||||
|
||||
// vlans in pix6 config format are not parsed
|
||||
|
||||
intrface : INTRFACE in:WORD
|
||||
{
|
||||
importer->newInterface( in->getText() );
|
||||
*dbg << in->getLine() << ":"
|
||||
<< " INTRFACE: " << in->getText() << std::endl;
|
||||
consumeUntil(NEWLINE);
|
||||
}
|
||||
;
|
||||
|
||||
vlan_interface : VLAN vlan_id:INT_CONST
|
||||
{
|
||||
importer->setInterfaceVlanId(vlan_id->getText());
|
||||
*dbg << " VLAN: " << vlan_id->getText() << std::endl;
|
||||
}
|
||||
NEWLINE
|
||||
;
|
||||
|
||||
nameif : NAMEIF in:WORD
|
||||
sec_level : SEC_LEVEL sec_level:INT_CONST
|
||||
{
|
||||
importer->addInterfaceLabel( in->getText() );
|
||||
*dbg << in->getLine() << ":"
|
||||
<< " INTRFACE LABEL: " << in->getText() << std::endl;
|
||||
importer->setInterfaceSecurityLevel(sec_level->getText());
|
||||
*dbg << "SEC_LEVEL: " << sec_level->getText() << std::endl;
|
||||
}
|
||||
NEWLINE
|
||||
;
|
||||
|
||||
nameif : NAMEIF phys_intf:WORD (NEWLINE | intf_label:WORD sec_level:WORD NEWLINE)
|
||||
{
|
||||
std::string label = (intf_label) ? intf_label->getText() : "";
|
||||
std::string seclevel = (sec_level) ? sec_level->getText() : "";
|
||||
importer->setInterfaceParametes(phys_intf->getText(), label, seclevel);
|
||||
*dbg << " NAMEIF: "
|
||||
<< phys_intf->getText() << label << seclevel << std::endl;
|
||||
}
|
||||
;
|
||||
|
||||
// interface description
|
||||
// Use it for comment
|
||||
description : DESCRIPTION
|
||||
@ -445,7 +505,7 @@ description : DESCRIPTION
|
||||
descr += LT(1)->getText() + " ";
|
||||
consume();
|
||||
}
|
||||
importer->addInterfaceComment( descr );
|
||||
importer->setInterfaceComment( descr );
|
||||
*dbg << " DESCRIPTION " << descr << std::endl;
|
||||
//consumeUntil(NEWLINE);
|
||||
}
|
||||
@ -488,30 +548,74 @@ interface_known_commands :
|
||||
) NEWLINE ;
|
||||
|
||||
|
||||
// need this because "ospf", "bgp" and others are a known tokens
|
||||
// (needed for protocol and ports in access lists) and "ip ospf" and
|
||||
// similar are legit interface commands
|
||||
// Interface IP address.
|
||||
//
|
||||
// **************** PIX 6
|
||||
//
|
||||
// ip address outside dhcp setroute retry 10
|
||||
// ip address inside 10.3.14.202 255.255.255.0
|
||||
//
|
||||
// **************** PIX 7
|
||||
//
|
||||
// interface Ethernet0.101
|
||||
// vlan 101
|
||||
// nameif outside
|
||||
// security-level 0
|
||||
// ip address 192.0.2.253 255.255.255.0
|
||||
// !
|
||||
//
|
||||
// interface Vlan1
|
||||
// nameif inside
|
||||
// security-level 100
|
||||
// ip address dhcp setroute
|
||||
// !
|
||||
|
||||
// ignore_interface_commands : (BGP | OSPF | DHCP)
|
||||
// {
|
||||
// consumeUntil(NEWLINE);
|
||||
// }
|
||||
// ;
|
||||
intf_address : ADDRESS (v6_ip_address | v7_ip_address) ;
|
||||
|
||||
intf_address : ADDRESS a:IPV4 m:IPV4 (s:SECONDARY)?
|
||||
v6_ip_address : lbl:WORD (dhcp:DHCP | (a:IPV4 m:IPV4))
|
||||
{
|
||||
importer->addInterfaceAddress(a->getText(), m->getText());
|
||||
std::string label = lbl->getText();
|
||||
std::string addr;
|
||||
if (a) addr = a->getText();
|
||||
if (dhcp) addr = dhcp->getText();
|
||||
std::string netm;
|
||||
if (m) netm = m->getText();
|
||||
importer->addInterfaceAddress(label, addr, netm);
|
||||
*dbg << LT(1)->getLine() << ":"
|
||||
<< " INTRFACE ADDRESS: " << a->getText()
|
||||
<< "/" << m->getText() << " ";
|
||||
<< " INTRFACE ADDRESS: " << addr << "/" << netm << std::endl;
|
||||
}
|
||||
NEWLINE
|
||||
;
|
||||
|
||||
v7_ip_address : v7_dhcp_address | v7_static_address;
|
||||
|
||||
v7_dhcp_address : dhcp:DHCP (SETROUTE) ?
|
||||
{
|
||||
std::string addr = dhcp->getText();
|
||||
importer->addInterfaceAddress(addr, "");
|
||||
*dbg << LT(1)->getLine() << ":"
|
||||
<< " INTRFACE ADDRESS: " << addr << std::endl;
|
||||
}
|
||||
NEWLINE
|
||||
;
|
||||
|
||||
v7_static_address : a:IPV4 m:IPV4 (s:SECONDARY)?
|
||||
{
|
||||
std::string addr = a->getText();
|
||||
std::string netm = m->getText();
|
||||
importer->addInterfaceAddress(addr, netm);
|
||||
*dbg << LT(1)->getLine() << ":"
|
||||
<< " INTRFACE ADDRESS: " << addr << "/" << netm << std::endl;
|
||||
if (s)
|
||||
{
|
||||
*dbg << s->getText();
|
||||
}
|
||||
*dbg << std::endl;
|
||||
}
|
||||
NEWLINE
|
||||
;
|
||||
|
||||
|
||||
switchport : SWITCHPORT ACCESS VLAN vlan_num:WORD
|
||||
{
|
||||
}
|
||||
@ -582,6 +686,7 @@ tokens
|
||||
SWITCHPORT = "switchport";
|
||||
ACCESS = "access";
|
||||
NAMEIF = "nameif";
|
||||
SEC_LEVEL = "security-level";
|
||||
|
||||
ACCESS_LIST = "access-list";
|
||||
ACCESS_GROUP = "access-group";
|
||||
@ -594,6 +699,9 @@ tokens
|
||||
PERMIT = "permit";
|
||||
DENY = "deny";
|
||||
|
||||
DHCP = "dhcp";
|
||||
SETROUTE = "setroute";
|
||||
|
||||
// protocols for 'permit' and 'deny' commands
|
||||
|
||||
IP = "ip";
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user