Can you try without hard coding the IP address there, but use the value from the listen address? That will show if works properly with the config based values.
As I said, the link local might be tricky to deal with on some operating systems and are not commonly used for traffic, so having an option to disable/enable binding to it seems appropriate here. Also, finding the scope id requires walking though networking interfaces for all IPv6 addresses, which can be a costly at startup.
Cheers, Daniel
On 23.04.19 07:16, Juha Heinanen wrote:
Daniel-Constantin Mierla writes:
Anyhow, your code has hardcoded interface name, I added a helper function that tries to get the scope by matching the ip address when walking over network interfaces. The commit:
https://github.com/kamailio/kamailio/commit/ce1138d2d8962296de2867d5751abf77...
Can you try using that function to get the scope id?
I tried by changing my udp_server.c test line:
addr->sin6.sin6_scope_id = if_nametoindex("wlp1s0");
to
addr->sin6.sin6_scope_id = addr->ipv6_get_netif_scope("fe80::6e29:95ff:fe7d:37e6");
and the test again worked fine:
Apr 23 08:10:41 salmon sip-proxy[21888]: Listening on Apr 23 08:10:41 salmon sip-proxy[21888]: udp: FE80:0:0:0:6E29:95FF:FE7D:37E6 [FE80:0:0:0:6E29:95FF:FE7D:37E6]:5060
So rather than skipping link local addresses, ipv6_get_netif_scope could be used to find the scope id.
-- Juha