:= net.InterfaceByName("tap" + s.name); err == nil {
mcasts, _ := tapDevice.MulticastAddrs()
l.Info(fmt.Sprintf("%s mcasts: %s", s.name, mcasts))
}
ipAddr := &net.IPAddr{IP: net.IPv6linklocalallrouters, Zone: "tap" + s.name}
conn, err := net.ListenIP("ip6:58", ipAddr)
if err != nil {
l.Info("error listen: " + err.Error())
return
}
В лог получаю
261919 mcasts: [224.0.0.1 ff02::1:ff00:1 ff02::1:ff00:0 ff02::1:ff02:7cd3 ff02::2 ff02::1 ff01::1]
error listen: listen ip6:58 ff02::2%tap261919: bind: no such device
The network must be "tcp", "tcp4", "tcp6", "unix" or "unixpacket"
Дело в том, что временами оно работает.
У вас там link local адреса фигурируют. Это тоже может доставлять чудес.
И, как бы. // Known networks are "tcp", "tcp4" (IPv4-only), "tcp6" (IPv6-only), // "udp", "udp4" (IPv4-only), "udp6" (IPv6-only), "ip", "ip4" // (IPv4-only), "ip6" (IPv6-only), "unix", "unixgram" and // "unixpacket".
А где в этом списке передаваемый вами "ip6:58" ?
Examples: Dial("ip4:1", "192.0.2.1") Dial("ip6:ipv6-icmp", "2001:db8::1") Dial("ip6:58", "fe80::1%lo0")
Но ошибка прилетает откуда-то из ядра.
Обсуждают сегодня