[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
guile/guile-core/libguile ChangeLog socket.c
From: |
Gary Houston |
Subject: |
guile/guile-core/libguile ChangeLog socket.c |
Date: |
Fri, 20 Apr 2001 12:22:47 -0700 |
CVSROOT: /cvs
Module name: guile
Changes by: Gary Houston <> 01/04/20 12:22:47
Modified files:
guile-core/libguile: ChangeLog socket.c
Log message:
* socket.c (scm_fill_sockaddr): call htons for sin6_port.
Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
is defined.
(scm_addr_vector): use a switch instead of multiple if statements.
Add support for IPv6 (incomplete) .
MAX_ADDR_SIZE: increase to size of struct sockaddr_in if needed.
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/guile/guile-core/libguile/ChangeLog.diff?cvsroot=OldCVS&tr1=1.1360&tr2=1.1361&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/guile/guile-core/libguile/socket.c.diff?cvsroot=OldCVS&tr1=1.68&tr2=1.69&r1=text&r2=text
Patches:
Index: guile/guile-core/libguile/ChangeLog
diff -u guile/guile-core/libguile/ChangeLog:1.1360
guile/guile-core/libguile/ChangeLog:1.1361
--- guile/guile-core/libguile/ChangeLog:1.1360 Fri Apr 20 00:55:19 2001
+++ guile/guile-core/libguile/ChangeLog Fri Apr 20 12:22:47 2001
@@ -1,3 +1,12 @@
+2001-04-20 Gary Houston <address@hidden>
+
+ * socket.c (scm_fill_sockaddr): call htons for sin6_port.
+ Don't assign sin6_scope_id in structure unless HAVE_SIN6_SCOPE_ID
+ is defined.
+ (scm_addr_vector): use a switch instead of multiple if statements.
+ Add support for IPv6 (incomplete) .
+ MAX_ADDR_SIZE: increase to size of struct sockaddr_in if needed.
+
2001-04-20 Dirk Herrmann <address@hidden>
* struct.c (scm_free_structs): Only pairs may be accessed with
Index: guile/guile-core/libguile/socket.c
diff -u guile/guile-core/libguile/socket.c:1.68
guile/guile-core/libguile/socket.c:1.69
--- guile/guile-core/libguile/socket.c:1.68 Tue Apr 17 16:03:07 2001
+++ guile/guile-core/libguile/socket.c Fri Apr 20 12:22:47 2001
@@ -500,9 +500,11 @@
}
#endif
}
- soka->sin6_port = port;
+ soka->sin6_port = htons (port);
soka->sin6_flowinfo = flowinfo;
+#ifdef HAVE_SIN6_SCOPE_ID
soka->sin6_scope_id = scope_id;
+#endif
*size = sizeof (struct sockaddr_in6);
return (struct sockaddr *) soka;
}
@@ -666,33 +668,56 @@
SCM result;
SCM *ve;
-#ifdef HAVE_UNIX_DOMAIN_SOCKETS
- if (fam == AF_UNIX)
+ switch (fam)
{
- struct sockaddr_un *nad = (struct sockaddr_un *) address;
+ case AF_INET:
+ {
+ struct sockaddr_in *nad = (struct sockaddr_in *) address;
- result = scm_c_make_vector (2, SCM_UNSPECIFIED);
- ve = SCM_VELTS (result);
- ve[0] = scm_ulong2num ((unsigned long) fam);
- ve[1] = scm_makfromstr (nad->sun_path,
- (scm_sizet) strlen (nad->sun_path), 0);
- }
- else
+ result = scm_c_make_vector (3, SCM_UNSPECIFIED);
+ ve = SCM_VELTS (result);
+ ve[0] = scm_ulong2num ((unsigned long) fam);
+ ve[1] = scm_ulong2num (ntohl (nad->sin_addr.s_addr));
+ ve[2] = scm_ulong2num ((unsigned long) ntohs (nad->sin_port));
+ }
+ break;
+#ifdef AF_INET6
+ case AF_INET6:
+ {
+ struct sockaddr_in6 *nad = (struct sockaddr_in6 *) address;
+
+ result = scm_c_make_vector (5, SCM_UNSPECIFIED);
+ ve = SCM_VELTS (result);
+ ve[0] = scm_ulong2num ((unsigned long) fam);
+ /* FIXME */
+ ve[1] = SCM_INUM0;
+ ve[2] = scm_ulong2num ((unsigned long) ntohs (nad->sin6_port));
+ ve[3] = scm_ulong2num ((unsigned long) nad->sin6_flowinfo);
+#ifdef HAVE_SIN6_SCOPE_ID
+ ve[4] = scm_ulong2num ((unsigned long) nad->sin6_scope_id);
+#else
+ ve[4] = SCM_INUM0;
#endif
- if (fam == AF_INET)
- {
- struct sockaddr_in *nad = (struct sockaddr_in *) address;
+ }
+ break;
+#endif
+#ifdef HAVE_UNIX_DOMAIN_SOCKETS
+ case AF_UNIX:
+ {
+ struct sockaddr_un *nad = (struct sockaddr_un *) address;
- result = scm_c_make_vector (3, SCM_UNSPECIFIED);
- ve = SCM_VELTS (result);
- ve[0] = scm_ulong2num ((unsigned long) fam);
- ve[1] = scm_ulong2num (ntohl (nad->sin_addr.s_addr));
- ve[2] = scm_ulong2num ((unsigned long) ntohs (nad->sin_port));
+ result = scm_c_make_vector (2, SCM_UNSPECIFIED);
+ ve = SCM_VELTS (result);
+ ve[0] = scm_ulong2num ((unsigned long) fam);
+ ve[1] = scm_makfromstr (nad->sun_path,
+ (scm_sizet) strlen (nad->sun_path), 0);
+ }
+ break;
+#endif
+ default:
+ scm_misc_error (proc, "Unrecognised address family: ~A",
+ SCM_LIST1 (SCM_MAKINUM (fam)));
}
- else
- scm_misc_error (proc, "Unrecognised address family: ~A",
- SCM_LIST1 (SCM_MAKINUM (fam)));
-
return result;
}
@@ -705,8 +730,15 @@
#else
#define MAX_SIZE_UN 0
#endif
+
+#if defined (AF_INET6)
+#define MAX_SIZE_IN6 sizeof (struct sockaddr_in6)
+#else
+#define MAX_SIZE_IN6 0
+#endif
-#define MAX_ADDR_SIZE max (sizeof (struct sockaddr_in), MAX_SIZE_UN)
+#define MAX_ADDR_SIZE max (max (sizeof (struct sockaddr_in), MAX_SIZE_IN6),\
+ MAX_SIZE_UN)
SCM_DEFINE (scm_accept, "accept", 1, 0, 0,
(SCM sock),