Update dependencies
This commit is contained in:
54
vendor/github.com/kortschak/wol/wol.go
generated
vendored
Normal file
54
vendor/github.com/kortschak/wol/wol.go
generated
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
// Copyright ©2016 Dan Kortschak. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// Package wol provides a Wake On LAN function.
|
||||
package wol
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"io"
|
||||
"net"
|
||||
)
|
||||
|
||||
const magicLen = 6 + 16*6
|
||||
|
||||
// Wake sends a Wake On LAN magic packet for the given MAC address
|
||||
// at the given remote address. If local is not nil, it is used as
|
||||
// the local address for the connection to send on.
|
||||
func Wake(mac net.HardwareAddr, pass []byte, local, remote *net.UDPAddr) error {
|
||||
if len(mac) != 6 {
|
||||
return errors.New("wol: bad MAC address")
|
||||
}
|
||||
switch len(pass) {
|
||||
default:
|
||||
return errors.New("wol: bad password length")
|
||||
case 0, 6:
|
||||
}
|
||||
var magic [magicLen + 6]byte
|
||||
copy(magic[:], []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff})
|
||||
buf := bytes.NewBuffer(magic[:6])
|
||||
for i := 0; i < 16; i++ {
|
||||
buf.Write(mac)
|
||||
}
|
||||
buf.Write(pass)
|
||||
if buf.Len() != magicLen+len(pass) {
|
||||
panic("wol: unexpected packet length")
|
||||
}
|
||||
|
||||
conn, err := net.DialUDP("udp", local, remote)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
n, err := conn.Write(buf.Bytes())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if n < magicLen+len(pass) {
|
||||
return io.ErrShortWrite
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user