1
0
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:
Vadim Kurland 2011-01-20 15:22:55 -08:00
parent 1452861a91
commit 72ec86afbe
13 changed files with 38 additions and 67 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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()

View File

@ -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);
};

View File

@ -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()

View File

@ -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);

View File

@ -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 ());

View File

@ -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;

View File

@ -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
{

View File

@ -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()

View File

@ -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);
};

View File

@ -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.

View File

@ -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());