MCPcopy Create free account
hub / github.com/bitcoinxt/bitcoinxt / Discover

Function Discover

src/net.cpp:1697–1746  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1695}
1696
1697void static Discover(boost::thread_group& threadGroup)
1698{
1699 if (!fDiscover)
1700 return;
1701
1702#ifdef WIN32
1703 // Get local host IP
1704 char pszHostName[256] = "";
1705 if (gethostname(pszHostName, sizeof(pszHostName)) != SOCKET_ERROR)
1706 {
1707 vector<CNetAddr> vaddr;
1708 if (LookupHost(pszHostName, vaddr))
1709 {
1710 BOOST_FOREACH (const CNetAddr &addr, vaddr)
1711 {
1712 if (AddLocal(addr, LOCAL_IF))
1713 LogPrintf("%s: %s - %s\n", __func__, pszHostName, addr.ToString());
1714 }
1715 }
1716 }
1717#else
1718 // Get local host ip
1719 struct ifaddrs* myaddrs;
1720 if (getifaddrs(&myaddrs) == 0)
1721 {
1722 for (struct ifaddrs* ifa = myaddrs; ifa != NULL; ifa = ifa->ifa_next)
1723 {
1724 if (ifa->ifa_addr == NULL) continue;
1725 if ((ifa->ifa_flags & IFF_UP) == 0) continue;
1726 if (strcmp(ifa->ifa_name, "lo") == 0) continue;
1727 if (strcmp(ifa->ifa_name, "lo0") == 0) continue;
1728 if (ifa->ifa_addr->sa_family == AF_INET)
1729 {
1730 struct sockaddr_in* s4 = (struct sockaddr_in*)(ifa->ifa_addr);
1731 CNetAddr addr(s4->sin_addr);
1732 if (AddLocal(addr, LOCAL_IF))
1733 LogPrintf("%s: IPv4 %s: %s\n", __func__, ifa->ifa_name, addr.ToString());
1734 }
1735 else if (ifa->ifa_addr->sa_family == AF_INET6)
1736 {
1737 struct sockaddr_in6* s6 = (struct sockaddr_in6*)(ifa->ifa_addr);
1738 CNetAddr addr(s6->sin6_addr);
1739 if (AddLocal(addr, LOCAL_IF))
1740 LogPrintf("%s: IPv6 %s: %s\n", __func__, ifa->ifa_name, addr.ToString());
1741 }
1742 }
1743 freeifaddrs(myaddrs);
1744 }
1745#endif
1746}
1747
1748void StartNode(boost::thread_group& threadGroup, CScheduler& scheduler)
1749{

Callers 1

StartNodeFunction · 0.85

Calls 3

LookupHostFunction · 0.85
AddLocalFunction · 0.85
ToStringMethod · 0.45

Tested by

no test coverage detected