aboutsummaryrefslogtreecommitdiffstats
path: root/sysutils/socket/files/patch-socketp.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils/socket/files/patch-socketp.c')
-rw-r--r--sysutils/socket/files/patch-socketp.c358
1 files changed, 0 insertions, 358 deletions
diff --git a/sysutils/socket/files/patch-socketp.c b/sysutils/socket/files/patch-socketp.c
deleted file mode 100644
index b5822e2f5fd8..000000000000
--- a/sysutils/socket/files/patch-socketp.c
+++ /dev/null
@@ -1,358 +0,0 @@
-*** socketp.c.orig Fri Mar 22 11:42:23 2002
---- socketp.c Fri Mar 22 12:07:59 2002
-***************
-*** 21,26 ****
---- 21,27 ----
-
- extern int is_number A((char *));
-
-+ #ifndef USE_INET6
- /*
- * create a server socket on PORT accepting QUEUE_LENGTH connections
- */
-***************
-*** 31,39 ****
- struct sockaddr_in sa ;
- int s;
-
-! if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
- return -1 ;
-- }
-
- bzero((char *) &sa, sizeof(sa)) ;
- sa.sin_family = AF_INET ;
---- 32,40 ----
- struct sockaddr_in sa ;
- int s;
-
-! s = socket(AF_INET, SOCK_STREAM, 0);
-! if (s < 0)
- return -1 ;
-
- bzero((char *) &sa, sizeof(sa)) ;
- sa.sin_family = AF_INET ;
-***************
-*** 41,56 ****
- sa.sin_port = htons(port) ;
-
- if (bind(s, (struct sockaddr *) &sa, sizeof(sa)) < 0) {
-! return -1 ;
- }
- if (listen(s, 1) < 0) {
-! return -1 ;
- }
-
- return s ;
- }
-
-
- /* create a client socket connected to PORT on HOSTNAME */
- int create_client_socket(hostname, port)
- char **hostname ;
---- 42,126 ----
- sa.sin_port = htons(port) ;
-
- if (bind(s, (struct sockaddr *) &sa, sizeof(sa)) < 0) {
-! return -1 ;
- }
- if (listen(s, 1) < 0) {
-! return -1 ;
- }
-
- return s ;
- }
-+ #else /* USE_INET6 */
-+ /*
-+ * create a server socket(s) on PORT accepting QUEUE_LENGTH connections
-+ *
-+ * FWD (ifdef USE_INET6):
-+ * there can be more than one socket; one for each supported address
-+ * family. This is for portability as not all IPv6 stacks implement
-+ * the wildcard bind as a bind to *ll IPv4 *and* IPv6 addresses.
-+ * so we'll just open a socket for each address getaddrinfo() gives
-+ * back to us. The price of portability...
-+ */
-+ int *create_server_sockets(port, queue_length)
-+ char **port ;
-+ int queue_length ;
-+ {
-+ struct addrinfo hints, *r, *res;
-+ int *s, *slist, error, maxs;
-+ int reuse_addr = 1;
-+
-+ memset(&hints, 0, sizeof(hints));
-+ hints.ai_flags = AI_PASSIVE;
-+ hints.ai_family = AF_UNSPEC;
-+ hints.ai_socktype = SOCK_STREAM;
-+ hints.ai_protocol = 0;
-+ error = getaddrinfo(NULL, *port, &hints, &res);
-+
-+ if (!error) {
-+ for (maxs = 0, r = res; r; r = r->ai_next, maxs++);
-+ slist = malloc ((maxs+1) * sizeof(int));
-+ if (slist) {
-+ slist[0] = maxs; /* max. num of sockets */
-+
-+ s = slist+1;
-+ for (r = res; r; r = r->ai_next) {
-+ *s = socket(r->ai_family, r->ai_socktype, r->ai_protocol);
-+ if (*s < 0)
-+ continue;
-+
-+ setsockopt(*s,SOL_SOCKET,SO_REUSEADDR,&reuse_addr,sizeof(reuse_addr));
-+
-+ if (bind(*s, r->ai_addr, r->ai_addrlen) < 0) {
-+ close (*s);
-+ continue;
-+ }
-+
-+ if (listen(*s, 1) < 0) {
-+ close (*s);
-+ continue;
-+ }
-+ s++;
-+ }
-+ }
-+ }
-+ else
-+ slist = NULL;
-
-+ if (res)
-+ freeaddrinfo(res);
-
-+ if (slist && !slist[0]) {
-+ free (slist);
-+ slist = NULL;
-+ }
-+
-+ return (slist);
-+ }
-+ #endif /* USE_INET6 */
-+
-+
-+ /* create a client socket connected to PORT on HOSTNAME */
-+ #ifndef USE_INET6
- /* create a client socket connected to PORT on HOSTNAME */
- int create_client_socket(hostname, port)
- char **hostname ;
-***************
-*** 64,94 ****
-
- bzero(&sa, sizeof(sa)) ;
- if ((addr = inet_addr(*hostname)) != -1) {
-! /* is Internet addr in octet notation */
-! bcopy(&addr, (char *) &sa.sin_addr, sizeof(addr)) ; /* set address */
-! sa.sin_family = AF_INET ;
- } else {
-! /* do we know the host's address? */
-! if ((hp = gethostbyname(*hostname)) == NULL) {
-! return -2 ;
-! }
-! *hostname = hp->h_name ;
-! bcopy(hp->h_addr, (char *) &sa.sin_addr, hp->h_length) ;
-! sa.sin_family = hp->h_addrtype ;
- }
-
- sa.sin_port = htons((u_short) port) ;
-
- if ((s = socket(sa.sin_family, SOCK_STREAM, 0)) < 0) { /* get socket */
-! return -1 ;
- }
- if (connect(s, (struct sockaddr *)&sa, sizeof(sa)) < 0) { /* connect */
-! close(s) ;
-! return -1 ;
- }
- return s ;
- }
-
- /* return the port number for service NAME_OR_NUMBER. If NAME is non-null,
- * the name is the service is written there.
- */
---- 134,311 ----
-
- bzero(&sa, sizeof(sa)) ;
- if ((addr = inet_addr(*hostname)) != -1) {
-! /* is Internet addr in octet notation */
-! bcopy(&addr, (char *) &sa.sin_addr, sizeof(addr)) ; /* set address */
-! sa.sin_family = AF_INET ;
- } else {
-! /* do we know the host's address? */
-! if ((hp = gethostbyname(*hostname)) == NULL) {
-! return -2 ;
-! }
-! *hostname = hp->h_name ;
-! bcopy(hp->h_addr, (char *) &sa.sin_addr, hp->h_length) ;
-! sa.sin_family = hp->h_addrtype ;
- }
-
- sa.sin_port = htons((u_short) port) ;
-
- if ((s = socket(sa.sin_family, SOCK_STREAM, 0)) < 0) { /* get socket */
-! return -1 ;
- }
- if (connect(s, (struct sockaddr *)&sa, sizeof(sa)) < 0) { /* connect */
-! close(s) ;
-! return -1 ;
- }
- return s ;
- }
-
-+ #else /* USE_INET6 */
-+ int create_client_socket(hostname, port)
-+ char **hostname ;
-+ char **port ;
-+ {
-+ int s, connected, err ;
-+ struct addrinfo hints, *r, *res;
-+
-+ memset(&hints, 0, sizeof(hints));
-+ hints.ai_flags = AI_NUMERICHOST;
-+ hints.ai_family = AF_UNSPEC;
-+ hints.ai_socktype= SOCK_STREAM;
-+ err = getaddrinfo(*hostname, *port, &hints, &res);
-+ if (res) freeaddrinfo(res);
-+
-+ if (!err) {
-+ /* numeric */
-+ memset(&hints, 0, sizeof(hints));
-+ hints.ai_flags = AI_CANONNAME;
-+ hints.ai_family = AF_UNSPEC;
-+ hints.ai_socktype = SOCK_STREAM;
-+ hints.ai_protocol = 0;
-+ err = getaddrinfo(*hostname, *port, &hints, &res);
-+ if (err) s = -2;
-+ } else {
-+ /* non-numeric */
-+ memset(&hints, 0, sizeof(hints));
-+ hints.ai_family = AF_UNSPEC;
-+ hints.ai_socktype = SOCK_STREAM;
-+ hints.ai_protocol = 0;
-+ err = getaddrinfo(*hostname, *port, &hints, &res);
-+ if (err) s = -2;
-+ }
-+
-+
-+ if (!err) {
-+ err = 0; s = -1;
-+ connected = 0;
-+ for (r = res; r && !connected; r = r->ai_next) {
-+ s = socket(r->ai_family, r->ai_socktype, r->ai_protocol);
-+ if (s < 0)
-+ continue;
-+
-+ if (connect(s, r->ai_addr, r->ai_addrlen) < 0) {
-+ err = errno;
-+ close(s);
-+ s = -1;
-+ continue;
-+ }
-+ connected++;
-+ break;
-+ }
-+ if (!connected) s = -1;
-+ }
-+
-+ if (res)
-+ freeaddrinfo(res);
-+
-+ return (s);
-+ }
-+ #endif /* USE_INET6 */
-+
-+ #ifdef USE_INET6
-+ /* Determines hostname, address and port number used for the peer of socket */
-+ int socket_remote_name(socket, name, ipname, port)
-+ int socket;
-+ char **name;
-+ char **ipname;
-+ char **port;
-+ {
-+ struct sockaddr_storage server;
-+ int length=sizeof(server), retval, error;
-+ static char host[NI_MAXHOST],ip[NI_MAXHOST],portstr[NI_MAXSERV];
-+
-+ error = getpeername(socket,(struct sockaddr*)&server,&length);
-+ if(!error) {
-+ error = getnameinfo((struct sockaddr*)&server, length, host,
-+ NI_MAXHOST, NULL, 0, 0);
-+ error = getnameinfo((struct sockaddr*)&server, length, ip,
-+ NI_MAXHOST, NULL, NI_MAXSERV,
-+ NI_NUMERICHOST);
-+ retval = error;
-+
-+ error = getnameinfo((struct sockaddr*)&server, length, NULL, 0,
-+ portstr, NI_MAXSERV, 0);
-+
-+ if (error)
-+ retval = getnameinfo((struct sockaddr*)&server, length, ip,
-+ NI_MAXHOST, portstr, NI_MAXSERV,
-+ NI_NUMERICSERV);
-+ }
-+ else
-+ retval = error;
-+
-+ if(name)
-+ *name=host;
-+ if(ipname)
-+ *ipname=ip;
-+ if(port)
-+ *port=portstr;
-+
-+ return(retval);
-+ }
-+
-+ /* Determines the hostname, address and port number used for our socket */
-+ int socket_local_name(socket, name, ipname, port)
-+ int socket;
-+ char **name;
-+ char **ipname;
-+ char **port;
-+ {
-+ struct sockaddr_storage server;
-+ int length=sizeof(server), retval, error;
-+ static char host[NI_MAXHOST],ip[NI_MAXHOST],portstr[NI_MAXSERV];
-+
-+ error = getsockname(socket,(struct sockaddr*)&server,&length);
-+ if(!error) {
-+ error = getnameinfo((struct sockaddr*)&server, length, host,
-+ NI_MAXHOST, NULL, 0, 0);
-+ error = getnameinfo((struct sockaddr*)&server, length, ip,
-+ NI_MAXHOST, NULL, NI_MAXSERV,
-+ NI_NUMERICHOST);
-+ retval = error;
-+
-+ error = getnameinfo((struct sockaddr*)&server, length, NULL, 0,
-+ portstr, NI_MAXSERV, 0);
-+
-+ if (error)
-+ retval = getnameinfo((struct sockaddr*)&server, length, ip,
-+ NI_MAXHOST, portstr, NI_MAXSERV,
-+ NI_NUMERICSERV);
-+ }
-+ else
-+ retval = error;
-+
-+ if(name)
-+ *name=host;
-+ if(ipname)
-+ *ipname=ip;
-+ if(port)
-+ *port=portstr;
-+
-+ return(retval);
-+ }
-+ #endif /* USE_INET6 */
-+
-+ #ifndef USE_INET6
- /* return the port number for service NAME_OR_NUMBER. If NAME is non-null,
- * the name is the service is written there.
- */
-***************
-*** 122,126 ****
---- 339,344 ----
- return ntohs(servent->s_port) ;
- }
- }
-+ #endif /* !USE_INET6 */
-
- /*EOF*/