package nl import ( "unsafe" "golang.org/x/sys/unix" ) type IfAddrmsg struct { unix.IfAddrmsg } func NewIfAddrmsg(family int) *IfAddrmsg { return &IfAddrmsg{ IfAddrmsg: unix.IfAddrmsg{ Family: uint8(family), }, } } // struct ifaddrmsg { // __u8 ifa_family; // __u8 ifa_prefixlen; /* The prefix length */ // __u8 ifa_flags; /* Flags */ // __u8 ifa_scope; /* Address scope */ // __u32 ifa_index; /* Link index */ // }; // type IfAddrmsg struct { // Family uint8 // Prefixlen uint8 // Flags uint8 // Scope uint8 // Index uint32 // } // SizeofIfAddrmsg = 0x8 func DeserializeIfAddrmsg(b []byte) *IfAddrmsg { return (*IfAddrmsg)(unsafe.Pointer(&b[0:unix.SizeofIfAddrmsg][0])) } func (msg *IfAddrmsg) Serialize() []byte { return (*(*[unix.SizeofIfAddrmsg]byte)(unsafe.Pointer(msg)))[:] } func (msg *IfAddrmsg) Len() int { return unix.SizeofIfAddrmsg } // struct ifa_cacheinfo { // __u32 ifa_prefered; // __u32 ifa_valid; // __u32 cstamp; /* created timestamp, hundredths of seconds */ // __u32 tstamp; /* updated timestamp, hundredths of seconds */ // }; const IFA_CACHEINFO = 6 const SizeofIfaCacheInfo = 0x10 type IfaCacheInfo struct { IfaPrefered uint32 IfaValid uint32 Cstamp uint32 Tstamp uint32 } func (msg *IfaCacheInfo) Len() int { return SizeofIfaCacheInfo } func DeserializeIfaCacheInfo(b []byte) *IfaCacheInfo { return (*IfaCacheInfo)(unsafe.Pointer(&b[0:SizeofIfaCacheInfo][0])) } func (msg *IfaCacheInfo) Serialize() []byte { return (*(*[SizeofIfaCacheInfo]byte)(unsafe.Pointer(msg)))[:] }