mirror of
https://github.com/fwbuilder/fwbuilder
synced 2026-03-21 02:37:16 +01:00
see #1963 move printing of object-group definitions to NamedObjectManager::getNamedObjectsDefinitions(); moved printing of object-groups to class NamedObjectManager; generation of the "clear" commands is now broken since they appear AFTER definitions of named objects and object groups
This commit is contained in:
parent
1452861a91
commit
72ec86afbe
@ -47,7 +47,7 @@ using namespace fwcompiler;
|
||||
const char *ASA8ObjectGroup::TYPENAME={"ASA8ObjectGroup"};
|
||||
|
||||
|
||||
string ASA8ObjectGroup::groupMemberToString(
|
||||
QString ASA8ObjectGroup::groupMemberToString(
|
||||
FWObject *obj, NamedObjectManager *named_object_manager)
|
||||
throw(libfwbuilder::FWException)
|
||||
{
|
||||
@ -57,7 +57,7 @@ string ASA8ObjectGroup::groupMemberToString(
|
||||
if (named_object)
|
||||
{
|
||||
return named_object->getCommandWhenObjectGroupMember(
|
||||
named_object_manager->fw).toStdString();
|
||||
named_object_manager->fw);
|
||||
}
|
||||
|
||||
return PIXObjectGroup::groupMemberToString(obj, named_object_manager);
|
||||
|
||||
@ -42,7 +42,7 @@ public:
|
||||
//virtual std::string getObjectGroupHeader();
|
||||
//virtual std::string getSrvTypeName();
|
||||
|
||||
virtual std::string groupMemberToString(
|
||||
virtual QString groupMemberToString(
|
||||
libfwbuilder::FWObject *obj, NamedObjectManager *named_obj_manager)
|
||||
throw(libfwbuilder::FWException);
|
||||
|
||||
|
||||
@ -212,13 +212,13 @@ string BaseObjectGroup::getObjectGroupClass()
|
||||
return "";
|
||||
}
|
||||
|
||||
string BaseObjectGroup::groupMemberToString(FWObject*, NamedObjectManager*)
|
||||
QString BaseObjectGroup::groupMemberToString(FWObject*, NamedObjectManager*)
|
||||
throw(libfwbuilder::FWException)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
string BaseObjectGroup::toString(NamedObjectManager *nm) throw(FWException)
|
||||
QString BaseObjectGroup::toString(NamedObjectManager *nm) throw(FWException)
|
||||
{
|
||||
QStringList res;
|
||||
if (this->size()==0) return "";
|
||||
@ -226,11 +226,11 @@ string BaseObjectGroup::toString(NamedObjectManager *nm) throw(FWException)
|
||||
for (FWObject::iterator i1=this->begin(); i1!=this->end(); ++i1)
|
||||
{
|
||||
res << QString(" %1").arg(
|
||||
groupMemberToString(FWReference::getObject(*i1), nm).c_str());
|
||||
groupMemberToString(FWReference::getObject(*i1), nm));
|
||||
}
|
||||
res << getObjectGroupFooter().c_str();
|
||||
res << "";
|
||||
return res.join("\n").toStdString();
|
||||
return res.join("\n");
|
||||
}
|
||||
|
||||
string BaseObjectGroup::getObjectGroupHeader()
|
||||
|
||||
@ -88,11 +88,11 @@ public:
|
||||
virtual std::string getObjectGroupHeader();
|
||||
virtual std::string getObjectGroupFooter();
|
||||
|
||||
virtual std::string groupMemberToString(
|
||||
virtual QString groupMemberToString(
|
||||
libfwbuilder::FWObject *obj, NamedObjectManager *named_obj_manager)
|
||||
throw(libfwbuilder::FWException);
|
||||
|
||||
virtual std::string toString(NamedObjectManager *named_obj_manager)
|
||||
virtual QString toString(NamedObjectManager *named_obj_manager)
|
||||
throw(libfwbuilder::FWException);
|
||||
};
|
||||
|
||||
|
||||
@ -45,7 +45,7 @@ using namespace std;
|
||||
|
||||
const char *IOSObjectGroup::TYPENAME={"IOSObjectGroup"};
|
||||
|
||||
string IOSObjectGroup::groupMemberToString(FWObject *obj,
|
||||
QString IOSObjectGroup::groupMemberToString(FWObject *obj,
|
||||
NamedObjectManager*)
|
||||
throw(libfwbuilder::FWException)
|
||||
{
|
||||
@ -120,7 +120,7 @@ string IOSObjectGroup::groupMemberToString(FWObject *obj,
|
||||
default:
|
||||
throw FWException("Unknown object group type");
|
||||
}
|
||||
return ostr.str();
|
||||
return ostr.str().c_str();
|
||||
}
|
||||
|
||||
string IOSObjectGroup::getObjectGroupClass()
|
||||
|
||||
@ -42,7 +42,7 @@ public:
|
||||
virtual std::string getObjectGroupHeader();
|
||||
virtual std::string getObjectGroupFooter();
|
||||
|
||||
virtual std::string groupMemberToString(
|
||||
virtual QString groupMemberToString(
|
||||
libfwbuilder::FWObject *obj, NamedObjectManager *named_obj_manager)
|
||||
throw(libfwbuilder::FWException);
|
||||
|
||||
|
||||
@ -419,8 +419,8 @@ void NATCompiler_asa8::compile()
|
||||
add( new PrintClearCommands("Clear ACLs" ));
|
||||
add( new createNamedObjectsForNAT(
|
||||
"create named objects", named_objects_manager));
|
||||
add( new printObjectGroups(
|
||||
"definitions of object groups", named_objects_manager));
|
||||
//add( new printObjectGroups(
|
||||
// "definitions of object groups", named_objects_manager));
|
||||
add( new PrintRule("generate PIX code" ));
|
||||
add( new storeProcessedRules ("store processed rules" ));
|
||||
add( new simplePrintProgress ());
|
||||
|
||||
@ -107,6 +107,19 @@ string NamedObjectManager::getNamedObjectsDefinitions()
|
||||
if (nobj==NULL) continue;
|
||||
output << nobj->getCommand(fw);
|
||||
}
|
||||
|
||||
output << "";
|
||||
|
||||
for (FWObject::iterator i=object_groups->begin(); i!=object_groups->end(); ++i)
|
||||
{
|
||||
BaseObjectGroup *og = dynamic_cast<BaseObjectGroup*>(*i);
|
||||
assert(og!=NULL);
|
||||
if (og->size()==0) continue;
|
||||
|
||||
output << "";
|
||||
output << og->toString(this);
|
||||
}
|
||||
|
||||
return output.join("\n").toUtf8().constData();
|
||||
}
|
||||
|
||||
@ -249,30 +262,6 @@ void CreateObjectGroupsForTSrc::packObjects(RuleElement *re,
|
||||
}
|
||||
}
|
||||
|
||||
bool printObjectGroups::processNext()
|
||||
{
|
||||
slurp();
|
||||
if (tmp_queue.size()==0) return false;
|
||||
|
||||
for (FWObject::iterator i=named_objects_manager->object_groups->begin();
|
||||
i!=named_objects_manager->object_groups->end(); ++i)
|
||||
{
|
||||
BaseObjectGroup *og = dynamic_cast<BaseObjectGroup*>(*i);
|
||||
assert(og!=NULL);
|
||||
if (og->size()==0) continue;
|
||||
compiler->output << endl;
|
||||
try
|
||||
{
|
||||
compiler->output << og->toString(named_objects_manager);
|
||||
} catch (FWException &ex)
|
||||
{
|
||||
compiler->abort(ex.toString());
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void createNamedObjectsCommon::printObjectsForRE(FWObject *re)
|
||||
{
|
||||
if (RuleElement::cast(re)!=NULL && RuleElement::cast(re)->isAny()) return;
|
||||
|
||||
@ -151,24 +151,6 @@ public:
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* this processor accumulates all rules fed to it by previous
|
||||
* processors, then prints all object groups and feeds all
|
||||
* rules to the next processor. Usually this processor is in
|
||||
* chain right before PrintRules.
|
||||
*
|
||||
*/
|
||||
class printObjectGroups : public BasicRuleProcessor
|
||||
{
|
||||
NamedObjectManager *named_objects_manager;
|
||||
public:
|
||||
printObjectGroups(const std::string &n,
|
||||
NamedObjectManager *_m) : BasicRuleProcessor(n)
|
||||
{
|
||||
named_objects_manager = _m;
|
||||
}
|
||||
virtual bool processNext();
|
||||
};
|
||||
|
||||
class createNamedObjectsCommon : public BasicRuleProcessor
|
||||
{
|
||||
|
||||
@ -44,7 +44,7 @@ using namespace std;
|
||||
const char *PIXObjectGroup::TYPENAME={"PIXObjectGroup"};
|
||||
|
||||
|
||||
string PIXObjectGroup::groupMemberToString(FWObject *obj,
|
||||
QString PIXObjectGroup::groupMemberToString(FWObject *obj,
|
||||
NamedObjectManager*)
|
||||
throw(libfwbuilder::FWException)
|
||||
{
|
||||
@ -65,7 +65,7 @@ string PIXObjectGroup::groupMemberToString(FWObject *obj,
|
||||
ostr << "host ";
|
||||
ostr << addr->toString() << " ";
|
||||
}
|
||||
return ostr.str();
|
||||
return ostr.str().c_str();
|
||||
|
||||
} else
|
||||
{
|
||||
@ -76,7 +76,7 @@ string PIXObjectGroup::groupMemberToString(FWObject *obj,
|
||||
Service *s=Service::cast(obj);
|
||||
assert(s!=NULL);
|
||||
ostr << s->getProtocolName();
|
||||
return ostr.str();
|
||||
return ostr.str().c_str();
|
||||
}
|
||||
|
||||
if (ICMPService::isA(obj))
|
||||
@ -88,7 +88,7 @@ string PIXObjectGroup::groupMemberToString(FWObject *obj,
|
||||
ostr << "any";
|
||||
else
|
||||
ostr << s->getInt("type");
|
||||
return ostr.str();
|
||||
return ostr.str().c_str();
|
||||
}
|
||||
|
||||
if (TCPService::isA(obj) || UDPService::isA(obj))
|
||||
@ -108,7 +108,7 @@ string PIXObjectGroup::groupMemberToString(FWObject *obj,
|
||||
else ostr << "range " << rs << " " << re;
|
||||
}
|
||||
else ostr << "range 0 65535";
|
||||
return ostr.str();
|
||||
return ostr.str().c_str();
|
||||
}
|
||||
|
||||
QString err("PIXObjectGroup: Unsupported object '%1' found in "
|
||||
@ -116,7 +116,7 @@ string PIXObjectGroup::groupMemberToString(FWObject *obj,
|
||||
throw FWException(err.arg(obj->getName().c_str()).toStdString());
|
||||
}
|
||||
|
||||
return ostr.str();
|
||||
return ostr.str().c_str();
|
||||
}
|
||||
|
||||
string PIXObjectGroup::getObjectGroupClass()
|
||||
|
||||
@ -41,7 +41,7 @@ public:
|
||||
virtual std::string getObjectGroupHeader();
|
||||
virtual std::string getObjectGroupFooter();
|
||||
|
||||
virtual std::string groupMemberToString(
|
||||
virtual QString groupMemberToString(
|
||||
libfwbuilder::FWObject *obj, NamedObjectManager *named_obj_manager)
|
||||
throw(libfwbuilder::FWException);
|
||||
};
|
||||
|
||||
@ -473,8 +473,8 @@ void PolicyCompiler_iosacl::compile()
|
||||
add( new createNewCompilerPass("Creating object groups and ACLs"));
|
||||
|
||||
add( new printClearCommands("clear commands for object-groups and ACLs"));
|
||||
add( new printObjectGroups(
|
||||
"generate code for object groups", named_objects_manager));
|
||||
//add( new printObjectGroups(
|
||||
// "generate code for object groups", named_objects_manager));
|
||||
|
||||
// This processor prints each ACL separately in one block.
|
||||
// It adds comments inside to denote original rules.
|
||||
|
||||
@ -660,8 +660,8 @@ void PolicyCompiler_pix::compile()
|
||||
"create named objects", named_objects_manager));
|
||||
}
|
||||
|
||||
add( new printObjectGroups(
|
||||
"generate code for object groups", named_objects_manager));
|
||||
//add( new printObjectGroups(
|
||||
// "generate code for object groups", named_objects_manager));
|
||||
|
||||
add( new PrintRule("generate code for ACLs"));
|
||||
add( new simplePrintProgress());
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user