Exemplo n.º 1
0
VMK_ReturnStatus LogFS_NetCreateAcceptSocket(Net_Socket * acceptSocketOut)
{
    VMK_ReturnStatus status;
    sockaddr_in_bsd myAddr;
    int optval;
    Net_Socket acceptSocket;

    Net_SetSockVal(acceptSocketOut, NULL);

    status = Net_CreateSocket(PF_INET, SOCK_STREAM, IPPROTO_TCP,
                              &acceptSocket, DEFAULT_STACK);
    if (status != VMK_OK) {
        if (status == VMK_NOT_SUPPORTED) {
            printf("Can't create accept socket.  Is the TCP/IP module loaded?");
        } else {
            printf("Can't create accept socket: %s",
                   VMK_ReturnStatusToString(status));
        }
        return status;
    }

    memset(&myAddr, 0, sizeof(myAddr));
    myAddr.sin_len = sizeof(myAddr);
    myAddr.sin_family = AF_INET;
    myAddr.sin_port = htons(8090);

    optval = 1;
    status = Net_SetSockOpt(acceptSocket, SOL_SOCKET, SO_REUSEPORT,
                            &optval, sizeof optval, DEFAULT_STACK);
    if (status != VMK_OK) {
        printf("Reuse port sockopt failed: %s", VMK_ReturnStatusToString(status));
        Net_CloseSocket(acceptSocket, DEFAULT_STACK);
        return status;
    }

    status = Net_Bind(acceptSocket, (struct sockaddr *)&myAddr, sizeof myAddr,
                      DEFAULT_STACK);
    if (status != VMK_OK) {
        printf("Bind failed: %s", VMK_ReturnStatusToString(status));
        Net_CloseSocket(acceptSocket, DEFAULT_STACK);
        return status;
    }

    status = Net_Listen(acceptSocket, 5, DEFAULT_STACK);
    if (status != VMK_OK) {
        printf("Error trying to listen: %s", VMK_ReturnStatusToString(status));
        Net_CloseSocket(acceptSocket, DEFAULT_STACK);
        return status;
    }

    *acceptSocketOut = acceptSocket;
    return VMK_OK;
}
Exemplo n.º 2
0
/*
 * @brief
 */
void Net_Config(net_src_t source, _Bool up) {
	uint16_t p = 0;

	if (source == NS_SERVER) {
		p = (uint16_t) net_port->integer;
	}

	if (up) { // open the socket
		if (!ip_sockets[source])
			ip_sockets[source] = Net_Socket(net_ip->string, p);
		return;
	}

	// or close it
	if (ip_sockets[source])
		Net_CloseSocket(ip_sockets[source]);

	ip_sockets[source] = 0;
}