diff --git a/src/libgui/ObjectManipulator_tree_ops.cpp b/src/libgui/ObjectManipulator_tree_ops.cpp index a8a04d345..8f3b72584 100644 --- a/src/libgui/ObjectManipulator_tree_ops.cpp +++ b/src/libgui/ObjectManipulator_tree_ops.cpp @@ -168,6 +168,7 @@ QString ObjectManipulator::getTreeLabel(FWObject *obj, int col) case 1: return FWObjectPropertiesFactory::getObjectPropertiesBrief(obj); } + return ""; } ObjectTreeViewItem* ObjectManipulator::insertObject(ObjectTreeViewItem *itm, diff --git a/src/libgui/newClusterDialog_create.cpp b/src/libgui/newClusterDialog_create.cpp index 866c2d97d..07494a1f4 100644 --- a/src/libgui/newClusterDialog_create.cpp +++ b/src/libgui/newClusterDialog_create.cpp @@ -200,7 +200,13 @@ void newClusterDialog::createNewCluster() setDefaultFailoverGroupAttributes(failover_grp); } - if (fwbdebug) qDebug() << "newClusterDialog::createNewCluster() checkpoint 3"; + // Set correct type of the state sync group (the StateSyncGroup object is + // created in Cluster::init() + + FWObject *state_sync_members = + ncl->getFirstByType(StateSyncClusterGroup::TYPENAME); + setDefaultStateSyncGroupAttributes( + StateSyncClusterGroup::cast(state_sync_members)); // Copy rule sets if requested Firewall *source = NULL; diff --git a/src/libgui/platforms.cpp b/src/libgui/platforms.cpp index 0f59d6dc3..8f90f9a5f 100644 --- a/src/libgui/platforms.cpp +++ b/src/libgui/platforms.cpp @@ -44,6 +44,8 @@ #include "fwbuilder/Resources.h" #include "fwbuilder/Rule.h" #include "fwbuilder/Policy.h" +#include +#include #include #include @@ -1003,6 +1005,25 @@ void _repackStringList(list &list1, list &list2) } } +void setDefaultStateSyncGroupAttributes(StateSyncClusterGroup *grp) +{ + FWObject *p = grp; + while (p && Cluster::cast(p)==NULL) p = p->getParent(); + assert(p != NULL); + Cluster *cluster = Cluster::cast(p); + Resources *os_res = Resources::os_res[cluster->getStr("host_OS")]; + assert(os_res != NULL); + + list protocols; + os_res->getResourceStrList("/FWBuilderResources/Target/protocols/state_sync", + protocols); + + QStringList protocol_names = QString(protocols.front().c_str()).split(","); + + grp->setName(protocol_names[1].toStdString()); + grp->setStr("type", protocol_names[0].toStdString()); +} + void setDefaultFailoverGroupAttributes(FailoverClusterGroup *grp) { FWObject *p = grp; diff --git a/src/libgui/platforms.h b/src/libgui/platforms.h index f56be4b1a..1b69d8ac7 100644 --- a/src/libgui/platforms.h +++ b/src/libgui/platforms.h @@ -38,7 +38,6 @@ #include #include -#include namespace libfwbuilder @@ -46,6 +45,8 @@ namespace libfwbuilder class FWOptions; class Firewall; class PolicyRule; + class FailoverClusterGroup; + class StateSyncClusterGroup; }; void init_platforms(); @@ -57,6 +58,7 @@ bool isDefaultNATRuleOptions(libfwbuilder::FWOptions *opt); bool isDefaultRoutingRuleOptions(libfwbuilder::FWOptions *opt); void setDefaultFailoverGroupAttributes(libfwbuilder::FailoverClusterGroup *grp); +void setDefaultStateSyncGroupAttributes(libfwbuilder::StateSyncClusterGroup *grp); // using list of pairs instead of a map or QMap because maps are dictionaries // and do not preserve order of elements