Daniel-Constantin Mierla writes:
I pushed a patch to compare ips using parsed
structure. Initial version
was using string comparison, which is not safe for ipv6, but I was
looking for a quick proof of a solution.
The role of this ip comparison is to figure out what is the interface
name for which to get scope id. So we get the ifname by walking all of
the network interfaces and seeing which one has the respective ip
assigned to it.
Can you try and see if now works better?
Thanks, now this code in udp_server.c works:
} else if (addr->s.sa_family==AF_INET6){
if (setsockopt(sock_info->socket, IPPROTO_IPV6, IPV6_TCLASS,
(void*)&optval, sizeof(optval)) ==-1) {
LM_WARN("setsockopt v6 tos: %s\n", strerror(errno));
/* continue since this is not critical */
}
LM_INFO("Setting scope of %s\n", sock_info->address_str.s);
addr->sin6.sin6_scope_id =
ipv6_get_netif_scope(sock_info->address_str.s);
}
-- Juha