int rwl_init_server_socket_setup(int argc, char** argv, uint remote_type) { char netif[MAX_INTERFACE_NAME]; unsigned short servPort; struct sockaddr_in ServerAddress; int err, SockDes, val; /* Default option */ servPort = DEFAULT_SERVER_PORT; strcpy(netif, "eth0"); /* User option can override default arguments */ if (argc == 3) { argv++; if (isalpha(**argv) == FALSE) { DPRINT_ERR(ERR, "USAGE ERROR:Incorrect network interface\n"); return FAIL; } strcpy(netif, *argv); argv++; if (isdigit(**argv) == FALSE) { DPRINT_ERR(ERR, "USAGE ERROR:Incorrect port\n"); return FAIL; } servPort = atoi(*argv); } if (argc == 2) { argv++; if (isalpha(**argv) == FALSE) { if (isdigit(**argv) == FALSE) { DPRINT_ERR(ERR, "USAGE ERROR\n"); return FAIL; } else servPort = atoi(*argv); } else strcpy(netif, *argv); } DPRINT_INFO(OUTPUT, "INFO: Network Interface:%s, Port:%d\n", netif, servPort); if ((SockDes = (*(int *)rwl_open_transport(remote_type, NULL, 0, 0))) == FAIL) return FAIL; val = 1; if ((rwl_set_socket_option(SockDes, SOL_SOCKET, SO_REUSEADDR, val)) == FAIL) return FAIL; memset(&ServerAddress, 0, sizeof(ServerAddress)); rwl_GetifAddr(netif, &ServerAddress); ServerAddress.sin_family = AF_INET; /* host byte order */ ServerAddress.sin_port = hton16(servPort); /* short, network byte order */ if (((err = rwl_bindsocket(SockDes, (struct sockaddr *)&ServerAddress, sizeof(ServerAddress))) == FAIL)) return err; if ((err = rwl_listensocket(SockDes, BACKLOG)) == FAIL) return err; DPRINT_DBG(OUTPUT, "Waiting for client to connect...\n"); return SockDes; }
/* This function initializes the socket library binds and listens on the port * */ int rwl_init_server_socket_setup(int argc, char** argv, uint remote_type) { int err, SockDes, val; struct sockaddr_in ServerAddress; char ip_addres[MAX_IP_ADDR_LENGTH]; unsigned short servPort; struct ipv4_addr temp; /* Default option */ servPort = DEFAULT_SERVER_PORT; if (rwl_get_local_nic_ip() == NULL) { DPRINT_ERR(ERR, "\nunable to get the local ip\n"); return FAIL; } strcpy(ip_addres, rwl_get_local_nic_ip()); /* User option can override default arguments */ if (argc == 3) { *argv++; if (!wl_atoip(*argv, &temp)) { DPRINT_ERR(ERR, "\n USAGE ERROR:Incorrect IPaddress\n"); return FAIL; } strcpy(ip_addres, *argv); *argv++; if (isdigit(**argv) == FALSE) { DPRINT_ERR(ERR, "USAGE ERROR:Incorrect port\n"); return FAIL; } servPort = atoi(*argv); } if (argc == 2) { *argv++; if (!wl_atoip(*argv, &temp)) { if (isdigit(**argv) == FALSE) { DPRINT_ERR(ERR, "USAGE ERROR\n"); return FAIL; } else servPort = atoi(*argv); } else strcpy(ip_addres, *argv); } DPRINT_INFO(OUTPUT, "INFO: IP: %s, Port:%d\n", ip_addres, servPort); rwl_init_ws2_32dll(); if ((SockDes = (*(int *)rwl_open_transport(remote_type, NULL, 0, 0))) == FAIL) return FAIL; val = 1; if ((rwl_set_socket_option(SockDes, SOL_SOCKET, SO_REUSEADDR, val)) == -1) return FAIL; memset(&ServerAddress, 0, sizeof(ServerAddress)); ServerAddress.sin_family = AF_INET; /* host byte order */ ServerAddress.sin_port = htons(servPort); /* short, network byte order */ ServerAddress.sin_addr.s_addr = inet_addr(ip_addres); if (((err = rwl_bindsocket(SockDes, (struct sockaddr *)&ServerAddress, sizeof(ServerAddress))) != 1)) return err; if ((err = rwl_listensocket(SockDes, BACKLOG)) != 1) return err; DPRINT_DBG(OUTPUT, "Waiting for client to connect...\n"); return SockDes; }