void list_interface_addresses(BNetworkInterface& interface, uint32 flags) { int32 count = interface.CountAddresses(); for (int32 i = 0; i < count; i++) { BNetworkInterfaceAddress address; if (interface.GetAddressAt(i, address) != B_OK) break; const address_family* family = address_family_for(address.Address().sa_family); printf("\t%s addr: %s", family->name, BNetworkAddress(address.Address()).ToString().String()); if ((flags & IFF_BROADCAST) != 0) { printf(", Bcast: %s", BNetworkAddress(address.Broadcast()).ToString().String()); } switch (family->preferred_format) { case PREFER_OUTPUT_MASK: printf(", Mask: %s", BNetworkAddress(address.Mask()).ToString().String()); break; case PREFER_OUTPUT_PREFIX_LENGTH: printf(", Prefix Length: %zu", BNetworkAddress(address.Mask()).PrefixLength()); break; } putchar('\n'); } }
bool BHttpRequest::_ResolveHostName() { _EmitDebug(B_URL_PROTOCOL_DEBUG_TEXT, "Resolving %s", fUrl.UrlString().String()); uint16_t port; if (fUrl.HasPort()) port = fUrl.Port(); else port = fSSL ? 443 : 80; // FIXME stop forcing AF_INET, when BNetworkAddress stops giving IPv6 // addresses when there isn't an IPv6 link available. fRemoteAddr = BNetworkAddress(AF_INET, fUrl.Host(), port); if (fRemoteAddr.InitCheck() != B_OK) return false; //! ProtocolHook:HostnameResolved if (fListener != NULL) fListener->HostnameResolved(this, fRemoteAddr.ToString().String()); _EmitDebug(B_URL_PROTOCOL_DEBUG_TEXT, "Hostname resolved to: %s", fRemoteAddr.ToString().String()); return true; }
status_t POP3Protocol::Open(const char* server, int port, int) { ReportProgress(0, 0, B_TRANSLATE("Connecting to POP3 server" B_UTF8_ELLIPSIS)); if (port <= 0) port = fUseSSL ? 995 : 110; fLog = ""; // Prime the error message BString error_msg, servString; error_msg << B_TRANSLATE("Error while connecting to server %serv"); servString << server; error_msg.ReplaceFirst("%serv", servString); if (port != 110) error_msg << ":" << port; uint32 hostIP = inet_addr(server); // first see if we can parse it as a numeric address if (hostIP == 0 || hostIP == ~0UL) { struct hostent * he = gethostbyname(server); hostIP = he ? *((uint32*)he->h_addr) : 0; } if (hostIP == 0) { error_msg << B_TRANSLATE(": Connection refused or host not found"); ShowError(error_msg.String()); return B_NAME_NOT_FOUND; } delete fServerConnection; fServerConnection = NULL; if (fUseSSL) { fServerConnection = new(std::nothrow) BSecureSocket( BNetworkAddress(server, port)); } else { fServerConnection = new(std::nothrow) BSocket(BNetworkAddress( server, port)); } if (fServerConnection == NULL) return B_NO_MEMORY; if (fServerConnection->InitCheck() != B_OK) return fServerConnection->InitCheck(); BString line; status_t err = ReceiveLine(line); if (err < 0) { fServerConnection->Disconnect(); error_msg << ": " << strerror(err); ShowError(error_msg.String()); return B_ERROR; } if (strncmp(line.String(), "+OK", 3) != 0) { if (line.Length() > 0) { error_msg << B_TRANSLATE(". The server said:\n") << line.String(); } else error_msg << B_TRANSLATE(": No reply.\n"); ShowError(error_msg.String()); fServerConnection->Disconnect(); return B_ERROR; } fLog = line; return B_OK; }