I read K source code and found these kind of lines in sock_info.c:
for(;RTA_OK(rtap, rtl);rtap=RTA_NEXT(rtap,rtl)){
switch(rtap->rta_type){
case IFA_ADDRESS:
if((*(int*)RTA_DATA(rtap))== htons(0xfe80)){
LM_DBG("Link Local Address, ignoring ...\n");
is_link_local = 1;
break;
}
and
case IFA_LOCAL:
if((*(int*)RTA_DATA(rtap))== htons(0xfe80)){
LM_DBG("Link Local Address, ignoring ...\n");
is_link_local = 1;
}
and
if(is_link_local) {
pkg_free(entry);
continue; /* link local addresses are not bindable */
}
The last comment is wrong. Link local addresses ARE bindable. They
just require that sin6_scope_id is set.
I made an experiment by setting sin6_scope_id scope_id in udp_server.c
like this:
} else if (addr->s.sa_family==AF_INET6){
...
addr->sin6.sin6_scope_id = if_nametoindex("wlp1s0");
and looks like it worked. The error message was gone and
listen=udp:[fe80::6e29:95ff:fe7d:37e6]:5060
produced:
Apr 22 09:44:37 salmon sip-proxy[14003]: Listening on udp:
FE80:0:0:0:6E29:95FF:FE7D:37E6 [FE80:0:0:0:6E29:95FF:FE7D:37E6]:5060
-- Juha