1
0
mirror of https://github.com/simh/simh.git synced 2026-02-03 15:13:56 +00:00

SOCKETS: Cleanup, simplify and extend the sim_sock API set.

Cleanup/Simplification by:
	1) removing irrelevant master flag variable from sim_close_sock and thus sim_err_sock
	2) change previous boolean feature arguments (datagram, nodelay, reuseaddr) to flag bits in a single option argument.  This allows for features to be added by new flag bits which don't change the calling signatures.
	3) changed all status returns to be int (vs t_stat) with success being 0 and error being -1
	4) removed unneeded simh specific type references to allow sim_sock to be used by n
Extended API by providing flags to influence socket setup/behavior:
	SIM_SOCK_OPT_REUSEADDR	Retains prior behavior when sim_switches had -U set
	SIM_SOCK_OPT_DATAGRAM	UDP socket setup provided for when prior datagram argument was specified
	SIM_SOCK_OPT_NODELAY		TCP Nagle disable provided for when prior nodelay argument was specified
	SIM_SOCK_OPT_BLOCKING	Blocking socket mode (detault is non blocking)
This commit is contained in:
Mark Pizzolato
2015-02-11 09:41:18 -08:00
parent 5b4e9d5891
commit 1fb209c275
8 changed files with 192 additions and 180 deletions

View File

@@ -1906,7 +1906,7 @@ else
sim_printf ("Eth: Must specify different udp localhost ports\r\n");
return SCPE_OPENERR;
}
*fd_handle = sim_connect_sock_ex (localport, hostport, NULL, NULL, TRUE, FALSE);
*fd_handle = sim_connect_sock_ex (localport, hostport, NULL, NULL, SIM_SOCK_OPT_DATAGRAM);
if (INVALID_SOCKET == *fd_handle)
return SCPE_OPENERR;
*eth_api = ETH_API_UDP;
@@ -2101,7 +2101,7 @@ switch (eth_api) {
break;
#endif
case ETH_API_UDP:
sim_close_sock(pcap_fd, TRUE);
sim_close_sock(pcap_fd);
break;
#ifdef USE_SLIRP_NETWORK
case ETH_API_NAT:
@@ -2363,7 +2363,7 @@ switch (dev->eth_api) {
break;
#endif
default:
sim_err_sock (INVALID_SOCKET, msg, 0);
sim_err_sock (INVALID_SOCKET, msg);
break;
}
#ifdef USE_READER_THREAD