github.com/sagernet/netlink@v0.0.0-20240612041022-b9a21c07ac6a/nl/xfrm_monitor_linux_test.go (about) 1 package nl 2 3 import ( 4 "bytes" 5 "crypto/rand" 6 "encoding/binary" 7 "testing" 8 ) 9 10 func (msg *XfrmUserExpire) write(b []byte) { 11 msg.XfrmUsersaInfo.write(b[0:SizeofXfrmUsersaInfo]) 12 b[SizeofXfrmUsersaInfo] = msg.Hard 13 copy(b[SizeofXfrmUsersaInfo+1:SizeofXfrmUserExpire], msg.Pad[:]) 14 } 15 16 func (msg *XfrmUserExpire) serializeSafe() []byte { 17 b := make([]byte, SizeofXfrmUserExpire) 18 msg.write(b) 19 return b 20 } 21 22 func deserializeXfrmUserExpireSafe(b []byte) *XfrmUserExpire { 23 var msg = XfrmUserExpire{} 24 binary.Read(bytes.NewReader(b[0:SizeofXfrmUserExpire]), NativeEndian(), &msg) 25 return &msg 26 } 27 28 func TestXfrmUserExpireDeserializeSerialize(t *testing.T) { 29 var orig = make([]byte, SizeofXfrmUserExpire) 30 rand.Read(orig) 31 safemsg := deserializeXfrmUserExpireSafe(orig) 32 msg := DeserializeXfrmUserExpire(orig) 33 testDeserializeSerialize(t, orig, safemsg, msg) 34 }