}
else if (socket->priv->family == G_SOCKET_FAMILY_IPV6)
{
+ g_socket_set_option (socket, IPPROTO_IP, IP_TTL,
+ ttl, NULL);
g_socket_set_option (socket, IPPROTO_IPV6, IPV6_UNICAST_HOPS,
ttl, &error);
}
}
else if (socket->priv->family == G_SOCKET_FAMILY_IPV6)
{
+ g_socket_set_option (socket, IPPROTO_IP, IP_MULTICAST_LOOP,
+ loopback, NULL);
g_socket_set_option (socket, IPPROTO_IPV6, IPV6_MULTICAST_LOOP,
loopback, &error);
}
GError *error = NULL;
gint value;
- g_return_val_if_fail (G_IS_SOCKET (socket), FALSE);
+ g_return_val_if_fail (G_IS_SOCKET (socket), 0);
if (socket->priv->family == G_SOCKET_FAMILY_IPV4)
{
}
else if (socket->priv->family == G_SOCKET_FAMILY_IPV6)
{
+ g_socket_set_option (socket, IPPROTO_IP, IP_MULTICAST_TTL,
+ ttl, NULL);
g_socket_set_option (socket, IPPROTO_IPV6, IPV6_MULTICAST_HOPS,
ttl, &error);
}
g_return_val_if_fail (G_IS_SOCKET (socket), FALSE);
g_return_val_if_fail (socket->priv->type == G_SOCKET_TYPE_DATAGRAM, FALSE);
g_return_val_if_fail (G_IS_INET_ADDRESS (group), FALSE);
- g_return_val_if_fail (g_inet_address_get_family (group) == socket->priv->family, FALSE);
if (!check_socket (socket, error))
return FALSE;
native_addr = g_inet_address_to_bytes (group);
- if (socket->priv->family == G_SOCKET_FAMILY_IPV4)
+ if (g_inet_address_get_family (group) == G_SOCKET_FAMILY_IPV4)
{
#ifdef HAVE_IP_MREQN
struct ip_mreqn mc_req;
result = setsockopt (socket->priv->fd, IPPROTO_IP, optname,
&mc_req, sizeof (mc_req));
}
- else if (socket->priv->family == G_SOCKET_FAMILY_IPV6)
+ else if (g_inet_address_get_family (group) == G_SOCKET_FAMILY_IPV6)
{
struct ipv6_mreq mc_req_ipv6;