...
1 package nl
2
3 import (
4 "unsafe"
5 )
6
7 const (
8 SizeofXfrmUsersaId = 0x18
9 SizeofXfrmStats = 0x0c
10 SizeofXfrmUsersaInfo = 0xe0
11 SizeofXfrmUserSpiInfo = 0xe8
12 SizeofXfrmAlgo = 0x44
13 SizeofXfrmAlgoAuth = 0x48
14 SizeofXfrmAlgoAEAD = 0x48
15 SizeofXfrmEncapTmpl = 0x18
16 SizeofXfrmUsersaFlush = 0x1
17 SizeofXfrmReplayStateEsn = 0x18
18 SizeofXfrmReplayState = 0x0c
19 )
20
21 const (
22 XFRM_STATE_NOECN = 1
23 XFRM_STATE_DECAP_DSCP = 2
24 XFRM_STATE_NOPMTUDISC = 4
25 XFRM_STATE_WILDRECV = 8
26 XFRM_STATE_ICMP = 16
27 XFRM_STATE_AF_UNSPEC = 32
28 XFRM_STATE_ALIGN4 = 64
29 XFRM_STATE_ESN = 128
30 )
31
32 const (
33 XFRM_SA_XFLAG_DONT_ENCAP_DSCP = 1
34 XFRM_SA_XFLAG_OSEQ_MAY_WRAP = 2
35 )
36
37
38
39
40
41
42
43
44 type XfrmUsersaId struct {
45 Daddr XfrmAddress
46 Spi uint32
47 Family uint16
48 Proto uint8
49 Pad byte
50 }
51
52 func (msg *XfrmUsersaId) Len() int {
53 return SizeofXfrmUsersaId
54 }
55
56 func DeserializeXfrmUsersaId(b []byte) *XfrmUsersaId {
57 return (*XfrmUsersaId)(unsafe.Pointer(&b[0:SizeofXfrmUsersaId][0]))
58 }
59
60 func (msg *XfrmUsersaId) Serialize() []byte {
61 return (*(*[SizeofXfrmUsersaId]byte)(unsafe.Pointer(msg)))[:]
62 }
63
64
65
66
67
68
69
70 type XfrmStats struct {
71 ReplayWindow uint32
72 Replay uint32
73 IntegrityFailed uint32
74 }
75
76 func (msg *XfrmStats) Len() int {
77 return SizeofXfrmStats
78 }
79
80 func DeserializeXfrmStats(b []byte) *XfrmStats {
81 return (*XfrmStats)(unsafe.Pointer(&b[0:SizeofXfrmStats][0]))
82 }
83
84 func (msg *XfrmStats) Serialize() []byte {
85 return (*(*[SizeofXfrmStats]byte)(unsafe.Pointer(msg)))[:]
86 }
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115 type XfrmUsersaInfo struct {
116 Sel XfrmSelector
117 Id XfrmId
118 Saddr XfrmAddress
119 Lft XfrmLifetimeCfg
120 Curlft XfrmLifetimeCur
121 Stats XfrmStats
122 Seq uint32
123 Reqid uint32
124 Family uint16
125 Mode uint8
126 ReplayWindow uint8
127 Flags uint8
128 Pad [7]byte
129 }
130
131 func (msg *XfrmUsersaInfo) Len() int {
132 return SizeofXfrmUsersaInfo
133 }
134
135 func DeserializeXfrmUsersaInfo(b []byte) *XfrmUsersaInfo {
136 return (*XfrmUsersaInfo)(unsafe.Pointer(&b[0:SizeofXfrmUsersaInfo][0]))
137 }
138
139 func (msg *XfrmUsersaInfo) Serialize() []byte {
140 return (*(*[SizeofXfrmUsersaInfo]byte)(unsafe.Pointer(msg)))[:]
141 }
142
143
144
145
146
147
148
149 type XfrmUserSpiInfo struct {
150 XfrmUsersaInfo XfrmUsersaInfo
151 Min uint32
152 Max uint32
153 }
154
155 func (msg *XfrmUserSpiInfo) Len() int {
156 return SizeofXfrmUserSpiInfo
157 }
158
159 func DeserializeXfrmUserSpiInfo(b []byte) *XfrmUserSpiInfo {
160 return (*XfrmUserSpiInfo)(unsafe.Pointer(&b[0:SizeofXfrmUserSpiInfo][0]))
161 }
162
163 func (msg *XfrmUserSpiInfo) Serialize() []byte {
164 return (*(*[SizeofXfrmUserSpiInfo]byte)(unsafe.Pointer(msg)))[:]
165 }
166
167
168
169
170
171
172
173 type XfrmAlgo struct {
174 AlgName [64]byte
175 AlgKeyLen uint32
176 AlgKey []byte
177 }
178
179 func (msg *XfrmAlgo) Len() int {
180 return SizeofXfrmAlgo + int(msg.AlgKeyLen/8)
181 }
182
183 func DeserializeXfrmAlgo(b []byte) *XfrmAlgo {
184 ret := XfrmAlgo{}
185 copy(ret.AlgName[:], b[0:64])
186 ret.AlgKeyLen = *(*uint32)(unsafe.Pointer(&b[64]))
187 ret.AlgKey = b[68:ret.Len()]
188 return &ret
189 }
190
191 func (msg *XfrmAlgo) Serialize() []byte {
192 b := make([]byte, msg.Len())
193 copy(b[0:64], msg.AlgName[:])
194 copy(b[64:68], (*(*[4]byte)(unsafe.Pointer(&msg.AlgKeyLen)))[:])
195 copy(b[68:msg.Len()], msg.AlgKey[:])
196 return b
197 }
198
199
200
201
202
203
204
205
206 type XfrmAlgoAuth struct {
207 AlgName [64]byte
208 AlgKeyLen uint32
209 AlgTruncLen uint32
210 AlgKey []byte
211 }
212
213 func (msg *XfrmAlgoAuth) Len() int {
214 return SizeofXfrmAlgoAuth + int(msg.AlgKeyLen/8)
215 }
216
217 func DeserializeXfrmAlgoAuth(b []byte) *XfrmAlgoAuth {
218 ret := XfrmAlgoAuth{}
219 copy(ret.AlgName[:], b[0:64])
220 ret.AlgKeyLen = *(*uint32)(unsafe.Pointer(&b[64]))
221 ret.AlgTruncLen = *(*uint32)(unsafe.Pointer(&b[68]))
222 ret.AlgKey = b[72:ret.Len()]
223 return &ret
224 }
225
226 func (msg *XfrmAlgoAuth) Serialize() []byte {
227 b := make([]byte, msg.Len())
228 copy(b[0:64], msg.AlgName[:])
229 copy(b[64:68], (*(*[4]byte)(unsafe.Pointer(&msg.AlgKeyLen)))[:])
230 copy(b[68:72], (*(*[4]byte)(unsafe.Pointer(&msg.AlgTruncLen)))[:])
231 copy(b[72:msg.Len()], msg.AlgKey[:])
232 return b
233 }
234
235
236
237
238
239
240
241
242 type XfrmAlgoAEAD struct {
243 AlgName [64]byte
244 AlgKeyLen uint32
245 AlgICVLen uint32
246 AlgKey []byte
247 }
248
249 func (msg *XfrmAlgoAEAD) Len() int {
250 return SizeofXfrmAlgoAEAD + int(msg.AlgKeyLen/8)
251 }
252
253 func DeserializeXfrmAlgoAEAD(b []byte) *XfrmAlgoAEAD {
254 ret := XfrmAlgoAEAD{}
255 copy(ret.AlgName[:], b[0:64])
256 ret.AlgKeyLen = *(*uint32)(unsafe.Pointer(&b[64]))
257 ret.AlgICVLen = *(*uint32)(unsafe.Pointer(&b[68]))
258 ret.AlgKey = b[72:ret.Len()]
259 return &ret
260 }
261
262 func (msg *XfrmAlgoAEAD) Serialize() []byte {
263 b := make([]byte, msg.Len())
264 copy(b[0:64], msg.AlgName[:])
265 copy(b[64:68], (*(*[4]byte)(unsafe.Pointer(&msg.AlgKeyLen)))[:])
266 copy(b[68:72], (*(*[4]byte)(unsafe.Pointer(&msg.AlgICVLen)))[:])
267 copy(b[72:msg.Len()], msg.AlgKey[:])
268 return b
269 }
270
271
272
273
274
275
276
277
278 type XfrmEncapTmpl struct {
279 EncapType uint16
280 EncapSport uint16
281 EncapDport uint16
282 Pad [2]byte
283 EncapOa XfrmAddress
284 }
285
286 func (msg *XfrmEncapTmpl) Len() int {
287 return SizeofXfrmEncapTmpl
288 }
289
290 func DeserializeXfrmEncapTmpl(b []byte) *XfrmEncapTmpl {
291 return (*XfrmEncapTmpl)(unsafe.Pointer(&b[0:SizeofXfrmEncapTmpl][0]))
292 }
293
294 func (msg *XfrmEncapTmpl) Serialize() []byte {
295 return (*(*[SizeofXfrmEncapTmpl]byte)(unsafe.Pointer(msg)))[:]
296 }
297
298
299
300
301
302 type XfrmUsersaFlush struct {
303 Proto uint8
304 }
305
306 func (msg *XfrmUsersaFlush) Len() int {
307 return SizeofXfrmUsersaFlush
308 }
309
310 func DeserializeXfrmUsersaFlush(b []byte) *XfrmUsersaFlush {
311 return (*XfrmUsersaFlush)(unsafe.Pointer(&b[0:SizeofXfrmUsersaFlush][0]))
312 }
313
314 func (msg *XfrmUsersaFlush) Serialize() []byte {
315 return (*(*[SizeofXfrmUsersaFlush]byte)(unsafe.Pointer(msg)))[:]
316 }
317
318
319
320
321
322
323
324
325
326
327
328 type XfrmReplayStateEsn struct {
329 BmpLen uint32
330 OSeq uint32
331 Seq uint32
332 OSeqHi uint32
333 SeqHi uint32
334 ReplayWindow uint32
335 Bmp []uint32
336 }
337
338 func (msg *XfrmReplayStateEsn) Serialize() []byte {
339
340 return (*(*[SizeofXfrmReplayStateEsn]byte)(unsafe.Pointer(msg)))[:]
341 }
342
343
344
345
346
347
348
349 type XfrmReplayState struct {
350 OSeq uint32
351 Seq uint32
352 BitMap uint32
353 }
354
355 func DeserializeXfrmReplayState(b []byte) *XfrmReplayState {
356 return (*XfrmReplayState)(unsafe.Pointer(&b[0:SizeofXfrmReplayState][0]))
357 }
358
359 func (msg *XfrmReplayState) Serialize() []byte {
360 return (*(*[SizeofXfrmReplayState]byte)(unsafe.Pointer(msg)))[:]
361 }
362
View as plain text