"are defined (when provided by the system). See @command{man\n"
"ip} for what they mean.\n"
"\n"
+ "@defvar IP_MULTICAST_IF\n"
+ "This sets the source interface used by multicast traffic.\n"
+ "@end defvar\n"
+ "\n"
+ "@defvar IP_MULTICAST_TTL\n"
+ "This sets the default TTL for multicast traffic. This defaults \n"
+ "to 1 and should be increased to allow traffic to pass beyond the\n"
+ "local network.\n"
+ "@end defvar\n"
+ "\n"
"@defvar IP_ADD_MEMBERSHIP\n"
"@defvarx IP_DROP_MEMBERSHIP\n"
"These can be used only with @code{setsockopt}, not\n"
struct linger opt_linger;
#endif
-#if HAVE_STRUCT_IP_MREQ
+#ifdef HAVE_STRUCT_IP_MREQ
struct ip_mreq opt_mreq;
#endif
}
}
-#if HAVE_STRUCT_IP_MREQ
+#ifdef HAVE_STRUCT_IP_MREQ
if (ilevel == IPPROTO_IP &&
(ioptname == IP_ADD_MEMBERSHIP || ioptname == IP_DROP_MEMBERSHIP))
{
*args = SCM_CDR (*args);
soka = (struct sockaddr_in *) scm_malloc (sizeof (struct sockaddr_in));
-#if HAVE_STRUCT_SOCKADDR_SIN_LEN
+#ifdef HAVE_STRUCT_SOCKADDR_SIN_LEN
soka->sin_len = sizeof (struct sockaddr_in);
#endif
soka->sin_family = AF_INET;
}
soka = (struct sockaddr_in6 *) scm_malloc (sizeof (struct sockaddr_in6));
-#if HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN
+#ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN
soka->sin6_len = sizeof (struct sockaddr_in6);
#endif
soka->sin6_family = AF_INET6;
scm_c_define ("IP_DROP_MEMBERSHIP", scm_from_int (IP_DROP_MEMBERSHIP));
#endif
+#ifdef IP_MULTICAST_TTL
+ scm_c_define ("IP_MULTICAST_TTL", scm_from_int ( IP_MULTICAST_TTL));
+#endif
+
+#ifdef IP_MULTICAST_IF
+ scm_c_define ("IP_MULTICAST_IF", scm_from_int ( IP_MULTICAST_IF));
+#endif
+
scm_add_feature ("socket");
#include "libguile/socket.x"