GoVPP release v0.5.0
[govpp.git] / binapi / ipsec / ipsec.ba.go
1 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
2 // versions:
3 //  binapi-generator: v0.5.0
4 //  VPP:              22.02-release
5 // source: /usr/share/vpp/api/core/ipsec.api.json
6
7 // Package ipsec contains generated bindings for API file ipsec.api.
8 //
9 // Contents:
10 //   1 enum
11 //   3 structs
12 //  46 messages
13 //
14 package ipsec
15
16 import (
17         "strconv"
18
19         api "git.fd.io/govpp.git/api"
20         interface_types "git.fd.io/govpp.git/binapi/interface_types"
21         ip_types "git.fd.io/govpp.git/binapi/ip_types"
22         ipsec_types "git.fd.io/govpp.git/binapi/ipsec_types"
23         tunnel_types "git.fd.io/govpp.git/binapi/tunnel_types"
24         codec "git.fd.io/govpp.git/codec"
25 )
26
27 // This is a compile-time assertion to ensure that this generated file
28 // is compatible with the GoVPP api package it is being compiled against.
29 // A compilation error at this line likely means your copy of the
30 // GoVPP api package needs to be updated.
31 const _ = api.GoVppAPIPackageIsVersion2
32
33 const (
34         APIFile    = "ipsec"
35         APIVersion = "5.0.2"
36         VersionCrc = 0x6b08e91e
37 )
38
39 // IpsecSpdAction defines enum 'ipsec_spd_action'.
40 type IpsecSpdAction uint32
41
42 const (
43         IPSEC_API_SPD_ACTION_BYPASS  IpsecSpdAction = 0
44         IPSEC_API_SPD_ACTION_DISCARD IpsecSpdAction = 1
45         IPSEC_API_SPD_ACTION_RESOLVE IpsecSpdAction = 2
46         IPSEC_API_SPD_ACTION_PROTECT IpsecSpdAction = 3
47 )
48
49 var (
50         IpsecSpdAction_name = map[uint32]string{
51                 0: "IPSEC_API_SPD_ACTION_BYPASS",
52                 1: "IPSEC_API_SPD_ACTION_DISCARD",
53                 2: "IPSEC_API_SPD_ACTION_RESOLVE",
54                 3: "IPSEC_API_SPD_ACTION_PROTECT",
55         }
56         IpsecSpdAction_value = map[string]uint32{
57                 "IPSEC_API_SPD_ACTION_BYPASS":  0,
58                 "IPSEC_API_SPD_ACTION_DISCARD": 1,
59                 "IPSEC_API_SPD_ACTION_RESOLVE": 2,
60                 "IPSEC_API_SPD_ACTION_PROTECT": 3,
61         }
62 )
63
64 func (x IpsecSpdAction) String() string {
65         s, ok := IpsecSpdAction_name[uint32(x)]
66         if ok {
67                 return s
68         }
69         return "IpsecSpdAction(" + strconv.Itoa(int(x)) + ")"
70 }
71
72 // IpsecItf defines type 'ipsec_itf'.
73 type IpsecItf struct {
74         UserInstance uint32                         `binapi:"u32,name=user_instance,default=4294967295" json:"user_instance,omitempty"`
75         Mode         tunnel_types.TunnelMode        `binapi:"tunnel_mode,name=mode" json:"mode,omitempty"`
76         SwIfIndex    interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
77 }
78
79 // IpsecSpdEntry defines type 'ipsec_spd_entry'.
80 type IpsecSpdEntry struct {
81         SpdID              uint32           `binapi:"u32,name=spd_id" json:"spd_id,omitempty"`
82         Priority           int32            `binapi:"i32,name=priority" json:"priority,omitempty"`
83         IsOutbound         bool             `binapi:"bool,name=is_outbound" json:"is_outbound,omitempty"`
84         SaID               uint32           `binapi:"u32,name=sa_id" json:"sa_id,omitempty"`
85         Policy             IpsecSpdAction   `binapi:"ipsec_spd_action,name=policy" json:"policy,omitempty"`
86         Protocol           uint8            `binapi:"u8,name=protocol" json:"protocol,omitempty"`
87         RemoteAddressStart ip_types.Address `binapi:"address,name=remote_address_start" json:"remote_address_start,omitempty"`
88         RemoteAddressStop  ip_types.Address `binapi:"address,name=remote_address_stop" json:"remote_address_stop,omitempty"`
89         LocalAddressStart  ip_types.Address `binapi:"address,name=local_address_start" json:"local_address_start,omitempty"`
90         LocalAddressStop   ip_types.Address `binapi:"address,name=local_address_stop" json:"local_address_stop,omitempty"`
91         RemotePortStart    uint16           `binapi:"u16,name=remote_port_start" json:"remote_port_start,omitempty"`
92         RemotePortStop     uint16           `binapi:"u16,name=remote_port_stop" json:"remote_port_stop,omitempty"`
93         LocalPortStart     uint16           `binapi:"u16,name=local_port_start" json:"local_port_start,omitempty"`
94         LocalPortStop      uint16           `binapi:"u16,name=local_port_stop" json:"local_port_stop,omitempty"`
95 }
96
97 // IpsecTunnelProtect defines type 'ipsec_tunnel_protect'.
98 type IpsecTunnelProtect struct {
99         SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
100         Nh        ip_types.Address               `binapi:"address,name=nh" json:"nh,omitempty"`
101         SaOut     uint32                         `binapi:"u32,name=sa_out" json:"sa_out,omitempty"`
102         NSaIn     uint8                          `binapi:"u8,name=n_sa_in" json:"-"`
103         SaIn      []uint32                       `binapi:"u32[n_sa_in],name=sa_in" json:"sa_in,omitempty"`
104 }
105
106 // IpsecBackendDetails defines message 'ipsec_backend_details'.
107 type IpsecBackendDetails struct {
108         Name     string                 `binapi:"string[128],name=name" json:"name,omitempty"`
109         Protocol ipsec_types.IpsecProto `binapi:"ipsec_proto,name=protocol" json:"protocol,omitempty"`
110         Index    uint8                  `binapi:"u8,name=index" json:"index,omitempty"`
111         Active   bool                   `binapi:"bool,name=active" json:"active,omitempty"`
112 }
113
114 func (m *IpsecBackendDetails) Reset()               { *m = IpsecBackendDetails{} }
115 func (*IpsecBackendDetails) GetMessageName() string { return "ipsec_backend_details" }
116 func (*IpsecBackendDetails) GetCrcString() string   { return "ee601c29" }
117 func (*IpsecBackendDetails) GetMessageType() api.MessageType {
118         return api.ReplyMessage
119 }
120
121 func (m *IpsecBackendDetails) Size() (size int) {
122         if m == nil {
123                 return 0
124         }
125         size += 128 // m.Name
126         size += 4   // m.Protocol
127         size += 1   // m.Index
128         size += 1   // m.Active
129         return size
130 }
131 func (m *IpsecBackendDetails) Marshal(b []byte) ([]byte, error) {
132         if b == nil {
133                 b = make([]byte, m.Size())
134         }
135         buf := codec.NewBuffer(b)
136         buf.EncodeString(m.Name, 128)
137         buf.EncodeUint32(uint32(m.Protocol))
138         buf.EncodeUint8(m.Index)
139         buf.EncodeBool(m.Active)
140         return buf.Bytes(), nil
141 }
142 func (m *IpsecBackendDetails) Unmarshal(b []byte) error {
143         buf := codec.NewBuffer(b)
144         m.Name = buf.DecodeString(128)
145         m.Protocol = ipsec_types.IpsecProto(buf.DecodeUint32())
146         m.Index = buf.DecodeUint8()
147         m.Active = buf.DecodeBool()
148         return nil
149 }
150
151 // IpsecBackendDump defines message 'ipsec_backend_dump'.
152 type IpsecBackendDump struct{}
153
154 func (m *IpsecBackendDump) Reset()               { *m = IpsecBackendDump{} }
155 func (*IpsecBackendDump) GetMessageName() string { return "ipsec_backend_dump" }
156 func (*IpsecBackendDump) GetCrcString() string   { return "51077d14" }
157 func (*IpsecBackendDump) GetMessageType() api.MessageType {
158         return api.RequestMessage
159 }
160
161 func (m *IpsecBackendDump) Size() (size int) {
162         if m == nil {
163                 return 0
164         }
165         return size
166 }
167 func (m *IpsecBackendDump) Marshal(b []byte) ([]byte, error) {
168         if b == nil {
169                 b = make([]byte, m.Size())
170         }
171         buf := codec.NewBuffer(b)
172         return buf.Bytes(), nil
173 }
174 func (m *IpsecBackendDump) Unmarshal(b []byte) error {
175         return nil
176 }
177
178 // IpsecInterfaceAddDelSpd defines message 'ipsec_interface_add_del_spd'.
179 type IpsecInterfaceAddDelSpd struct {
180         IsAdd     bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
181         SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
182         SpdID     uint32                         `binapi:"u32,name=spd_id" json:"spd_id,omitempty"`
183 }
184
185 func (m *IpsecInterfaceAddDelSpd) Reset()               { *m = IpsecInterfaceAddDelSpd{} }
186 func (*IpsecInterfaceAddDelSpd) GetMessageName() string { return "ipsec_interface_add_del_spd" }
187 func (*IpsecInterfaceAddDelSpd) GetCrcString() string   { return "80f80cbb" }
188 func (*IpsecInterfaceAddDelSpd) GetMessageType() api.MessageType {
189         return api.RequestMessage
190 }
191
192 func (m *IpsecInterfaceAddDelSpd) Size() (size int) {
193         if m == nil {
194                 return 0
195         }
196         size += 1 // m.IsAdd
197         size += 4 // m.SwIfIndex
198         size += 4 // m.SpdID
199         return size
200 }
201 func (m *IpsecInterfaceAddDelSpd) Marshal(b []byte) ([]byte, error) {
202         if b == nil {
203                 b = make([]byte, m.Size())
204         }
205         buf := codec.NewBuffer(b)
206         buf.EncodeBool(m.IsAdd)
207         buf.EncodeUint32(uint32(m.SwIfIndex))
208         buf.EncodeUint32(m.SpdID)
209         return buf.Bytes(), nil
210 }
211 func (m *IpsecInterfaceAddDelSpd) Unmarshal(b []byte) error {
212         buf := codec.NewBuffer(b)
213         m.IsAdd = buf.DecodeBool()
214         m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
215         m.SpdID = buf.DecodeUint32()
216         return nil
217 }
218
219 // IpsecInterfaceAddDelSpdReply defines message 'ipsec_interface_add_del_spd_reply'.
220 type IpsecInterfaceAddDelSpdReply struct {
221         Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
222 }
223
224 func (m *IpsecInterfaceAddDelSpdReply) Reset() { *m = IpsecInterfaceAddDelSpdReply{} }
225 func (*IpsecInterfaceAddDelSpdReply) GetMessageName() string {
226         return "ipsec_interface_add_del_spd_reply"
227 }
228 func (*IpsecInterfaceAddDelSpdReply) GetCrcString() string { return "e8d4e804" }
229 func (*IpsecInterfaceAddDelSpdReply) GetMessageType() api.MessageType {
230         return api.ReplyMessage
231 }
232
233 func (m *IpsecInterfaceAddDelSpdReply) Size() (size int) {
234         if m == nil {
235                 return 0
236         }
237         size += 4 // m.Retval
238         return size
239 }
240 func (m *IpsecInterfaceAddDelSpdReply) Marshal(b []byte) ([]byte, error) {
241         if b == nil {
242                 b = make([]byte, m.Size())
243         }
244         buf := codec.NewBuffer(b)
245         buf.EncodeInt32(m.Retval)
246         return buf.Bytes(), nil
247 }
248 func (m *IpsecInterfaceAddDelSpdReply) Unmarshal(b []byte) error {
249         buf := codec.NewBuffer(b)
250         m.Retval = buf.DecodeInt32()
251         return nil
252 }
253
254 // IpsecItfCreate defines message 'ipsec_itf_create'.
255 type IpsecItfCreate struct {
256         Itf IpsecItf `binapi:"ipsec_itf,name=itf" json:"itf,omitempty"`
257 }
258
259 func (m *IpsecItfCreate) Reset()               { *m = IpsecItfCreate{} }
260 func (*IpsecItfCreate) GetMessageName() string { return "ipsec_itf_create" }
261 func (*IpsecItfCreate) GetCrcString() string   { return "6f50b3bc" }
262 func (*IpsecItfCreate) GetMessageType() api.MessageType {
263         return api.RequestMessage
264 }
265
266 func (m *IpsecItfCreate) Size() (size int) {
267         if m == nil {
268                 return 0
269         }
270         size += 4 // m.Itf.UserInstance
271         size += 1 // m.Itf.Mode
272         size += 4 // m.Itf.SwIfIndex
273         return size
274 }
275 func (m *IpsecItfCreate) Marshal(b []byte) ([]byte, error) {
276         if b == nil {
277                 b = make([]byte, m.Size())
278         }
279         buf := codec.NewBuffer(b)
280         buf.EncodeUint32(m.Itf.UserInstance)
281         buf.EncodeUint8(uint8(m.Itf.Mode))
282         buf.EncodeUint32(uint32(m.Itf.SwIfIndex))
283         return buf.Bytes(), nil
284 }
285 func (m *IpsecItfCreate) Unmarshal(b []byte) error {
286         buf := codec.NewBuffer(b)
287         m.Itf.UserInstance = buf.DecodeUint32()
288         m.Itf.Mode = tunnel_types.TunnelMode(buf.DecodeUint8())
289         m.Itf.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
290         return nil
291 }
292
293 // IpsecItfCreateReply defines message 'ipsec_itf_create_reply'.
294 type IpsecItfCreateReply struct {
295         Retval    int32                          `binapi:"i32,name=retval" json:"retval,omitempty"`
296         SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
297 }
298
299 func (m *IpsecItfCreateReply) Reset()               { *m = IpsecItfCreateReply{} }
300 func (*IpsecItfCreateReply) GetMessageName() string { return "ipsec_itf_create_reply" }
301 func (*IpsecItfCreateReply) GetCrcString() string   { return "5383d31f" }
302 func (*IpsecItfCreateReply) GetMessageType() api.MessageType {
303         return api.ReplyMessage
304 }
305
306 func (m *IpsecItfCreateReply) Size() (size int) {
307         if m == nil {
308                 return 0
309         }
310         size += 4 // m.Retval
311         size += 4 // m.SwIfIndex
312         return size
313 }
314 func (m *IpsecItfCreateReply) Marshal(b []byte) ([]byte, error) {
315         if b == nil {
316                 b = make([]byte, m.Size())
317         }
318         buf := codec.NewBuffer(b)
319         buf.EncodeInt32(m.Retval)
320         buf.EncodeUint32(uint32(m.SwIfIndex))
321         return buf.Bytes(), nil
322 }
323 func (m *IpsecItfCreateReply) Unmarshal(b []byte) error {
324         buf := codec.NewBuffer(b)
325         m.Retval = buf.DecodeInt32()
326         m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
327         return nil
328 }
329
330 // IpsecItfDelete defines message 'ipsec_itf_delete'.
331 type IpsecItfDelete struct {
332         SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
333 }
334
335 func (m *IpsecItfDelete) Reset()               { *m = IpsecItfDelete{} }
336 func (*IpsecItfDelete) GetMessageName() string { return "ipsec_itf_delete" }
337 func (*IpsecItfDelete) GetCrcString() string   { return "f9e6675e" }
338 func (*IpsecItfDelete) GetMessageType() api.MessageType {
339         return api.RequestMessage
340 }
341
342 func (m *IpsecItfDelete) Size() (size int) {
343         if m == nil {
344                 return 0
345         }
346         size += 4 // m.SwIfIndex
347         return size
348 }
349 func (m *IpsecItfDelete) Marshal(b []byte) ([]byte, error) {
350         if b == nil {
351                 b = make([]byte, m.Size())
352         }
353         buf := codec.NewBuffer(b)
354         buf.EncodeUint32(uint32(m.SwIfIndex))
355         return buf.Bytes(), nil
356 }
357 func (m *IpsecItfDelete) Unmarshal(b []byte) error {
358         buf := codec.NewBuffer(b)
359         m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
360         return nil
361 }
362
363 // IpsecItfDeleteReply defines message 'ipsec_itf_delete_reply'.
364 type IpsecItfDeleteReply struct {
365         Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
366 }
367
368 func (m *IpsecItfDeleteReply) Reset()               { *m = IpsecItfDeleteReply{} }
369 func (*IpsecItfDeleteReply) GetMessageName() string { return "ipsec_itf_delete_reply" }
370 func (*IpsecItfDeleteReply) GetCrcString() string   { return "e8d4e804" }
371 func (*IpsecItfDeleteReply) GetMessageType() api.MessageType {
372         return api.ReplyMessage
373 }
374
375 func (m *IpsecItfDeleteReply) Size() (size int) {
376         if m == nil {
377                 return 0
378         }
379         size += 4 // m.Retval
380         return size
381 }
382 func (m *IpsecItfDeleteReply) Marshal(b []byte) ([]byte, error) {
383         if b == nil {
384                 b = make([]byte, m.Size())
385         }
386         buf := codec.NewBuffer(b)
387         buf.EncodeInt32(m.Retval)
388         return buf.Bytes(), nil
389 }
390 func (m *IpsecItfDeleteReply) Unmarshal(b []byte) error {
391         buf := codec.NewBuffer(b)
392         m.Retval = buf.DecodeInt32()
393         return nil
394 }
395
396 // IpsecItfDetails defines message 'ipsec_itf_details'.
397 type IpsecItfDetails struct {
398         Itf IpsecItf `binapi:"ipsec_itf,name=itf" json:"itf,omitempty"`
399 }
400
401 func (m *IpsecItfDetails) Reset()               { *m = IpsecItfDetails{} }
402 func (*IpsecItfDetails) GetMessageName() string { return "ipsec_itf_details" }
403 func (*IpsecItfDetails) GetCrcString() string   { return "548a73b8" }
404 func (*IpsecItfDetails) GetMessageType() api.MessageType {
405         return api.ReplyMessage
406 }
407
408 func (m *IpsecItfDetails) Size() (size int) {
409         if m == nil {
410                 return 0
411         }
412         size += 4 // m.Itf.UserInstance
413         size += 1 // m.Itf.Mode
414         size += 4 // m.Itf.SwIfIndex
415         return size
416 }
417 func (m *IpsecItfDetails) Marshal(b []byte) ([]byte, error) {
418         if b == nil {
419                 b = make([]byte, m.Size())
420         }
421         buf := codec.NewBuffer(b)
422         buf.EncodeUint32(m.Itf.UserInstance)
423         buf.EncodeUint8(uint8(m.Itf.Mode))
424         buf.EncodeUint32(uint32(m.Itf.SwIfIndex))
425         return buf.Bytes(), nil
426 }
427 func (m *IpsecItfDetails) Unmarshal(b []byte) error {
428         buf := codec.NewBuffer(b)
429         m.Itf.UserInstance = buf.DecodeUint32()
430         m.Itf.Mode = tunnel_types.TunnelMode(buf.DecodeUint8())
431         m.Itf.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
432         return nil
433 }
434
435 // IpsecItfDump defines message 'ipsec_itf_dump'.
436 type IpsecItfDump struct {
437         SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
438 }
439
440 func (m *IpsecItfDump) Reset()               { *m = IpsecItfDump{} }
441 func (*IpsecItfDump) GetMessageName() string { return "ipsec_itf_dump" }
442 func (*IpsecItfDump) GetCrcString() string   { return "f9e6675e" }
443 func (*IpsecItfDump) GetMessageType() api.MessageType {
444         return api.RequestMessage
445 }
446
447 func (m *IpsecItfDump) Size() (size int) {
448         if m == nil {
449                 return 0
450         }
451         size += 4 // m.SwIfIndex
452         return size
453 }
454 func (m *IpsecItfDump) Marshal(b []byte) ([]byte, error) {
455         if b == nil {
456                 b = make([]byte, m.Size())
457         }
458         buf := codec.NewBuffer(b)
459         buf.EncodeUint32(uint32(m.SwIfIndex))
460         return buf.Bytes(), nil
461 }
462 func (m *IpsecItfDump) Unmarshal(b []byte) error {
463         buf := codec.NewBuffer(b)
464         m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
465         return nil
466 }
467
468 // IpsecSaDetails defines message 'ipsec_sa_details'.
469 // Deprecated: the message will be removed in the future versions
470 type IpsecSaDetails struct {
471         Entry          ipsec_types.IpsecSadEntry      `binapi:"ipsec_sad_entry,name=entry" json:"entry,omitempty"`
472         SwIfIndex      interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
473         Salt           uint32                         `binapi:"u32,name=salt" json:"salt,omitempty"`
474         SeqOutbound    uint64                         `binapi:"u64,name=seq_outbound" json:"seq_outbound,omitempty"`
475         LastSeqInbound uint64                         `binapi:"u64,name=last_seq_inbound" json:"last_seq_inbound,omitempty"`
476         ReplayWindow   uint64                         `binapi:"u64,name=replay_window" json:"replay_window,omitempty"`
477         StatIndex      uint32                         `binapi:"u32,name=stat_index" json:"stat_index,omitempty"`
478 }
479
480 func (m *IpsecSaDetails) Reset()               { *m = IpsecSaDetails{} }
481 func (*IpsecSaDetails) GetMessageName() string { return "ipsec_sa_details" }
482 func (*IpsecSaDetails) GetCrcString() string   { return "345d14a7" }
483 func (*IpsecSaDetails) GetMessageType() api.MessageType {
484         return api.ReplyMessage
485 }
486
487 func (m *IpsecSaDetails) Size() (size int) {
488         if m == nil {
489                 return 0
490         }
491         size += 4       // m.Entry.SadID
492         size += 4       // m.Entry.Spi
493         size += 4       // m.Entry.Protocol
494         size += 4       // m.Entry.CryptoAlgorithm
495         size += 1       // m.Entry.CryptoKey.Length
496         size += 1 * 128 // m.Entry.CryptoKey.Data
497         size += 4       // m.Entry.IntegrityAlgorithm
498         size += 1       // m.Entry.IntegrityKey.Length
499         size += 1 * 128 // m.Entry.IntegrityKey.Data
500         size += 4       // m.Entry.Flags
501         size += 1       // m.Entry.TunnelSrc.Af
502         size += 1 * 16  // m.Entry.TunnelSrc.Un
503         size += 1       // m.Entry.TunnelDst.Af
504         size += 1 * 16  // m.Entry.TunnelDst.Un
505         size += 4       // m.Entry.TxTableID
506         size += 4       // m.Entry.Salt
507         size += 2       // m.Entry.UDPSrcPort
508         size += 2       // m.Entry.UDPDstPort
509         size += 4       // m.SwIfIndex
510         size += 4       // m.Salt
511         size += 8       // m.SeqOutbound
512         size += 8       // m.LastSeqInbound
513         size += 8       // m.ReplayWindow
514         size += 4       // m.StatIndex
515         return size
516 }
517 func (m *IpsecSaDetails) Marshal(b []byte) ([]byte, error) {
518         if b == nil {
519                 b = make([]byte, m.Size())
520         }
521         buf := codec.NewBuffer(b)
522         buf.EncodeUint32(m.Entry.SadID)
523         buf.EncodeUint32(m.Entry.Spi)
524         buf.EncodeUint32(uint32(m.Entry.Protocol))
525         buf.EncodeUint32(uint32(m.Entry.CryptoAlgorithm))
526         buf.EncodeUint8(m.Entry.CryptoKey.Length)
527         buf.EncodeBytes(m.Entry.CryptoKey.Data, 128)
528         buf.EncodeUint32(uint32(m.Entry.IntegrityAlgorithm))
529         buf.EncodeUint8(m.Entry.IntegrityKey.Length)
530         buf.EncodeBytes(m.Entry.IntegrityKey.Data, 128)
531         buf.EncodeUint32(uint32(m.Entry.Flags))
532         buf.EncodeUint8(uint8(m.Entry.TunnelSrc.Af))
533         buf.EncodeBytes(m.Entry.TunnelSrc.Un.XXX_UnionData[:], 16)
534         buf.EncodeUint8(uint8(m.Entry.TunnelDst.Af))
535         buf.EncodeBytes(m.Entry.TunnelDst.Un.XXX_UnionData[:], 16)
536         buf.EncodeUint32(m.Entry.TxTableID)
537         buf.EncodeUint32(m.Entry.Salt)
538         buf.EncodeUint16(m.Entry.UDPSrcPort)
539         buf.EncodeUint16(m.Entry.UDPDstPort)
540         buf.EncodeUint32(uint32(m.SwIfIndex))
541         buf.EncodeUint32(m.Salt)
542         buf.EncodeUint64(m.SeqOutbound)
543         buf.EncodeUint64(m.LastSeqInbound)
544         buf.EncodeUint64(m.ReplayWindow)
545         buf.EncodeUint32(m.StatIndex)
546         return buf.Bytes(), nil
547 }
548 func (m *IpsecSaDetails) Unmarshal(b []byte) error {
549         buf := codec.NewBuffer(b)
550         m.Entry.SadID = buf.DecodeUint32()
551         m.Entry.Spi = buf.DecodeUint32()
552         m.Entry.Protocol = ipsec_types.IpsecProto(buf.DecodeUint32())
553         m.Entry.CryptoAlgorithm = ipsec_types.IpsecCryptoAlg(buf.DecodeUint32())
554         m.Entry.CryptoKey.Length = buf.DecodeUint8()
555         m.Entry.CryptoKey.Data = make([]byte, 128)
556         copy(m.Entry.CryptoKey.Data, buf.DecodeBytes(len(m.Entry.CryptoKey.Data)))
557         m.Entry.IntegrityAlgorithm = ipsec_types.IpsecIntegAlg(buf.DecodeUint32())
558         m.Entry.IntegrityKey.Length = buf.DecodeUint8()
559         m.Entry.IntegrityKey.Data = make([]byte, 128)
560         copy(m.Entry.IntegrityKey.Data, buf.DecodeBytes(len(m.Entry.IntegrityKey.Data)))
561         m.Entry.Flags = ipsec_types.IpsecSadFlags(buf.DecodeUint32())
562         m.Entry.TunnelSrc.Af = ip_types.AddressFamily(buf.DecodeUint8())
563         copy(m.Entry.TunnelSrc.Un.XXX_UnionData[:], buf.DecodeBytes(16))
564         m.Entry.TunnelDst.Af = ip_types.AddressFamily(buf.DecodeUint8())
565         copy(m.Entry.TunnelDst.Un.XXX_UnionData[:], buf.DecodeBytes(16))
566         m.Entry.TxTableID = buf.DecodeUint32()
567         m.Entry.Salt = buf.DecodeUint32()
568         m.Entry.UDPSrcPort = buf.DecodeUint16()
569         m.Entry.UDPDstPort = buf.DecodeUint16()
570         m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
571         m.Salt = buf.DecodeUint32()
572         m.SeqOutbound = buf.DecodeUint64()
573         m.LastSeqInbound = buf.DecodeUint64()
574         m.ReplayWindow = buf.DecodeUint64()
575         m.StatIndex = buf.DecodeUint32()
576         return nil
577 }
578
579 // IpsecSaDump defines message 'ipsec_sa_dump'.
580 // Deprecated: the message will be removed in the future versions
581 type IpsecSaDump struct {
582         SaID uint32 `binapi:"u32,name=sa_id" json:"sa_id,omitempty"`
583 }
584
585 func (m *IpsecSaDump) Reset()               { *m = IpsecSaDump{} }
586 func (*IpsecSaDump) GetMessageName() string { return "ipsec_sa_dump" }
587 func (*IpsecSaDump) GetCrcString() string   { return "2076c2f4" }
588 func (*IpsecSaDump) GetMessageType() api.MessageType {
589         return api.RequestMessage
590 }
591
592 func (m *IpsecSaDump) Size() (size int) {
593         if m == nil {
594                 return 0
595         }
596         size += 4 // m.SaID
597         return size
598 }
599 func (m *IpsecSaDump) Marshal(b []byte) ([]byte, error) {
600         if b == nil {
601                 b = make([]byte, m.Size())
602         }
603         buf := codec.NewBuffer(b)
604         buf.EncodeUint32(m.SaID)
605         return buf.Bytes(), nil
606 }
607 func (m *IpsecSaDump) Unmarshal(b []byte) error {
608         buf := codec.NewBuffer(b)
609         m.SaID = buf.DecodeUint32()
610         return nil
611 }
612
613 // IpsecSaV2Details defines message 'ipsec_sa_v2_details'.
614 type IpsecSaV2Details struct {
615         Entry          ipsec_types.IpsecSadEntryV2    `binapi:"ipsec_sad_entry_v2,name=entry" json:"entry,omitempty"`
616         SwIfIndex      interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
617         Salt           uint32                         `binapi:"u32,name=salt" json:"salt,omitempty"`
618         SeqOutbound    uint64                         `binapi:"u64,name=seq_outbound" json:"seq_outbound,omitempty"`
619         LastSeqInbound uint64                         `binapi:"u64,name=last_seq_inbound" json:"last_seq_inbound,omitempty"`
620         ReplayWindow   uint64                         `binapi:"u64,name=replay_window" json:"replay_window,omitempty"`
621         StatIndex      uint32                         `binapi:"u32,name=stat_index" json:"stat_index,omitempty"`
622 }
623
624 func (m *IpsecSaV2Details) Reset()               { *m = IpsecSaV2Details{} }
625 func (*IpsecSaV2Details) GetMessageName() string { return "ipsec_sa_v2_details" }
626 func (*IpsecSaV2Details) GetCrcString() string   { return "e2130051" }
627 func (*IpsecSaV2Details) GetMessageType() api.MessageType {
628         return api.ReplyMessage
629 }
630
631 func (m *IpsecSaV2Details) Size() (size int) {
632         if m == nil {
633                 return 0
634         }
635         size += 4       // m.Entry.SadID
636         size += 4       // m.Entry.Spi
637         size += 4       // m.Entry.Protocol
638         size += 4       // m.Entry.CryptoAlgorithm
639         size += 1       // m.Entry.CryptoKey.Length
640         size += 1 * 128 // m.Entry.CryptoKey.Data
641         size += 4       // m.Entry.IntegrityAlgorithm
642         size += 1       // m.Entry.IntegrityKey.Length
643         size += 1 * 128 // m.Entry.IntegrityKey.Data
644         size += 4       // m.Entry.Flags
645         size += 1       // m.Entry.TunnelSrc.Af
646         size += 1 * 16  // m.Entry.TunnelSrc.Un
647         size += 1       // m.Entry.TunnelDst.Af
648         size += 1 * 16  // m.Entry.TunnelDst.Un
649         size += 1       // m.Entry.TunnelFlags
650         size += 1       // m.Entry.Dscp
651         size += 4       // m.Entry.TxTableID
652         size += 4       // m.Entry.Salt
653         size += 2       // m.Entry.UDPSrcPort
654         size += 2       // m.Entry.UDPDstPort
655         size += 4       // m.SwIfIndex
656         size += 4       // m.Salt
657         size += 8       // m.SeqOutbound
658         size += 8       // m.LastSeqInbound
659         size += 8       // m.ReplayWindow
660         size += 4       // m.StatIndex
661         return size
662 }
663 func (m *IpsecSaV2Details) Marshal(b []byte) ([]byte, error) {
664         if b == nil {
665                 b = make([]byte, m.Size())
666         }
667         buf := codec.NewBuffer(b)
668         buf.EncodeUint32(m.Entry.SadID)
669         buf.EncodeUint32(m.Entry.Spi)
670         buf.EncodeUint32(uint32(m.Entry.Protocol))
671         buf.EncodeUint32(uint32(m.Entry.CryptoAlgorithm))
672         buf.EncodeUint8(m.Entry.CryptoKey.Length)
673         buf.EncodeBytes(m.Entry.CryptoKey.Data, 128)
674         buf.EncodeUint32(uint32(m.Entry.IntegrityAlgorithm))
675         buf.EncodeUint8(m.Entry.IntegrityKey.Length)
676         buf.EncodeBytes(m.Entry.IntegrityKey.Data, 128)
677         buf.EncodeUint32(uint32(m.Entry.Flags))
678         buf.EncodeUint8(uint8(m.Entry.TunnelSrc.Af))
679         buf.EncodeBytes(m.Entry.TunnelSrc.Un.XXX_UnionData[:], 16)
680         buf.EncodeUint8(uint8(m.Entry.TunnelDst.Af))
681         buf.EncodeBytes(m.Entry.TunnelDst.Un.XXX_UnionData[:], 16)
682         buf.EncodeUint8(uint8(m.Entry.TunnelFlags))
683         buf.EncodeUint8(uint8(m.Entry.Dscp))
684         buf.EncodeUint32(m.Entry.TxTableID)
685         buf.EncodeUint32(m.Entry.Salt)
686         buf.EncodeUint16(m.Entry.UDPSrcPort)
687         buf.EncodeUint16(m.Entry.UDPDstPort)
688         buf.EncodeUint32(uint32(m.SwIfIndex))
689         buf.EncodeUint32(m.Salt)
690         buf.EncodeUint64(m.SeqOutbound)
691         buf.EncodeUint64(m.LastSeqInbound)
692         buf.EncodeUint64(m.ReplayWindow)
693         buf.EncodeUint32(m.StatIndex)
694         return buf.Bytes(), nil
695 }
696 func (m *IpsecSaV2Details) Unmarshal(b []byte) error {
697         buf := codec.NewBuffer(b)
698         m.Entry.SadID = buf.DecodeUint32()
699         m.Entry.Spi = buf.DecodeUint32()
700         m.Entry.Protocol = ipsec_types.IpsecProto(buf.DecodeUint32())
701         m.Entry.CryptoAlgorithm = ipsec_types.IpsecCryptoAlg(buf.DecodeUint32())
702         m.Entry.CryptoKey.Length = buf.DecodeUint8()
703         m.Entry.CryptoKey.Data = make([]byte, 128)
704         copy(m.Entry.CryptoKey.Data, buf.DecodeBytes(len(m.Entry.CryptoKey.Data)))
705         m.Entry.IntegrityAlgorithm = ipsec_types.IpsecIntegAlg(buf.DecodeUint32())
706         m.Entry.IntegrityKey.Length = buf.DecodeUint8()
707         m.Entry.IntegrityKey.Data = make([]byte, 128)
708         copy(m.Entry.IntegrityKey.Data, buf.DecodeBytes(len(m.Entry.IntegrityKey.Data)))
709         m.Entry.Flags = ipsec_types.IpsecSadFlags(buf.DecodeUint32())
710         m.Entry.TunnelSrc.Af = ip_types.AddressFamily(buf.DecodeUint8())
711         copy(m.Entry.TunnelSrc.Un.XXX_UnionData[:], buf.DecodeBytes(16))
712         m.Entry.TunnelDst.Af = ip_types.AddressFamily(buf.DecodeUint8())
713         copy(m.Entry.TunnelDst.Un.XXX_UnionData[:], buf.DecodeBytes(16))
714         m.Entry.TunnelFlags = tunnel_types.TunnelEncapDecapFlags(buf.DecodeUint8())
715         m.Entry.Dscp = ip_types.IPDscp(buf.DecodeUint8())
716         m.Entry.TxTableID = buf.DecodeUint32()
717         m.Entry.Salt = buf.DecodeUint32()
718         m.Entry.UDPSrcPort = buf.DecodeUint16()
719         m.Entry.UDPDstPort = buf.DecodeUint16()
720         m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
721         m.Salt = buf.DecodeUint32()
722         m.SeqOutbound = buf.DecodeUint64()
723         m.LastSeqInbound = buf.DecodeUint64()
724         m.ReplayWindow = buf.DecodeUint64()
725         m.StatIndex = buf.DecodeUint32()
726         return nil
727 }
728
729 // IpsecSaV2Dump defines message 'ipsec_sa_v2_dump'.
730 type IpsecSaV2Dump struct {
731         SaID uint32 `binapi:"u32,name=sa_id" json:"sa_id,omitempty"`
732 }
733
734 func (m *IpsecSaV2Dump) Reset()               { *m = IpsecSaV2Dump{} }
735 func (*IpsecSaV2Dump) GetMessageName() string { return "ipsec_sa_v2_dump" }
736 func (*IpsecSaV2Dump) GetCrcString() string   { return "2076c2f4" }
737 func (*IpsecSaV2Dump) GetMessageType() api.MessageType {
738         return api.RequestMessage
739 }
740
741 func (m *IpsecSaV2Dump) Size() (size int) {
742         if m == nil {
743                 return 0
744         }
745         size += 4 // m.SaID
746         return size
747 }
748 func (m *IpsecSaV2Dump) Marshal(b []byte) ([]byte, error) {
749         if b == nil {
750                 b = make([]byte, m.Size())
751         }
752         buf := codec.NewBuffer(b)
753         buf.EncodeUint32(m.SaID)
754         return buf.Bytes(), nil
755 }
756 func (m *IpsecSaV2Dump) Unmarshal(b []byte) error {
757         buf := codec.NewBuffer(b)
758         m.SaID = buf.DecodeUint32()
759         return nil
760 }
761
762 // IpsecSaV3Details defines message 'ipsec_sa_v3_details'.
763 type IpsecSaV3Details struct {
764         Entry          ipsec_types.IpsecSadEntryV3    `binapi:"ipsec_sad_entry_v3,name=entry" json:"entry,omitempty"`
765         SwIfIndex      interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
766         SeqOutbound    uint64                         `binapi:"u64,name=seq_outbound" json:"seq_outbound,omitempty"`
767         LastSeqInbound uint64                         `binapi:"u64,name=last_seq_inbound" json:"last_seq_inbound,omitempty"`
768         ReplayWindow   uint64                         `binapi:"u64,name=replay_window" json:"replay_window,omitempty"`
769         StatIndex      uint32                         `binapi:"u32,name=stat_index" json:"stat_index,omitempty"`
770 }
771
772 func (m *IpsecSaV3Details) Reset()               { *m = IpsecSaV3Details{} }
773 func (*IpsecSaV3Details) GetMessageName() string { return "ipsec_sa_v3_details" }
774 func (*IpsecSaV3Details) GetCrcString() string   { return "2fc991ee" }
775 func (*IpsecSaV3Details) GetMessageType() api.MessageType {
776         return api.ReplyMessage
777 }
778
779 func (m *IpsecSaV3Details) Size() (size int) {
780         if m == nil {
781                 return 0
782         }
783         size += 4       // m.Entry.SadID
784         size += 4       // m.Entry.Spi
785         size += 4       // m.Entry.Protocol
786         size += 4       // m.Entry.CryptoAlgorithm
787         size += 1       // m.Entry.CryptoKey.Length
788         size += 1 * 128 // m.Entry.CryptoKey.Data
789         size += 4       // m.Entry.IntegrityAlgorithm
790         size += 1       // m.Entry.IntegrityKey.Length
791         size += 1 * 128 // m.Entry.IntegrityKey.Data
792         size += 4       // m.Entry.Flags
793         size += 4       // m.Entry.Tunnel.Instance
794         size += 1       // m.Entry.Tunnel.Src.Af
795         size += 1 * 16  // m.Entry.Tunnel.Src.Un
796         size += 1       // m.Entry.Tunnel.Dst.Af
797         size += 1 * 16  // m.Entry.Tunnel.Dst.Un
798         size += 4       // m.Entry.Tunnel.SwIfIndex
799         size += 4       // m.Entry.Tunnel.TableID
800         size += 1       // m.Entry.Tunnel.EncapDecapFlags
801         size += 1       // m.Entry.Tunnel.Mode
802         size += 1       // m.Entry.Tunnel.Flags
803         size += 1       // m.Entry.Tunnel.Dscp
804         size += 1       // m.Entry.Tunnel.HopLimit
805         size += 4       // m.Entry.Salt
806         size += 2       // m.Entry.UDPSrcPort
807         size += 2       // m.Entry.UDPDstPort
808         size += 4       // m.SwIfIndex
809         size += 8       // m.SeqOutbound
810         size += 8       // m.LastSeqInbound
811         size += 8       // m.ReplayWindow
812         size += 4       // m.StatIndex
813         return size
814 }
815 func (m *IpsecSaV3Details) Marshal(b []byte) ([]byte, error) {
816         if b == nil {
817                 b = make([]byte, m.Size())
818         }
819         buf := codec.NewBuffer(b)
820         buf.EncodeUint32(m.Entry.SadID)
821         buf.EncodeUint32(m.Entry.Spi)
822         buf.EncodeUint32(uint32(m.Entry.Protocol))
823         buf.EncodeUint32(uint32(m.Entry.CryptoAlgorithm))
824         buf.EncodeUint8(m.Entry.CryptoKey.Length)
825         buf.EncodeBytes(m.Entry.CryptoKey.Data, 128)
826         buf.EncodeUint32(uint32(m.Entry.IntegrityAlgorithm))
827         buf.EncodeUint8(m.Entry.IntegrityKey.Length)
828         buf.EncodeBytes(m.Entry.IntegrityKey.Data, 128)
829         buf.EncodeUint32(uint32(m.Entry.Flags))
830         buf.EncodeUint32(m.Entry.Tunnel.Instance)
831         buf.EncodeUint8(uint8(m.Entry.Tunnel.Src.Af))
832         buf.EncodeBytes(m.Entry.Tunnel.Src.Un.XXX_UnionData[:], 16)
833         buf.EncodeUint8(uint8(m.Entry.Tunnel.Dst.Af))
834         buf.EncodeBytes(m.Entry.Tunnel.Dst.Un.XXX_UnionData[:], 16)
835         buf.EncodeUint32(uint32(m.Entry.Tunnel.SwIfIndex))
836         buf.EncodeUint32(m.Entry.Tunnel.TableID)
837         buf.EncodeUint8(uint8(m.Entry.Tunnel.EncapDecapFlags))
838         buf.EncodeUint8(uint8(m.Entry.Tunnel.Mode))
839         buf.EncodeUint8(uint8(m.Entry.Tunnel.Flags))
840         buf.EncodeUint8(uint8(m.Entry.Tunnel.Dscp))
841         buf.EncodeUint8(m.Entry.Tunnel.HopLimit)
842         buf.EncodeUint32(m.Entry.Salt)
843         buf.EncodeUint16(m.Entry.UDPSrcPort)
844         buf.EncodeUint16(m.Entry.UDPDstPort)
845         buf.EncodeUint32(uint32(m.SwIfIndex))
846         buf.EncodeUint64(m.SeqOutbound)
847         buf.EncodeUint64(m.LastSeqInbound)
848         buf.EncodeUint64(m.ReplayWindow)
849         buf.EncodeUint32(m.StatIndex)
850         return buf.Bytes(), nil
851 }
852 func (m *IpsecSaV3Details) Unmarshal(b []byte) error {
853         buf := codec.NewBuffer(b)
854         m.Entry.SadID = buf.DecodeUint32()
855         m.Entry.Spi = buf.DecodeUint32()
856         m.Entry.Protocol = ipsec_types.IpsecProto(buf.DecodeUint32())
857         m.Entry.CryptoAlgorithm = ipsec_types.IpsecCryptoAlg(buf.DecodeUint32())
858         m.Entry.CryptoKey.Length = buf.DecodeUint8()
859         m.Entry.CryptoKey.Data = make([]byte, 128)
860         copy(m.Entry.CryptoKey.Data, buf.DecodeBytes(len(m.Entry.CryptoKey.Data)))
861         m.Entry.IntegrityAlgorithm = ipsec_types.IpsecIntegAlg(buf.DecodeUint32())
862         m.Entry.IntegrityKey.Length = buf.DecodeUint8()
863         m.Entry.IntegrityKey.Data = make([]byte, 128)
864         copy(m.Entry.IntegrityKey.Data, buf.DecodeBytes(len(m.Entry.IntegrityKey.Data)))
865         m.Entry.Flags = ipsec_types.IpsecSadFlags(buf.DecodeUint32())
866         m.Entry.Tunnel.Instance = buf.DecodeUint32()
867         m.Entry.Tunnel.Src.Af = ip_types.AddressFamily(buf.DecodeUint8())
868         copy(m.Entry.Tunnel.Src.Un.XXX_UnionData[:], buf.DecodeBytes(16))
869         m.Entry.Tunnel.Dst.Af = ip_types.AddressFamily(buf.DecodeUint8())
870         copy(m.Entry.Tunnel.Dst.Un.XXX_UnionData[:], buf.DecodeBytes(16))
871         m.Entry.Tunnel.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
872         m.Entry.Tunnel.TableID = buf.DecodeUint32()
873         m.Entry.Tunnel.EncapDecapFlags = tunnel_types.TunnelEncapDecapFlags(buf.DecodeUint8())
874         m.Entry.Tunnel.Mode = tunnel_types.TunnelMode(buf.DecodeUint8())
875         m.Entry.Tunnel.Flags = tunnel_types.TunnelFlags(buf.DecodeUint8())
876         m.Entry.Tunnel.Dscp = ip_types.IPDscp(buf.DecodeUint8())
877         m.Entry.Tunnel.HopLimit = buf.DecodeUint8()
878         m.Entry.Salt = buf.DecodeUint32()
879         m.Entry.UDPSrcPort = buf.DecodeUint16()
880         m.Entry.UDPDstPort = buf.DecodeUint16()
881         m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
882         m.SeqOutbound = buf.DecodeUint64()
883         m.LastSeqInbound = buf.DecodeUint64()
884         m.ReplayWindow = buf.DecodeUint64()
885         m.StatIndex = buf.DecodeUint32()
886         return nil
887 }
888
889 // IpsecSaV3Dump defines message 'ipsec_sa_v3_dump'.
890 type IpsecSaV3Dump struct {
891         SaID uint32 `binapi:"u32,name=sa_id" json:"sa_id,omitempty"`
892 }
893
894 func (m *IpsecSaV3Dump) Reset()               { *m = IpsecSaV3Dump{} }
895 func (*IpsecSaV3Dump) GetMessageName() string { return "ipsec_sa_v3_dump" }
896 func (*IpsecSaV3Dump) GetCrcString() string   { return "2076c2f4" }
897 func (*IpsecSaV3Dump) GetMessageType() api.MessageType {
898         return api.RequestMessage
899 }
900
901 func (m *IpsecSaV3Dump) Size() (size int) {
902         if m == nil {
903                 return 0
904         }
905         size += 4 // m.SaID
906         return size
907 }
908 func (m *IpsecSaV3Dump) Marshal(b []byte) ([]byte, error) {
909         if b == nil {
910                 b = make([]byte, m.Size())
911         }
912         buf := codec.NewBuffer(b)
913         buf.EncodeUint32(m.SaID)
914         return buf.Bytes(), nil
915 }
916 func (m *IpsecSaV3Dump) Unmarshal(b []byte) error {
917         buf := codec.NewBuffer(b)
918         m.SaID = buf.DecodeUint32()
919         return nil
920 }
921
922 // IpsecSadEntryAdd defines message 'ipsec_sad_entry_add'.
923 type IpsecSadEntryAdd struct {
924         Entry ipsec_types.IpsecSadEntryV3 `binapi:"ipsec_sad_entry_v3,name=entry" json:"entry,omitempty"`
925 }
926
927 func (m *IpsecSadEntryAdd) Reset()               { *m = IpsecSadEntryAdd{} }
928 func (*IpsecSadEntryAdd) GetMessageName() string { return "ipsec_sad_entry_add" }
929 func (*IpsecSadEntryAdd) GetCrcString() string   { return "50229353" }
930 func (*IpsecSadEntryAdd) GetMessageType() api.MessageType {
931         return api.RequestMessage
932 }
933
934 func (m *IpsecSadEntryAdd) Size() (size int) {
935         if m == nil {
936                 return 0
937         }
938         size += 4       // m.Entry.SadID
939         size += 4       // m.Entry.Spi
940         size += 4       // m.Entry.Protocol
941         size += 4       // m.Entry.CryptoAlgorithm
942         size += 1       // m.Entry.CryptoKey.Length
943         size += 1 * 128 // m.Entry.CryptoKey.Data
944         size += 4       // m.Entry.IntegrityAlgorithm
945         size += 1       // m.Entry.IntegrityKey.Length
946         size += 1 * 128 // m.Entry.IntegrityKey.Data
947         size += 4       // m.Entry.Flags
948         size += 4       // m.Entry.Tunnel.Instance
949         size += 1       // m.Entry.Tunnel.Src.Af
950         size += 1 * 16  // m.Entry.Tunnel.Src.Un
951         size += 1       // m.Entry.Tunnel.Dst.Af
952         size += 1 * 16  // m.Entry.Tunnel.Dst.Un
953         size += 4       // m.Entry.Tunnel.SwIfIndex
954         size += 4       // m.Entry.Tunnel.TableID
955         size += 1       // m.Entry.Tunnel.EncapDecapFlags
956         size += 1       // m.Entry.Tunnel.Mode
957         size += 1       // m.Entry.Tunnel.Flags
958         size += 1       // m.Entry.Tunnel.Dscp
959         size += 1       // m.Entry.Tunnel.HopLimit
960         size += 4       // m.Entry.Salt
961         size += 2       // m.Entry.UDPSrcPort
962         size += 2       // m.Entry.UDPDstPort
963         return size
964 }
965 func (m *IpsecSadEntryAdd) Marshal(b []byte) ([]byte, error) {
966         if b == nil {
967                 b = make([]byte, m.Size())
968         }
969         buf := codec.NewBuffer(b)
970         buf.EncodeUint32(m.Entry.SadID)
971         buf.EncodeUint32(m.Entry.Spi)
972         buf.EncodeUint32(uint32(m.Entry.Protocol))
973         buf.EncodeUint32(uint32(m.Entry.CryptoAlgorithm))
974         buf.EncodeUint8(m.Entry.CryptoKey.Length)
975         buf.EncodeBytes(m.Entry.CryptoKey.Data, 128)
976         buf.EncodeUint32(uint32(m.Entry.IntegrityAlgorithm))
977         buf.EncodeUint8(m.Entry.IntegrityKey.Length)
978         buf.EncodeBytes(m.Entry.IntegrityKey.Data, 128)
979         buf.EncodeUint32(uint32(m.Entry.Flags))
980         buf.EncodeUint32(m.Entry.Tunnel.Instance)
981         buf.EncodeUint8(uint8(m.Entry.Tunnel.Src.Af))
982         buf.EncodeBytes(m.Entry.Tunnel.Src.Un.XXX_UnionData[:], 16)
983         buf.EncodeUint8(uint8(m.Entry.Tunnel.Dst.Af))
984         buf.EncodeBytes(m.Entry.Tunnel.Dst.Un.XXX_UnionData[:], 16)
985         buf.EncodeUint32(uint32(m.Entry.Tunnel.SwIfIndex))
986         buf.EncodeUint32(m.Entry.Tunnel.TableID)
987         buf.EncodeUint8(uint8(m.Entry.Tunnel.EncapDecapFlags))
988         buf.EncodeUint8(uint8(m.Entry.Tunnel.Mode))
989         buf.EncodeUint8(uint8(m.Entry.Tunnel.Flags))
990         buf.EncodeUint8(uint8(m.Entry.Tunnel.Dscp))
991         buf.EncodeUint8(m.Entry.Tunnel.HopLimit)
992         buf.EncodeUint32(m.Entry.Salt)
993         buf.EncodeUint16(m.Entry.UDPSrcPort)
994         buf.EncodeUint16(m.Entry.UDPDstPort)
995         return buf.Bytes(), nil
996 }
997 func (m *IpsecSadEntryAdd) Unmarshal(b []byte) error {
998         buf := codec.NewBuffer(b)
999         m.Entry.SadID = buf.DecodeUint32()
1000         m.Entry.Spi = buf.DecodeUint32()
1001         m.Entry.Protocol = ipsec_types.IpsecProto(buf.DecodeUint32())
1002         m.Entry.CryptoAlgorithm = ipsec_types.IpsecCryptoAlg(buf.DecodeUint32())
1003         m.Entry.CryptoKey.Length = buf.DecodeUint8()
1004         m.Entry.CryptoKey.Data = make([]byte, 128)
1005         copy(m.Entry.CryptoKey.Data, buf.DecodeBytes(len(m.Entry.CryptoKey.Data)))
1006         m.Entry.IntegrityAlgorithm = ipsec_types.IpsecIntegAlg(buf.DecodeUint32())
1007         m.Entry.IntegrityKey.Length = buf.DecodeUint8()
1008         m.Entry.IntegrityKey.Data = make([]byte, 128)
1009         copy(m.Entry.IntegrityKey.Data, buf.DecodeBytes(len(m.Entry.IntegrityKey.Data)))
1010         m.Entry.Flags = ipsec_types.IpsecSadFlags(buf.DecodeUint32())
1011         m.Entry.Tunnel.Instance = buf.DecodeUint32()
1012         m.Entry.Tunnel.Src.Af = ip_types.AddressFamily(buf.DecodeUint8())
1013         copy(m.Entry.Tunnel.Src.Un.XXX_UnionData[:], buf.DecodeBytes(16))
1014         m.Entry.Tunnel.Dst.Af = ip_types.AddressFamily(buf.DecodeUint8())
1015         copy(m.Entry.Tunnel.Dst.Un.XXX_UnionData[:], buf.DecodeBytes(16))
1016         m.Entry.Tunnel.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
1017         m.Entry.Tunnel.TableID = buf.DecodeUint32()
1018         m.Entry.Tunnel.EncapDecapFlags = tunnel_types.TunnelEncapDecapFlags(buf.DecodeUint8())
1019         m.Entry.Tunnel.Mode = tunnel_types.TunnelMode(buf.DecodeUint8())
1020         m.Entry.Tunnel.Flags = tunnel_types.TunnelFlags(buf.DecodeUint8())
1021         m.Entry.Tunnel.Dscp = ip_types.IPDscp(buf.DecodeUint8())
1022         m.Entry.Tunnel.HopLimit = buf.DecodeUint8()
1023         m.Entry.Salt = buf.DecodeUint32()
1024         m.Entry.UDPSrcPort = buf.DecodeUint16()
1025         m.Entry.UDPDstPort = buf.DecodeUint16()
1026         return nil
1027 }
1028
1029 // IpsecSadEntryAddDel defines message 'ipsec_sad_entry_add_del'.
1030 // Deprecated: the message will be removed in the future versions
1031 type IpsecSadEntryAddDel struct {
1032         IsAdd bool                      `binapi:"bool,name=is_add" json:"is_add,omitempty"`
1033         Entry ipsec_types.IpsecSadEntry `binapi:"ipsec_sad_entry,name=entry" json:"entry,omitempty"`
1034 }
1035
1036 func (m *IpsecSadEntryAddDel) Reset()               { *m = IpsecSadEntryAddDel{} }
1037 func (*IpsecSadEntryAddDel) GetMessageName() string { return "ipsec_sad_entry_add_del" }
1038 func (*IpsecSadEntryAddDel) GetCrcString() string   { return "ab64b5c6" }
1039 func (*IpsecSadEntryAddDel) GetMessageType() api.MessageType {
1040         return api.RequestMessage
1041 }
1042
1043 func (m *IpsecSadEntryAddDel) Size() (size int) {
1044         if m == nil {
1045                 return 0
1046         }
1047         size += 1       // m.IsAdd
1048         size += 4       // m.Entry.SadID
1049         size += 4       // m.Entry.Spi
1050         size += 4       // m.Entry.Protocol
1051         size += 4       // m.Entry.CryptoAlgorithm
1052         size += 1       // m.Entry.CryptoKey.Length
1053         size += 1 * 128 // m.Entry.CryptoKey.Data
1054         size += 4       // m.Entry.IntegrityAlgorithm
1055         size += 1       // m.Entry.IntegrityKey.Length
1056         size += 1 * 128 // m.Entry.IntegrityKey.Data
1057         size += 4       // m.Entry.Flags
1058         size += 1       // m.Entry.TunnelSrc.Af
1059         size += 1 * 16  // m.Entry.TunnelSrc.Un
1060         size += 1       // m.Entry.TunnelDst.Af
1061         size += 1 * 16  // m.Entry.TunnelDst.Un
1062         size += 4       // m.Entry.TxTableID
1063         size += 4       // m.Entry.Salt
1064         size += 2       // m.Entry.UDPSrcPort
1065         size += 2       // m.Entry.UDPDstPort
1066         return size
1067 }
1068 func (m *IpsecSadEntryAddDel) Marshal(b []byte) ([]byte, error) {
1069         if b == nil {
1070                 b = make([]byte, m.Size())
1071         }
1072         buf := codec.NewBuffer(b)
1073         buf.EncodeBool(m.IsAdd)
1074         buf.EncodeUint32(m.Entry.SadID)
1075         buf.EncodeUint32(m.Entry.Spi)
1076         buf.EncodeUint32(uint32(m.Entry.Protocol))
1077         buf.EncodeUint32(uint32(m.Entry.CryptoAlgorithm))
1078         buf.EncodeUint8(m.Entry.CryptoKey.Length)
1079         buf.EncodeBytes(m.Entry.CryptoKey.Data, 128)
1080         buf.EncodeUint32(uint32(m.Entry.IntegrityAlgorithm))
1081         buf.EncodeUint8(m.Entry.IntegrityKey.Length)
1082         buf.EncodeBytes(m.Entry.IntegrityKey.Data, 128)
1083         buf.EncodeUint32(uint32(m.Entry.Flags))
1084         buf.EncodeUint8(uint8(m.Entry.TunnelSrc.Af))
1085         buf.EncodeBytes(m.Entry.TunnelSrc.Un.XXX_UnionData[:], 16)
1086         buf.EncodeUint8(uint8(m.Entry.TunnelDst.Af))
1087         buf.EncodeBytes(m.Entry.TunnelDst.Un.XXX_UnionData[:], 16)
1088         buf.EncodeUint32(m.Entry.TxTableID)
1089         buf.EncodeUint32(m.Entry.Salt)
1090         buf.EncodeUint16(m.Entry.UDPSrcPort)
1091         buf.EncodeUint16(m.Entry.UDPDstPort)
1092         return buf.Bytes(), nil
1093 }
1094 func (m *IpsecSadEntryAddDel) Unmarshal(b []byte) error {
1095         buf := codec.NewBuffer(b)
1096         m.IsAdd = buf.DecodeBool()
1097         m.Entry.SadID = buf.DecodeUint32()
1098         m.Entry.Spi = buf.DecodeUint32()
1099         m.Entry.Protocol = ipsec_types.IpsecProto(buf.DecodeUint32())
1100         m.Entry.CryptoAlgorithm = ipsec_types.IpsecCryptoAlg(buf.DecodeUint32())
1101         m.Entry.CryptoKey.Length = buf.DecodeUint8()
1102         m.Entry.CryptoKey.Data = make([]byte, 128)
1103         copy(m.Entry.CryptoKey.Data, buf.DecodeBytes(len(m.Entry.CryptoKey.Data)))
1104         m.Entry.IntegrityAlgorithm = ipsec_types.IpsecIntegAlg(buf.DecodeUint32())
1105         m.Entry.IntegrityKey.Length = buf.DecodeUint8()
1106         m.Entry.IntegrityKey.Data = make([]byte, 128)
1107         copy(m.Entry.IntegrityKey.Data, buf.DecodeBytes(len(m.Entry.IntegrityKey.Data)))
1108         m.Entry.Flags = ipsec_types.IpsecSadFlags(buf.DecodeUint32())
1109         m.Entry.TunnelSrc.Af = ip_types.AddressFamily(buf.DecodeUint8())
1110         copy(m.Entry.TunnelSrc.Un.XXX_UnionData[:], buf.DecodeBytes(16))
1111         m.Entry.TunnelDst.Af = ip_types.AddressFamily(buf.DecodeUint8())
1112         copy(m.Entry.TunnelDst.Un.XXX_UnionData[:], buf.DecodeBytes(16))
1113         m.Entry.TxTableID = buf.DecodeUint32()
1114         m.Entry.Salt = buf.DecodeUint32()
1115         m.Entry.UDPSrcPort = buf.DecodeUint16()
1116         m.Entry.UDPDstPort = buf.DecodeUint16()
1117         return nil
1118 }
1119
1120 // IpsecSadEntryAddDelReply defines message 'ipsec_sad_entry_add_del_reply'.
1121 // Deprecated: the message will be removed in the future versions
1122 type IpsecSadEntryAddDelReply struct {
1123         Retval    int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
1124         StatIndex uint32 `binapi:"u32,name=stat_index" json:"stat_index,omitempty"`
1125 }
1126
1127 func (m *IpsecSadEntryAddDelReply) Reset()               { *m = IpsecSadEntryAddDelReply{} }
1128 func (*IpsecSadEntryAddDelReply) GetMessageName() string { return "ipsec_sad_entry_add_del_reply" }
1129 func (*IpsecSadEntryAddDelReply) GetCrcString() string   { return "9ffac24b" }
1130 func (*IpsecSadEntryAddDelReply) GetMessageType() api.MessageType {
1131         return api.ReplyMessage
1132 }
1133
1134 func (m *IpsecSadEntryAddDelReply) Size() (size int) {
1135         if m == nil {
1136                 return 0
1137         }
1138         size += 4 // m.Retval
1139         size += 4 // m.StatIndex
1140         return size
1141 }
1142 func (m *IpsecSadEntryAddDelReply) Marshal(b []byte) ([]byte, error) {
1143         if b == nil {
1144                 b = make([]byte, m.Size())
1145         }
1146         buf := codec.NewBuffer(b)
1147         buf.EncodeInt32(m.Retval)
1148         buf.EncodeUint32(m.StatIndex)
1149         return buf.Bytes(), nil
1150 }
1151 func (m *IpsecSadEntryAddDelReply) Unmarshal(b []byte) error {
1152         buf := codec.NewBuffer(b)
1153         m.Retval = buf.DecodeInt32()
1154         m.StatIndex = buf.DecodeUint32()
1155         return nil
1156 }
1157
1158 // IpsecSadEntryAddDelV2 defines message 'ipsec_sad_entry_add_del_v2'.
1159 type IpsecSadEntryAddDelV2 struct {
1160         IsAdd bool                        `binapi:"bool,name=is_add" json:"is_add,omitempty"`
1161         Entry ipsec_types.IpsecSadEntryV2 `binapi:"ipsec_sad_entry_v2,name=entry" json:"entry,omitempty"`
1162 }
1163
1164 func (m *IpsecSadEntryAddDelV2) Reset()               { *m = IpsecSadEntryAddDelV2{} }
1165 func (*IpsecSadEntryAddDelV2) GetMessageName() string { return "ipsec_sad_entry_add_del_v2" }
1166 func (*IpsecSadEntryAddDelV2) GetCrcString() string   { return "aca78b27" }
1167 func (*IpsecSadEntryAddDelV2) GetMessageType() api.MessageType {
1168         return api.RequestMessage
1169 }
1170
1171 func (m *IpsecSadEntryAddDelV2) Size() (size int) {
1172         if m == nil {
1173                 return 0
1174         }
1175         size += 1       // m.IsAdd
1176         size += 4       // m.Entry.SadID
1177         size += 4       // m.Entry.Spi
1178         size += 4       // m.Entry.Protocol
1179         size += 4       // m.Entry.CryptoAlgorithm
1180         size += 1       // m.Entry.CryptoKey.Length
1181         size += 1 * 128 // m.Entry.CryptoKey.Data
1182         size += 4       // m.Entry.IntegrityAlgorithm
1183         size += 1       // m.Entry.IntegrityKey.Length
1184         size += 1 * 128 // m.Entry.IntegrityKey.Data
1185         size += 4       // m.Entry.Flags
1186         size += 1       // m.Entry.TunnelSrc.Af
1187         size += 1 * 16  // m.Entry.TunnelSrc.Un
1188         size += 1       // m.Entry.TunnelDst.Af
1189         size += 1 * 16  // m.Entry.TunnelDst.Un
1190         size += 1       // m.Entry.TunnelFlags
1191         size += 1       // m.Entry.Dscp
1192         size += 4       // m.Entry.TxTableID
1193         size += 4       // m.Entry.Salt
1194         size += 2       // m.Entry.UDPSrcPort
1195         size += 2       // m.Entry.UDPDstPort
1196         return size
1197 }
1198 func (m *IpsecSadEntryAddDelV2) Marshal(b []byte) ([]byte, error) {
1199         if b == nil {
1200                 b = make([]byte, m.Size())
1201         }
1202         buf := codec.NewBuffer(b)
1203         buf.EncodeBool(m.IsAdd)
1204         buf.EncodeUint32(m.Entry.SadID)
1205         buf.EncodeUint32(m.Entry.Spi)
1206         buf.EncodeUint32(uint32(m.Entry.Protocol))
1207         buf.EncodeUint32(uint32(m.Entry.CryptoAlgorithm))
1208         buf.EncodeUint8(m.Entry.CryptoKey.Length)
1209         buf.EncodeBytes(m.Entry.CryptoKey.Data, 128)
1210         buf.EncodeUint32(uint32(m.Entry.IntegrityAlgorithm))
1211         buf.EncodeUint8(m.Entry.IntegrityKey.Length)
1212         buf.EncodeBytes(m.Entry.IntegrityKey.Data, 128)
1213         buf.EncodeUint32(uint32(m.Entry.Flags))
1214         buf.EncodeUint8(uint8(m.Entry.TunnelSrc.Af))
1215         buf.EncodeBytes(m.Entry.TunnelSrc.Un.XXX_UnionData[:], 16)
1216         buf.EncodeUint8(uint8(m.Entry.TunnelDst.Af))
1217         buf.EncodeBytes(m.Entry.TunnelDst.Un.XXX_UnionData[:], 16)
1218         buf.EncodeUint8(uint8(m.Entry.TunnelFlags))
1219         buf.EncodeUint8(uint8(m.Entry.Dscp))
1220         buf.EncodeUint32(m.Entry.TxTableID)
1221         buf.EncodeUint32(m.Entry.Salt)
1222         buf.EncodeUint16(m.Entry.UDPSrcPort)
1223         buf.EncodeUint16(m.Entry.UDPDstPort)
1224         return buf.Bytes(), nil
1225 }
1226 func (m *IpsecSadEntryAddDelV2) Unmarshal(b []byte) error {
1227         buf := codec.NewBuffer(b)
1228         m.IsAdd = buf.DecodeBool()
1229         m.Entry.SadID = buf.DecodeUint32()
1230         m.Entry.Spi = buf.DecodeUint32()
1231         m.Entry.Protocol = ipsec_types.IpsecProto(buf.DecodeUint32())
1232         m.Entry.CryptoAlgorithm = ipsec_types.IpsecCryptoAlg(buf.DecodeUint32())
1233         m.Entry.CryptoKey.Length = buf.DecodeUint8()
1234         m.Entry.CryptoKey.Data = make([]byte, 128)
1235         copy(m.Entry.CryptoKey.Data, buf.DecodeBytes(len(m.Entry.CryptoKey.Data)))
1236         m.Entry.IntegrityAlgorithm = ipsec_types.IpsecIntegAlg(buf.DecodeUint32())
1237         m.Entry.IntegrityKey.Length = buf.DecodeUint8()
1238         m.Entry.IntegrityKey.Data = make([]byte, 128)
1239         copy(m.Entry.IntegrityKey.Data, buf.DecodeBytes(len(m.Entry.IntegrityKey.Data)))
1240         m.Entry.Flags = ipsec_types.IpsecSadFlags(buf.DecodeUint32())
1241         m.Entry.TunnelSrc.Af = ip_types.AddressFamily(buf.DecodeUint8())
1242         copy(m.Entry.TunnelSrc.Un.XXX_UnionData[:], buf.DecodeBytes(16))
1243         m.Entry.TunnelDst.Af = ip_types.AddressFamily(buf.DecodeUint8())
1244         copy(m.Entry.TunnelDst.Un.XXX_UnionData[:], buf.DecodeBytes(16))
1245         m.Entry.TunnelFlags = tunnel_types.TunnelEncapDecapFlags(buf.DecodeUint8())
1246         m.Entry.Dscp = ip_types.IPDscp(buf.DecodeUint8())
1247         m.Entry.TxTableID = buf.DecodeUint32()
1248         m.Entry.Salt = buf.DecodeUint32()
1249         m.Entry.UDPSrcPort = buf.DecodeUint16()
1250         m.Entry.UDPDstPort = buf.DecodeUint16()
1251         return nil
1252 }
1253
1254 // IpsecSadEntryAddDelV2Reply defines message 'ipsec_sad_entry_add_del_v2_reply'.
1255 type IpsecSadEntryAddDelV2Reply struct {
1256         Retval    int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
1257         StatIndex uint32 `binapi:"u32,name=stat_index" json:"stat_index,omitempty"`
1258 }
1259
1260 func (m *IpsecSadEntryAddDelV2Reply) Reset()               { *m = IpsecSadEntryAddDelV2Reply{} }
1261 func (*IpsecSadEntryAddDelV2Reply) GetMessageName() string { return "ipsec_sad_entry_add_del_v2_reply" }
1262 func (*IpsecSadEntryAddDelV2Reply) GetCrcString() string   { return "9ffac24b" }
1263 func (*IpsecSadEntryAddDelV2Reply) GetMessageType() api.MessageType {
1264         return api.ReplyMessage
1265 }
1266
1267 func (m *IpsecSadEntryAddDelV2Reply) Size() (size int) {
1268         if m == nil {
1269                 return 0
1270         }
1271         size += 4 // m.Retval
1272         size += 4 // m.StatIndex
1273         return size
1274 }
1275 func (m *IpsecSadEntryAddDelV2Reply) Marshal(b []byte) ([]byte, error) {
1276         if b == nil {
1277                 b = make([]byte, m.Size())
1278         }
1279         buf := codec.NewBuffer(b)
1280         buf.EncodeInt32(m.Retval)
1281         buf.EncodeUint32(m.StatIndex)
1282         return buf.Bytes(), nil
1283 }
1284 func (m *IpsecSadEntryAddDelV2Reply) Unmarshal(b []byte) error {
1285         buf := codec.NewBuffer(b)
1286         m.Retval = buf.DecodeInt32()
1287         m.StatIndex = buf.DecodeUint32()
1288         return nil
1289 }
1290
1291 // IpsecSadEntryAddDelV3 defines message 'ipsec_sad_entry_add_del_v3'.
1292 type IpsecSadEntryAddDelV3 struct {
1293         IsAdd bool                        `binapi:"bool,name=is_add" json:"is_add,omitempty"`
1294         Entry ipsec_types.IpsecSadEntryV3 `binapi:"ipsec_sad_entry_v3,name=entry" json:"entry,omitempty"`
1295 }
1296
1297 func (m *IpsecSadEntryAddDelV3) Reset()               { *m = IpsecSadEntryAddDelV3{} }
1298 func (*IpsecSadEntryAddDelV3) GetMessageName() string { return "ipsec_sad_entry_add_del_v3" }
1299 func (*IpsecSadEntryAddDelV3) GetCrcString() string   { return "c77ebd92" }
1300 func (*IpsecSadEntryAddDelV3) GetMessageType() api.MessageType {
1301         return api.RequestMessage
1302 }
1303
1304 func (m *IpsecSadEntryAddDelV3) Size() (size int) {
1305         if m == nil {
1306                 return 0
1307         }
1308         size += 1       // m.IsAdd
1309         size += 4       // m.Entry.SadID
1310         size += 4       // m.Entry.Spi
1311         size += 4       // m.Entry.Protocol
1312         size += 4       // m.Entry.CryptoAlgorithm
1313         size += 1       // m.Entry.CryptoKey.Length
1314         size += 1 * 128 // m.Entry.CryptoKey.Data
1315         size += 4       // m.Entry.IntegrityAlgorithm
1316         size += 1       // m.Entry.IntegrityKey.Length
1317         size += 1 * 128 // m.Entry.IntegrityKey.Data
1318         size += 4       // m.Entry.Flags
1319         size += 4       // m.Entry.Tunnel.Instance
1320         size += 1       // m.Entry.Tunnel.Src.Af
1321         size += 1 * 16  // m.Entry.Tunnel.Src.Un
1322         size += 1       // m.Entry.Tunnel.Dst.Af
1323         size += 1 * 16  // m.Entry.Tunnel.Dst.Un
1324         size += 4       // m.Entry.Tunnel.SwIfIndex
1325         size += 4       // m.Entry.Tunnel.TableID
1326         size += 1       // m.Entry.Tunnel.EncapDecapFlags
1327         size += 1       // m.Entry.Tunnel.Mode
1328         size += 1       // m.Entry.Tunnel.Flags
1329         size += 1       // m.Entry.Tunnel.Dscp
1330         size += 1       // m.Entry.Tunnel.HopLimit
1331         size += 4       // m.Entry.Salt
1332         size += 2       // m.Entry.UDPSrcPort
1333         size += 2       // m.Entry.UDPDstPort
1334         return size
1335 }
1336 func (m *IpsecSadEntryAddDelV3) Marshal(b []byte) ([]byte, error) {
1337         if b == nil {
1338                 b = make([]byte, m.Size())
1339         }
1340         buf := codec.NewBuffer(b)
1341         buf.EncodeBool(m.IsAdd)
1342         buf.EncodeUint32(m.Entry.SadID)
1343         buf.EncodeUint32(m.Entry.Spi)
1344         buf.EncodeUint32(uint32(m.Entry.Protocol))
1345         buf.EncodeUint32(uint32(m.Entry.CryptoAlgorithm))
1346         buf.EncodeUint8(m.Entry.CryptoKey.Length)
1347         buf.EncodeBytes(m.Entry.CryptoKey.Data, 128)
1348         buf.EncodeUint32(uint32(m.Entry.IntegrityAlgorithm))
1349         buf.EncodeUint8(m.Entry.IntegrityKey.Length)
1350         buf.EncodeBytes(m.Entry.IntegrityKey.Data, 128)
1351         buf.EncodeUint32(uint32(m.Entry.Flags))
1352         buf.EncodeUint32(m.Entry.Tunnel.Instance)
1353         buf.EncodeUint8(uint8(m.Entry.Tunnel.Src.Af))
1354         buf.EncodeBytes(m.Entry.Tunnel.Src.Un.XXX_UnionData[:], 16)
1355         buf.EncodeUint8(uint8(m.Entry.Tunnel.Dst.Af))
1356         buf.EncodeBytes(m.Entry.Tunnel.Dst.Un.XXX_UnionData[:], 16)
1357         buf.EncodeUint32(uint32(m.Entry.Tunnel.SwIfIndex))
1358         buf.EncodeUint32(m.Entry.Tunnel.TableID)
1359         buf.EncodeUint8(uint8(m.Entry.Tunnel.EncapDecapFlags))
1360         buf.EncodeUint8(uint8(m.Entry.Tunnel.Mode))
1361         buf.EncodeUint8(uint8(m.Entry.Tunnel.Flags))
1362         buf.EncodeUint8(uint8(m.Entry.Tunnel.Dscp))
1363         buf.EncodeUint8(m.Entry.Tunnel.HopLimit)
1364         buf.EncodeUint32(m.Entry.Salt)
1365         buf.EncodeUint16(m.Entry.UDPSrcPort)
1366         buf.EncodeUint16(m.Entry.UDPDstPort)
1367         return buf.Bytes(), nil
1368 }
1369 func (m *IpsecSadEntryAddDelV3) Unmarshal(b []byte) error {
1370         buf := codec.NewBuffer(b)
1371         m.IsAdd = buf.DecodeBool()
1372         m.Entry.SadID = buf.DecodeUint32()
1373         m.Entry.Spi = buf.DecodeUint32()
1374         m.Entry.Protocol = ipsec_types.IpsecProto(buf.DecodeUint32())
1375         m.Entry.CryptoAlgorithm = ipsec_types.IpsecCryptoAlg(buf.DecodeUint32())
1376         m.Entry.CryptoKey.Length = buf.DecodeUint8()
1377         m.Entry.CryptoKey.Data = make([]byte, 128)
1378         copy(m.Entry.CryptoKey.Data, buf.DecodeBytes(len(m.Entry.CryptoKey.Data)))
1379         m.Entry.IntegrityAlgorithm = ipsec_types.IpsecIntegAlg(buf.DecodeUint32())
1380         m.Entry.IntegrityKey.Length = buf.DecodeUint8()
1381         m.Entry.IntegrityKey.Data = make([]byte, 128)
1382         copy(m.Entry.IntegrityKey.Data, buf.DecodeBytes(len(m.Entry.IntegrityKey.Data)))
1383         m.Entry.Flags = ipsec_types.IpsecSadFlags(buf.DecodeUint32())
1384         m.Entry.Tunnel.Instance = buf.DecodeUint32()
1385         m.Entry.Tunnel.Src.Af = ip_types.AddressFamily(buf.DecodeUint8())
1386         copy(m.Entry.Tunnel.Src.Un.XXX_UnionData[:], buf.DecodeBytes(16))
1387         m.Entry.Tunnel.Dst.Af = ip_types.AddressFamily(buf.DecodeUint8())
1388         copy(m.Entry.Tunnel.Dst.Un.XXX_UnionData[:], buf.DecodeBytes(16))
1389         m.Entry.Tunnel.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
1390         m.Entry.Tunnel.TableID = buf.DecodeUint32()
1391         m.Entry.Tunnel.EncapDecapFlags = tunnel_types.TunnelEncapDecapFlags(buf.DecodeUint8())
1392         m.Entry.Tunnel.Mode = tunnel_types.TunnelMode(buf.DecodeUint8())
1393         m.Entry.Tunnel.Flags = tunnel_types.TunnelFlags(buf.DecodeUint8())
1394         m.Entry.Tunnel.Dscp = ip_types.IPDscp(buf.DecodeUint8())
1395         m.Entry.Tunnel.HopLimit = buf.DecodeUint8()
1396         m.Entry.Salt = buf.DecodeUint32()
1397         m.Entry.UDPSrcPort = buf.DecodeUint16()
1398         m.Entry.UDPDstPort = buf.DecodeUint16()
1399         return nil
1400 }
1401
1402 // IpsecSadEntryAddDelV3Reply defines message 'ipsec_sad_entry_add_del_v3_reply'.
1403 type IpsecSadEntryAddDelV3Reply struct {
1404         Retval    int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
1405         StatIndex uint32 `binapi:"u32,name=stat_index" json:"stat_index,omitempty"`
1406 }
1407
1408 func (m *IpsecSadEntryAddDelV3Reply) Reset()               { *m = IpsecSadEntryAddDelV3Reply{} }
1409 func (*IpsecSadEntryAddDelV3Reply) GetMessageName() string { return "ipsec_sad_entry_add_del_v3_reply" }
1410 func (*IpsecSadEntryAddDelV3Reply) GetCrcString() string   { return "9ffac24b" }
1411 func (*IpsecSadEntryAddDelV3Reply) GetMessageType() api.MessageType {
1412         return api.ReplyMessage
1413 }
1414
1415 func (m *IpsecSadEntryAddDelV3Reply) Size() (size int) {
1416         if m == nil {
1417                 return 0
1418         }
1419         size += 4 // m.Retval
1420         size += 4 // m.StatIndex
1421         return size
1422 }
1423 func (m *IpsecSadEntryAddDelV3Reply) Marshal(b []byte) ([]byte, error) {
1424         if b == nil {
1425                 b = make([]byte, m.Size())
1426         }
1427         buf := codec.NewBuffer(b)
1428         buf.EncodeInt32(m.Retval)
1429         buf.EncodeUint32(m.StatIndex)
1430         return buf.Bytes(), nil
1431 }
1432 func (m *IpsecSadEntryAddDelV3Reply) Unmarshal(b []byte) error {
1433         buf := codec.NewBuffer(b)
1434         m.Retval = buf.DecodeInt32()
1435         m.StatIndex = buf.DecodeUint32()
1436         return nil
1437 }
1438
1439 // IpsecSadEntryAddReply defines message 'ipsec_sad_entry_add_reply'.
1440 type IpsecSadEntryAddReply struct {
1441         Retval    int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
1442         StatIndex uint32 `binapi:"u32,name=stat_index" json:"stat_index,omitempty"`
1443 }
1444
1445 func (m *IpsecSadEntryAddReply) Reset()               { *m = IpsecSadEntryAddReply{} }
1446 func (*IpsecSadEntryAddReply) GetMessageName() string { return "ipsec_sad_entry_add_reply" }
1447 func (*IpsecSadEntryAddReply) GetCrcString() string   { return "9ffac24b" }
1448 func (*IpsecSadEntryAddReply) GetMessageType() api.MessageType {
1449         return api.ReplyMessage
1450 }
1451
1452 func (m *IpsecSadEntryAddReply) Size() (size int) {
1453         if m == nil {
1454                 return 0
1455         }
1456         size += 4 // m.Retval
1457         size += 4 // m.StatIndex
1458         return size
1459 }
1460 func (m *IpsecSadEntryAddReply) Marshal(b []byte) ([]byte, error) {
1461         if b == nil {
1462                 b = make([]byte, m.Size())
1463         }
1464         buf := codec.NewBuffer(b)
1465         buf.EncodeInt32(m.Retval)
1466         buf.EncodeUint32(m.StatIndex)
1467         return buf.Bytes(), nil
1468 }
1469 func (m *IpsecSadEntryAddReply) Unmarshal(b []byte) error {
1470         buf := codec.NewBuffer(b)
1471         m.Retval = buf.DecodeInt32()
1472         m.StatIndex = buf.DecodeUint32()
1473         return nil
1474 }
1475
1476 // IpsecSadEntryDel defines message 'ipsec_sad_entry_del'.
1477 type IpsecSadEntryDel struct {
1478         ID uint32 `binapi:"u32,name=id" json:"id,omitempty"`
1479 }
1480
1481 func (m *IpsecSadEntryDel) Reset()               { *m = IpsecSadEntryDel{} }
1482 func (*IpsecSadEntryDel) GetMessageName() string { return "ipsec_sad_entry_del" }
1483 func (*IpsecSadEntryDel) GetCrcString() string   { return "3a91bde5" }
1484 func (*IpsecSadEntryDel) GetMessageType() api.MessageType {
1485         return api.RequestMessage
1486 }
1487
1488 func (m *IpsecSadEntryDel) Size() (size int) {
1489         if m == nil {
1490                 return 0
1491         }
1492         size += 4 // m.ID
1493         return size
1494 }
1495 func (m *IpsecSadEntryDel) Marshal(b []byte) ([]byte, error) {
1496         if b == nil {
1497                 b = make([]byte, m.Size())
1498         }
1499         buf := codec.NewBuffer(b)
1500         buf.EncodeUint32(m.ID)
1501         return buf.Bytes(), nil
1502 }
1503 func (m *IpsecSadEntryDel) Unmarshal(b []byte) error {
1504         buf := codec.NewBuffer(b)
1505         m.ID = buf.DecodeUint32()
1506         return nil
1507 }
1508
1509 // IpsecSadEntryDelReply defines message 'ipsec_sad_entry_del_reply'.
1510 type IpsecSadEntryDelReply struct {
1511         Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
1512 }
1513
1514 func (m *IpsecSadEntryDelReply) Reset()               { *m = IpsecSadEntryDelReply{} }
1515 func (*IpsecSadEntryDelReply) GetMessageName() string { return "ipsec_sad_entry_del_reply" }
1516 func (*IpsecSadEntryDelReply) GetCrcString() string   { return "e8d4e804" }
1517 func (*IpsecSadEntryDelReply) GetMessageType() api.MessageType {
1518         return api.ReplyMessage
1519 }
1520
1521 func (m *IpsecSadEntryDelReply) Size() (size int) {
1522         if m == nil {
1523                 return 0
1524         }
1525         size += 4 // m.Retval
1526         return size
1527 }
1528 func (m *IpsecSadEntryDelReply) Marshal(b []byte) ([]byte, error) {
1529         if b == nil {
1530                 b = make([]byte, m.Size())
1531         }
1532         buf := codec.NewBuffer(b)
1533         buf.EncodeInt32(m.Retval)
1534         return buf.Bytes(), nil
1535 }
1536 func (m *IpsecSadEntryDelReply) Unmarshal(b []byte) error {
1537         buf := codec.NewBuffer(b)
1538         m.Retval = buf.DecodeInt32()
1539         return nil
1540 }
1541
1542 // IpsecSelectBackend defines message 'ipsec_select_backend'.
1543 type IpsecSelectBackend struct {
1544         Protocol ipsec_types.IpsecProto `binapi:"ipsec_proto,name=protocol" json:"protocol,omitempty"`
1545         Index    uint8                  `binapi:"u8,name=index" json:"index,omitempty"`
1546 }
1547
1548 func (m *IpsecSelectBackend) Reset()               { *m = IpsecSelectBackend{} }
1549 func (*IpsecSelectBackend) GetMessageName() string { return "ipsec_select_backend" }
1550 func (*IpsecSelectBackend) GetCrcString() string   { return "5bcfd3b7" }
1551 func (*IpsecSelectBackend) GetMessageType() api.MessageType {
1552         return api.RequestMessage
1553 }
1554
1555 func (m *IpsecSelectBackend) Size() (size int) {
1556         if m == nil {
1557                 return 0
1558         }
1559         size += 4 // m.Protocol
1560         size += 1 // m.Index
1561         return size
1562 }
1563 func (m *IpsecSelectBackend) Marshal(b []byte) ([]byte, error) {
1564         if b == nil {
1565                 b = make([]byte, m.Size())
1566         }
1567         buf := codec.NewBuffer(b)
1568         buf.EncodeUint32(uint32(m.Protocol))
1569         buf.EncodeUint8(m.Index)
1570         return buf.Bytes(), nil
1571 }
1572 func (m *IpsecSelectBackend) Unmarshal(b []byte) error {
1573         buf := codec.NewBuffer(b)
1574         m.Protocol = ipsec_types.IpsecProto(buf.DecodeUint32())
1575         m.Index = buf.DecodeUint8()
1576         return nil
1577 }
1578
1579 // IpsecSelectBackendReply defines message 'ipsec_select_backend_reply'.
1580 type IpsecSelectBackendReply struct {
1581         Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
1582 }
1583
1584 func (m *IpsecSelectBackendReply) Reset()               { *m = IpsecSelectBackendReply{} }
1585 func (*IpsecSelectBackendReply) GetMessageName() string { return "ipsec_select_backend_reply" }
1586 func (*IpsecSelectBackendReply) GetCrcString() string   { return "e8d4e804" }
1587 func (*IpsecSelectBackendReply) GetMessageType() api.MessageType {
1588         return api.ReplyMessage
1589 }
1590
1591 func (m *IpsecSelectBackendReply) Size() (size int) {
1592         if m == nil {
1593                 return 0
1594         }
1595         size += 4 // m.Retval
1596         return size
1597 }
1598 func (m *IpsecSelectBackendReply) Marshal(b []byte) ([]byte, error) {
1599         if b == nil {
1600                 b = make([]byte, m.Size())
1601         }
1602         buf := codec.NewBuffer(b)
1603         buf.EncodeInt32(m.Retval)
1604         return buf.Bytes(), nil
1605 }
1606 func (m *IpsecSelectBackendReply) Unmarshal(b []byte) error {
1607         buf := codec.NewBuffer(b)
1608         m.Retval = buf.DecodeInt32()
1609         return nil
1610 }
1611
1612 // IpsecSetAsyncMode defines message 'ipsec_set_async_mode'.
1613 type IpsecSetAsyncMode struct {
1614         AsyncEnable bool `binapi:"bool,name=async_enable" json:"async_enable,omitempty"`
1615 }
1616
1617 func (m *IpsecSetAsyncMode) Reset()               { *m = IpsecSetAsyncMode{} }
1618 func (*IpsecSetAsyncMode) GetMessageName() string { return "ipsec_set_async_mode" }
1619 func (*IpsecSetAsyncMode) GetCrcString() string   { return "a6465f7c" }
1620 func (*IpsecSetAsyncMode) GetMessageType() api.MessageType {
1621         return api.RequestMessage
1622 }
1623
1624 func (m *IpsecSetAsyncMode) Size() (size int) {
1625         if m == nil {
1626                 return 0
1627         }
1628         size += 1 // m.AsyncEnable
1629         return size
1630 }
1631 func (m *IpsecSetAsyncMode) Marshal(b []byte) ([]byte, error) {
1632         if b == nil {
1633                 b = make([]byte, m.Size())
1634         }
1635         buf := codec.NewBuffer(b)
1636         buf.EncodeBool(m.AsyncEnable)
1637         return buf.Bytes(), nil
1638 }
1639 func (m *IpsecSetAsyncMode) Unmarshal(b []byte) error {
1640         buf := codec.NewBuffer(b)
1641         m.AsyncEnable = buf.DecodeBool()
1642         return nil
1643 }
1644
1645 // IpsecSetAsyncModeReply defines message 'ipsec_set_async_mode_reply'.
1646 type IpsecSetAsyncModeReply struct {
1647         Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
1648 }
1649
1650 func (m *IpsecSetAsyncModeReply) Reset()               { *m = IpsecSetAsyncModeReply{} }
1651 func (*IpsecSetAsyncModeReply) GetMessageName() string { return "ipsec_set_async_mode_reply" }
1652 func (*IpsecSetAsyncModeReply) GetCrcString() string   { return "e8d4e804" }
1653 func (*IpsecSetAsyncModeReply) GetMessageType() api.MessageType {
1654         return api.ReplyMessage
1655 }
1656
1657 func (m *IpsecSetAsyncModeReply) Size() (size int) {
1658         if m == nil {
1659                 return 0
1660         }
1661         size += 4 // m.Retval
1662         return size
1663 }
1664 func (m *IpsecSetAsyncModeReply) Marshal(b []byte) ([]byte, error) {
1665         if b == nil {
1666                 b = make([]byte, m.Size())
1667         }
1668         buf := codec.NewBuffer(b)
1669         buf.EncodeInt32(m.Retval)
1670         return buf.Bytes(), nil
1671 }
1672 func (m *IpsecSetAsyncModeReply) Unmarshal(b []byte) error {
1673         buf := codec.NewBuffer(b)
1674         m.Retval = buf.DecodeInt32()
1675         return nil
1676 }
1677
1678 // IpsecSpdAddDel defines message 'ipsec_spd_add_del'.
1679 type IpsecSpdAddDel struct {
1680         IsAdd bool   `binapi:"bool,name=is_add" json:"is_add,omitempty"`
1681         SpdID uint32 `binapi:"u32,name=spd_id" json:"spd_id,omitempty"`
1682 }
1683
1684 func (m *IpsecSpdAddDel) Reset()               { *m = IpsecSpdAddDel{} }
1685 func (*IpsecSpdAddDel) GetMessageName() string { return "ipsec_spd_add_del" }
1686 func (*IpsecSpdAddDel) GetCrcString() string   { return "20e89a95" }
1687 func (*IpsecSpdAddDel) GetMessageType() api.MessageType {
1688         return api.RequestMessage
1689 }
1690
1691 func (m *IpsecSpdAddDel) Size() (size int) {
1692         if m == nil {
1693                 return 0
1694         }
1695         size += 1 // m.IsAdd
1696         size += 4 // m.SpdID
1697         return size
1698 }
1699 func (m *IpsecSpdAddDel) Marshal(b []byte) ([]byte, error) {
1700         if b == nil {
1701                 b = make([]byte, m.Size())
1702         }
1703         buf := codec.NewBuffer(b)
1704         buf.EncodeBool(m.IsAdd)
1705         buf.EncodeUint32(m.SpdID)
1706         return buf.Bytes(), nil
1707 }
1708 func (m *IpsecSpdAddDel) Unmarshal(b []byte) error {
1709         buf := codec.NewBuffer(b)
1710         m.IsAdd = buf.DecodeBool()
1711         m.SpdID = buf.DecodeUint32()
1712         return nil
1713 }
1714
1715 // IpsecSpdAddDelReply defines message 'ipsec_spd_add_del_reply'.
1716 type IpsecSpdAddDelReply struct {
1717         Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
1718 }
1719
1720 func (m *IpsecSpdAddDelReply) Reset()               { *m = IpsecSpdAddDelReply{} }
1721 func (*IpsecSpdAddDelReply) GetMessageName() string { return "ipsec_spd_add_del_reply" }
1722 func (*IpsecSpdAddDelReply) GetCrcString() string   { return "e8d4e804" }
1723 func (*IpsecSpdAddDelReply) GetMessageType() api.MessageType {
1724         return api.ReplyMessage
1725 }
1726
1727 func (m *IpsecSpdAddDelReply) Size() (size int) {
1728         if m == nil {
1729                 return 0
1730         }
1731         size += 4 // m.Retval
1732         return size
1733 }
1734 func (m *IpsecSpdAddDelReply) Marshal(b []byte) ([]byte, error) {
1735         if b == nil {
1736                 b = make([]byte, m.Size())
1737         }
1738         buf := codec.NewBuffer(b)
1739         buf.EncodeInt32(m.Retval)
1740         return buf.Bytes(), nil
1741 }
1742 func (m *IpsecSpdAddDelReply) Unmarshal(b []byte) error {
1743         buf := codec.NewBuffer(b)
1744         m.Retval = buf.DecodeInt32()
1745         return nil
1746 }
1747
1748 // IpsecSpdDetails defines message 'ipsec_spd_details'.
1749 type IpsecSpdDetails struct {
1750         Entry IpsecSpdEntry `binapi:"ipsec_spd_entry,name=entry" json:"entry,omitempty"`
1751 }
1752
1753 func (m *IpsecSpdDetails) Reset()               { *m = IpsecSpdDetails{} }
1754 func (*IpsecSpdDetails) GetMessageName() string { return "ipsec_spd_details" }
1755 func (*IpsecSpdDetails) GetCrcString() string   { return "5813d7a2" }
1756 func (*IpsecSpdDetails) GetMessageType() api.MessageType {
1757         return api.ReplyMessage
1758 }
1759
1760 func (m *IpsecSpdDetails) Size() (size int) {
1761         if m == nil {
1762                 return 0
1763         }
1764         size += 4      // m.Entry.SpdID
1765         size += 4      // m.Entry.Priority
1766         size += 1      // m.Entry.IsOutbound
1767         size += 4      // m.Entry.SaID
1768         size += 4      // m.Entry.Policy
1769         size += 1      // m.Entry.Protocol
1770         size += 1      // m.Entry.RemoteAddressStart.Af
1771         size += 1 * 16 // m.Entry.RemoteAddressStart.Un
1772         size += 1      // m.Entry.RemoteAddressStop.Af
1773         size += 1 * 16 // m.Entry.RemoteAddressStop.Un
1774         size += 1      // m.Entry.LocalAddressStart.Af
1775         size += 1 * 16 // m.Entry.LocalAddressStart.Un
1776         size += 1      // m.Entry.LocalAddressStop.Af
1777         size += 1 * 16 // m.Entry.LocalAddressStop.Un
1778         size += 2      // m.Entry.RemotePortStart
1779         size += 2      // m.Entry.RemotePortStop
1780         size += 2      // m.Entry.LocalPortStart
1781         size += 2      // m.Entry.LocalPortStop
1782         return size
1783 }
1784 func (m *IpsecSpdDetails) Marshal(b []byte) ([]byte, error) {
1785         if b == nil {
1786                 b = make([]byte, m.Size())
1787         }
1788         buf := codec.NewBuffer(b)
1789         buf.EncodeUint32(m.Entry.SpdID)
1790         buf.EncodeInt32(m.Entry.Priority)
1791         buf.EncodeBool(m.Entry.IsOutbound)
1792         buf.EncodeUint32(m.Entry.SaID)
1793         buf.EncodeUint32(uint32(m.Entry.Policy))
1794         buf.EncodeUint8(m.Entry.Protocol)
1795         buf.EncodeUint8(uint8(m.Entry.RemoteAddressStart.Af))
1796         buf.EncodeBytes(m.Entry.RemoteAddressStart.Un.XXX_UnionData[:], 16)
1797         buf.EncodeUint8(uint8(m.Entry.RemoteAddressStop.Af))
1798         buf.EncodeBytes(m.Entry.RemoteAddressStop.Un.XXX_UnionData[:], 16)
1799         buf.EncodeUint8(uint8(m.Entry.LocalAddressStart.Af))
1800         buf.EncodeBytes(m.Entry.LocalAddressStart.Un.XXX_UnionData[:], 16)
1801         buf.EncodeUint8(uint8(m.Entry.LocalAddressStop.Af))
1802         buf.EncodeBytes(m.Entry.LocalAddressStop.Un.XXX_UnionData[:], 16)
1803         buf.EncodeUint16(m.Entry.RemotePortStart)
1804         buf.EncodeUint16(m.Entry.RemotePortStop)
1805         buf.EncodeUint16(m.Entry.LocalPortStart)
1806         buf.EncodeUint16(m.Entry.LocalPortStop)
1807         return buf.Bytes(), nil
1808 }
1809 func (m *IpsecSpdDetails) Unmarshal(b []byte) error {
1810         buf := codec.NewBuffer(b)
1811         m.Entry.SpdID = buf.DecodeUint32()
1812         m.Entry.Priority = buf.DecodeInt32()
1813         m.Entry.IsOutbound = buf.DecodeBool()
1814         m.Entry.SaID = buf.DecodeUint32()
1815         m.Entry.Policy = IpsecSpdAction(buf.DecodeUint32())
1816         m.Entry.Protocol = buf.DecodeUint8()
1817         m.Entry.RemoteAddressStart.Af = ip_types.AddressFamily(buf.DecodeUint8())
1818         copy(m.Entry.RemoteAddressStart.Un.XXX_UnionData[:], buf.DecodeBytes(16))
1819         m.Entry.RemoteAddressStop.Af = ip_types.AddressFamily(buf.DecodeUint8())
1820         copy(m.Entry.RemoteAddressStop.Un.XXX_UnionData[:], buf.DecodeBytes(16))
1821         m.Entry.LocalAddressStart.Af = ip_types.AddressFamily(buf.DecodeUint8())
1822         copy(m.Entry.LocalAddressStart.Un.XXX_UnionData[:], buf.DecodeBytes(16))
1823         m.Entry.LocalAddressStop.Af = ip_types.AddressFamily(buf.DecodeUint8())
1824         copy(m.Entry.LocalAddressStop.Un.XXX_UnionData[:], buf.DecodeBytes(16))
1825         m.Entry.RemotePortStart = buf.DecodeUint16()
1826         m.Entry.RemotePortStop = buf.DecodeUint16()
1827         m.Entry.LocalPortStart = buf.DecodeUint16()
1828         m.Entry.LocalPortStop = buf.DecodeUint16()
1829         return nil
1830 }
1831
1832 // IpsecSpdDump defines message 'ipsec_spd_dump'.
1833 type IpsecSpdDump struct {
1834         SpdID uint32 `binapi:"u32,name=spd_id" json:"spd_id,omitempty"`
1835         SaID  uint32 `binapi:"u32,name=sa_id" json:"sa_id,omitempty"`
1836 }
1837
1838 func (m *IpsecSpdDump) Reset()               { *m = IpsecSpdDump{} }
1839 func (*IpsecSpdDump) GetMessageName() string { return "ipsec_spd_dump" }
1840 func (*IpsecSpdDump) GetCrcString() string   { return "afefbf7d" }
1841 func (*IpsecSpdDump) GetMessageType() api.MessageType {
1842         return api.RequestMessage
1843 }
1844
1845 func (m *IpsecSpdDump) Size() (size int) {
1846         if m == nil {
1847                 return 0
1848         }
1849         size += 4 // m.SpdID
1850         size += 4 // m.SaID
1851         return size
1852 }
1853 func (m *IpsecSpdDump) Marshal(b []byte) ([]byte, error) {
1854         if b == nil {
1855                 b = make([]byte, m.Size())
1856         }
1857         buf := codec.NewBuffer(b)
1858         buf.EncodeUint32(m.SpdID)
1859         buf.EncodeUint32(m.SaID)
1860         return buf.Bytes(), nil
1861 }
1862 func (m *IpsecSpdDump) Unmarshal(b []byte) error {
1863         buf := codec.NewBuffer(b)
1864         m.SpdID = buf.DecodeUint32()
1865         m.SaID = buf.DecodeUint32()
1866         return nil
1867 }
1868
1869 // IpsecSpdEntryAddDel defines message 'ipsec_spd_entry_add_del'.
1870 type IpsecSpdEntryAddDel struct {
1871         IsAdd bool          `binapi:"bool,name=is_add" json:"is_add,omitempty"`
1872         Entry IpsecSpdEntry `binapi:"ipsec_spd_entry,name=entry" json:"entry,omitempty"`
1873 }
1874
1875 func (m *IpsecSpdEntryAddDel) Reset()               { *m = IpsecSpdEntryAddDel{} }
1876 func (*IpsecSpdEntryAddDel) GetMessageName() string { return "ipsec_spd_entry_add_del" }
1877 func (*IpsecSpdEntryAddDel) GetCrcString() string   { return "338b7411" }
1878 func (*IpsecSpdEntryAddDel) GetMessageType() api.MessageType {
1879         return api.RequestMessage
1880 }
1881
1882 func (m *IpsecSpdEntryAddDel) Size() (size int) {
1883         if m == nil {
1884                 return 0
1885         }
1886         size += 1      // m.IsAdd
1887         size += 4      // m.Entry.SpdID
1888         size += 4      // m.Entry.Priority
1889         size += 1      // m.Entry.IsOutbound
1890         size += 4      // m.Entry.SaID
1891         size += 4      // m.Entry.Policy
1892         size += 1      // m.Entry.Protocol
1893         size += 1      // m.Entry.RemoteAddressStart.Af
1894         size += 1 * 16 // m.Entry.RemoteAddressStart.Un
1895         size += 1      // m.Entry.RemoteAddressStop.Af
1896         size += 1 * 16 // m.Entry.RemoteAddressStop.Un
1897         size += 1      // m.Entry.LocalAddressStart.Af
1898         size += 1 * 16 // m.Entry.LocalAddressStart.Un
1899         size += 1      // m.Entry.LocalAddressStop.Af
1900         size += 1 * 16 // m.Entry.LocalAddressStop.Un
1901         size += 2      // m.Entry.RemotePortStart
1902         size += 2      // m.Entry.RemotePortStop
1903         size += 2      // m.Entry.LocalPortStart
1904         size += 2      // m.Entry.LocalPortStop
1905         return size
1906 }
1907 func (m *IpsecSpdEntryAddDel) Marshal(b []byte) ([]byte, error) {
1908         if b == nil {
1909                 b = make([]byte, m.Size())
1910         }
1911         buf := codec.NewBuffer(b)
1912         buf.EncodeBool(m.IsAdd)
1913         buf.EncodeUint32(m.Entry.SpdID)
1914         buf.EncodeInt32(m.Entry.Priority)
1915         buf.EncodeBool(m.Entry.IsOutbound)
1916         buf.EncodeUint32(m.Entry.SaID)
1917         buf.EncodeUint32(uint32(m.Entry.Policy))
1918         buf.EncodeUint8(m.Entry.Protocol)
1919         buf.EncodeUint8(uint8(m.Entry.RemoteAddressStart.Af))
1920         buf.EncodeBytes(m.Entry.RemoteAddressStart.Un.XXX_UnionData[:], 16)
1921         buf.EncodeUint8(uint8(m.Entry.RemoteAddressStop.Af))
1922         buf.EncodeBytes(m.Entry.RemoteAddressStop.Un.XXX_UnionData[:], 16)
1923         buf.EncodeUint8(uint8(m.Entry.LocalAddressStart.Af))
1924         buf.EncodeBytes(m.Entry.LocalAddressStart.Un.XXX_UnionData[:], 16)
1925         buf.EncodeUint8(uint8(m.Entry.LocalAddressStop.Af))
1926         buf.EncodeBytes(m.Entry.LocalAddressStop.Un.XXX_UnionData[:], 16)
1927         buf.EncodeUint16(m.Entry.RemotePortStart)
1928         buf.EncodeUint16(m.Entry.RemotePortStop)
1929         buf.EncodeUint16(m.Entry.LocalPortStart)
1930         buf.EncodeUint16(m.Entry.LocalPortStop)
1931         return buf.Bytes(), nil
1932 }
1933 func (m *IpsecSpdEntryAddDel) Unmarshal(b []byte) error {
1934         buf := codec.NewBuffer(b)
1935         m.IsAdd = buf.DecodeBool()
1936         m.Entry.SpdID = buf.DecodeUint32()
1937         m.Entry.Priority = buf.DecodeInt32()
1938         m.Entry.IsOutbound = buf.DecodeBool()
1939         m.Entry.SaID = buf.DecodeUint32()
1940         m.Entry.Policy = IpsecSpdAction(buf.DecodeUint32())
1941         m.Entry.Protocol = buf.DecodeUint8()
1942         m.Entry.RemoteAddressStart.Af = ip_types.AddressFamily(buf.DecodeUint8())
1943         copy(m.Entry.RemoteAddressStart.Un.XXX_UnionData[:], buf.DecodeBytes(16))
1944         m.Entry.RemoteAddressStop.Af = ip_types.AddressFamily(buf.DecodeUint8())
1945         copy(m.Entry.RemoteAddressStop.Un.XXX_UnionData[:], buf.DecodeBytes(16))
1946         m.Entry.LocalAddressStart.Af = ip_types.AddressFamily(buf.DecodeUint8())
1947         copy(m.Entry.LocalAddressStart.Un.XXX_UnionData[:], buf.DecodeBytes(16))
1948         m.Entry.LocalAddressStop.Af = ip_types.AddressFamily(buf.DecodeUint8())
1949         copy(m.Entry.LocalAddressStop.Un.XXX_UnionData[:], buf.DecodeBytes(16))
1950         m.Entry.RemotePortStart = buf.DecodeUint16()
1951         m.Entry.RemotePortStop = buf.DecodeUint16()
1952         m.Entry.LocalPortStart = buf.DecodeUint16()
1953         m.Entry.LocalPortStop = buf.DecodeUint16()
1954         return nil
1955 }
1956
1957 // IpsecSpdEntryAddDelReply defines message 'ipsec_spd_entry_add_del_reply'.
1958 type IpsecSpdEntryAddDelReply struct {
1959         Retval    int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
1960         StatIndex uint32 `binapi:"u32,name=stat_index" json:"stat_index,omitempty"`
1961 }
1962
1963 func (m *IpsecSpdEntryAddDelReply) Reset()               { *m = IpsecSpdEntryAddDelReply{} }
1964 func (*IpsecSpdEntryAddDelReply) GetMessageName() string { return "ipsec_spd_entry_add_del_reply" }
1965 func (*IpsecSpdEntryAddDelReply) GetCrcString() string   { return "9ffac24b" }
1966 func (*IpsecSpdEntryAddDelReply) GetMessageType() api.MessageType {
1967         return api.ReplyMessage
1968 }
1969
1970 func (m *IpsecSpdEntryAddDelReply) Size() (size int) {
1971         if m == nil {
1972                 return 0
1973         }
1974         size += 4 // m.Retval
1975         size += 4 // m.StatIndex
1976         return size
1977 }
1978 func (m *IpsecSpdEntryAddDelReply) Marshal(b []byte) ([]byte, error) {
1979         if b == nil {
1980                 b = make([]byte, m.Size())
1981         }
1982         buf := codec.NewBuffer(b)
1983         buf.EncodeInt32(m.Retval)
1984         buf.EncodeUint32(m.StatIndex)
1985         return buf.Bytes(), nil
1986 }
1987 func (m *IpsecSpdEntryAddDelReply) Unmarshal(b []byte) error {
1988         buf := codec.NewBuffer(b)
1989         m.Retval = buf.DecodeInt32()
1990         m.StatIndex = buf.DecodeUint32()
1991         return nil
1992 }
1993
1994 // IpsecSpdInterfaceDetails defines message 'ipsec_spd_interface_details'.
1995 type IpsecSpdInterfaceDetails struct {
1996         SpdIndex  uint32                         `binapi:"u32,name=spd_index" json:"spd_index,omitempty"`
1997         SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
1998 }
1999
2000 func (m *IpsecSpdInterfaceDetails) Reset()               { *m = IpsecSpdInterfaceDetails{} }
2001 func (*IpsecSpdInterfaceDetails) GetMessageName() string { return "ipsec_spd_interface_details" }
2002 func (*IpsecSpdInterfaceDetails) GetCrcString() string   { return "7a0bcf3e" }
2003 func (*IpsecSpdInterfaceDetails) GetMessageType() api.MessageType {
2004         return api.ReplyMessage
2005 }
2006
2007 func (m *IpsecSpdInterfaceDetails) Size() (size int) {
2008         if m == nil {
2009                 return 0
2010         }
2011         size += 4 // m.SpdIndex
2012         size += 4 // m.SwIfIndex
2013         return size
2014 }
2015 func (m *IpsecSpdInterfaceDetails) Marshal(b []byte) ([]byte, error) {
2016         if b == nil {
2017                 b = make([]byte, m.Size())
2018         }
2019         buf := codec.NewBuffer(b)
2020         buf.EncodeUint32(m.SpdIndex)
2021         buf.EncodeUint32(uint32(m.SwIfIndex))
2022         return buf.Bytes(), nil
2023 }
2024 func (m *IpsecSpdInterfaceDetails) Unmarshal(b []byte) error {
2025         buf := codec.NewBuffer(b)
2026         m.SpdIndex = buf.DecodeUint32()
2027         m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
2028         return nil
2029 }
2030
2031 // IpsecSpdInterfaceDump defines message 'ipsec_spd_interface_dump'.
2032 type IpsecSpdInterfaceDump struct {
2033         SpdIndex      uint32 `binapi:"u32,name=spd_index" json:"spd_index,omitempty"`
2034         SpdIndexValid uint8  `binapi:"u8,name=spd_index_valid" json:"spd_index_valid,omitempty"`
2035 }
2036
2037 func (m *IpsecSpdInterfaceDump) Reset()               { *m = IpsecSpdInterfaceDump{} }
2038 func (*IpsecSpdInterfaceDump) GetMessageName() string { return "ipsec_spd_interface_dump" }
2039 func (*IpsecSpdInterfaceDump) GetCrcString() string   { return "8971de19" }
2040 func (*IpsecSpdInterfaceDump) GetMessageType() api.MessageType {
2041         return api.RequestMessage
2042 }
2043
2044 func (m *IpsecSpdInterfaceDump) Size() (size int) {
2045         if m == nil {
2046                 return 0
2047         }
2048         size += 4 // m.SpdIndex
2049         size += 1 // m.SpdIndexValid
2050         return size
2051 }
2052 func (m *IpsecSpdInterfaceDump) Marshal(b []byte) ([]byte, error) {
2053         if b == nil {
2054                 b = make([]byte, m.Size())
2055         }
2056         buf := codec.NewBuffer(b)
2057         buf.EncodeUint32(m.SpdIndex)
2058         buf.EncodeUint8(m.SpdIndexValid)
2059         return buf.Bytes(), nil
2060 }
2061 func (m *IpsecSpdInterfaceDump) Unmarshal(b []byte) error {
2062         buf := codec.NewBuffer(b)
2063         m.SpdIndex = buf.DecodeUint32()
2064         m.SpdIndexValid = buf.DecodeUint8()
2065         return nil
2066 }
2067
2068 // IpsecSpdsDetails defines message 'ipsec_spds_details'.
2069 type IpsecSpdsDetails struct {
2070         SpdID     uint32 `binapi:"u32,name=spd_id" json:"spd_id,omitempty"`
2071         Npolicies uint32 `binapi:"u32,name=npolicies" json:"npolicies,omitempty"`
2072 }
2073
2074 func (m *IpsecSpdsDetails) Reset()               { *m = IpsecSpdsDetails{} }
2075 func (*IpsecSpdsDetails) GetMessageName() string { return "ipsec_spds_details" }
2076 func (*IpsecSpdsDetails) GetCrcString() string   { return "a04bb254" }
2077 func (*IpsecSpdsDetails) GetMessageType() api.MessageType {
2078         return api.ReplyMessage
2079 }
2080
2081 func (m *IpsecSpdsDetails) Size() (size int) {
2082         if m == nil {
2083                 return 0
2084         }
2085         size += 4 // m.SpdID
2086         size += 4 // m.Npolicies
2087         return size
2088 }
2089 func (m *IpsecSpdsDetails) Marshal(b []byte) ([]byte, error) {
2090         if b == nil {
2091                 b = make([]byte, m.Size())
2092         }
2093         buf := codec.NewBuffer(b)
2094         buf.EncodeUint32(m.SpdID)
2095         buf.EncodeUint32(m.Npolicies)
2096         return buf.Bytes(), nil
2097 }
2098 func (m *IpsecSpdsDetails) Unmarshal(b []byte) error {
2099         buf := codec.NewBuffer(b)
2100         m.SpdID = buf.DecodeUint32()
2101         m.Npolicies = buf.DecodeUint32()
2102         return nil
2103 }
2104
2105 // IpsecSpdsDump defines message 'ipsec_spds_dump'.
2106 type IpsecSpdsDump struct{}
2107
2108 func (m *IpsecSpdsDump) Reset()               { *m = IpsecSpdsDump{} }
2109 func (*IpsecSpdsDump) GetMessageName() string { return "ipsec_spds_dump" }
2110 func (*IpsecSpdsDump) GetCrcString() string   { return "51077d14" }
2111 func (*IpsecSpdsDump) GetMessageType() api.MessageType {
2112         return api.RequestMessage
2113 }
2114
2115 func (m *IpsecSpdsDump) Size() (size int) {
2116         if m == nil {
2117                 return 0
2118         }
2119         return size
2120 }
2121 func (m *IpsecSpdsDump) Marshal(b []byte) ([]byte, error) {
2122         if b == nil {
2123                 b = make([]byte, m.Size())
2124         }
2125         buf := codec.NewBuffer(b)
2126         return buf.Bytes(), nil
2127 }
2128 func (m *IpsecSpdsDump) Unmarshal(b []byte) error {
2129         return nil
2130 }
2131
2132 // IpsecTunnelProtectDel defines message 'ipsec_tunnel_protect_del'.
2133 type IpsecTunnelProtectDel struct {
2134         SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
2135         Nh        ip_types.Address               `binapi:"address,name=nh" json:"nh,omitempty"`
2136 }
2137
2138 func (m *IpsecTunnelProtectDel) Reset()               { *m = IpsecTunnelProtectDel{} }
2139 func (*IpsecTunnelProtectDel) GetMessageName() string { return "ipsec_tunnel_protect_del" }
2140 func (*IpsecTunnelProtectDel) GetCrcString() string   { return "cd239930" }
2141 func (*IpsecTunnelProtectDel) GetMessageType() api.MessageType {
2142         return api.RequestMessage
2143 }
2144
2145 func (m *IpsecTunnelProtectDel) Size() (size int) {
2146         if m == nil {
2147                 return 0
2148         }
2149         size += 4      // m.SwIfIndex
2150         size += 1      // m.Nh.Af
2151         size += 1 * 16 // m.Nh.Un
2152         return size
2153 }
2154 func (m *IpsecTunnelProtectDel) Marshal(b []byte) ([]byte, error) {
2155         if b == nil {
2156                 b = make([]byte, m.Size())
2157         }
2158         buf := codec.NewBuffer(b)
2159         buf.EncodeUint32(uint32(m.SwIfIndex))
2160         buf.EncodeUint8(uint8(m.Nh.Af))
2161         buf.EncodeBytes(m.Nh.Un.XXX_UnionData[:], 16)
2162         return buf.Bytes(), nil
2163 }
2164 func (m *IpsecTunnelProtectDel) Unmarshal(b []byte) error {
2165         buf := codec.NewBuffer(b)
2166         m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
2167         m.Nh.Af = ip_types.AddressFamily(buf.DecodeUint8())
2168         copy(m.Nh.Un.XXX_UnionData[:], buf.DecodeBytes(16))
2169         return nil
2170 }
2171
2172 // IpsecTunnelProtectDelReply defines message 'ipsec_tunnel_protect_del_reply'.
2173 type IpsecTunnelProtectDelReply struct {
2174         Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
2175 }
2176
2177 func (m *IpsecTunnelProtectDelReply) Reset()               { *m = IpsecTunnelProtectDelReply{} }
2178 func (*IpsecTunnelProtectDelReply) GetMessageName() string { return "ipsec_tunnel_protect_del_reply" }
2179 func (*IpsecTunnelProtectDelReply) GetCrcString() string   { return "e8d4e804" }
2180 func (*IpsecTunnelProtectDelReply) GetMessageType() api.MessageType {
2181         return api.ReplyMessage
2182 }
2183
2184 func (m *IpsecTunnelProtectDelReply) Size() (size int) {
2185         if m == nil {
2186                 return 0
2187         }
2188         size += 4 // m.Retval
2189         return size
2190 }
2191 func (m *IpsecTunnelProtectDelReply) Marshal(b []byte) ([]byte, error) {
2192         if b == nil {
2193                 b = make([]byte, m.Size())
2194         }
2195         buf := codec.NewBuffer(b)
2196         buf.EncodeInt32(m.Retval)
2197         return buf.Bytes(), nil
2198 }
2199 func (m *IpsecTunnelProtectDelReply) Unmarshal(b []byte) error {
2200         buf := codec.NewBuffer(b)
2201         m.Retval = buf.DecodeInt32()
2202         return nil
2203 }
2204
2205 // IpsecTunnelProtectDetails defines message 'ipsec_tunnel_protect_details'.
2206 type IpsecTunnelProtectDetails struct {
2207         Tun IpsecTunnelProtect `binapi:"ipsec_tunnel_protect,name=tun" json:"tun,omitempty"`
2208 }
2209
2210 func (m *IpsecTunnelProtectDetails) Reset()               { *m = IpsecTunnelProtectDetails{} }
2211 func (*IpsecTunnelProtectDetails) GetMessageName() string { return "ipsec_tunnel_protect_details" }
2212 func (*IpsecTunnelProtectDetails) GetCrcString() string   { return "21663a50" }
2213 func (*IpsecTunnelProtectDetails) GetMessageType() api.MessageType {
2214         return api.ReplyMessage
2215 }
2216
2217 func (m *IpsecTunnelProtectDetails) Size() (size int) {
2218         if m == nil {
2219                 return 0
2220         }
2221         size += 4                   // m.Tun.SwIfIndex
2222         size += 1                   // m.Tun.Nh.Af
2223         size += 1 * 16              // m.Tun.Nh.Un
2224         size += 4                   // m.Tun.SaOut
2225         size += 1                   // m.Tun.NSaIn
2226         size += 4 * len(m.Tun.SaIn) // m.Tun.SaIn
2227         return size
2228 }
2229 func (m *IpsecTunnelProtectDetails) Marshal(b []byte) ([]byte, error) {
2230         if b == nil {
2231                 b = make([]byte, m.Size())
2232         }
2233         buf := codec.NewBuffer(b)
2234         buf.EncodeUint32(uint32(m.Tun.SwIfIndex))
2235         buf.EncodeUint8(uint8(m.Tun.Nh.Af))
2236         buf.EncodeBytes(m.Tun.Nh.Un.XXX_UnionData[:], 16)
2237         buf.EncodeUint32(m.Tun.SaOut)
2238         buf.EncodeUint8(uint8(len(m.Tun.SaIn)))
2239         for i := 0; i < len(m.Tun.SaIn); i++ {
2240                 var x uint32
2241                 if i < len(m.Tun.SaIn) {
2242                         x = uint32(m.Tun.SaIn[i])
2243                 }
2244                 buf.EncodeUint32(x)
2245         }
2246         return buf.Bytes(), nil
2247 }
2248 func (m *IpsecTunnelProtectDetails) Unmarshal(b []byte) error {
2249         buf := codec.NewBuffer(b)
2250         m.Tun.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
2251         m.Tun.Nh.Af = ip_types.AddressFamily(buf.DecodeUint8())
2252         copy(m.Tun.Nh.Un.XXX_UnionData[:], buf.DecodeBytes(16))
2253         m.Tun.SaOut = buf.DecodeUint32()
2254         m.Tun.NSaIn = buf.DecodeUint8()
2255         m.Tun.SaIn = make([]uint32, m.Tun.NSaIn)
2256         for i := 0; i < len(m.Tun.SaIn); i++ {
2257                 m.Tun.SaIn[i] = buf.DecodeUint32()
2258         }
2259         return nil
2260 }
2261
2262 // IpsecTunnelProtectDump defines message 'ipsec_tunnel_protect_dump'.
2263 type IpsecTunnelProtectDump struct {
2264         SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
2265 }
2266
2267 func (m *IpsecTunnelProtectDump) Reset()               { *m = IpsecTunnelProtectDump{} }
2268 func (*IpsecTunnelProtectDump) GetMessageName() string { return "ipsec_tunnel_protect_dump" }
2269 func (*IpsecTunnelProtectDump) GetCrcString() string   { return "f9e6675e" }
2270 func (*IpsecTunnelProtectDump) GetMessageType() api.MessageType {
2271         return api.RequestMessage
2272 }
2273
2274 func (m *IpsecTunnelProtectDump) Size() (size int) {
2275         if m == nil {
2276                 return 0
2277         }
2278         size += 4 // m.SwIfIndex
2279         return size
2280 }
2281 func (m *IpsecTunnelProtectDump) Marshal(b []byte) ([]byte, error) {
2282         if b == nil {
2283                 b = make([]byte, m.Size())
2284         }
2285         buf := codec.NewBuffer(b)
2286         buf.EncodeUint32(uint32(m.SwIfIndex))
2287         return buf.Bytes(), nil
2288 }
2289 func (m *IpsecTunnelProtectDump) Unmarshal(b []byte) error {
2290         buf := codec.NewBuffer(b)
2291         m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
2292         return nil
2293 }
2294
2295 // IpsecTunnelProtectUpdate defines message 'ipsec_tunnel_protect_update'.
2296 type IpsecTunnelProtectUpdate struct {
2297         Tunnel IpsecTunnelProtect `binapi:"ipsec_tunnel_protect,name=tunnel" json:"tunnel,omitempty"`
2298 }
2299
2300 func (m *IpsecTunnelProtectUpdate) Reset()               { *m = IpsecTunnelProtectUpdate{} }
2301 func (*IpsecTunnelProtectUpdate) GetMessageName() string { return "ipsec_tunnel_protect_update" }
2302 func (*IpsecTunnelProtectUpdate) GetCrcString() string   { return "30d5f133" }
2303 func (*IpsecTunnelProtectUpdate) GetMessageType() api.MessageType {
2304         return api.RequestMessage
2305 }
2306
2307 func (m *IpsecTunnelProtectUpdate) Size() (size int) {
2308         if m == nil {
2309                 return 0
2310         }
2311         size += 4                      // m.Tunnel.SwIfIndex
2312         size += 1                      // m.Tunnel.Nh.Af
2313         size += 1 * 16                 // m.Tunnel.Nh.Un
2314         size += 4                      // m.Tunnel.SaOut
2315         size += 1                      // m.Tunnel.NSaIn
2316         size += 4 * len(m.Tunnel.SaIn) // m.Tunnel.SaIn
2317         return size
2318 }
2319 func (m *IpsecTunnelProtectUpdate) Marshal(b []byte) ([]byte, error) {
2320         if b == nil {
2321                 b = make([]byte, m.Size())
2322         }
2323         buf := codec.NewBuffer(b)
2324         buf.EncodeUint32(uint32(m.Tunnel.SwIfIndex))
2325         buf.EncodeUint8(uint8(m.Tunnel.Nh.Af))
2326         buf.EncodeBytes(m.Tunnel.Nh.Un.XXX_UnionData[:], 16)
2327         buf.EncodeUint32(m.Tunnel.SaOut)
2328         buf.EncodeUint8(uint8(len(m.Tunnel.SaIn)))
2329         for i := 0; i < len(m.Tunnel.SaIn); i++ {
2330                 var x uint32
2331                 if i < len(m.Tunnel.SaIn) {
2332                         x = uint32(m.Tunnel.SaIn[i])
2333                 }
2334                 buf.EncodeUint32(x)
2335         }
2336         return buf.Bytes(), nil
2337 }
2338 func (m *IpsecTunnelProtectUpdate) Unmarshal(b []byte) error {
2339         buf := codec.NewBuffer(b)
2340         m.Tunnel.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
2341         m.Tunnel.Nh.Af = ip_types.AddressFamily(buf.DecodeUint8())
2342         copy(m.Tunnel.Nh.Un.XXX_UnionData[:], buf.DecodeBytes(16))
2343         m.Tunnel.SaOut = buf.DecodeUint32()
2344         m.Tunnel.NSaIn = buf.DecodeUint8()
2345         m.Tunnel.SaIn = make([]uint32, m.Tunnel.NSaIn)
2346         for i := 0; i < len(m.Tunnel.SaIn); i++ {
2347                 m.Tunnel.SaIn[i] = buf.DecodeUint32()
2348         }
2349         return nil
2350 }
2351
2352 // IpsecTunnelProtectUpdateReply defines message 'ipsec_tunnel_protect_update_reply'.
2353 type IpsecTunnelProtectUpdateReply struct {
2354         Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
2355 }
2356
2357 func (m *IpsecTunnelProtectUpdateReply) Reset() { *m = IpsecTunnelProtectUpdateReply{} }
2358 func (*IpsecTunnelProtectUpdateReply) GetMessageName() string {
2359         return "ipsec_tunnel_protect_update_reply"
2360 }
2361 func (*IpsecTunnelProtectUpdateReply) GetCrcString() string { return "e8d4e804" }
2362 func (*IpsecTunnelProtectUpdateReply) GetMessageType() api.MessageType {
2363         return api.ReplyMessage
2364 }
2365
2366 func (m *IpsecTunnelProtectUpdateReply) Size() (size int) {
2367         if m == nil {
2368                 return 0
2369         }
2370         size += 4 // m.Retval
2371         return size
2372 }
2373 func (m *IpsecTunnelProtectUpdateReply) Marshal(b []byte) ([]byte, error) {
2374         if b == nil {
2375                 b = make([]byte, m.Size())
2376         }
2377         buf := codec.NewBuffer(b)
2378         buf.EncodeInt32(m.Retval)
2379         return buf.Bytes(), nil
2380 }
2381 func (m *IpsecTunnelProtectUpdateReply) Unmarshal(b []byte) error {
2382         buf := codec.NewBuffer(b)
2383         m.Retval = buf.DecodeInt32()
2384         return nil
2385 }
2386
2387 func init() { file_ipsec_binapi_init() }
2388 func file_ipsec_binapi_init() {
2389         api.RegisterMessage((*IpsecBackendDetails)(nil), "ipsec_backend_details_ee601c29")
2390         api.RegisterMessage((*IpsecBackendDump)(nil), "ipsec_backend_dump_51077d14")
2391         api.RegisterMessage((*IpsecInterfaceAddDelSpd)(nil), "ipsec_interface_add_del_spd_80f80cbb")
2392         api.RegisterMessage((*IpsecInterfaceAddDelSpdReply)(nil), "ipsec_interface_add_del_spd_reply_e8d4e804")
2393         api.RegisterMessage((*IpsecItfCreate)(nil), "ipsec_itf_create_6f50b3bc")
2394         api.RegisterMessage((*IpsecItfCreateReply)(nil), "ipsec_itf_create_reply_5383d31f")
2395         api.RegisterMessage((*IpsecItfDelete)(nil), "ipsec_itf_delete_f9e6675e")
2396         api.RegisterMessage((*IpsecItfDeleteReply)(nil), "ipsec_itf_delete_reply_e8d4e804")
2397         api.RegisterMessage((*IpsecItfDetails)(nil), "ipsec_itf_details_548a73b8")
2398         api.RegisterMessage((*IpsecItfDump)(nil), "ipsec_itf_dump_f9e6675e")
2399         api.RegisterMessage((*IpsecSaDetails)(nil), "ipsec_sa_details_345d14a7")
2400         api.RegisterMessage((*IpsecSaDump)(nil), "ipsec_sa_dump_2076c2f4")
2401         api.RegisterMessage((*IpsecSaV2Details)(nil), "ipsec_sa_v2_details_e2130051")
2402         api.RegisterMessage((*IpsecSaV2Dump)(nil), "ipsec_sa_v2_dump_2076c2f4")
2403         api.RegisterMessage((*IpsecSaV3Details)(nil), "ipsec_sa_v3_details_2fc991ee")
2404         api.RegisterMessage((*IpsecSaV3Dump)(nil), "ipsec_sa_v3_dump_2076c2f4")
2405         api.RegisterMessage((*IpsecSadEntryAdd)(nil), "ipsec_sad_entry_add_50229353")
2406         api.RegisterMessage((*IpsecSadEntryAddDel)(nil), "ipsec_sad_entry_add_del_ab64b5c6")
2407         api.RegisterMessage((*IpsecSadEntryAddDelReply)(nil), "ipsec_sad_entry_add_del_reply_9ffac24b")
2408         api.RegisterMessage((*IpsecSadEntryAddDelV2)(nil), "ipsec_sad_entry_add_del_v2_aca78b27")
2409         api.RegisterMessage((*IpsecSadEntryAddDelV2Reply)(nil), "ipsec_sad_entry_add_del_v2_reply_9ffac24b")
2410         api.RegisterMessage((*IpsecSadEntryAddDelV3)(nil), "ipsec_sad_entry_add_del_v3_c77ebd92")
2411         api.RegisterMessage((*IpsecSadEntryAddDelV3Reply)(nil), "ipsec_sad_entry_add_del_v3_reply_9ffac24b")
2412         api.RegisterMessage((*IpsecSadEntryAddReply)(nil), "ipsec_sad_entry_add_reply_9ffac24b")
2413         api.RegisterMessage((*IpsecSadEntryDel)(nil), "ipsec_sad_entry_del_3a91bde5")
2414         api.RegisterMessage((*IpsecSadEntryDelReply)(nil), "ipsec_sad_entry_del_reply_e8d4e804")
2415         api.RegisterMessage((*IpsecSelectBackend)(nil), "ipsec_select_backend_5bcfd3b7")
2416         api.RegisterMessage((*IpsecSelectBackendReply)(nil), "ipsec_select_backend_reply_e8d4e804")
2417         api.RegisterMessage((*IpsecSetAsyncMode)(nil), "ipsec_set_async_mode_a6465f7c")
2418         api.RegisterMessage((*IpsecSetAsyncModeReply)(nil), "ipsec_set_async_mode_reply_e8d4e804")
2419         api.RegisterMessage((*IpsecSpdAddDel)(nil), "ipsec_spd_add_del_20e89a95")
2420         api.RegisterMessage((*IpsecSpdAddDelReply)(nil), "ipsec_spd_add_del_reply_e8d4e804")
2421         api.RegisterMessage((*IpsecSpdDetails)(nil), "ipsec_spd_details_5813d7a2")
2422         api.RegisterMessage((*IpsecSpdDump)(nil), "ipsec_spd_dump_afefbf7d")
2423         api.RegisterMessage((*IpsecSpdEntryAddDel)(nil), "ipsec_spd_entry_add_del_338b7411")
2424         api.RegisterMessage((*IpsecSpdEntryAddDelReply)(nil), "ipsec_spd_entry_add_del_reply_9ffac24b")
2425         api.RegisterMessage((*IpsecSpdInterfaceDetails)(nil), "ipsec_spd_interface_details_7a0bcf3e")
2426         api.RegisterMessage((*IpsecSpdInterfaceDump)(nil), "ipsec_spd_interface_dump_8971de19")
2427         api.RegisterMessage((*IpsecSpdsDetails)(nil), "ipsec_spds_details_a04bb254")
2428         api.RegisterMessage((*IpsecSpdsDump)(nil), "ipsec_spds_dump_51077d14")
2429         api.RegisterMessage((*IpsecTunnelProtectDel)(nil), "ipsec_tunnel_protect_del_cd239930")
2430         api.RegisterMessage((*IpsecTunnelProtectDelReply)(nil), "ipsec_tunnel_protect_del_reply_e8d4e804")
2431         api.RegisterMessage((*IpsecTunnelProtectDetails)(nil), "ipsec_tunnel_protect_details_21663a50")
2432         api.RegisterMessage((*IpsecTunnelProtectDump)(nil), "ipsec_tunnel_protect_dump_f9e6675e")
2433         api.RegisterMessage((*IpsecTunnelProtectUpdate)(nil), "ipsec_tunnel_protect_update_30d5f133")
2434         api.RegisterMessage((*IpsecTunnelProtectUpdateReply)(nil), "ipsec_tunnel_protect_update_reply_e8d4e804")
2435 }
2436
2437 // Messages returns list of all messages in this module.
2438 func AllMessages() []api.Message {
2439         return []api.Message{
2440                 (*IpsecBackendDetails)(nil),
2441                 (*IpsecBackendDump)(nil),
2442                 (*IpsecInterfaceAddDelSpd)(nil),
2443                 (*IpsecInterfaceAddDelSpdReply)(nil),
2444                 (*IpsecItfCreate)(nil),
2445                 (*IpsecItfCreateReply)(nil),
2446                 (*IpsecItfDelete)(nil),
2447                 (*IpsecItfDeleteReply)(nil),
2448                 (*IpsecItfDetails)(nil),
2449                 (*IpsecItfDump)(nil),
2450                 (*IpsecSaDetails)(nil),
2451                 (*IpsecSaDump)(nil),
2452                 (*IpsecSaV2Details)(nil),
2453                 (*IpsecSaV2Dump)(nil),
2454                 (*IpsecSaV3Details)(nil),
2455                 (*IpsecSaV3Dump)(nil),
2456                 (*IpsecSadEntryAdd)(nil),
2457                 (*IpsecSadEntryAddDel)(nil),
2458                 (*IpsecSadEntryAddDelReply)(nil),
2459                 (*IpsecSadEntryAddDelV2)(nil),
2460                 (*IpsecSadEntryAddDelV2Reply)(nil),
2461                 (*IpsecSadEntryAddDelV3)(nil),
2462                 (*IpsecSadEntryAddDelV3Reply)(nil),
2463                 (*IpsecSadEntryAddReply)(nil),
2464                 (*IpsecSadEntryDel)(nil),
2465                 (*IpsecSadEntryDelReply)(nil),
2466                 (*IpsecSelectBackend)(nil),
2467                 (*IpsecSelectBackendReply)(nil),
2468                 (*IpsecSetAsyncMode)(nil),
2469                 (*IpsecSetAsyncModeReply)(nil),
2470                 (*IpsecSpdAddDel)(nil),
2471                 (*IpsecSpdAddDelReply)(nil),
2472                 (*IpsecSpdDetails)(nil),
2473                 (*IpsecSpdDump)(nil),
2474                 (*IpsecSpdEntryAddDel)(nil),
2475                 (*IpsecSpdEntryAddDelReply)(nil),
2476                 (*IpsecSpdInterfaceDetails)(nil),
2477                 (*IpsecSpdInterfaceDump)(nil),
2478                 (*IpsecSpdsDetails)(nil),
2479                 (*IpsecSpdsDump)(nil),
2480                 (*IpsecTunnelProtectDel)(nil),
2481                 (*IpsecTunnelProtectDelReply)(nil),
2482                 (*IpsecTunnelProtectDetails)(nil),
2483                 (*IpsecTunnelProtectDump)(nil),
2484                 (*IpsecTunnelProtectUpdate)(nil),
2485                 (*IpsecTunnelProtectUpdateReply)(nil),
2486         }
2487 }