Ignatios Souvatzis <ignat...@cs.uni-bonn.de> writes: > On Mon, Sep 15, 2014 at 07:46:04PM +0200, Thomas Schäfer wrote: > >> I am still looking for an IPv6-wol (without mono) > > I suspect that sending to the all-stations multicast would work, wouldn't > it? The hardware detects the magic pattern anywhere in the packet. > > Thinking about it - it should work whether the target machine uses IPv6 > in normal operation or not.
This depends on all-stations multicast being forwarded to inactive ports. If it works with your switches, then fine. But I don't think you can assume it works everywhere. You could try something like this (might need a bit more error detection...): #!/usr/bin/perl use Socket; use Socket6; my $iface = shift; my $mac = pack("C6", map { hex } split(/:/, shift || die "Usage: $0 <iface> <mac>\n")); socket(S, AF_INET6, SOCK_DGRAM, 17); require "sys/ioctl.ph"; ioctl(S, &SIOCGIFINDEX, $iface); setsockopt(S, IPPROTO_IPV6, IPV6_MULTICAST_IF, substr($iface, 16)); send(S, pack("C6", (255) x 6) . $mac x 16, 0, pack_sockaddr_in6(7, inet_pton(AF_INET6, "ff02::1"))); But IP(v4) broadcast has the advantage that it will be forwarded to all ports in the L2 broadcast domain. That's why it is often used for non-root wake-on-lan tools. I guess it's easier/better to just add a dummy IPv4 broadcast route if you want to enable non-root users to send wol packets. Bjørn