38 lines
784 B
Go
38 lines
784 B
Go
package types
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
)
|
|
|
|
type TxId [4]byte
|
|
type Ipv4Addr [4]byte
|
|
type HwAddr [16]byte
|
|
|
|
const (
|
|
ServerPort = 67
|
|
ClientPort = 68
|
|
)
|
|
|
|
func Ipv4AddrFromNetIP(ip net.IP) Ipv4Addr {
|
|
ipv4 := ip.To4()
|
|
return Ipv4Addr{ipv4[0], ipv4[1], ipv4[2], ipv4[3]}
|
|
}
|
|
|
|
func (addr Ipv4Addr) ToNetIPv4() net.IP {
|
|
return net.IPv4(addr[0], addr[1], addr[2], addr[3])
|
|
}
|
|
|
|
func (addr Ipv4Addr) String() string {
|
|
return addr.ToNetIPv4().String()
|
|
}
|
|
|
|
func (addr HwAddr) String() string {
|
|
return fmt.Sprintf("%02x:%02x:%02x:%02x:%02x:%02x", addr[0], addr[1], addr[2], addr[3], addr[4], addr[5])
|
|
}
|
|
|
|
func HwAddrFromString(s string) (addr HwAddr, err error) {
|
|
_, err = fmt.Sscanf(s, "%02x:%02x:%02x:%02x:%02x:%02x", &addr[0], &addr[1], &addr[2], &addr[3], &addr[4], &addr[5])
|
|
return addr, err
|
|
}
|