TEST(AsyncSocketTest, v4v6samePort) { EventBase base; auto serverSocket = AsyncServerSocket::newSocket(&base); serverSocket->bind(0); auto addrs = serverSocket->getAddresses(); ASSERT_GT(addrs.size(), 0); uint16_t port = addrs[0].getPort(); for (const auto& addr : addrs) { EXPECT_EQ(port, addr.getPort()); } }
IPAddressV6 getSwitchVlanIPv6(const std::shared_ptr<SwitchState>& state, VlanID vlan) { IPAddressV6 switchIp; auto vlanInterface = state->getInterfaces()->getInterfaceInVlanIf(vlan); auto& addresses = vlanInterface->getAddresses(); for (const auto& address: addresses) { if (address.first.isV6()) { switchIp = address.first.asV6(); return switchIp; } } throw FbossError("Cannot find IPv6 address for vlan ", vlan); }
LRESULT ProtocolPage::onInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { SettingTab::translate((HWND)(*this), texts); cAutoDetect.Attach(GetDlgItem(IDC_CONNECTION_DETECTION)); SetDlgItemText(IDC_PROTOCOL_ENABLED, CTSTRING_F(ENABLE_CONNECTIVITY, (v6 ? "IPv6" : "IPv4"))); auto mode = v6 ? SETTING(INCOMING_CONNECTIONS6) : SETTING(INCOMING_CONNECTIONS); if (mode == SettingsManager::INCOMING_DISABLED) { CheckDlgButton(IDC_PROTOCOL_ENABLED, BST_UNCHECKED); CheckDlgButton(IDC_ACTIVE, BST_CHECKED); } else { CheckDlgButton(IDC_PROTOCOL_ENABLED, BST_CHECKED); switch(mode) { case SettingsManager::INCOMING_ACTIVE: CheckDlgButton(IDC_ACTIVE, BST_CHECKED); break; case SettingsManager::INCOMING_ACTIVE_UPNP: CheckDlgButton(IDC_ACTIVE_UPNP, BST_CHECKED); break; case SettingsManager::INCOMING_PASSIVE: CheckDlgButton(IDC_PASSIVE, BST_CHECKED); break; default: CheckDlgButton(IDC_ACTIVE, BST_CHECKED); break; } } SettingTab::read((HWND)(*this), v6 ? items6 : items4); fixControls(); // Bind address BindCombo.Attach(GetDlgItem(IDC_BIND_ADDRESS)); getAddresses(); return TRUE; }
bool Interface::canReachAddress(const folly::IPAddress& dest) const { return getAddressToReach(dest) != getAddresses().end(); }