Esempio n. 1
0
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');
	}
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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;
}