diff --git a/client/devicegroupmodel.cpp b/client/devicegroupmodel.cpp index 16526dc..969524b 100644 --- a/client/devicegroupmodel.cpp +++ b/client/devicegroupmodel.cpp @@ -22,12 +22,17 @@ along with this program. If not, see #include "port.h" #include "emulproto.pb.h" +#include "uint128.h" + +#include enum { kName, kVlanCount, kDeviceCount, // Across all vlans kIp, + kIp4Address, + kIp6Address, kFieldCount }; @@ -35,7 +40,9 @@ static QStringList columns_ = QStringList() << "Name" << "Vlans" << "Devices" - << "IP Stack"; + << "IP Stack" + << "IPv4 Address" + << "IPv6 Address"; DeviceGroupModel::DeviceGroupModel(QObject *parent) : QAbstractTableModel(parent) @@ -145,7 +152,39 @@ QVariant DeviceGroupModel::data(const QModelIndex &index, int role) const } return QVariant(); + case kIp4Address: + switch (role) { + case Qt::DisplayRole: + if (devGrp->HasExtension(OstEmul::ip4)) + return QHostAddress( + devGrp->MutableExtension(OstEmul::ip4) + ->address()).toString(); + else + return QString("--"); + default: + break; + } + return QVariant(); + + case kIp6Address: + switch (role) { + case Qt::DisplayRole: + if (devGrp->HasExtension(OstEmul::ip6)) { + OstEmul::Ip6Address ip = devGrp->MutableExtension( + OstEmul::ip6)->address(); + return QHostAddress( + UInt128(ip.hi(), ip.lo()).toArray()) + .toString(); + } + else + return QString("--"); + default: + break; + } + return QVariant(); + default: + Q_ASSERT(false); // unreachable! break; }