UIWizardNewVMPage1::UIWizardNewVMPage1(const QString &strGroup) : m_strGroup(strGroup) { CHost host = vboxGlobal().host(); m_fSupportsHWVirtEx = host.GetProcessorFeature(KProcessorFeature_HWVirtEx); m_fSupportsLongMode = host.GetProcessorFeature(KProcessorFeature_LongMode); }
void UIHostNetworkManagerWidget::loadHostNetworks() { /* Clear tree first of all: */ m_pTreeWidget->clear(); /* Get host for further activities: */ const CHost comHost = vboxGlobal().host(); /* Get interfaces for further activities: */ const QVector<CHostNetworkInterface> interfaces = comHost.GetNetworkInterfaces(); /* Show error message if necessary: */ if (!comHost.isOk()) msgCenter().cannotAcquireHostNetworkInterfaces(comHost, this); else { /* For each host-only interface => load it to the tree: */ foreach (const CHostNetworkInterface &comInterface, interfaces) if (comInterface.GetInterfaceType() == KHostNetworkInterfaceType_HostOnly) { UIDataHostNetwork data; loadHostNetwork(comInterface, data); createItemForNetworkHost(data, false); } /* Choose the 1st item as current initially: */ m_pTreeWidget->setCurrentItem(m_pTreeWidget->topLevelItem(0)); sltHandleCurrentItemChange(); /* Adjust tree-widget: */ sltAdjustTreeWidget(); } }
int CTCPClient::ConnectServer(CHost &server, int port) { if (server.naddr() < 1) return -1; for (unsigned i=0; i<server.naddr(); i++) { #ifdef _DEBUG cerr<<"connect try: "<<i<<endl; #endif //_DEBUG string addr = server.address(); if (addr.empty()) throw runtime_error("Empty net_addr string from DNS."); #ifdef _DEBUG time_t start = time(0); #endif //_DEBUG if (ConnectServer(addr.c_str(), addr.size(), port)==0) { #ifdef _DEBUG cerr<<"Use "<<time(0)-start<<" seconds, Success!"<<endl; #endif //_DEBUG return 0; } server.next(); #ifdef _DEBUG cerr<<"Use "<<time(0)-start<<" seconds, Failed!"<<endl; #endif //_DEBUG } return -2; }
/* Adds new network interface: */ void UIGlobalSettingsNetwork::sltAddInterface() { /* Prepare useful variables: */ CVirtualBox vbox = vboxGlobal().virtualBox(); CHost host = vboxGlobal().host(); /* Create new host-only interface: */ CHostNetworkInterface iface; CProgress progress = host.CreateHostOnlyNetworkInterface(iface); if (host.isOk()) { msgCenter().showModalProgressDialog(progress, tr("Networking"), ":/nw_32px.png", this, true, 0); if (progress.GetResultCode() == 0) { /* Create DHCP server: */ CDHCPServer dhcp = vbox.FindDHCPServerByNetworkName(iface.GetNetworkName()); if (dhcp.isNull()) { vbox.CreateDHCPServer(iface.GetNetworkName()); dhcp = vbox.FindDHCPServerByNetworkName(iface.GetNetworkName()); } AssertMsg(!dhcp.isNull(), ("DHCP server creation failed!\n")); /* Append cache with new item: */ appendCacheItem(iface); /* Append list with new item: */ appendListItem(m_cache.m_items.last(), true); } else msgCenter().cannotCreateHostInterface(progress, this); } else msgCenter().cannotCreateHostInterface(host, this); }
bool CTCPSocket_Impl::Open(const CHost &host) { char ip[24]; // 127.255.255.255:65555 memset(&ip, 0, sizeof(ip)); sprintf(ip, "%d.%d.%d.%d", NIPQUAD(ntohl(host.getIp()))); this->socket = NetOpenTCP(ip, host.getPort()); return this->socket != INVALID_SOCKET; }
void CEtherArpHandler::handle(CSmartPtr<CMsgQueue>& queue) { LOG_INFO_FMT("%s recv new msg ..., queue size = %lu", toString().c_str(), queue->size()); CSmartPtr<CMsg> msg; while (queue->try_pop(msg)) { INT4 sockfd = msg->getSockfd(); const CSmartPtr<CSwitch>& srcSw = CServer::getInstance()->getSwitchMgr()->findSwBySockFd(sockfd); // 获取packetin 信息 packet_in_info_t* packetIn = msg->getPacketIn(); arp_t* pkt = (arp_t*)packetIn->data; // 保存源主机信息 CHost* srcHost = CHostMgr::getInstance()->addHost(srcSw, 0, packetIn->inport, pkt->sendmac, pkt->sendip); // 查找目标主机 CHost* dstHost = CHostMgr::getInstance()->findHostByIp(pkt->targetip); // 如果源主机和目标主机都存在 if ((NULL != srcHost) && (NULL != dstHost)) { arp_t arp_pkt; // 如果是Arp Request if (isRequest(pkt)) { LOG_INFO("Create Arp Reply"); // 创建Arp Reply回应报文并且转发 create_arp_reply_pkt(&arp_pkt, srcHost, dstHost); forward(srcSw, srcHost->getPortNo(), sizeof(arp_pkt), &arp_pkt); } // 如果是Arp Reply if (isReply(pkt)) { LOG_INFO("forward Arp Reply"); // 转发Arp Reply回应报文 forward(dstHost->getSw(), dstHost->getPortNo(), sizeof(arp_pkt), &arp_pkt); } } // 如果不存在 else { LOG_INFO("flood Arp request"); // 将这个包广播 // flood(packetIn); } } }
void UIHostNetworkManagerWidget::sltCreateHostNetwork() { /* Get host for further activities: */ CHost comHost = vboxGlobal().host(); /* Create interface: */ CHostNetworkInterface comInterface; CProgress progress = comHost.CreateHostOnlyNetworkInterface(comInterface); /* Show error message if necessary: */ if (!comHost.isOk() || progress.isNull()) msgCenter().cannotCreateHostNetworkInterface(comHost, this); else { /* Show interface creation progress: */ msgCenter().showModalProgressDialog(progress, UIHostNetworkManager::tr("Adding network..."), ":/progress_network_interface_90px.png", this, 0); /* Show error message if necessary: */ if (!progress.isOk() || progress.GetResultCode() != 0) msgCenter().cannotCreateHostNetworkInterface(progress, this); else { /* Get network name for further activities: */ const QString strNetworkName = comInterface.GetNetworkName(); /* Show error message if necessary: */ if (!comInterface.isOk()) msgCenter().cannotAcquireHostNetworkInterfaceParameter(comInterface, this); else { /* Get VBox for further activities: */ CVirtualBox comVBox = vboxGlobal().virtualBox(); /* Find corresponding DHCP server (create if necessary): */ CDHCPServer comServer = comVBox.FindDHCPServerByNetworkName(strNetworkName); if (!comVBox.isOk() || comServer.isNull()) comServer = comVBox.CreateDHCPServer(strNetworkName); /* Show error message if necessary: */ if (!comVBox.isOk() || comServer.isNull()) msgCenter().cannotCreateDHCPServer(comVBox, strNetworkName, this); } /* Add interface to the tree: */ UIDataHostNetwork data; loadHostNetwork(comInterface, data); createItemForNetworkHost(data, true); /* Adjust tree-widget: */ sltAdjustTreeWidget(); } } }
/* Removes selected network interface: */ void UIGlobalSettingsNetwork::sltDelInterface() { /* Get interface item: */ UIHostInterfaceItem *pItem = static_cast<UIHostInterfaceItem*>(m_pInterfacesTree->currentItem()); AssertMsg(pItem, ("Current item should present!\n")); /* Get interface name: */ QString strInterfaceName(pItem->name()); /* Asking user about deleting selected network interface: */ if (msgCenter().confirmDeletingHostInterface(strInterfaceName, this) == QIMessageBox::Cancel) return; /* Prepare useful variables: */ CVirtualBox vbox = vboxGlobal().virtualBox(); CHost host = vboxGlobal().host(); /* Find corresponding interface: */ const CHostNetworkInterface &iface = host.FindHostNetworkInterfaceByName(strInterfaceName); /* Remove DHCP server first: */ CDHCPServer dhcp = vboxGlobal().virtualBox().FindDHCPServerByNetworkName(iface.GetNetworkName()); if (!dhcp.isNull()) vbox.RemoveDHCPServer(dhcp); /* Remove interface finally: */ CProgress progress = host.RemoveHostOnlyNetworkInterface(iface.GetId()); if (host.isOk()) { msgCenter().showModalProgressDialog(progress, tr("Networking"), ":/nw_32px.png", this, true, 0); if (progress.GetResultCode() == 0) { /* Remove list item: */ removeListItem(pItem); /* Remove cache item: */ removeCacheItem(strInterfaceName); } else msgCenter().cannotRemoveHostInterface(progress, iface, this); } else msgCenter().cannotRemoveHostInterface(host, iface, this); }
VBoxOSTypeSelectorWidget::VBoxOSTypeSelectorWidget (QWidget *aParent) : QIWithRetranslateUI <QWidget> (aParent) , mTxFamilyName (new QLabel (this)) , mTxTypeName (new QLabel (this)) , mPxTypeIcon (new QLabel (this)) , mCbFamily (new QComboBox (this)) , mCbType (new QComboBox (this)) , mLayoutPosition (-1) , mLayoutActivated (false) { /* Register CGuestOSType type */ qRegisterMetaType<CGuestOSType>(); /* Setup widgets */ mTxFamilyName->setAlignment (Qt::AlignRight); mTxTypeName->setAlignment (Qt::AlignRight); mTxFamilyName->setBuddy (mCbFamily); mTxTypeName->setBuddy (mCbType); mTxFamilyName->setSizePolicy (QSizePolicy::Minimum, QSizePolicy::Fixed); mTxTypeName->setSizePolicy (QSizePolicy::Minimum, QSizePolicy::Fixed); mCbFamily->setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Fixed); mCbType->setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Fixed); mPxTypeIcon->setFixedSize (32, 32); /* Check if host supports (AMD-V or VT-x) and long mode */ CHost host = vboxGlobal().host(); m_fSupportsHWVirtEx = host.GetProcessorFeature(KProcessorFeature_HWVirtEx); m_fSupportsLongMode = host.GetProcessorFeature(KProcessorFeature_LongMode); /* Fill OS family selector */ int maximumSize = 0; QFontMetrics fm (mCbFamily->font()); QList <CGuestOSType> families (vboxGlobal().vmGuestOSFamilyList()); for (int i = 0; i < families.size(); ++ i) { /* Search for maximum length among family names */ QString familyName (families [i].GetFamilyDescription()); maximumSize = maximumSize < fm.width (familyName) ? fm.width (familyName) : maximumSize; mCbFamily->insertItem (i, familyName); mCbFamily->setItemData (i, families [i].GetFamilyId(), RoleTypeID); /* Search for maximum length among type names */ QList <CGuestOSType> types (vboxGlobal().vmGuestOSTypeList (families [i].GetFamilyId())); for (int j = 0; j < types.size(); ++ j) { QString typeName (types [j].GetDescription()); maximumSize = maximumSize < fm.width (typeName) ? fm.width (typeName) : maximumSize; } } mCbFamily->setCurrentIndex (0); onFamilyChanged (mCbFamily->currentIndex()); /* Set the minimum size for OS Type & Family selectors. */ QStyleOptionComboBox options; options.initFrom (mCbFamily); QSize size (style()->sizeFromContents (QStyle::CT_ComboBox, &options, QSize (maximumSize, fm.height()), mCbFamily)); mCbFamily->setMinimumWidth (size.width()); mCbType->setMinimumWidth (size.width()); /* Slots connections */ connect (mCbFamily, SIGNAL (currentIndexChanged (int)), this, SLOT (onFamilyChanged (int))); connect (mCbType, SIGNAL (currentIndexChanged (int)), this, SLOT (onTypeChanged (int))); /* Retranslate */ retranslateUi(); }
bool Connect(const CHost &host) { return NetConnectTCP(socket, host.getIp(), host.getPort()) != -1; }
bool Open(const CHost &host) { socket = NetOpenUDP(host.getIp(), host.getPort()); return socket != INVALID_SOCKET; }
void UIHostNetworkManagerWidget::sltHandleItemChange(QTreeWidgetItem *pItem) { /* Get network item: */ UIItemHostNetwork *pChangedItem = static_cast<UIItemHostNetwork*>(pItem); AssertMsgReturnVoid(pChangedItem, ("Changed item must not be null!\n")); /* Get item data: */ UIDataHostNetwork oldData = *pChangedItem; /* Make sure dhcp server status changed: */ if ( ( oldData.m_dhcpserver.m_fEnabled && pChangedItem->checkState(Column_DHCP) == Qt::Checked) || ( !oldData.m_dhcpserver.m_fEnabled && pChangedItem->checkState(Column_DHCP) == Qt::Unchecked)) return; /* Get host for further activities: */ CHost comHost = vboxGlobal().host(); /* Find corresponding interface: */ CHostNetworkInterface comInterface = comHost.FindHostNetworkInterfaceByName(oldData.m_interface.m_strName); /* Show error message if necessary: */ if (!comHost.isOk() || comInterface.isNull()) msgCenter().cannotFindHostNetworkInterface(comHost, oldData.m_interface.m_strName, this); else { /* Get network name for further activities: */ const QString strNetworkName = comInterface.GetNetworkName(); /* Show error message if necessary: */ if (!comInterface.isOk()) msgCenter().cannotAcquireHostNetworkInterfaceParameter(comInterface, this); else { /* Get VBox for further activities: */ CVirtualBox comVBox = vboxGlobal().virtualBox(); /* Find corresponding DHCP server (create if necessary): */ CDHCPServer comServer = comVBox.FindDHCPServerByNetworkName(strNetworkName); if (!comVBox.isOk() || comServer.isNull()) comServer = comVBox.CreateDHCPServer(strNetworkName); /* Show error message if necessary: */ if (!comVBox.isOk() || comServer.isNull()) msgCenter().cannotCreateDHCPServer(comVBox, strNetworkName, this); else { /* Save whether DHCP server is enabled: */ if (comServer.isOk()) comServer.SetEnabled(!oldData.m_dhcpserver.m_fEnabled); /* Save default DHCP server configuration if current is invalid: */ if ( comServer.isOk() && !oldData.m_dhcpserver.m_fEnabled && ( oldData.m_dhcpserver.m_strAddress == "0.0.0.0" || oldData.m_dhcpserver.m_strMask == "0.0.0.0" || oldData.m_dhcpserver.m_strLowerAddress == "0.0.0.0" || oldData.m_dhcpserver.m_strUpperAddress == "0.0.0.0")) { const QStringList &proposal = makeDhcpServerProposal(oldData.m_interface.m_strAddress, oldData.m_interface.m_strMask); comServer.SetConfiguration(proposal.at(0), proposal.at(1), proposal.at(2), proposal.at(3)); } /* Show error message if necessary: */ if (!comServer.isOk()) msgCenter().cannotSaveDHCPServerParameter(comServer, this); { /* Update interface in the tree: */ UIDataHostNetwork data; loadHostNetwork(comInterface, data); updateItemForNetworkHost(data, true, pChangedItem); /* Make sure current item fetched: */ sltHandleCurrentItemChange(); /* Adjust tree-widget: */ sltAdjustTreeWidget(); } } } } }
void UIHostNetworkManagerWidget::sltRemoveHostNetwork() { /* Get network item: */ UIItemHostNetwork *pItem = static_cast<UIItemHostNetwork*>(m_pTreeWidget->currentItem()); AssertMsgReturnVoid(pItem, ("Current item must not be null!\n")); /* Get interface name: */ const QString strInterfaceName(pItem->name()); /* Confirm host network removal: */ if (!msgCenter().confirmHostOnlyInterfaceRemoval(strInterfaceName, this)) return; /* Get host for further activities: */ CHost comHost = vboxGlobal().host(); /* Find corresponding interface: */ const CHostNetworkInterface &comInterface = comHost.FindHostNetworkInterfaceByName(strInterfaceName); /* Show error message if necessary: */ if (!comHost.isOk() || comInterface.isNull()) msgCenter().cannotFindHostNetworkInterface(comHost, strInterfaceName, this); else { /* Get network name for further activities: */ QString strNetworkName; if (comInterface.isOk()) strNetworkName = comInterface.GetNetworkName(); /* Get interface id for further activities: */ QUuid uInterfaceId; if (comInterface.isOk()) uInterfaceId = comInterface.GetId(); /* Show error message if necessary: */ if (!comInterface.isOk()) msgCenter().cannotAcquireHostNetworkInterfaceParameter(comInterface, this); else { /* Get VBox for further activities: */ CVirtualBox comVBox = vboxGlobal().virtualBox(); /* Find corresponding DHCP server: */ const CDHCPServer &comServer = comVBox.FindDHCPServerByNetworkName(strNetworkName); if (comVBox.isOk() && comServer.isNotNull()) { /* Remove server if any: */ comVBox.RemoveDHCPServer(comServer); /* Show error message if necessary: */ if (!comVBox.isOk()) msgCenter().cannotRemoveDHCPServer(comVBox, strInterfaceName, this); } /* Remove interface finally: */ CProgress progress = comHost.RemoveHostOnlyNetworkInterface(uInterfaceId); /* Show error message if necessary: */ if (!comHost.isOk() || progress.isNull()) msgCenter().cannotRemoveHostNetworkInterface(comHost, strInterfaceName, this); else { /* Show interface removal progress: */ msgCenter().showModalProgressDialog(progress, UIHostNetworkManager::tr("Removing network..."), ":/progress_network_interface_90px.png", this, 0); /* Show error message if necessary: */ if (!progress.isOk() || progress.GetResultCode() != 0) return msgCenter().cannotRemoveHostNetworkInterface(progress, strInterfaceName, this); else { /* Remove interface from the tree: */ delete pItem; /* Adjust tree-widget: */ sltAdjustTreeWidget(); } } } } }
void UIHostNetworkManagerWidget::sltApplyHostNetworkDetailsChanges() { /* Get network item: */ UIItemHostNetwork *pItem = static_cast<UIItemHostNetwork*>(m_pTreeWidget->currentItem()); AssertMsgReturnVoid(pItem, ("Current item must not be null!\n")); /* Get item data: */ UIDataHostNetwork oldData = *pItem; UIDataHostNetwork newData = m_pDetailsWidget->data(); /* Get host for further activities: */ CHost comHost = vboxGlobal().host(); /* Find corresponding interface: */ CHostNetworkInterface comInterface = comHost.FindHostNetworkInterfaceByName(oldData.m_interface.m_strName); /* Show error message if necessary: */ if (!comHost.isOk() || comInterface.isNull()) msgCenter().cannotFindHostNetworkInterface(comHost, oldData.m_interface.m_strName, this); else { /* Save automatic interface configuration: */ if (newData.m_interface.m_fDHCPEnabled) { if ( comInterface.isOk() && !oldData.m_interface.m_fDHCPEnabled) comInterface.EnableDynamicIPConfig(); } /* Save manual interface configuration: */ else { /* Save IPv4 interface configuration: */ if ( comInterface.isOk() && ( oldData.m_interface.m_fDHCPEnabled || newData.m_interface.m_strAddress != oldData.m_interface.m_strAddress || newData.m_interface.m_strMask != oldData.m_interface.m_strMask)) comInterface.EnableStaticIPConfig(newData.m_interface.m_strAddress, newData.m_interface.m_strMask); /* Save IPv6 interface configuration: */ if ( comInterface.isOk() && newData.m_interface.m_fSupportedIPv6 && ( oldData.m_interface.m_fDHCPEnabled || newData.m_interface.m_strAddress6 != oldData.m_interface.m_strAddress6 || newData.m_interface.m_strPrefixLength6 != oldData.m_interface.m_strPrefixLength6)) comInterface.EnableStaticIPConfigV6(newData.m_interface.m_strAddress6, newData.m_interface.m_strPrefixLength6.toULong()); } /* Show error message if necessary: */ if (!comInterface.isOk()) msgCenter().cannotSaveHostNetworkInterfaceParameter(comInterface, this); else { /* Get network name for further activities: */ const QString strNetworkName = comInterface.GetNetworkName(); /* Show error message if necessary: */ if (!comInterface.isOk()) msgCenter().cannotAcquireHostNetworkInterfaceParameter(comInterface, this); else { /* Get VBox for further activities: */ CVirtualBox comVBox = vboxGlobal().virtualBox(); /* Find corresponding DHCP server (create if necessary): */ CDHCPServer comServer = comVBox.FindDHCPServerByNetworkName(strNetworkName); if (!comVBox.isOk() || comServer.isNull()) comServer = comVBox.CreateDHCPServer(strNetworkName); /* Show error message if necessary: */ if (!comVBox.isOk() || comServer.isNull()) msgCenter().cannotCreateDHCPServer(comVBox, strNetworkName, this); else { /* Save whether DHCP server is enabled: */ if ( comServer.isOk() && newData.m_dhcpserver.m_fEnabled != oldData.m_dhcpserver.m_fEnabled) comServer.SetEnabled(newData.m_dhcpserver.m_fEnabled); /* Save DHCP server configuration: */ if ( comServer.isOk() && newData.m_dhcpserver.m_fEnabled && ( newData.m_dhcpserver.m_strAddress != oldData.m_dhcpserver.m_strAddress || newData.m_dhcpserver.m_strMask != oldData.m_dhcpserver.m_strMask || newData.m_dhcpserver.m_strLowerAddress != oldData.m_dhcpserver.m_strLowerAddress || newData.m_dhcpserver.m_strUpperAddress != oldData.m_dhcpserver.m_strUpperAddress)) comServer.SetConfiguration(newData.m_dhcpserver.m_strAddress, newData.m_dhcpserver.m_strMask, newData.m_dhcpserver.m_strLowerAddress, newData.m_dhcpserver.m_strUpperAddress); /* Show error message if necessary: */ if (!comServer.isOk()) msgCenter().cannotSaveDHCPServerParameter(comServer, this); } } } /* Find corresponding interface again (if necessary): */ if (!comInterface.isOk()) { comInterface = comHost.FindHostNetworkInterfaceByName(oldData.m_interface.m_strName); /* Show error message if necessary: */ if (!comHost.isOk() || comInterface.isNull()) msgCenter().cannotFindHostNetworkInterface(comHost, oldData.m_interface.m_strName, this); } /* If interface is Ok now: */ if (comInterface.isNotNull() && comInterface.isOk()) { /* Update interface in the tree: */ UIDataHostNetwork data; loadHostNetwork(comInterface, data); updateItemForNetworkHost(data, true, pItem); /* Make sure current item fetched: */ sltHandleCurrentItemChange(); /* Adjust tree-widget: */ sltAdjustTreeWidget(); } } }
static void NetworkParseInGameEvent(const unsigned char *buf, int len, const CHost &host) { CNetworkPacket packet; int commands; packet.Deserialize(buf, len, &commands); int player = packet.Header.OrigPlayer; if (player == 255) { const int index = FindHostIndexBy(host); if (index == -1 || PlayerQuit[Hosts[index].PlyNr]) { #ifdef DEBUG const std::string hostStr = host.toString(); DebugPrint("Not a host in play: %s\n" _C_ hostStr.c_str()); #endif return; } player = Hosts[index].PlyNr; } if (NetConnectType == 1) { if (player != 255) { NetworkBroadcast(packet, commands, player); } } if (commands < 0) { DebugPrint("Bad packet read\n"); return; } NetworkLastCycle[player] = packet.Header.Cycle; // Parse the packet commands. for (int i = 0; i != commands; ++i) { // Handle some messages. if (packet.Header.Type[i] == MessageQuit) { CNetworkCommandQuit nc; nc.Deserialize(&packet.Command[i][0]); const int playerNum = nc.player; if (playerNum >= 0 && playerNum < NumPlayers) { PlayerQuit[playerNum] = 1; } } if (packet.Header.Type[i] == MessageResend) { ParseResendCommand(packet); return; } // Receive statistic NetworkLastFrame[player] = FrameCounter; bool validCommand = IsAValidCommand(packet, i, player); // Place in network in if (validCommand) { // Destination cycle (time to execute). unsigned long n = ((GameCycle + 128) & ~0xFF) | packet.Header.Cycle; if (n > GameCycle + 128) { n -= 0x100; } NetworkIn[packet.Header.Cycle][player][i].Time = n; NetworkIn[packet.Header.Cycle][player][i].Type = packet.Header.Type[i]; NetworkIn[packet.Header.Cycle][player][i].Data = packet.Command[i]; } else { SetMessage(_("%s sent bad command"), Players[player].Name.c_str()); DebugPrint("%s sent bad command: 0x%x\n" _C_ Players[player].Name.c_str() _C_ packet.Header.Type[i] & 0x7F); } } for (int i = commands; i != MaxNetworkCommands; ++i) { NetworkIn[packet.Header.Cycle][player][i].Time = 0; } // Waiting for this time slot if (!NetworkInSync) { const int networkUpdates = CNetworkParameter::Instance.gameCyclesPerUpdate; unsigned long n = ((GameCycle / networkUpdates) + 1) * networkUpdates; if (IsNetworkCommandReady(n) == true) { NetworkInSync = true; } } }
/* Save data from cache to corresponding external object(s), * this task COULD be performed in other than GUI thread: */ void UIGlobalSettingsNetwork::saveFromCacheTo(QVariant &data) { /* Ensure settings were changed: */ if (!m_fChanged) return; /* Fetch data to properties & settings: */ UISettingsPageGlobal::fetchData(data); /* Prepare useful variables: */ CVirtualBox vbox = vboxGlobal().virtualBox(); CHost host = vboxGlobal().host(); /* Update all the host-only interfaces: */ for (int iNetworkIndex = 0; iNetworkIndex < m_cache.m_items.size(); ++iNetworkIndex) { /* Get iterated data: */ const UIHostNetworkData &data = m_cache.m_items[iNetworkIndex]; /* Find corresponding interface: */ CHostNetworkInterface iface = host.FindHostNetworkInterfaceByName(data.m_interface.m_strName); if (!iface.isNull()) { /* Host-only interface configuring: */ if (data.m_interface.m_fDhcpClientEnabled) { iface.EnableDynamicIPConfig(); } else { AssertMsg(data.m_interface.m_strInterfaceAddress.isEmpty() || QHostAddress(data.m_interface.m_strInterfaceAddress).protocol() == QAbstractSocket::IPv4Protocol, ("Interface IPv4 address must be empty or IPv4-valid!\n")); AssertMsg(data.m_interface.m_strInterfaceMask.isEmpty() || QHostAddress(data.m_interface.m_strInterfaceMask).protocol() == QAbstractSocket::IPv4Protocol, ("Interface IPv4 network mask must be empty or IPv4-valid!\n")); iface.EnableStaticIPConfig(data.m_interface.m_strInterfaceAddress, data.m_interface.m_strInterfaceMask); if (iface.GetIPV6Supported()) { AssertMsg(data.m_interface.m_strInterfaceAddress6.isEmpty() || QHostAddress(data.m_interface.m_strInterfaceAddress6).protocol() == QAbstractSocket::IPv6Protocol, ("Interface IPv6 address must be empty or IPv6-valid!\n")); iface.EnableStaticIPConfigV6(data.m_interface.m_strInterfaceAddress6, data.m_interface.m_strInterfaceMaskLength6.toULong()); } } /* Find corresponding DHCP server: */ CDHCPServer dhcp = vbox.FindDHCPServerByNetworkName(iface.GetNetworkName()); if (!dhcp.isNull()) { /* DHCP server configuring: */ dhcp.SetEnabled(data.m_dhcpserver.m_fDhcpServerEnabled); AssertMsg(QHostAddress(data.m_dhcpserver.m_strDhcpServerAddress).protocol() == QAbstractSocket::IPv4Protocol, ("DHCP server IPv4 address must be IPv4-valid!\n")); AssertMsg(QHostAddress(data.m_dhcpserver.m_strDhcpServerMask).protocol() == QAbstractSocket::IPv4Protocol, ("DHCP server IPv4 network mask must be IPv4-valid!\n")); AssertMsg(QHostAddress(data.m_dhcpserver.m_strDhcpLowerAddress).protocol() == QAbstractSocket::IPv4Protocol, ("DHCP server IPv4 lower bound must be IPv4-valid!\n")); AssertMsg(QHostAddress(data.m_dhcpserver.m_strDhcpUpperAddress).protocol() == QAbstractSocket::IPv4Protocol, ("DHCP server IPv4 upper bound must be IPv4-valid!\n")); if (QHostAddress(data.m_dhcpserver.m_strDhcpServerAddress).protocol() == QAbstractSocket::IPv4Protocol && QHostAddress(data.m_dhcpserver.m_strDhcpServerMask).protocol() == QAbstractSocket::IPv4Protocol && QHostAddress(data.m_dhcpserver.m_strDhcpLowerAddress).protocol() == QAbstractSocket::IPv4Protocol && QHostAddress(data.m_dhcpserver.m_strDhcpUpperAddress).protocol() == QAbstractSocket::IPv4Protocol) dhcp.SetConfiguration(data.m_dhcpserver.m_strDhcpServerAddress, data.m_dhcpserver.m_strDhcpServerMask, data.m_dhcpserver.m_strDhcpLowerAddress, data.m_dhcpserver.m_strDhcpUpperAddress); } } } /* Upload properties & settings to data: */ UISettingsPageGlobal::uploadData(data); }
void Send(const CHost &host, const void *buf, unsigned int len) { NetSendUDP(socket, host.getIp(), host.getPort(), buf, len); }