Files
go-dhcp/pkg/types/types.go
2024-01-09 12:23:41 +01:00

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
}