From: Ferry Huberts Date: Tue, 5 Jun 2012 20:41:27 +0000 (+0200) Subject: PUD: nwif: make setting ttl on tx socket work for IPv6 X-Git-Tag: v0.6.4~181 X-Git-Url: http://olsr.org/git/?p=olsrd.git;a=commitdiff_plain;h=9bd9d1feed0b5f20954d83ec528c91f798de5e6a;ds=sidebyside PUD: nwif: make setting ttl on tx socket work for IPv6 Signed-off-by: Ferry Huberts --- diff --git a/lib/pud/src/networkInterfaces.c b/lib/pud/src/networkInterfaces.c index f5299b8c..0fdbdce5 100644 --- a/lib/pud/src/networkInterfaces.c +++ b/lib/pud/src/networkInterfaces.c @@ -310,6 +310,7 @@ static int createTxSocket(TRxTxNetworkInterface * networkInterface) { int ipProtoSetting; int ipMcLoopSetting; int ipMcIfSetting; + int ipTtlSetting; union olsr_sockaddr address; @@ -330,6 +331,7 @@ static int createTxSocket(TRxTxNetworkInterface * networkInterface) { ipProtoSetting = IPPROTO_IP; ipMcLoopSetting = IP_MULTICAST_LOOP; ipMcIfSetting = IP_MULTICAST_IF; + ipTtlSetting = IP_MULTICAST_TTL; address.in4.sin_family = ipFamilySetting; address.in4.sin_addr = networkInterface->ipAddress.in4.sin_addr; @@ -341,6 +343,7 @@ static int createTxSocket(TRxTxNetworkInterface * networkInterface) { ipProtoSetting = IPPROTO_IPV6; ipMcLoopSetting = IPV6_MULTICAST_LOOP; ipMcIfSetting = IPV6_MULTICAST_IF; + ipTtlSetting = IPV6_MULTICAST_HOPS; address.in6.sin6_family = ipFamilySetting; address.in6.sin6_addr = networkInterface->ipAddress.in6.sin6_addr; @@ -377,7 +380,7 @@ static int createTxSocket(TRxTxNetworkInterface * networkInterface) { /* Set the TTL on the socket */ errno = 0; - if (setsockopt(txSocket, ipProtoSetting, IP_MULTICAST_TTL, &txTtl, + if (setsockopt(txSocket, ipProtoSetting, ipTtlSetting, &txTtl, sizeof(txTtl)) < 0) { pudError(true, "Could not set TTL on the transmit socket" " for interface %s", networkInterface->name);