27 lines
441 B
Go
27 lines
441 B
Go
package discovery
|
|
|
|
import (
|
|
"bytes"
|
|
"net"
|
|
)
|
|
|
|
var magicBytes = []byte{0x01, 0x02, 0x01}
|
|
|
|
func NewPacket() Packet {
|
|
return make(Packet, 7) // 7 = 3 bytes of magic + 4 bytes for ipv4 address
|
|
}
|
|
|
|
func NewPacketWithIP(ip net.IP) Packet {
|
|
return append(magicBytes, []byte(ip.To4())...)
|
|
}
|
|
|
|
type Packet []byte
|
|
|
|
func (p Packet) IP(n int) net.IP {
|
|
return net.IP(p[3:n])
|
|
}
|
|
|
|
func (p Packet) MagicOk() bool {
|
|
return bytes.Equal(p[:3], magicBytes)
|
|
}
|