regenerate binapi 05/33605/1
authormhalaj1 <matus.halaj@pantheon.tech>
Thu, 26 Aug 2021 11:10:48 +0000 (13:10 +0200)
committermhalaj1 <matus.halaj@pantheon.tech>
Thu, 26 Aug 2021 11:10:48 +0000 (13:10 +0200)
Signed-off-by: mhalaj1 <matus.halaj@pantheon.tech>
Change-Id: I9bb6a5ca00aa542128bde0bfbbba7b57b9f16ed2

170 files changed:
binapi/abf/abf.ba.go
binapi/acl/acl.ba.go
binapi/acl_types/acl_types.ba.go
binapi/adl/adl.ba.go [new file with mode: 0644]
binapi/adl/adl_rpc.ba.go [new file with mode: 0644]
binapi/af_packet/af_packet.ba.go
binapi/af_xdp/af_xdp.ba.go [new file with mode: 0644]
binapi/af_xdp/af_xdp_rpc.ba.go [new file with mode: 0644]
binapi/arp/arp.ba.go
binapi/arping/arping.ba.go [new file with mode: 0644]
binapi/arping/arping_rpc.ba.go [new file with mode: 0644]
binapi/avf/avf.ba.go
binapi/bfd/bfd.ba.go
binapi/bier/bier.ba.go
binapi/bond/bond.ba.go
binapi/bond/bond_rpc.ba.go
binapi/builtinurl/builtinurl.ba.go
binapi/cdp/cdp.ba.go
binapi/classify/classify.ba.go
binapi/classify/classify_rpc.ba.go
binapi/cnat/cnat.ba.go [new file with mode: 0644]
binapi/cnat/cnat_rpc.ba.go [new file with mode: 0644]
binapi/cop/cop.ba.go [deleted file]
binapi/cop/cop_rpc.ba.go [deleted file]
binapi/crypto/crypto.ba.go [new file with mode: 0644]
binapi/crypto/crypto_rpc.ba.go [new file with mode: 0644]
binapi/crypto_sw_scheduler/crypto_sw_scheduler.ba.go [new file with mode: 0644]
binapi/crypto_sw_scheduler/crypto_sw_scheduler_rpc.ba.go [new file with mode: 0644]
binapi/ct6/ct6.ba.go
binapi/det44/det44.ba.go [new file with mode: 0644]
binapi/det44/det44_rpc.ba.go [new file with mode: 0644]
binapi/dhcp/dhcp.ba.go
binapi/dhcp6_ia_na_client_cp/dhcp6_ia_na_client_cp.ba.go
binapi/dhcp6_pd_client_cp/dhcp6_pd_client_cp.ba.go
binapi/dns/dns.ba.go
binapi/dslite/dslite.ba.go
binapi/ethernet_types/ethernet_types.ba.go
binapi/feature/feature.ba.go
binapi/fib/fib.ba.go [new file with mode: 0644]
binapi/fib/fib_rpc.ba.go [new file with mode: 0644]
binapi/fib_types/fib_types.ba.go
binapi/flow/flow.ba.go [new file with mode: 0644]
binapi/flow/flow_rpc.ba.go [new file with mode: 0644]
binapi/flow_types/flow_types.ba.go [new file with mode: 0644]
binapi/flowprobe/flowprobe.ba.go
binapi/gbp/gbp.ba.go
binapi/geneve/geneve.ba.go
binapi/geneve/geneve_rpc.ba.go
binapi/graph/graph.ba.go [new file with mode: 0644]
binapi/graph/graph_rpc.ba.go [new file with mode: 0644]
binapi/gre/gre.ba.go
binapi/gso/gso.ba.go
binapi/gtpu/gtpu.ba.go
binapi/gtpu/gtpu_rpc.ba.go
binapi/http_static/http_static.ba.go
binapi/igmp/igmp.ba.go
binapi/ikev2/ikev2.ba.go
binapi/ikev2/ikev2_rpc.ba.go
binapi/ikev2_types/ikev2_types.ba.go [new file with mode: 0644]
binapi/interface/interface.ba.go
binapi/interface/interface_rpc.ba.go
binapi/interface_types/interface_types.ba.go
binapi/ioam_cache/ioam_cache.ba.go
binapi/ioam_export/ioam_export.ba.go
binapi/ioam_vxlan_gpe/ioam_vxlan_gpe.ba.go
binapi/ip/ip.ba.go
binapi/ip/ip_rpc.ba.go
binapi/ip6_nd/ip6_nd.ba.go
binapi/ip_neighbor/ip_neighbor.ba.go
binapi/ip_neighbor/ip_neighbor_rpc.ba.go
binapi/ip_types/ip_types.ba.go
binapi/ipfix_export/ipfix_export.ba.go
binapi/ipip/ipip.ba.go
binapi/ipsec/ipsec.ba.go
binapi/ipsec/ipsec_rpc.ba.go
binapi/ipsec_types/ipsec_types.ba.go
binapi/l2/l2.ba.go
binapi/l2/l2_rpc.ba.go
binapi/l2e/l2e.ba.go
binapi/l2tp/l2tp.ba.go
binapi/l3xc/l3xc.ba.go
binapi/lacp/lacp.ba.go
binapi/lb/lb.ba.go
binapi/lb_types/lb_types.ba.go
binapi/lcp/lcp.ba.go [new file with mode: 0644]
binapi/lcp/lcp_rpc.ba.go [new file with mode: 0644]
binapi/lisp/lisp.ba.go
binapi/lisp_gpe/lisp_gpe.ba.go
binapi/lisp_types/lisp_types.ba.go
binapi/lldp/lldp.ba.go
binapi/mactime/mactime.ba.go
binapi/map/map.ba.go
binapi/map/map_rpc.ba.go
binapi/mdata/mdata.ba.go
binapi/memclnt/memclnt.ba.go
binapi/memif/memif.ba.go
binapi/mfib_types/mfib_types.ba.go
binapi/mpls/mpls.ba.go
binapi/mss_clamp/mss_clamp.ba.go [new file with mode: 0644]
binapi/mss_clamp/mss_clamp_rpc.ba.go [new file with mode: 0644]
binapi/nat44_ed/nat44_ed.ba.go [moved from binapi/nat/nat.ba.go with 65% similarity]
binapi/nat44_ed/nat44_ed_rpc.ba.go [moved from binapi/nat/nat_rpc.ba.go with 64% similarity]
binapi/nat44_ei/nat44_ei.ba.go [new file with mode: 0644]
binapi/nat44_ei/nat44_ei_rpc.ba.go [new file with mode: 0644]
binapi/nat64/nat64.ba.go [new file with mode: 0644]
binapi/nat64/nat64_rpc.ba.go [new file with mode: 0644]
binapi/nat66/nat66.ba.go [new file with mode: 0644]
binapi/nat66/nat66_rpc.ba.go [new file with mode: 0644]
binapi/nat_types/nat_types.ba.go [new file with mode: 0644]
binapi/nsh/nsh.ba.go
binapi/nsim/nsim.ba.go
binapi/nsim/nsim_rpc.ba.go
binapi/oddbuf/oddbuf.ba.go
binapi/one/one.ba.go
binapi/p2p_ethernet/p2p_ethernet.ba.go
binapi/pci_types/pci_types.ba.go
binapi/pg/pg.ba.go
binapi/pg/pg_rpc.ba.go
binapi/pipe/pipe.ba.go
binapi/pnat/pnat.ba.go [new file with mode: 0644]
binapi/pnat/pnat_rpc.ba.go [new file with mode: 0644]
binapi/policer/policer.ba.go
binapi/policer/policer_rpc.ba.go
binapi/policer_types/policer_types.ba.go
binapi/pot/pot.ba.go
binapi/pppoe/pppoe.ba.go
binapi/pppoe/pppoe_rpc.ba.go
binapi/punt/punt.ba.go
binapi/qos/qos.ba.go
binapi/rd_cp/rd_cp.ba.go
binapi/rdma/rdma.ba.go
binapi/rdma/rdma_rpc.ba.go
binapi/session/session.ba.go
binapi/span/span.ba.go
binapi/sr/sr.ba.go
binapi/sr/sr_rpc.ba.go
binapi/sr_mpls/sr_mpls.ba.go
binapi/sr_types/sr_types.ba.go
binapi/stn/stn.ba.go
binapi/svs/svs.ba.go
binapi/syslog/syslog.ba.go
binapi/tapv2/tapv2.ba.go
binapi/tcp/tcp.ba.go
binapi/teib/teib.ba.go
binapi/tls_openssl/tls_openssl.ba.go
binapi/trace/trace.ba.go
binapi/tracedump/tracedump.ba.go [new file with mode: 0644]
binapi/tracedump/tracedump_rpc.ba.go [new file with mode: 0644]
binapi/tunnel_types/tunnel_types.ba.go
binapi/udp/udp.ba.go
binapi/udp_ping/udp_ping.ba.go
binapi/urpf/urpf.ba.go
binapi/vhost_user/vhost_user.ba.go
binapi/vhost_user/vhost_user_rpc.ba.go
binapi/virtio/virtio.ba.go
binapi/virtio/virtio_rpc.ba.go
binapi/virtio_types/virtio_types.ba.go
binapi/vmxnet3/vmxnet3.ba.go
binapi/vmxnet3/vmxnet3_rpc.ba.go
binapi/vpe/vpe.ba.go
binapi/vpe_types/vpe_types.ba.go
binapi/vrrp/vrrp.ba.go
binapi/vrrp/vrrp_rpc.ba.go
binapi/vxlan/vxlan.ba.go
binapi/vxlan/vxlan_rpc.ba.go
binapi/vxlan_gbp/vxlan_gbp.ba.go
binapi/vxlan_gpe/vxlan_gpe.ba.go
binapi/vxlan_gpe_ioam_export/vxlan_gpe_ioam_export.ba.go
binapi/wireguard/wireguard.ba.go [new file with mode: 0644]
binapi/wireguard/wireguard_rpc.ba.go [new file with mode: 0644]

index fc4351b..209986a 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/abf.api.json
 
 // Package abf contains generated bindings for API file abf.api.
@@ -29,7 +29,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "abf"
        APIVersion = "1.0.0"
-       VersionCrc = 0x460b09b9
+       VersionCrc = 0xf2367b47
 )
 
 // AbfItfAttach defines type 'abf_itf_attach'.
@@ -49,6 +49,7 @@ type AbfPolicy struct {
 }
 
 // AbfItfAttachAddDel defines message 'abf_itf_attach_add_del'.
+// InProgress: the message form may change in the future versions
 type AbfItfAttachAddDel struct {
        IsAdd  bool         `binapi:"bool,name=is_add" json:"is_add,omitempty"`
        Attach AbfItfAttach `binapi:"abf_itf_attach,name=attach" json:"attach,omitempty"`
@@ -95,6 +96,7 @@ func (m *AbfItfAttachAddDel) Unmarshal(b []byte) error {
 }
 
 // AbfItfAttachAddDelReply defines message 'abf_itf_attach_add_del_reply'.
+// InProgress: the message form may change in the future versions
 type AbfItfAttachAddDelReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -128,6 +130,7 @@ func (m *AbfItfAttachAddDelReply) Unmarshal(b []byte) error {
 }
 
 // AbfItfAttachDetails defines message 'abf_itf_attach_details'.
+// InProgress: the message form may change in the future versions
 type AbfItfAttachDetails struct {
        Attach AbfItfAttach `binapi:"abf_itf_attach,name=attach" json:"attach,omitempty"`
 }
@@ -170,6 +173,7 @@ func (m *AbfItfAttachDetails) Unmarshal(b []byte) error {
 }
 
 // AbfItfAttachDump defines message 'abf_itf_attach_dump'.
+// InProgress: the message form may change in the future versions
 type AbfItfAttachDump struct{}
 
 func (m *AbfItfAttachDump) Reset()               { *m = AbfItfAttachDump{} }
@@ -197,6 +201,7 @@ func (m *AbfItfAttachDump) Unmarshal(b []byte) error {
 }
 
 // AbfPluginGetVersion defines message 'abf_plugin_get_version'.
+// InProgress: the message form may change in the future versions
 type AbfPluginGetVersion struct{}
 
 func (m *AbfPluginGetVersion) Reset()               { *m = AbfPluginGetVersion{} }
@@ -224,6 +229,7 @@ func (m *AbfPluginGetVersion) Unmarshal(b []byte) error {
 }
 
 // AbfPluginGetVersionReply defines message 'abf_plugin_get_version_reply'.
+// InProgress: the message form may change in the future versions
 type AbfPluginGetVersionReply struct {
        Major uint32 `binapi:"u32,name=major" json:"major,omitempty"`
        Minor uint32 `binapi:"u32,name=minor" json:"minor,omitempty"`
@@ -261,6 +267,7 @@ func (m *AbfPluginGetVersionReply) Unmarshal(b []byte) error {
 }
 
 // AbfPolicyAddDel defines message 'abf_policy_add_del'.
+// InProgress: the message form may change in the future versions
 type AbfPolicyAddDel struct {
        IsAdd  bool      `binapi:"bool,name=is_add" json:"is_add,omitempty"`
        Policy AbfPolicy `binapi:"abf_policy,name=policy" json:"policy,omitempty"`
@@ -268,7 +275,7 @@ type AbfPolicyAddDel struct {
 
 func (m *AbfPolicyAddDel) Reset()               { *m = AbfPolicyAddDel{} }
 func (*AbfPolicyAddDel) GetMessageName() string { return "abf_policy_add_del" }
-func (*AbfPolicyAddDel) GetCrcString() string   { return "ee66f93e" }
+func (*AbfPolicyAddDel) GetCrcString() string   { return "c6131197" }
 func (*AbfPolicyAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -377,6 +384,7 @@ func (m *AbfPolicyAddDel) Unmarshal(b []byte) error {
 }
 
 // AbfPolicyAddDelReply defines message 'abf_policy_add_del_reply'.
+// InProgress: the message form may change in the future versions
 type AbfPolicyAddDelReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -410,13 +418,14 @@ func (m *AbfPolicyAddDelReply) Unmarshal(b []byte) error {
 }
 
 // AbfPolicyDetails defines message 'abf_policy_details'.
+// InProgress: the message form may change in the future versions
 type AbfPolicyDetails struct {
        Policy AbfPolicy `binapi:"abf_policy,name=policy" json:"policy,omitempty"`
 }
 
 func (m *AbfPolicyDetails) Reset()               { *m = AbfPolicyDetails{} }
 func (*AbfPolicyDetails) GetMessageName() string { return "abf_policy_details" }
-func (*AbfPolicyDetails) GetCrcString() string   { return "6769e504" }
+func (*AbfPolicyDetails) GetCrcString() string   { return "b7487fa4" }
 func (*AbfPolicyDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -522,6 +531,7 @@ func (m *AbfPolicyDetails) Unmarshal(b []byte) error {
 }
 
 // AbfPolicyDump defines message 'abf_policy_dump'.
+// InProgress: the message form may change in the future versions
 type AbfPolicyDump struct{}
 
 func (m *AbfPolicyDump) Reset()               { *m = AbfPolicyDump{} }
@@ -556,9 +566,9 @@ func file_abf_binapi_init() {
        api.RegisterMessage((*AbfItfAttachDump)(nil), "abf_itf_attach_dump_51077d14")
        api.RegisterMessage((*AbfPluginGetVersion)(nil), "abf_plugin_get_version_51077d14")
        api.RegisterMessage((*AbfPluginGetVersionReply)(nil), "abf_plugin_get_version_reply_9b32cf86")
-       api.RegisterMessage((*AbfPolicyAddDel)(nil), "abf_policy_add_del_ee66f93e")
+       api.RegisterMessage((*AbfPolicyAddDel)(nil), "abf_policy_add_del_c6131197")
        api.RegisterMessage((*AbfPolicyAddDelReply)(nil), "abf_policy_add_del_reply_e8d4e804")
-       api.RegisterMessage((*AbfPolicyDetails)(nil), "abf_policy_details_6769e504")
+       api.RegisterMessage((*AbfPolicyDetails)(nil), "abf_policy_details_b7487fa4")
        api.RegisterMessage((*AbfPolicyDump)(nil), "abf_policy_dump_51077d14")
 }
 
index c1114f1..2ee4b14 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/acl.api.json
 
 // Package acl contains generated bindings for API file acl.api.
@@ -29,7 +29,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "acl"
        APIVersion = "2.0.0"
-       VersionCrc = 0x68c4cb37
+       VersionCrc = 0x4a805ebc
 )
 
 // ACLAddReplace defines message 'acl_add_replace'.
@@ -42,7 +42,7 @@ type ACLAddReplace struct {
 
 func (m *ACLAddReplace) Reset()               { *m = ACLAddReplace{} }
 func (*ACLAddReplace) GetMessageName() string { return "acl_add_replace" }
-func (*ACLAddReplace) GetCrcString() string   { return "1cabdeab" }
+func (*ACLAddReplace) GetCrcString() string   { return "ee5c2f18" }
 func (*ACLAddReplace) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -245,7 +245,7 @@ type ACLDetails struct {
 
 func (m *ACLDetails) Reset()               { *m = ACLDetails{} }
 func (*ACLDetails) GetMessageName() string { return "acl_details" }
-func (*ACLDetails) GetCrcString() string   { return "7a97f21c" }
+func (*ACLDetails) GetCrcString() string   { return "95babae0" }
 func (*ACLDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1077,7 +1077,7 @@ type MacipACLAdd struct {
 
 func (m *MacipACLAdd) Reset()               { *m = MacipACLAdd{} }
 func (*MacipACLAdd) GetMessageName() string { return "macip_acl_add" }
-func (*MacipACLAdd) GetCrcString() string   { return "d648fd0a" }
+func (*MacipACLAdd) GetCrcString() string   { return "ce6fbad0" }
 func (*MacipACLAdd) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1150,7 +1150,7 @@ type MacipACLAddReplace struct {
 
 func (m *MacipACLAddReplace) Reset()               { *m = MacipACLAddReplace{} }
 func (*MacipACLAddReplace) GetMessageName() string { return "macip_acl_add_replace" }
-func (*MacipACLAddReplace) GetCrcString() string   { return "e34402a7" }
+func (*MacipACLAddReplace) GetCrcString() string   { return "2a461dd4" }
 func (*MacipACLAddReplace) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1366,7 +1366,7 @@ type MacipACLDetails struct {
 
 func (m *MacipACLDetails) Reset()               { *m = MacipACLDetails{} }
 func (*MacipACLDetails) GetMessageName() string { return "macip_acl_details" }
-func (*MacipACLDetails) GetCrcString() string   { return "57c7482f" }
+func (*MacipACLDetails) GetCrcString() string   { return "27135b59" }
 func (*MacipACLDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1701,11 +1701,11 @@ func (m *MacipACLInterfaceListDump) Unmarshal(b []byte) error {
 
 func init() { file_acl_binapi_init() }
 func file_acl_binapi_init() {
-       api.RegisterMessage((*ACLAddReplace)(nil), "acl_add_replace_1cabdeab")
+       api.RegisterMessage((*ACLAddReplace)(nil), "acl_add_replace_ee5c2f18")
        api.RegisterMessage((*ACLAddReplaceReply)(nil), "acl_add_replace_reply_ac407b0c")
        api.RegisterMessage((*ACLDel)(nil), "acl_del_ef34fea4")
        api.RegisterMessage((*ACLDelReply)(nil), "acl_del_reply_e8d4e804")
-       api.RegisterMessage((*ACLDetails)(nil), "acl_details_7a97f21c")
+       api.RegisterMessage((*ACLDetails)(nil), "acl_details_95babae0")
        api.RegisterMessage((*ACLDump)(nil), "acl_dump_ef34fea4")
        api.RegisterMessage((*ACLInterfaceAddDel)(nil), "acl_interface_add_del_4b54bebd")
        api.RegisterMessage((*ACLInterfaceAddDelReply)(nil), "acl_interface_add_del_reply_e8d4e804")
@@ -1725,13 +1725,13 @@ func file_acl_binapi_init() {
        api.RegisterMessage((*ACLPluginGetVersionReply)(nil), "acl_plugin_get_version_reply_9b32cf86")
        api.RegisterMessage((*ACLStatsIntfCountersEnable)(nil), "acl_stats_intf_counters_enable_b3e225d2")
        api.RegisterMessage((*ACLStatsIntfCountersEnableReply)(nil), "acl_stats_intf_counters_enable_reply_e8d4e804")
-       api.RegisterMessage((*MacipACLAdd)(nil), "macip_acl_add_d648fd0a")
-       api.RegisterMessage((*MacipACLAddReplace)(nil), "macip_acl_add_replace_e34402a7")
+       api.RegisterMessage((*MacipACLAdd)(nil), "macip_acl_add_ce6fbad0")
+       api.RegisterMessage((*MacipACLAddReplace)(nil), "macip_acl_add_replace_2a461dd4")
        api.RegisterMessage((*MacipACLAddReplaceReply)(nil), "macip_acl_add_replace_reply_ac407b0c")
        api.RegisterMessage((*MacipACLAddReply)(nil), "macip_acl_add_reply_ac407b0c")
        api.RegisterMessage((*MacipACLDel)(nil), "macip_acl_del_ef34fea4")
        api.RegisterMessage((*MacipACLDelReply)(nil), "macip_acl_del_reply_e8d4e804")
-       api.RegisterMessage((*MacipACLDetails)(nil), "macip_acl_details_57c7482f")
+       api.RegisterMessage((*MacipACLDetails)(nil), "macip_acl_details_27135b59")
        api.RegisterMessage((*MacipACLDump)(nil), "macip_acl_dump_ef34fea4")
        api.RegisterMessage((*MacipACLInterfaceAddDel)(nil), "macip_acl_interface_add_del_4b8690b1")
        api.RegisterMessage((*MacipACLInterfaceAddDelReply)(nil), "macip_acl_interface_add_del_reply_e8d4e804")
index 27f951f..f9b6128 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/acl_types.api.json
 
 // Package acl_types contains generated bindings for API file acl_types.api.
diff --git a/binapi/adl/adl.ba.go b/binapi/adl/adl.ba.go
new file mode 100644 (file)
index 0000000..9f30501
--- /dev/null
@@ -0,0 +1,208 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/adl.api.json
+
+// Package adl contains generated bindings for API file adl.api.
+//
+// Contents:
+//   4 messages
+//
+package adl
+
+import (
+       api "git.fd.io/govpp.git/api"
+       interface_types "git.fd.io/govpp.git/binapi/interface_types"
+       codec "git.fd.io/govpp.git/codec"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+const (
+       APIFile    = "adl"
+       APIVersion = "0.0.1"
+       VersionCrc = 0xb752b7a2
+)
+
+// AdlAllowlistEnableDisable defines message 'adl_allowlist_enable_disable'.
+// InProgress: the message form may change in the future versions
+type AdlAllowlistEnableDisable struct {
+       SwIfIndex  interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       FibID      uint32                         `binapi:"u32,name=fib_id" json:"fib_id,omitempty"`
+       IP4        bool                           `binapi:"bool,name=ip4" json:"ip4,omitempty"`
+       IP6        bool                           `binapi:"bool,name=ip6" json:"ip6,omitempty"`
+       DefaultAdl bool                           `binapi:"bool,name=default_adl" json:"default_adl,omitempty"`
+}
+
+func (m *AdlAllowlistEnableDisable) Reset()               { *m = AdlAllowlistEnableDisable{} }
+func (*AdlAllowlistEnableDisable) GetMessageName() string { return "adl_allowlist_enable_disable" }
+func (*AdlAllowlistEnableDisable) GetCrcString() string   { return "ea88828d" }
+func (*AdlAllowlistEnableDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *AdlAllowlistEnableDisable) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       size += 4 // m.FibID
+       size += 1 // m.IP4
+       size += 1 // m.IP6
+       size += 1 // m.DefaultAdl
+       return size
+}
+func (m *AdlAllowlistEnableDisable) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint32(m.FibID)
+       buf.EncodeBool(m.IP4)
+       buf.EncodeBool(m.IP6)
+       buf.EncodeBool(m.DefaultAdl)
+       return buf.Bytes(), nil
+}
+func (m *AdlAllowlistEnableDisable) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.FibID = buf.DecodeUint32()
+       m.IP4 = buf.DecodeBool()
+       m.IP6 = buf.DecodeBool()
+       m.DefaultAdl = buf.DecodeBool()
+       return nil
+}
+
+// AdlAllowlistEnableDisableReply defines message 'adl_allowlist_enable_disable_reply'.
+// InProgress: the message form may change in the future versions
+type AdlAllowlistEnableDisableReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *AdlAllowlistEnableDisableReply) Reset() { *m = AdlAllowlistEnableDisableReply{} }
+func (*AdlAllowlistEnableDisableReply) GetMessageName() string {
+       return "adl_allowlist_enable_disable_reply"
+}
+func (*AdlAllowlistEnableDisableReply) GetCrcString() string { return "e8d4e804" }
+func (*AdlAllowlistEnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *AdlAllowlistEnableDisableReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *AdlAllowlistEnableDisableReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *AdlAllowlistEnableDisableReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// AdlInterfaceEnableDisable defines message 'adl_interface_enable_disable'.
+// InProgress: the message form may change in the future versions
+type AdlInterfaceEnableDisable struct {
+       SwIfIndex     interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       EnableDisable bool                           `binapi:"bool,name=enable_disable" json:"enable_disable,omitempty"`
+}
+
+func (m *AdlInterfaceEnableDisable) Reset()               { *m = AdlInterfaceEnableDisable{} }
+func (*AdlInterfaceEnableDisable) GetMessageName() string { return "adl_interface_enable_disable" }
+func (*AdlInterfaceEnableDisable) GetCrcString() string   { return "5501adee" }
+func (*AdlInterfaceEnableDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *AdlInterfaceEnableDisable) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       size += 1 // m.EnableDisable
+       return size
+}
+func (m *AdlInterfaceEnableDisable) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeBool(m.EnableDisable)
+       return buf.Bytes(), nil
+}
+func (m *AdlInterfaceEnableDisable) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.EnableDisable = buf.DecodeBool()
+       return nil
+}
+
+// AdlInterfaceEnableDisableReply defines message 'adl_interface_enable_disable_reply'.
+// InProgress: the message form may change in the future versions
+type AdlInterfaceEnableDisableReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *AdlInterfaceEnableDisableReply) Reset() { *m = AdlInterfaceEnableDisableReply{} }
+func (*AdlInterfaceEnableDisableReply) GetMessageName() string {
+       return "adl_interface_enable_disable_reply"
+}
+func (*AdlInterfaceEnableDisableReply) GetCrcString() string { return "e8d4e804" }
+func (*AdlInterfaceEnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *AdlInterfaceEnableDisableReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *AdlInterfaceEnableDisableReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *AdlInterfaceEnableDisableReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+func init() { file_adl_binapi_init() }
+func file_adl_binapi_init() {
+       api.RegisterMessage((*AdlAllowlistEnableDisable)(nil), "adl_allowlist_enable_disable_ea88828d")
+       api.RegisterMessage((*AdlAllowlistEnableDisableReply)(nil), "adl_allowlist_enable_disable_reply_e8d4e804")
+       api.RegisterMessage((*AdlInterfaceEnableDisable)(nil), "adl_interface_enable_disable_5501adee")
+       api.RegisterMessage((*AdlInterfaceEnableDisableReply)(nil), "adl_interface_enable_disable_reply_e8d4e804")
+}
+
+// Messages returns list of all messages in this module.
+func AllMessages() []api.Message {
+       return []api.Message{
+               (*AdlAllowlistEnableDisable)(nil),
+               (*AdlAllowlistEnableDisableReply)(nil),
+               (*AdlInterfaceEnableDisable)(nil),
+               (*AdlInterfaceEnableDisableReply)(nil),
+       }
+}
diff --git a/binapi/adl/adl_rpc.ba.go b/binapi/adl/adl_rpc.ba.go
new file mode 100644 (file)
index 0000000..9a03cb5
--- /dev/null
@@ -0,0 +1,41 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+
+package adl
+
+import (
+       "context"
+
+       api "git.fd.io/govpp.git/api"
+)
+
+// RPCService defines RPC service adl.
+type RPCService interface {
+       AdlAllowlistEnableDisable(ctx context.Context, in *AdlAllowlistEnableDisable) (*AdlAllowlistEnableDisableReply, error)
+       AdlInterfaceEnableDisable(ctx context.Context, in *AdlInterfaceEnableDisable) (*AdlInterfaceEnableDisableReply, error)
+}
+
+type serviceClient struct {
+       conn api.Connection
+}
+
+func NewServiceClient(conn api.Connection) RPCService {
+       return &serviceClient{conn}
+}
+
+func (c *serviceClient) AdlAllowlistEnableDisable(ctx context.Context, in *AdlAllowlistEnableDisable) (*AdlAllowlistEnableDisableReply, error) {
+       out := new(AdlAllowlistEnableDisableReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) AdlInterfaceEnableDisable(ctx context.Context, in *AdlInterfaceEnableDisable) (*AdlInterfaceEnableDisableReply, error) {
+       out := new(AdlInterfaceEnableDisableReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
index 9cde877..3da5478 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/af_packet.api.json
 
 // Package af_packet contains generated bindings for API file af_packet.api.
@@ -27,7 +27,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "af_packet"
        APIVersion = "2.0.0"
-       VersionCrc = 0xe0b6c022
+       VersionCrc = 0x4191e8ae
 )
 
 // AfPacketCreate defines message 'af_packet_create'.
diff --git a/binapi/af_xdp/af_xdp.ba.go b/binapi/af_xdp/af_xdp.ba.go
new file mode 100644 (file)
index 0000000..e99892f
--- /dev/null
@@ -0,0 +1,292 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/af_xdp.api.json
+
+// Package af_xdp contains generated bindings for API file af_xdp.api.
+//
+// Contents:
+//   2 enums
+//   4 messages
+//
+package af_xdp
+
+import (
+       "strconv"
+
+       api "git.fd.io/govpp.git/api"
+       interface_types "git.fd.io/govpp.git/binapi/interface_types"
+       codec "git.fd.io/govpp.git/codec"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+const (
+       APIFile    = "af_xdp"
+       APIVersion = "0.2.0"
+       VersionCrc = 0x31450826
+)
+
+// AfXdpMode defines enum 'af_xdp_mode'.
+type AfXdpMode uint32
+
+const (
+       AF_XDP_API_MODE_AUTO      AfXdpMode = 0
+       AF_XDP_API_MODE_COPY      AfXdpMode = 1
+       AF_XDP_API_MODE_ZERO_COPY AfXdpMode = 2
+)
+
+var (
+       AfXdpMode_name = map[uint32]string{
+               0: "AF_XDP_API_MODE_AUTO",
+               1: "AF_XDP_API_MODE_COPY",
+               2: "AF_XDP_API_MODE_ZERO_COPY",
+       }
+       AfXdpMode_value = map[string]uint32{
+               "AF_XDP_API_MODE_AUTO":      0,
+               "AF_XDP_API_MODE_COPY":      1,
+               "AF_XDP_API_MODE_ZERO_COPY": 2,
+       }
+)
+
+func (x AfXdpMode) String() string {
+       s, ok := AfXdpMode_name[uint32(x)]
+       if ok {
+               return s
+       }
+       return "AfXdpMode(" + strconv.Itoa(int(x)) + ")"
+}
+
+// AfXdpFlag defines enum 'af_xdp_flag'.
+type AfXdpFlag uint8
+
+const (
+       AF_XDP_API_FLAGS_NO_SYSCALL_LOCK AfXdpFlag = 1
+)
+
+var (
+       AfXdpFlag_name = map[uint8]string{
+               1: "AF_XDP_API_FLAGS_NO_SYSCALL_LOCK",
+       }
+       AfXdpFlag_value = map[string]uint8{
+               "AF_XDP_API_FLAGS_NO_SYSCALL_LOCK": 1,
+       }
+)
+
+func (x AfXdpFlag) String() string {
+       s, ok := AfXdpFlag_name[uint8(x)]
+       if ok {
+               return s
+       }
+       str := func(n uint8) string {
+               s, ok := AfXdpFlag_name[uint8(n)]
+               if ok {
+                       return s
+               }
+               return "AfXdpFlag(" + strconv.Itoa(int(n)) + ")"
+       }
+       for i := uint8(0); i <= 8; i++ {
+               val := uint8(x)
+               if val&(1<<i) != 0 {
+                       if s != "" {
+                               s += "|"
+                       }
+                       s += str(1 << i)
+               }
+       }
+       if s == "" {
+               return str(uint8(x))
+       }
+       return s
+}
+
+// AfXdpCreate defines message 'af_xdp_create'.
+// InProgress: the message form may change in the future versions
+type AfXdpCreate struct {
+       HostIf  string    `binapi:"string[64],name=host_if" json:"host_if,omitempty"`
+       Name    string    `binapi:"string[64],name=name" json:"name,omitempty"`
+       RxqNum  uint16    `binapi:"u16,name=rxq_num,default=1" json:"rxq_num,omitempty"`
+       RxqSize uint16    `binapi:"u16,name=rxq_size,default=0" json:"rxq_size,omitempty"`
+       TxqSize uint16    `binapi:"u16,name=txq_size,default=0" json:"txq_size,omitempty"`
+       Mode    AfXdpMode `binapi:"af_xdp_mode,name=mode,default=0" json:"mode,omitempty"`
+       Flags   AfXdpFlag `binapi:"af_xdp_flag,name=flags,default=0" json:"flags,omitempty"`
+       Prog    string    `binapi:"string[256],name=prog" json:"prog,omitempty"`
+}
+
+func (m *AfXdpCreate) Reset()               { *m = AfXdpCreate{} }
+func (*AfXdpCreate) GetMessageName() string { return "af_xdp_create" }
+func (*AfXdpCreate) GetCrcString() string   { return "21226c99" }
+func (*AfXdpCreate) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *AfXdpCreate) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 64  // m.HostIf
+       size += 64  // m.Name
+       size += 2   // m.RxqNum
+       size += 2   // m.RxqSize
+       size += 2   // m.TxqSize
+       size += 4   // m.Mode
+       size += 1   // m.Flags
+       size += 256 // m.Prog
+       return size
+}
+func (m *AfXdpCreate) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeString(m.HostIf, 64)
+       buf.EncodeString(m.Name, 64)
+       buf.EncodeUint16(m.RxqNum)
+       buf.EncodeUint16(m.RxqSize)
+       buf.EncodeUint16(m.TxqSize)
+       buf.EncodeUint32(uint32(m.Mode))
+       buf.EncodeUint8(uint8(m.Flags))
+       buf.EncodeString(m.Prog, 256)
+       return buf.Bytes(), nil
+}
+func (m *AfXdpCreate) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.HostIf = buf.DecodeString(64)
+       m.Name = buf.DecodeString(64)
+       m.RxqNum = buf.DecodeUint16()
+       m.RxqSize = buf.DecodeUint16()
+       m.TxqSize = buf.DecodeUint16()
+       m.Mode = AfXdpMode(buf.DecodeUint32())
+       m.Flags = AfXdpFlag(buf.DecodeUint8())
+       m.Prog = buf.DecodeString(256)
+       return nil
+}
+
+// AfXdpCreateReply defines message 'af_xdp_create_reply'.
+// InProgress: the message form may change in the future versions
+type AfXdpCreateReply struct {
+       Retval    int32                          `binapi:"i32,name=retval" json:"retval,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *AfXdpCreateReply) Reset()               { *m = AfXdpCreateReply{} }
+func (*AfXdpCreateReply) GetMessageName() string { return "af_xdp_create_reply" }
+func (*AfXdpCreateReply) GetCrcString() string   { return "5383d31f" }
+func (*AfXdpCreateReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *AfXdpCreateReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *AfXdpCreateReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *AfXdpCreateReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// AfXdpDelete defines message 'af_xdp_delete'.
+// InProgress: the message form may change in the future versions
+type AfXdpDelete struct {
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *AfXdpDelete) Reset()               { *m = AfXdpDelete{} }
+func (*AfXdpDelete) GetMessageName() string { return "af_xdp_delete" }
+func (*AfXdpDelete) GetCrcString() string   { return "f9e6675e" }
+func (*AfXdpDelete) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *AfXdpDelete) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *AfXdpDelete) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *AfXdpDelete) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// AfXdpDeleteReply defines message 'af_xdp_delete_reply'.
+// InProgress: the message form may change in the future versions
+type AfXdpDeleteReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *AfXdpDeleteReply) Reset()               { *m = AfXdpDeleteReply{} }
+func (*AfXdpDeleteReply) GetMessageName() string { return "af_xdp_delete_reply" }
+func (*AfXdpDeleteReply) GetCrcString() string   { return "e8d4e804" }
+func (*AfXdpDeleteReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *AfXdpDeleteReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *AfXdpDeleteReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *AfXdpDeleteReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+func init() { file_af_xdp_binapi_init() }
+func file_af_xdp_binapi_init() {
+       api.RegisterMessage((*AfXdpCreate)(nil), "af_xdp_create_21226c99")
+       api.RegisterMessage((*AfXdpCreateReply)(nil), "af_xdp_create_reply_5383d31f")
+       api.RegisterMessage((*AfXdpDelete)(nil), "af_xdp_delete_f9e6675e")
+       api.RegisterMessage((*AfXdpDeleteReply)(nil), "af_xdp_delete_reply_e8d4e804")
+}
+
+// Messages returns list of all messages in this module.
+func AllMessages() []api.Message {
+       return []api.Message{
+               (*AfXdpCreate)(nil),
+               (*AfXdpCreateReply)(nil),
+               (*AfXdpDelete)(nil),
+               (*AfXdpDeleteReply)(nil),
+       }
+}
diff --git a/binapi/af_xdp/af_xdp_rpc.ba.go b/binapi/af_xdp/af_xdp_rpc.ba.go
new file mode 100644 (file)
index 0000000..8a72f3e
--- /dev/null
@@ -0,0 +1,41 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+
+package af_xdp
+
+import (
+       "context"
+
+       api "git.fd.io/govpp.git/api"
+)
+
+// RPCService defines RPC service af_xdp.
+type RPCService interface {
+       AfXdpCreate(ctx context.Context, in *AfXdpCreate) (*AfXdpCreateReply, error)
+       AfXdpDelete(ctx context.Context, in *AfXdpDelete) (*AfXdpDeleteReply, error)
+}
+
+type serviceClient struct {
+       conn api.Connection
+}
+
+func NewServiceClient(conn api.Connection) RPCService {
+       return &serviceClient{conn}
+}
+
+func (c *serviceClient) AfXdpCreate(ctx context.Context, in *AfXdpCreate) (*AfXdpCreateReply, error) {
+       out := new(AfXdpCreateReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) AfXdpDelete(ctx context.Context, in *AfXdpDelete) (*AfXdpDeleteReply, error) {
+       out := new(AfXdpDeleteReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
index e36c837..88482f1 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/arp.api.json
 
 // Package arp contains generated bindings for API file arp.api.
@@ -29,7 +29,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "arp"
        APIVersion = "1.0.0"
-       VersionCrc = 0x79ca86f2
+       VersionCrc = 0xb57796ae
 )
 
 // ProxyArp defines type 'proxy_arp'.
@@ -47,7 +47,7 @@ type ProxyArpAddDel struct {
 
 func (m *ProxyArpAddDel) Reset()               { *m = ProxyArpAddDel{} }
 func (*ProxyArpAddDel) GetMessageName() string { return "proxy_arp_add_del" }
-func (*ProxyArpAddDel) GetCrcString() string   { return "85486cbd" }
+func (*ProxyArpAddDel) GetCrcString() string   { return "1823c3e7" }
 func (*ProxyArpAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -122,7 +122,7 @@ type ProxyArpDetails struct {
 
 func (m *ProxyArpDetails) Reset()               { *m = ProxyArpDetails{} }
 func (*ProxyArpDetails) GetMessageName() string { return "proxy_arp_details" }
-func (*ProxyArpDetails) GetCrcString() string   { return "9228c150" }
+func (*ProxyArpDetails) GetCrcString() string   { return "5b948673" }
 func (*ProxyArpDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -315,9 +315,9 @@ func (m *ProxyArpIntfcEnableDisableReply) Unmarshal(b []byte) error {
 
 func init() { file_arp_binapi_init() }
 func file_arp_binapi_init() {
-       api.RegisterMessage((*ProxyArpAddDel)(nil), "proxy_arp_add_del_85486cbd")
+       api.RegisterMessage((*ProxyArpAddDel)(nil), "proxy_arp_add_del_1823c3e7")
        api.RegisterMessage((*ProxyArpAddDelReply)(nil), "proxy_arp_add_del_reply_e8d4e804")
-       api.RegisterMessage((*ProxyArpDetails)(nil), "proxy_arp_details_9228c150")
+       api.RegisterMessage((*ProxyArpDetails)(nil), "proxy_arp_details_5b948673")
        api.RegisterMessage((*ProxyArpDump)(nil), "proxy_arp_dump_51077d14")
        api.RegisterMessage((*ProxyArpIntfcDetails)(nil), "proxy_arp_intfc_details_f6458e5f")
        api.RegisterMessage((*ProxyArpIntfcDump)(nil), "proxy_arp_intfc_dump_51077d14")
diff --git a/binapi/arping/arping.ba.go b/binapi/arping/arping.ba.go
new file mode 100644 (file)
index 0000000..b246610
--- /dev/null
@@ -0,0 +1,134 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/arping.api.json
+
+// Package arping contains generated bindings for API file arping.api.
+//
+// Contents:
+//   2 messages
+//
+package arping
+
+import (
+       api "git.fd.io/govpp.git/api"
+       interface_types "git.fd.io/govpp.git/binapi/interface_types"
+       ip_types "git.fd.io/govpp.git/binapi/ip_types"
+       codec "git.fd.io/govpp.git/codec"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+const (
+       APIFile    = "arping"
+       APIVersion = "1.0.0"
+       VersionCrc = 0x666f91cc
+)
+
+// Arping defines message 'arping'.
+type Arping struct {
+       Address   ip_types.Address               `binapi:"address,name=address" json:"address,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       IsGarp    bool                           `binapi:"bool,name=is_garp" json:"is_garp,omitempty"`
+       Repeat    uint32                         `binapi:"u32,name=repeat,default=1" json:"repeat,omitempty"`
+       Interval  float64                        `binapi:"f64,name=interval,default=1" json:"interval,omitempty"`
+}
+
+func (m *Arping) Reset()               { *m = Arping{} }
+func (*Arping) GetMessageName() string { return "arping" }
+func (*Arping) GetCrcString() string   { return "48817482" }
+func (*Arping) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Arping) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1      // m.Address.Af
+       size += 1 * 16 // m.Address.Un
+       size += 4      // m.SwIfIndex
+       size += 1      // m.IsGarp
+       size += 4      // m.Repeat
+       size += 8      // m.Interval
+       return size
+}
+func (m *Arping) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(uint8(m.Address.Af))
+       buf.EncodeBytes(m.Address.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeBool(m.IsGarp)
+       buf.EncodeUint32(m.Repeat)
+       buf.EncodeFloat64(m.Interval)
+       return buf.Bytes(), nil
+}
+func (m *Arping) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Address.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Address.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.IsGarp = buf.DecodeBool()
+       m.Repeat = buf.DecodeUint32()
+       m.Interval = buf.DecodeFloat64()
+       return nil
+}
+
+// ArpingReply defines message 'arping_reply'.
+type ArpingReply struct {
+       Retval     int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       ReplyCount uint32 `binapi:"u32,name=reply_count" json:"reply_count,omitempty"`
+}
+
+func (m *ArpingReply) Reset()               { *m = ArpingReply{} }
+func (*ArpingReply) GetMessageName() string { return "arping_reply" }
+func (*ArpingReply) GetCrcString() string   { return "bb9d1cbd" }
+func (*ArpingReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *ArpingReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.ReplyCount
+       return size
+}
+func (m *ArpingReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.ReplyCount)
+       return buf.Bytes(), nil
+}
+func (m *ArpingReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.ReplyCount = buf.DecodeUint32()
+       return nil
+}
+
+func init() { file_arping_binapi_init() }
+func file_arping_binapi_init() {
+       api.RegisterMessage((*Arping)(nil), "arping_48817482")
+       api.RegisterMessage((*ArpingReply)(nil), "arping_reply_bb9d1cbd")
+}
+
+// Messages returns list of all messages in this module.
+func AllMessages() []api.Message {
+       return []api.Message{
+               (*Arping)(nil),
+               (*ArpingReply)(nil),
+       }
+}
diff --git a/binapi/arping/arping_rpc.ba.go b/binapi/arping/arping_rpc.ba.go
new file mode 100644 (file)
index 0000000..be6f4fb
--- /dev/null
@@ -0,0 +1,31 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+
+package arping
+
+import (
+       "context"
+
+       api "git.fd.io/govpp.git/api"
+)
+
+// RPCService defines RPC service arping.
+type RPCService interface {
+       Arping(ctx context.Context, in *Arping) (*ArpingReply, error)
+}
+
+type serviceClient struct {
+       conn api.Connection
+}
+
+func NewServiceClient(conn api.Connection) RPCService {
+       return &serviceClient{conn}
+}
+
+func (c *serviceClient) Arping(ctx context.Context, in *Arping) (*ArpingReply, error) {
+       out := new(ArpingReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
index 0dc1ac0..d5a20fc 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/avf.api.json
 
 // Package avf contains generated bindings for API file avf.api.
@@ -26,7 +26,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "avf"
        APIVersion = "1.0.0"
-       VersionCrc = 0xbaaa7124
+       VersionCrc = 0x9f5a6a20
 )
 
 // AvfCreate defines message 'avf_create'.
index 624bc22..5504b3b 100644 (file)
@@ -1,14 +1,14 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/bfd.api.json
 
 // Package bfd contains generated bindings for API file bfd.api.
 //
 // Contents:
 //   1 enum
-//  28 messages
+//  29 messages
 //
 package bfd
 
@@ -30,7 +30,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "bfd"
        APIVersion = "2.0.0"
-       VersionCrc = 0xc92fd028
+       VersionCrc = 0xa8eb4aac
 )
 
 // BfdState defines enum 'bfd_state'.
@@ -294,7 +294,7 @@ type BfdUDPAdd struct {
 
 func (m *BfdUDPAdd) Reset()               { *m = BfdUDPAdd{} }
 func (*BfdUDPAdd) GetMessageName() string { return "bfd_udp_add" }
-func (*BfdUDPAdd) GetCrcString() string   { return "7a6d1185" }
+func (*BfdUDPAdd) GetCrcString() string   { return "939cd26a" }
 func (*BfdUDPAdd) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -395,7 +395,7 @@ type BfdUDPAuthActivate struct {
 
 func (m *BfdUDPAuthActivate) Reset()               { *m = BfdUDPAuthActivate{} }
 func (*BfdUDPAuthActivate) GetMessageName() string { return "bfd_udp_auth_activate" }
-func (*BfdUDPAuthActivate) GetCrcString() string   { return "493ee0ec" }
+func (*BfdUDPAuthActivate) GetCrcString() string   { return "21fd1bdb" }
 func (*BfdUDPAuthActivate) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -485,7 +485,7 @@ type BfdUDPAuthDeactivate struct {
 
 func (m *BfdUDPAuthDeactivate) Reset()               { *m = BfdUDPAuthDeactivate{} }
 func (*BfdUDPAuthDeactivate) GetMessageName() string { return "bfd_udp_auth_deactivate" }
-func (*BfdUDPAuthDeactivate) GetCrcString() string   { return "99978c32" }
+func (*BfdUDPAuthDeactivate) GetCrcString() string   { return "9a05e2e0" }
 func (*BfdUDPAuthDeactivate) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -568,7 +568,7 @@ type BfdUDPDel struct {
 
 func (m *BfdUDPDel) Reset()               { *m = BfdUDPDel{} }
 func (*BfdUDPDel) GetMessageName() string { return "bfd_udp_del" }
-func (*BfdUDPDel) GetCrcString() string   { return "8096514d" }
+func (*BfdUDPDel) GetCrcString() string   { return "dcb13a89" }
 func (*BfdUDPDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -739,7 +739,7 @@ type BfdUDPGetEchoSourceReply struct {
 
 func (m *BfdUDPGetEchoSourceReply) Reset()               { *m = BfdUDPGetEchoSourceReply{} }
 func (*BfdUDPGetEchoSourceReply) GetMessageName() string { return "bfd_udp_get_echo_source_reply" }
-func (*BfdUDPGetEchoSourceReply) GetCrcString() string   { return "1e00cfce" }
+func (*BfdUDPGetEchoSourceReply) GetCrcString() string   { return "e3d736a1" }
 func (*BfdUDPGetEchoSourceReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -795,7 +795,7 @@ type BfdUDPMod struct {
 
 func (m *BfdUDPMod) Reset()               { *m = BfdUDPMod{} }
 func (*BfdUDPMod) GetMessageName() string { return "bfd_udp_mod" }
-func (*BfdUDPMod) GetCrcString() string   { return "783a3ff6" }
+func (*BfdUDPMod) GetCrcString() string   { return "913df085" }
 func (*BfdUDPMod) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -891,7 +891,7 @@ type BfdUDPSessionDetails struct {
 
 func (m *BfdUDPSessionDetails) Reset()               { *m = BfdUDPSessionDetails{} }
 func (*BfdUDPSessionDetails) GetMessageName() string { return "bfd_udp_session_details" }
-func (*BfdUDPSessionDetails) GetCrcString() string   { return "60653c02" }
+func (*BfdUDPSessionDetails) GetCrcString() string   { return "09fb2f2d" }
 func (*BfdUDPSessionDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -977,6 +977,85 @@ func (m *BfdUDPSessionDump) Unmarshal(b []byte) error {
        return nil
 }
 
+// BfdUDPSessionEvent defines message 'bfd_udp_session_event'.
+type BfdUDPSessionEvent struct {
+       PID             uint32                         `binapi:"u32,name=pid" json:"pid,omitempty"`
+       SwIfIndex       interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       LocalAddr       ip_types.Address               `binapi:"address,name=local_addr" json:"local_addr,omitempty"`
+       PeerAddr        ip_types.Address               `binapi:"address,name=peer_addr" json:"peer_addr,omitempty"`
+       State           BfdState                       `binapi:"bfd_state,name=state" json:"state,omitempty"`
+       IsAuthenticated bool                           `binapi:"bool,name=is_authenticated" json:"is_authenticated,omitempty"`
+       BfdKeyID        uint8                          `binapi:"u8,name=bfd_key_id" json:"bfd_key_id,omitempty"`
+       ConfKeyID       uint32                         `binapi:"u32,name=conf_key_id" json:"conf_key_id,omitempty"`
+       RequiredMinRx   uint32                         `binapi:"u32,name=required_min_rx" json:"required_min_rx,omitempty"`
+       DesiredMinTx    uint32                         `binapi:"u32,name=desired_min_tx" json:"desired_min_tx,omitempty"`
+       DetectMult      uint8                          `binapi:"u8,name=detect_mult" json:"detect_mult,omitempty"`
+}
+
+func (m *BfdUDPSessionEvent) Reset()               { *m = BfdUDPSessionEvent{} }
+func (*BfdUDPSessionEvent) GetMessageName() string { return "bfd_udp_session_event" }
+func (*BfdUDPSessionEvent) GetCrcString() string   { return "8eaaf062" }
+func (*BfdUDPSessionEvent) GetMessageType() api.MessageType {
+       return api.EventMessage
+}
+
+func (m *BfdUDPSessionEvent) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4      // m.PID
+       size += 4      // m.SwIfIndex
+       size += 1      // m.LocalAddr.Af
+       size += 1 * 16 // m.LocalAddr.Un
+       size += 1      // m.PeerAddr.Af
+       size += 1 * 16 // m.PeerAddr.Un
+       size += 4      // m.State
+       size += 1      // m.IsAuthenticated
+       size += 1      // m.BfdKeyID
+       size += 4      // m.ConfKeyID
+       size += 4      // m.RequiredMinRx
+       size += 4      // m.DesiredMinTx
+       size += 1      // m.DetectMult
+       return size
+}
+func (m *BfdUDPSessionEvent) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.PID)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint8(uint8(m.LocalAddr.Af))
+       buf.EncodeBytes(m.LocalAddr.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(uint8(m.PeerAddr.Af))
+       buf.EncodeBytes(m.PeerAddr.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint32(uint32(m.State))
+       buf.EncodeBool(m.IsAuthenticated)
+       buf.EncodeUint8(m.BfdKeyID)
+       buf.EncodeUint32(m.ConfKeyID)
+       buf.EncodeUint32(m.RequiredMinRx)
+       buf.EncodeUint32(m.DesiredMinTx)
+       buf.EncodeUint8(m.DetectMult)
+       return buf.Bytes(), nil
+}
+func (m *BfdUDPSessionEvent) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.PID = buf.DecodeUint32()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.LocalAddr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.LocalAddr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.PeerAddr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.PeerAddr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.State = BfdState(buf.DecodeUint32())
+       m.IsAuthenticated = buf.DecodeBool()
+       m.BfdKeyID = buf.DecodeUint8()
+       m.ConfKeyID = buf.DecodeUint32()
+       m.RequiredMinRx = buf.DecodeUint32()
+       m.DesiredMinTx = buf.DecodeUint32()
+       m.DetectMult = buf.DecodeUint8()
+       return nil
+}
+
 // BfdUDPSessionSetFlags defines message 'bfd_udp_session_set_flags'.
 type BfdUDPSessionSetFlags struct {
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
@@ -987,7 +1066,7 @@ type BfdUDPSessionSetFlags struct {
 
 func (m *BfdUDPSessionSetFlags) Reset()               { *m = BfdUDPSessionSetFlags{} }
 func (*BfdUDPSessionSetFlags) GetMessageName() string { return "bfd_udp_session_set_flags" }
-func (*BfdUDPSessionSetFlags) GetCrcString() string   { return "cf313851" }
+func (*BfdUDPSessionSetFlags) GetCrcString() string   { return "04b4bdfd" }
 func (*BfdUDPSessionSetFlags) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1205,23 +1284,24 @@ func file_bfd_binapi_init() {
        api.RegisterMessage((*BfdAuthKeysDump)(nil), "bfd_auth_keys_dump_51077d14")
        api.RegisterMessage((*BfdAuthSetKey)(nil), "bfd_auth_set_key_690b8877")
        api.RegisterMessage((*BfdAuthSetKeyReply)(nil), "bfd_auth_set_key_reply_e8d4e804")
-       api.RegisterMessage((*BfdUDPAdd)(nil), "bfd_udp_add_7a6d1185")
+       api.RegisterMessage((*BfdUDPAdd)(nil), "bfd_udp_add_939cd26a")
        api.RegisterMessage((*BfdUDPAddReply)(nil), "bfd_udp_add_reply_e8d4e804")
-       api.RegisterMessage((*BfdUDPAuthActivate)(nil), "bfd_udp_auth_activate_493ee0ec")
+       api.RegisterMessage((*BfdUDPAuthActivate)(nil), "bfd_udp_auth_activate_21fd1bdb")
        api.RegisterMessage((*BfdUDPAuthActivateReply)(nil), "bfd_udp_auth_activate_reply_e8d4e804")
-       api.RegisterMessage((*BfdUDPAuthDeactivate)(nil), "bfd_udp_auth_deactivate_99978c32")
+       api.RegisterMessage((*BfdUDPAuthDeactivate)(nil), "bfd_udp_auth_deactivate_9a05e2e0")
        api.RegisterMessage((*BfdUDPAuthDeactivateReply)(nil), "bfd_udp_auth_deactivate_reply_e8d4e804")
-       api.RegisterMessage((*BfdUDPDel)(nil), "bfd_udp_del_8096514d")
+       api.RegisterMessage((*BfdUDPDel)(nil), "bfd_udp_del_dcb13a89")
        api.RegisterMessage((*BfdUDPDelEchoSource)(nil), "bfd_udp_del_echo_source_51077d14")
        api.RegisterMessage((*BfdUDPDelEchoSourceReply)(nil), "bfd_udp_del_echo_source_reply_e8d4e804")
        api.RegisterMessage((*BfdUDPDelReply)(nil), "bfd_udp_del_reply_e8d4e804")
        api.RegisterMessage((*BfdUDPGetEchoSource)(nil), "bfd_udp_get_echo_source_51077d14")
-       api.RegisterMessage((*BfdUDPGetEchoSourceReply)(nil), "bfd_udp_get_echo_source_reply_1e00cfce")
-       api.RegisterMessage((*BfdUDPMod)(nil), "bfd_udp_mod_783a3ff6")
+       api.RegisterMessage((*BfdUDPGetEchoSourceReply)(nil), "bfd_udp_get_echo_source_reply_e3d736a1")
+       api.RegisterMessage((*BfdUDPMod)(nil), "bfd_udp_mod_913df085")
        api.RegisterMessage((*BfdUDPModReply)(nil), "bfd_udp_mod_reply_e8d4e804")
-       api.RegisterMessage((*BfdUDPSessionDetails)(nil), "bfd_udp_session_details_60653c02")
+       api.RegisterMessage((*BfdUDPSessionDetails)(nil), "bfd_udp_session_details_09fb2f2d")
        api.RegisterMessage((*BfdUDPSessionDump)(nil), "bfd_udp_session_dump_51077d14")
-       api.RegisterMessage((*BfdUDPSessionSetFlags)(nil), "bfd_udp_session_set_flags_cf313851")
+       api.RegisterMessage((*BfdUDPSessionEvent)(nil), "bfd_udp_session_event_8eaaf062")
+       api.RegisterMessage((*BfdUDPSessionSetFlags)(nil), "bfd_udp_session_set_flags_04b4bdfd")
        api.RegisterMessage((*BfdUDPSessionSetFlagsReply)(nil), "bfd_udp_session_set_flags_reply_e8d4e804")
        api.RegisterMessage((*BfdUDPSetEchoSource)(nil), "bfd_udp_set_echo_source_f9e6675e")
        api.RegisterMessage((*BfdUDPSetEchoSourceReply)(nil), "bfd_udp_set_echo_source_reply_e8d4e804")
@@ -1254,6 +1334,7 @@ func AllMessages() []api.Message {
                (*BfdUDPModReply)(nil),
                (*BfdUDPSessionDetails)(nil),
                (*BfdUDPSessionDump)(nil),
+               (*BfdUDPSessionEvent)(nil),
                (*BfdUDPSessionSetFlags)(nil),
                (*BfdUDPSessionSetFlagsReply)(nil),
                (*BfdUDPSetEchoSource)(nil),
index 76b1c77..faaf019 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/bier.api.json
 
 // Package bier contains generated bindings for API file bier.api.
@@ -28,7 +28,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "bier"
        APIVersion = "1.2.1"
-       VersionCrc = 0x9196a2d4
+       VersionCrc = 0x8d1cd497
 )
 
 // BierRoute defines type 'bier_route'.
@@ -58,7 +58,7 @@ type BierDispEntryAddDel struct {
 
 func (m *BierDispEntryAddDel) Reset()               { *m = BierDispEntryAddDel{} }
 func (*BierDispEntryAddDel) GetMessageName() string { return "bier_disp_entry_add_del" }
-func (*BierDispEntryAddDel) GetCrcString() string   { return "648323eb" }
+func (*BierDispEntryAddDel) GetCrcString() string   { return "9eb80cb4" }
 func (*BierDispEntryAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -214,7 +214,7 @@ type BierDispEntryDetails struct {
 
 func (m *BierDispEntryDetails) Reset()               { *m = BierDispEntryDetails{} }
 func (*BierDispEntryDetails) GetMessageName() string { return "bier_disp_entry_details" }
-func (*BierDispEntryDetails) GetCrcString() string   { return "e5b039a9" }
+func (*BierDispEntryDetails) GetCrcString() string   { return "84c218f1" }
 func (*BierDispEntryDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -731,7 +731,7 @@ type BierRouteAddDel struct {
 
 func (m *BierRouteAddDel) Reset()               { *m = BierRouteAddDel{} }
 func (*BierRouteAddDel) GetMessageName() string { return "bier_route_add_del" }
-func (*BierRouteAddDel) GetCrcString() string   { return "f29edca0" }
+func (*BierRouteAddDel) GetCrcString() string   { return "fd02f3ea" }
 func (*BierRouteAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -888,7 +888,7 @@ type BierRouteDetails struct {
 
 func (m *BierRouteDetails) Reset()               { *m = BierRouteDetails{} }
 func (*BierRouteDetails) GetMessageName() string { return "bier_route_details" }
-func (*BierRouteDetails) GetCrcString() string   { return "39ee6a56" }
+func (*BierRouteDetails) GetCrcString() string   { return "4008caee" }
 func (*BierRouteDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1190,9 +1190,9 @@ func (m *BierTableDump) Unmarshal(b []byte) error {
 
 func init() { file_bier_binapi_init() }
 func file_bier_binapi_init() {
-       api.RegisterMessage((*BierDispEntryAddDel)(nil), "bier_disp_entry_add_del_648323eb")
+       api.RegisterMessage((*BierDispEntryAddDel)(nil), "bier_disp_entry_add_del_9eb80cb4")
        api.RegisterMessage((*BierDispEntryAddDelReply)(nil), "bier_disp_entry_add_del_reply_e8d4e804")
-       api.RegisterMessage((*BierDispEntryDetails)(nil), "bier_disp_entry_details_e5b039a9")
+       api.RegisterMessage((*BierDispEntryDetails)(nil), "bier_disp_entry_details_84c218f1")
        api.RegisterMessage((*BierDispEntryDump)(nil), "bier_disp_entry_dump_b5fa54ad")
        api.RegisterMessage((*BierDispTableAddDel)(nil), "bier_disp_table_add_del_889657ac")
        api.RegisterMessage((*BierDispTableAddDelReply)(nil), "bier_disp_table_add_del_reply_e8d4e804")
@@ -1204,9 +1204,9 @@ func file_bier_binapi_init() {
        api.RegisterMessage((*BierImpDelReply)(nil), "bier_imp_del_reply_e8d4e804")
        api.RegisterMessage((*BierImpDetails)(nil), "bier_imp_details_b76192df")
        api.RegisterMessage((*BierImpDump)(nil), "bier_imp_dump_51077d14")
-       api.RegisterMessage((*BierRouteAddDel)(nil), "bier_route_add_del_f29edca0")
+       api.RegisterMessage((*BierRouteAddDel)(nil), "bier_route_add_del_fd02f3ea")
        api.RegisterMessage((*BierRouteAddDelReply)(nil), "bier_route_add_del_reply_e8d4e804")
-       api.RegisterMessage((*BierRouteDetails)(nil), "bier_route_details_39ee6a56")
+       api.RegisterMessage((*BierRouteDetails)(nil), "bier_route_details_4008caee")
        api.RegisterMessage((*BierRouteDump)(nil), "bier_route_dump_38339846")
        api.RegisterMessage((*BierTableAddDel)(nil), "bier_table_add_del_35e59209")
        api.RegisterMessage((*BierTableAddDelReply)(nil), "bier_table_add_del_reply_e8d4e804")
index 61aafc7..1141bde 100644 (file)
@@ -1,14 +1,14 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/bond.api.json
 
 // Package bond contains generated bindings for API file bond.api.
 //
 // Contents:
 //   2 enums
-//  14 messages
+//  24 messages
 //
 package bond
 
@@ -29,8 +29,8 @@ const _ = api.GoVppAPIPackageIsVersion2
 
 const (
        APIFile    = "bond"
-       APIVersion = "2.0.0"
-       VersionCrc = 0xa65a4a1e
+       APIVersion = "2.1.0"
+       VersionCrc = 0xa03f5330
 )
 
 // BondLbAlgo defines enum 'bond_lb_algo'.
@@ -108,7 +108,86 @@ func (x BondMode) String() string {
        return "BondMode(" + strconv.Itoa(int(x)) + ")"
 }
 
+// BondAddMember defines message 'bond_add_member'.
+type BondAddMember struct {
+       SwIfIndex     interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       BondSwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=bond_sw_if_index" json:"bond_sw_if_index,omitempty"`
+       IsPassive     bool                           `binapi:"bool,name=is_passive" json:"is_passive,omitempty"`
+       IsLongTimeout bool                           `binapi:"bool,name=is_long_timeout" json:"is_long_timeout,omitempty"`
+}
+
+func (m *BondAddMember) Reset()               { *m = BondAddMember{} }
+func (*BondAddMember) GetMessageName() string { return "bond_add_member" }
+func (*BondAddMember) GetCrcString() string   { return "e7d14948" }
+func (*BondAddMember) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *BondAddMember) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       size += 4 // m.BondSwIfIndex
+       size += 1 // m.IsPassive
+       size += 1 // m.IsLongTimeout
+       return size
+}
+func (m *BondAddMember) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint32(uint32(m.BondSwIfIndex))
+       buf.EncodeBool(m.IsPassive)
+       buf.EncodeBool(m.IsLongTimeout)
+       return buf.Bytes(), nil
+}
+func (m *BondAddMember) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.BondSwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.IsPassive = buf.DecodeBool()
+       m.IsLongTimeout = buf.DecodeBool()
+       return nil
+}
+
+// BondAddMemberReply defines message 'bond_add_member_reply'.
+type BondAddMemberReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *BondAddMemberReply) Reset()               { *m = BondAddMemberReply{} }
+func (*BondAddMemberReply) GetMessageName() string { return "bond_add_member_reply" }
+func (*BondAddMemberReply) GetCrcString() string   { return "e8d4e804" }
+func (*BondAddMemberReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *BondAddMemberReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *BondAddMemberReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *BondAddMemberReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
 // BondCreate defines message 'bond_create'.
+// Deprecated: the message will be removed in the future versions
 type BondCreate struct {
        ID           uint32                    `binapi:"u32,name=id,default=4294967295" json:"id,omitempty"`
        UseCustomMac bool                      `binapi:"bool,name=use_custom_mac" json:"use_custom_mac,omitempty"`
@@ -120,7 +199,7 @@ type BondCreate struct {
 
 func (m *BondCreate) Reset()               { *m = BondCreate{} }
 func (*BondCreate) GetMessageName() string { return "bond_create" }
-func (*BondCreate) GetCrcString() string   { return "48883c7e" }
+func (*BondCreate) GetCrcString() string   { return "f1dbd4ff" }
 func (*BondCreate) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -161,6 +240,100 @@ func (m *BondCreate) Unmarshal(b []byte) error {
        return nil
 }
 
+// BondCreate2 defines message 'bond_create2'.
+type BondCreate2 struct {
+       Mode         BondMode                  `binapi:"bond_mode,name=mode" json:"mode,omitempty"`
+       Lb           BondLbAlgo                `binapi:"bond_lb_algo,name=lb" json:"lb,omitempty"`
+       NumaOnly     bool                      `binapi:"bool,name=numa_only" json:"numa_only,omitempty"`
+       EnableGso    bool                      `binapi:"bool,name=enable_gso" json:"enable_gso,omitempty"`
+       UseCustomMac bool                      `binapi:"bool,name=use_custom_mac" json:"use_custom_mac,omitempty"`
+       MacAddress   ethernet_types.MacAddress `binapi:"mac_address,name=mac_address" json:"mac_address,omitempty"`
+       ID           uint32                    `binapi:"u32,name=id,default=4294967295" json:"id,omitempty"`
+}
+
+func (m *BondCreate2) Reset()               { *m = BondCreate2{} }
+func (*BondCreate2) GetMessageName() string { return "bond_create2" }
+func (*BondCreate2) GetCrcString() string   { return "912fda76" }
+func (*BondCreate2) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *BondCreate2) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4     // m.Mode
+       size += 4     // m.Lb
+       size += 1     // m.NumaOnly
+       size += 1     // m.EnableGso
+       size += 1     // m.UseCustomMac
+       size += 1 * 6 // m.MacAddress
+       size += 4     // m.ID
+       return size
+}
+func (m *BondCreate2) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.Mode))
+       buf.EncodeUint32(uint32(m.Lb))
+       buf.EncodeBool(m.NumaOnly)
+       buf.EncodeBool(m.EnableGso)
+       buf.EncodeBool(m.UseCustomMac)
+       buf.EncodeBytes(m.MacAddress[:], 6)
+       buf.EncodeUint32(m.ID)
+       return buf.Bytes(), nil
+}
+func (m *BondCreate2) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Mode = BondMode(buf.DecodeUint32())
+       m.Lb = BondLbAlgo(buf.DecodeUint32())
+       m.NumaOnly = buf.DecodeBool()
+       m.EnableGso = buf.DecodeBool()
+       m.UseCustomMac = buf.DecodeBool()
+       copy(m.MacAddress[:], buf.DecodeBytes(6))
+       m.ID = buf.DecodeUint32()
+       return nil
+}
+
+// BondCreate2Reply defines message 'bond_create2_reply'.
+type BondCreate2Reply struct {
+       Retval    int32                          `binapi:"i32,name=retval" json:"retval,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *BondCreate2Reply) Reset()               { *m = BondCreate2Reply{} }
+func (*BondCreate2Reply) GetMessageName() string { return "bond_create2_reply" }
+func (*BondCreate2Reply) GetCrcString() string   { return "5383d31f" }
+func (*BondCreate2Reply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *BondCreate2Reply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *BondCreate2Reply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *BondCreate2Reply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
 // BondCreateReply defines message 'bond_create_reply'.
 type BondCreateReply struct {
        Retval    int32                          `binapi:"i32,name=retval" json:"retval,omitempty"`
@@ -264,7 +437,74 @@ func (m *BondDeleteReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// BondDetachMember defines message 'bond_detach_member'.
+type BondDetachMember struct {
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *BondDetachMember) Reset()               { *m = BondDetachMember{} }
+func (*BondDetachMember) GetMessageName() string { return "bond_detach_member" }
+func (*BondDetachMember) GetCrcString() string   { return "f9e6675e" }
+func (*BondDetachMember) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *BondDetachMember) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *BondDetachMember) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *BondDetachMember) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// BondDetachMemberReply defines message 'bond_detach_member_reply'.
+type BondDetachMemberReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *BondDetachMemberReply) Reset()               { *m = BondDetachMemberReply{} }
+func (*BondDetachMemberReply) GetMessageName() string { return "bond_detach_member_reply" }
+func (*BondDetachMemberReply) GetCrcString() string   { return "e8d4e804" }
+func (*BondDetachMemberReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *BondDetachMemberReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *BondDetachMemberReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *BondDetachMemberReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
 // BondDetachSlave defines message 'bond_detach_slave'.
+// Deprecated: the message will be removed in the future versions
 type BondDetachSlave struct {
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
 }
@@ -298,6 +538,7 @@ func (m *BondDetachSlave) Unmarshal(b []byte) error {
 }
 
 // BondDetachSlaveReply defines message 'bond_detach_slave_reply'.
+// Deprecated: the message will be removed in the future versions
 type BondDetachSlaveReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -331,6 +572,7 @@ func (m *BondDetachSlaveReply) Unmarshal(b []byte) error {
 }
 
 // BondEnslave defines message 'bond_enslave'.
+// Deprecated: the message will be removed in the future versions
 type BondEnslave struct {
        SwIfIndex     interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
        BondSwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=bond_sw_if_index" json:"bond_sw_if_index,omitempty"`
@@ -340,7 +582,7 @@ type BondEnslave struct {
 
 func (m *BondEnslave) Reset()               { *m = BondEnslave{} }
 func (*BondEnslave) GetMessageName() string { return "bond_enslave" }
-func (*BondEnslave) GetCrcString() string   { return "076ecfa7" }
+func (*BondEnslave) GetCrcString() string   { return "e7d14948" }
 func (*BondEnslave) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -408,6 +650,100 @@ func (m *BondEnslaveReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// SwBondInterfaceDetails defines message 'sw_bond_interface_details'.
+type SwBondInterfaceDetails struct {
+       SwIfIndex     interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       ID            uint32                         `binapi:"u32,name=id" json:"id,omitempty"`
+       Mode          BondMode                       `binapi:"bond_mode,name=mode" json:"mode,omitempty"`
+       Lb            BondLbAlgo                     `binapi:"bond_lb_algo,name=lb" json:"lb,omitempty"`
+       NumaOnly      bool                           `binapi:"bool,name=numa_only" json:"numa_only,omitempty"`
+       ActiveMembers uint32                         `binapi:"u32,name=active_members" json:"active_members,omitempty"`
+       Members       uint32                         `binapi:"u32,name=members" json:"members,omitempty"`
+       InterfaceName string                         `binapi:"string[64],name=interface_name" json:"interface_name,omitempty"`
+}
+
+func (m *SwBondInterfaceDetails) Reset()               { *m = SwBondInterfaceDetails{} }
+func (*SwBondInterfaceDetails) GetMessageName() string { return "sw_bond_interface_details" }
+func (*SwBondInterfaceDetails) GetCrcString() string   { return "9428a69c" }
+func (*SwBondInterfaceDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *SwBondInterfaceDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4  // m.SwIfIndex
+       size += 4  // m.ID
+       size += 4  // m.Mode
+       size += 4  // m.Lb
+       size += 1  // m.NumaOnly
+       size += 4  // m.ActiveMembers
+       size += 4  // m.Members
+       size += 64 // m.InterfaceName
+       return size
+}
+func (m *SwBondInterfaceDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint32(m.ID)
+       buf.EncodeUint32(uint32(m.Mode))
+       buf.EncodeUint32(uint32(m.Lb))
+       buf.EncodeBool(m.NumaOnly)
+       buf.EncodeUint32(m.ActiveMembers)
+       buf.EncodeUint32(m.Members)
+       buf.EncodeString(m.InterfaceName, 64)
+       return buf.Bytes(), nil
+}
+func (m *SwBondInterfaceDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.ID = buf.DecodeUint32()
+       m.Mode = BondMode(buf.DecodeUint32())
+       m.Lb = BondLbAlgo(buf.DecodeUint32())
+       m.NumaOnly = buf.DecodeBool()
+       m.ActiveMembers = buf.DecodeUint32()
+       m.Members = buf.DecodeUint32()
+       m.InterfaceName = buf.DecodeString(64)
+       return nil
+}
+
+// SwBondInterfaceDump defines message 'sw_bond_interface_dump'.
+type SwBondInterfaceDump struct {
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index,default=4294967295" json:"sw_if_index,omitempty"`
+}
+
+func (m *SwBondInterfaceDump) Reset()               { *m = SwBondInterfaceDump{} }
+func (*SwBondInterfaceDump) GetMessageName() string { return "sw_bond_interface_dump" }
+func (*SwBondInterfaceDump) GetCrcString() string   { return "f9e6675e" }
+func (*SwBondInterfaceDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *SwBondInterfaceDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *SwBondInterfaceDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *SwBondInterfaceDump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
 // SwInterfaceBondDetails defines message 'sw_interface_bond_details'.
 type SwInterfaceBondDetails struct {
        SwIfIndex     interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
@@ -422,7 +758,7 @@ type SwInterfaceBondDetails struct {
 
 func (m *SwInterfaceBondDetails) Reset()               { *m = SwInterfaceBondDetails{} }
 func (*SwInterfaceBondDetails) GetMessageName() string { return "sw_interface_bond_details" }
-func (*SwInterfaceBondDetails) GetCrcString() string   { return "f5ef2106" }
+func (*SwInterfaceBondDetails) GetCrcString() string   { return "bb7c929b" }
 func (*SwInterfaceBondDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -470,6 +806,7 @@ func (m *SwInterfaceBondDetails) Unmarshal(b []byte) error {
 }
 
 // SwInterfaceBondDump defines message 'sw_interface_bond_dump'.
+// Deprecated: the message will be removed in the future versions
 type SwInterfaceBondDump struct{}
 
 func (m *SwInterfaceBondDump) Reset()               { *m = SwInterfaceBondDump{} }
@@ -622,6 +959,7 @@ func (m *SwInterfaceSlaveDetails) Unmarshal(b []byte) error {
 }
 
 // SwInterfaceSlaveDump defines message 'sw_interface_slave_dump'.
+// Deprecated: the message will be removed in the future versions
 type SwInterfaceSlaveDump struct {
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
 }
@@ -654,40 +992,146 @@ func (m *SwInterfaceSlaveDump) Unmarshal(b []byte) error {
        return nil
 }
 
+// SwMemberInterfaceDetails defines message 'sw_member_interface_details'.
+type SwMemberInterfaceDetails struct {
+       SwIfIndex     interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       InterfaceName string                         `binapi:"string[64],name=interface_name" json:"interface_name,omitempty"`
+       IsPassive     bool                           `binapi:"bool,name=is_passive" json:"is_passive,omitempty"`
+       IsLongTimeout bool                           `binapi:"bool,name=is_long_timeout" json:"is_long_timeout,omitempty"`
+       IsLocalNuma   bool                           `binapi:"bool,name=is_local_numa" json:"is_local_numa,omitempty"`
+       Weight        uint32                         `binapi:"u32,name=weight" json:"weight,omitempty"`
+}
+
+func (m *SwMemberInterfaceDetails) Reset()               { *m = SwMemberInterfaceDetails{} }
+func (*SwMemberInterfaceDetails) GetMessageName() string { return "sw_member_interface_details" }
+func (*SwMemberInterfaceDetails) GetCrcString() string   { return "3c4a0e23" }
+func (*SwMemberInterfaceDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *SwMemberInterfaceDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4  // m.SwIfIndex
+       size += 64 // m.InterfaceName
+       size += 1  // m.IsPassive
+       size += 1  // m.IsLongTimeout
+       size += 1  // m.IsLocalNuma
+       size += 4  // m.Weight
+       return size
+}
+func (m *SwMemberInterfaceDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeString(m.InterfaceName, 64)
+       buf.EncodeBool(m.IsPassive)
+       buf.EncodeBool(m.IsLongTimeout)
+       buf.EncodeBool(m.IsLocalNuma)
+       buf.EncodeUint32(m.Weight)
+       return buf.Bytes(), nil
+}
+func (m *SwMemberInterfaceDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.InterfaceName = buf.DecodeString(64)
+       m.IsPassive = buf.DecodeBool()
+       m.IsLongTimeout = buf.DecodeBool()
+       m.IsLocalNuma = buf.DecodeBool()
+       m.Weight = buf.DecodeUint32()
+       return nil
+}
+
+// SwMemberInterfaceDump defines message 'sw_member_interface_dump'.
+type SwMemberInterfaceDump struct {
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *SwMemberInterfaceDump) Reset()               { *m = SwMemberInterfaceDump{} }
+func (*SwMemberInterfaceDump) GetMessageName() string { return "sw_member_interface_dump" }
+func (*SwMemberInterfaceDump) GetCrcString() string   { return "f9e6675e" }
+func (*SwMemberInterfaceDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *SwMemberInterfaceDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *SwMemberInterfaceDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *SwMemberInterfaceDump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
 func init() { file_bond_binapi_init() }
 func file_bond_binapi_init() {
-       api.RegisterMessage((*BondCreate)(nil), "bond_create_48883c7e")
+       api.RegisterMessage((*BondAddMember)(nil), "bond_add_member_e7d14948")
+       api.RegisterMessage((*BondAddMemberReply)(nil), "bond_add_member_reply_e8d4e804")
+       api.RegisterMessage((*BondCreate)(nil), "bond_create_f1dbd4ff")
+       api.RegisterMessage((*BondCreate2)(nil), "bond_create2_912fda76")
+       api.RegisterMessage((*BondCreate2Reply)(nil), "bond_create2_reply_5383d31f")
        api.RegisterMessage((*BondCreateReply)(nil), "bond_create_reply_5383d31f")
        api.RegisterMessage((*BondDelete)(nil), "bond_delete_f9e6675e")
        api.RegisterMessage((*BondDeleteReply)(nil), "bond_delete_reply_e8d4e804")
+       api.RegisterMessage((*BondDetachMember)(nil), "bond_detach_member_f9e6675e")
+       api.RegisterMessage((*BondDetachMemberReply)(nil), "bond_detach_member_reply_e8d4e804")
        api.RegisterMessage((*BondDetachSlave)(nil), "bond_detach_slave_f9e6675e")
        api.RegisterMessage((*BondDetachSlaveReply)(nil), "bond_detach_slave_reply_e8d4e804")
-       api.RegisterMessage((*BondEnslave)(nil), "bond_enslave_076ecfa7")
+       api.RegisterMessage((*BondEnslave)(nil), "bond_enslave_e7d14948")
        api.RegisterMessage((*BondEnslaveReply)(nil), "bond_enslave_reply_e8d4e804")
-       api.RegisterMessage((*SwInterfaceBondDetails)(nil), "sw_interface_bond_details_f5ef2106")
+       api.RegisterMessage((*SwBondInterfaceDetails)(nil), "sw_bond_interface_details_9428a69c")
+       api.RegisterMessage((*SwBondInterfaceDump)(nil), "sw_bond_interface_dump_f9e6675e")
+       api.RegisterMessage((*SwInterfaceBondDetails)(nil), "sw_interface_bond_details_bb7c929b")
        api.RegisterMessage((*SwInterfaceBondDump)(nil), "sw_interface_bond_dump_51077d14")
        api.RegisterMessage((*SwInterfaceSetBondWeight)(nil), "sw_interface_set_bond_weight_deb510a0")
        api.RegisterMessage((*SwInterfaceSetBondWeightReply)(nil), "sw_interface_set_bond_weight_reply_e8d4e804")
        api.RegisterMessage((*SwInterfaceSlaveDetails)(nil), "sw_interface_slave_details_3c4a0e23")
        api.RegisterMessage((*SwInterfaceSlaveDump)(nil), "sw_interface_slave_dump_f9e6675e")
+       api.RegisterMessage((*SwMemberInterfaceDetails)(nil), "sw_member_interface_details_3c4a0e23")
+       api.RegisterMessage((*SwMemberInterfaceDump)(nil), "sw_member_interface_dump_f9e6675e")
 }
 
 // Messages returns list of all messages in this module.
 func AllMessages() []api.Message {
        return []api.Message{
+               (*BondAddMember)(nil),
+               (*BondAddMemberReply)(nil),
                (*BondCreate)(nil),
+               (*BondCreate2)(nil),
+               (*BondCreate2Reply)(nil),
                (*BondCreateReply)(nil),
                (*BondDelete)(nil),
                (*BondDeleteReply)(nil),
+               (*BondDetachMember)(nil),
+               (*BondDetachMemberReply)(nil),
                (*BondDetachSlave)(nil),
                (*BondDetachSlaveReply)(nil),
                (*BondEnslave)(nil),
                (*BondEnslaveReply)(nil),
+               (*SwBondInterfaceDetails)(nil),
+               (*SwBondInterfaceDump)(nil),
                (*SwInterfaceBondDetails)(nil),
                (*SwInterfaceBondDump)(nil),
                (*SwInterfaceSetBondWeight)(nil),
                (*SwInterfaceSetBondWeightReply)(nil),
                (*SwInterfaceSlaveDetails)(nil),
                (*SwInterfaceSlaveDump)(nil),
+               (*SwMemberInterfaceDetails)(nil),
+               (*SwMemberInterfaceDump)(nil),
        }
 }
index 67fc538..ac8b3a8 100644 (file)
@@ -13,13 +13,18 @@ import (
 
 // RPCService defines RPC service bond.
 type RPCService interface {
+       BondAddMember(ctx context.Context, in *BondAddMember) (*BondAddMemberReply, error)
        BondCreate(ctx context.Context, in *BondCreate) (*BondCreateReply, error)
+       BondCreate2(ctx context.Context, in *BondCreate2) (*BondCreate2Reply, error)
        BondDelete(ctx context.Context, in *BondDelete) (*BondDeleteReply, error)
+       BondDetachMember(ctx context.Context, in *BondDetachMember) (*BondDetachMemberReply, error)
        BondDetachSlave(ctx context.Context, in *BondDetachSlave) (*BondDetachSlaveReply, error)
        BondEnslave(ctx context.Context, in *BondEnslave) (*BondEnslaveReply, error)
+       SwBondInterfaceDump(ctx context.Context, in *SwBondInterfaceDump) (RPCService_SwBondInterfaceDumpClient, error)
        SwInterfaceBondDump(ctx context.Context, in *SwInterfaceBondDump) (RPCService_SwInterfaceBondDumpClient, error)
        SwInterfaceSetBondWeight(ctx context.Context, in *SwInterfaceSetBondWeight) (*SwInterfaceSetBondWeightReply, error)
        SwInterfaceSlaveDump(ctx context.Context, in *SwInterfaceSlaveDump) (RPCService_SwInterfaceSlaveDumpClient, error)
+       SwMemberInterfaceDump(ctx context.Context, in *SwMemberInterfaceDump) (RPCService_SwMemberInterfaceDumpClient, error)
 }
 
 type serviceClient struct {
@@ -30,6 +35,15 @@ func NewServiceClient(conn api.Connection) RPCService {
        return &serviceClient{conn}
 }
 
+func (c *serviceClient) BondAddMember(ctx context.Context, in *BondAddMember) (*BondAddMemberReply, error) {
+       out := new(BondAddMemberReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) BondCreate(ctx context.Context, in *BondCreate) (*BondCreateReply, error) {
        out := new(BondCreateReply)
        err := c.conn.Invoke(ctx, in, out)
@@ -39,6 +53,15 @@ func (c *serviceClient) BondCreate(ctx context.Context, in *BondCreate) (*BondCr
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) BondCreate2(ctx context.Context, in *BondCreate2) (*BondCreate2Reply, error) {
+       out := new(BondCreate2Reply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) BondDelete(ctx context.Context, in *BondDelete) (*BondDeleteReply, error) {
        out := new(BondDeleteReply)
        err := c.conn.Invoke(ctx, in, out)
@@ -48,6 +71,15 @@ func (c *serviceClient) BondDelete(ctx context.Context, in *BondDelete) (*BondDe
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) BondDetachMember(ctx context.Context, in *BondDetachMember) (*BondDetachMemberReply, error) {
+       out := new(BondDetachMemberReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) BondDetachSlave(ctx context.Context, in *BondDetachSlave) (*BondDetachSlaveReply, error) {
        out := new(BondDetachSlaveReply)
        err := c.conn.Invoke(ctx, in, out)
@@ -66,6 +98,45 @@ func (c *serviceClient) BondEnslave(ctx context.Context, in *BondEnslave) (*Bond
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) SwBondInterfaceDump(ctx context.Context, in *SwBondInterfaceDump) (RPCService_SwBondInterfaceDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_SwBondInterfaceDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_SwBondInterfaceDumpClient interface {
+       Recv() (*SwBondInterfaceDetails, error)
+       api.Stream
+}
+
+type serviceClient_SwBondInterfaceDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_SwBondInterfaceDumpClient) Recv() (*SwBondInterfaceDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *SwBondInterfaceDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
 func (c *serviceClient) SwInterfaceBondDump(ctx context.Context, in *SwInterfaceBondDump) (RPCService_SwInterfaceBondDumpClient, error) {
        stream, err := c.conn.NewStream(ctx)
        if err != nil {
@@ -152,3 +223,42 @@ func (c *serviceClient_SwInterfaceSlaveDumpClient) Recv() (*SwInterfaceSlaveDeta
                return nil, fmt.Errorf("unexpected message: %T %v", m, m)
        }
 }
+
+func (c *serviceClient) SwMemberInterfaceDump(ctx context.Context, in *SwMemberInterfaceDump) (RPCService_SwMemberInterfaceDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_SwMemberInterfaceDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_SwMemberInterfaceDumpClient interface {
+       Recv() (*SwMemberInterfaceDetails, error)
+       api.Stream
+}
+
+type serviceClient_SwMemberInterfaceDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_SwMemberInterfaceDumpClient) Recv() (*SwMemberInterfaceDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *SwMemberInterfaceDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
index 2c3ccf2..daa8ced 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/builtinurl.api.json
 
 // Package builtinurl contains generated bindings for API file builtinurl.api.
index dbee58e..c80f100 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/cdp.api.json
 
 // Package cdp contains generated bindings for API file cdp.api.
index 89be260..2ee8e41 100644 (file)
@@ -1,14 +1,14 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/classify.api.json
 
 // Package classify contains generated bindings for API file classify.api.
 //
 // Contents:
 //   3 enums
-//  28 messages
+//  40 messages
 //
 package classify
 
@@ -28,8 +28,8 @@ const _ = api.GoVppAPIPackageIsVersion2
 
 const (
        APIFile    = "classify"
-       APIVersion = "3.0.0"
-       VersionCrc = 0x1298bdec
+       APIVersion = "3.1.0"
+       VersionCrc = 0x24ea656e
 )
 
 // ClassifyAction defines enum 'classify_action'.
@@ -348,6 +348,256 @@ func (m *ClassifyAddDelTableReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// ClassifyPcapGetTables defines message 'classify_pcap_get_tables'.
+type ClassifyPcapGetTables struct {
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *ClassifyPcapGetTables) Reset()               { *m = ClassifyPcapGetTables{} }
+func (*ClassifyPcapGetTables) GetMessageName() string { return "classify_pcap_get_tables" }
+func (*ClassifyPcapGetTables) GetCrcString() string   { return "f9e6675e" }
+func (*ClassifyPcapGetTables) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *ClassifyPcapGetTables) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *ClassifyPcapGetTables) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *ClassifyPcapGetTables) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// ClassifyPcapGetTablesReply defines message 'classify_pcap_get_tables_reply'.
+type ClassifyPcapGetTablesReply struct {
+       Retval  int32    `binapi:"i32,name=retval" json:"retval,omitempty"`
+       Count   uint32   `binapi:"u32,name=count" json:"-"`
+       Indices []uint32 `binapi:"u32[count],name=indices" json:"indices,omitempty"`
+}
+
+func (m *ClassifyPcapGetTablesReply) Reset()               { *m = ClassifyPcapGetTablesReply{} }
+func (*ClassifyPcapGetTablesReply) GetMessageName() string { return "classify_pcap_get_tables_reply" }
+func (*ClassifyPcapGetTablesReply) GetCrcString() string   { return "5f5bc9e6" }
+func (*ClassifyPcapGetTablesReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *ClassifyPcapGetTablesReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4                  // m.Retval
+       size += 4                  // m.Count
+       size += 4 * len(m.Indices) // m.Indices
+       return size
+}
+func (m *ClassifyPcapGetTablesReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(uint32(len(m.Indices)))
+       for i := 0; i < len(m.Indices); i++ {
+               var x uint32
+               if i < len(m.Indices) {
+                       x = uint32(m.Indices[i])
+               }
+               buf.EncodeUint32(x)
+       }
+       return buf.Bytes(), nil
+}
+func (m *ClassifyPcapGetTablesReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.Count = buf.DecodeUint32()
+       m.Indices = make([]uint32, m.Count)
+       for i := 0; i < len(m.Indices); i++ {
+               m.Indices[i] = buf.DecodeUint32()
+       }
+       return nil
+}
+
+// ClassifyPcapLookupTable defines message 'classify_pcap_lookup_table'.
+type ClassifyPcapLookupTable struct {
+       SwIfIndex     interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index,default=4294967295" json:"sw_if_index,omitempty"`
+       SkipNVectors  uint32                         `binapi:"u32,name=skip_n_vectors,default=0" json:"skip_n_vectors,omitempty"`
+       MatchNVectors uint32                         `binapi:"u32,name=match_n_vectors,default=1" json:"match_n_vectors,omitempty"`
+       MaskLen       uint32                         `binapi:"u32,name=mask_len" json:"-"`
+       Mask          []byte                         `binapi:"u8[mask_len],name=mask" json:"mask,omitempty"`
+}
+
+func (m *ClassifyPcapLookupTable) Reset()               { *m = ClassifyPcapLookupTable{} }
+func (*ClassifyPcapLookupTable) GetMessageName() string { return "classify_pcap_lookup_table" }
+func (*ClassifyPcapLookupTable) GetCrcString() string   { return "e1b4cc6b" }
+func (*ClassifyPcapLookupTable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *ClassifyPcapLookupTable) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4               // m.SwIfIndex
+       size += 4               // m.SkipNVectors
+       size += 4               // m.MatchNVectors
+       size += 4               // m.MaskLen
+       size += 1 * len(m.Mask) // m.Mask
+       return size
+}
+func (m *ClassifyPcapLookupTable) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint32(m.SkipNVectors)
+       buf.EncodeUint32(m.MatchNVectors)
+       buf.EncodeUint32(uint32(len(m.Mask)))
+       buf.EncodeBytes(m.Mask, 0)
+       return buf.Bytes(), nil
+}
+func (m *ClassifyPcapLookupTable) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.SkipNVectors = buf.DecodeUint32()
+       m.MatchNVectors = buf.DecodeUint32()
+       m.MaskLen = buf.DecodeUint32()
+       m.Mask = make([]byte, m.MaskLen)
+       copy(m.Mask, buf.DecodeBytes(len(m.Mask)))
+       return nil
+}
+
+// ClassifyPcapLookupTableReply defines message 'classify_pcap_lookup_table_reply'.
+type ClassifyPcapLookupTableReply struct {
+       Retval     int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       TableIndex uint32 `binapi:"u32,name=table_index" json:"table_index,omitempty"`
+}
+
+func (m *ClassifyPcapLookupTableReply) Reset() { *m = ClassifyPcapLookupTableReply{} }
+func (*ClassifyPcapLookupTableReply) GetMessageName() string {
+       return "classify_pcap_lookup_table_reply"
+}
+func (*ClassifyPcapLookupTableReply) GetCrcString() string { return "9c6c6773" }
+func (*ClassifyPcapLookupTableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *ClassifyPcapLookupTableReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.TableIndex
+       return size
+}
+func (m *ClassifyPcapLookupTableReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.TableIndex)
+       return buf.Bytes(), nil
+}
+func (m *ClassifyPcapLookupTableReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.TableIndex = buf.DecodeUint32()
+       return nil
+}
+
+// ClassifyPcapSetTable defines message 'classify_pcap_set_table'.
+type ClassifyPcapSetTable struct {
+       SwIfIndex  interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       TableIndex uint32                         `binapi:"u32,name=table_index,default=4294967295" json:"table_index,omitempty"`
+       SortMasks  bool                           `binapi:"bool,name=sort_masks,default=0" json:"sort_masks,omitempty"`
+}
+
+func (m *ClassifyPcapSetTable) Reset()               { *m = ClassifyPcapSetTable{} }
+func (*ClassifyPcapSetTable) GetMessageName() string { return "classify_pcap_set_table" }
+func (*ClassifyPcapSetTable) GetCrcString() string   { return "006051b3" }
+func (*ClassifyPcapSetTable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *ClassifyPcapSetTable) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       size += 4 // m.TableIndex
+       size += 1 // m.SortMasks
+       return size
+}
+func (m *ClassifyPcapSetTable) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint32(m.TableIndex)
+       buf.EncodeBool(m.SortMasks)
+       return buf.Bytes(), nil
+}
+func (m *ClassifyPcapSetTable) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.TableIndex = buf.DecodeUint32()
+       m.SortMasks = buf.DecodeBool()
+       return nil
+}
+
+// ClassifyPcapSetTableReply defines message 'classify_pcap_set_table_reply'.
+type ClassifyPcapSetTableReply struct {
+       Retval     int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       TableIndex uint32 `binapi:"u32,name=table_index" json:"table_index,omitempty"`
+}
+
+func (m *ClassifyPcapSetTableReply) Reset()               { *m = ClassifyPcapSetTableReply{} }
+func (*ClassifyPcapSetTableReply) GetMessageName() string { return "classify_pcap_set_table_reply" }
+func (*ClassifyPcapSetTableReply) GetCrcString() string   { return "9c6c6773" }
+func (*ClassifyPcapSetTableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *ClassifyPcapSetTableReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.TableIndex
+       return size
+}
+func (m *ClassifyPcapSetTableReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.TableIndex)
+       return buf.Bytes(), nil
+}
+func (m *ClassifyPcapSetTableReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.TableIndex = buf.DecodeUint32()
+       return nil
+}
+
 // ClassifySessionDetails defines message 'classify_session_details'.
 type ClassifySessionDetails struct {
        Retval       int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
@@ -865,6 +1115,242 @@ func (m *ClassifyTableInfoReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// ClassifyTraceGetTables defines message 'classify_trace_get_tables'.
+type ClassifyTraceGetTables struct{}
+
+func (m *ClassifyTraceGetTables) Reset()               { *m = ClassifyTraceGetTables{} }
+func (*ClassifyTraceGetTables) GetMessageName() string { return "classify_trace_get_tables" }
+func (*ClassifyTraceGetTables) GetCrcString() string   { return "51077d14" }
+func (*ClassifyTraceGetTables) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *ClassifyTraceGetTables) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *ClassifyTraceGetTables) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *ClassifyTraceGetTables) Unmarshal(b []byte) error {
+       return nil
+}
+
+// ClassifyTraceGetTablesReply defines message 'classify_trace_get_tables_reply'.
+type ClassifyTraceGetTablesReply struct {
+       Retval  int32    `binapi:"i32,name=retval" json:"retval,omitempty"`
+       Count   uint32   `binapi:"u32,name=count" json:"-"`
+       Indices []uint32 `binapi:"u32[count],name=indices" json:"indices,omitempty"`
+}
+
+func (m *ClassifyTraceGetTablesReply) Reset()               { *m = ClassifyTraceGetTablesReply{} }
+func (*ClassifyTraceGetTablesReply) GetMessageName() string { return "classify_trace_get_tables_reply" }
+func (*ClassifyTraceGetTablesReply) GetCrcString() string   { return "5f5bc9e6" }
+func (*ClassifyTraceGetTablesReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *ClassifyTraceGetTablesReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4                  // m.Retval
+       size += 4                  // m.Count
+       size += 4 * len(m.Indices) // m.Indices
+       return size
+}
+func (m *ClassifyTraceGetTablesReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(uint32(len(m.Indices)))
+       for i := 0; i < len(m.Indices); i++ {
+               var x uint32
+               if i < len(m.Indices) {
+                       x = uint32(m.Indices[i])
+               }
+               buf.EncodeUint32(x)
+       }
+       return buf.Bytes(), nil
+}
+func (m *ClassifyTraceGetTablesReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.Count = buf.DecodeUint32()
+       m.Indices = make([]uint32, m.Count)
+       for i := 0; i < len(m.Indices); i++ {
+               m.Indices[i] = buf.DecodeUint32()
+       }
+       return nil
+}
+
+// ClassifyTraceLookupTable defines message 'classify_trace_lookup_table'.
+type ClassifyTraceLookupTable struct {
+       SkipNVectors  uint32 `binapi:"u32,name=skip_n_vectors,default=0" json:"skip_n_vectors,omitempty"`
+       MatchNVectors uint32 `binapi:"u32,name=match_n_vectors,default=1" json:"match_n_vectors,omitempty"`
+       MaskLen       uint32 `binapi:"u32,name=mask_len" json:"-"`
+       Mask          []byte `binapi:"u8[mask_len],name=mask" json:"mask,omitempty"`
+}
+
+func (m *ClassifyTraceLookupTable) Reset()               { *m = ClassifyTraceLookupTable{} }
+func (*ClassifyTraceLookupTable) GetMessageName() string { return "classify_trace_lookup_table" }
+func (*ClassifyTraceLookupTable) GetCrcString() string   { return "3f7b72e4" }
+func (*ClassifyTraceLookupTable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *ClassifyTraceLookupTable) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4               // m.SkipNVectors
+       size += 4               // m.MatchNVectors
+       size += 4               // m.MaskLen
+       size += 1 * len(m.Mask) // m.Mask
+       return size
+}
+func (m *ClassifyTraceLookupTable) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.SkipNVectors)
+       buf.EncodeUint32(m.MatchNVectors)
+       buf.EncodeUint32(uint32(len(m.Mask)))
+       buf.EncodeBytes(m.Mask, 0)
+       return buf.Bytes(), nil
+}
+func (m *ClassifyTraceLookupTable) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SkipNVectors = buf.DecodeUint32()
+       m.MatchNVectors = buf.DecodeUint32()
+       m.MaskLen = buf.DecodeUint32()
+       m.Mask = make([]byte, m.MaskLen)
+       copy(m.Mask, buf.DecodeBytes(len(m.Mask)))
+       return nil
+}
+
+// ClassifyTraceLookupTableReply defines message 'classify_trace_lookup_table_reply'.
+type ClassifyTraceLookupTableReply struct {
+       Retval     int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       TableIndex uint32 `binapi:"u32,name=table_index" json:"table_index,omitempty"`
+}
+
+func (m *ClassifyTraceLookupTableReply) Reset() { *m = ClassifyTraceLookupTableReply{} }
+func (*ClassifyTraceLookupTableReply) GetMessageName() string {
+       return "classify_trace_lookup_table_reply"
+}
+func (*ClassifyTraceLookupTableReply) GetCrcString() string { return "9c6c6773" }
+func (*ClassifyTraceLookupTableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *ClassifyTraceLookupTableReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.TableIndex
+       return size
+}
+func (m *ClassifyTraceLookupTableReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.TableIndex)
+       return buf.Bytes(), nil
+}
+func (m *ClassifyTraceLookupTableReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.TableIndex = buf.DecodeUint32()
+       return nil
+}
+
+// ClassifyTraceSetTable defines message 'classify_trace_set_table'.
+type ClassifyTraceSetTable struct {
+       TableIndex uint32 `binapi:"u32,name=table_index,default=4294967295" json:"table_index,omitempty"`
+       SortMasks  bool   `binapi:"bool,name=sort_masks,default=0" json:"sort_masks,omitempty"`
+}
+
+func (m *ClassifyTraceSetTable) Reset()               { *m = ClassifyTraceSetTable{} }
+func (*ClassifyTraceSetTable) GetMessageName() string { return "classify_trace_set_table" }
+func (*ClassifyTraceSetTable) GetCrcString() string   { return "3909b55a" }
+func (*ClassifyTraceSetTable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *ClassifyTraceSetTable) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.TableIndex
+       size += 1 // m.SortMasks
+       return size
+}
+func (m *ClassifyTraceSetTable) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.TableIndex)
+       buf.EncodeBool(m.SortMasks)
+       return buf.Bytes(), nil
+}
+func (m *ClassifyTraceSetTable) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.TableIndex = buf.DecodeUint32()
+       m.SortMasks = buf.DecodeBool()
+       return nil
+}
+
+// ClassifyTraceSetTableReply defines message 'classify_trace_set_table_reply'.
+type ClassifyTraceSetTableReply struct {
+       Retval     int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       TableIndex uint32 `binapi:"u32,name=table_index" json:"table_index,omitempty"`
+}
+
+func (m *ClassifyTraceSetTableReply) Reset()               { *m = ClassifyTraceSetTableReply{} }
+func (*ClassifyTraceSetTableReply) GetMessageName() string { return "classify_trace_set_table_reply" }
+func (*ClassifyTraceSetTableReply) GetCrcString() string   { return "9c6c6773" }
+func (*ClassifyTraceSetTableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *ClassifyTraceSetTableReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.TableIndex
+       return size
+}
+func (m *ClassifyTraceSetTableReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.TableIndex)
+       return buf.Bytes(), nil
+}
+func (m *ClassifyTraceSetTableReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.TableIndex = buf.DecodeUint32()
+       return nil
+}
+
 // FlowClassifyDetails defines message 'flow_classify_details'.
 type FlowClassifyDetails struct {
        SwIfIndex  interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
@@ -1347,6 +1833,12 @@ func file_classify_binapi_init() {
        api.RegisterMessage((*ClassifyAddDelSessionReply)(nil), "classify_add_del_session_reply_e8d4e804")
        api.RegisterMessage((*ClassifyAddDelTable)(nil), "classify_add_del_table_6849e39e")
        api.RegisterMessage((*ClassifyAddDelTableReply)(nil), "classify_add_del_table_reply_05486349")
+       api.RegisterMessage((*ClassifyPcapGetTables)(nil), "classify_pcap_get_tables_f9e6675e")
+       api.RegisterMessage((*ClassifyPcapGetTablesReply)(nil), "classify_pcap_get_tables_reply_5f5bc9e6")
+       api.RegisterMessage((*ClassifyPcapLookupTable)(nil), "classify_pcap_lookup_table_e1b4cc6b")
+       api.RegisterMessage((*ClassifyPcapLookupTableReply)(nil), "classify_pcap_lookup_table_reply_9c6c6773")
+       api.RegisterMessage((*ClassifyPcapSetTable)(nil), "classify_pcap_set_table_006051b3")
+       api.RegisterMessage((*ClassifyPcapSetTableReply)(nil), "classify_pcap_set_table_reply_9c6c6773")
        api.RegisterMessage((*ClassifySessionDetails)(nil), "classify_session_details_60e3ef94")
        api.RegisterMessage((*ClassifySessionDump)(nil), "classify_session_dump_0cca2cd9")
        api.RegisterMessage((*ClassifySetInterfaceIPTable)(nil), "classify_set_interface_ip_table_e0b097c7")
@@ -1359,6 +1851,12 @@ func file_classify_binapi_init() {
        api.RegisterMessage((*ClassifyTableIdsReply)(nil), "classify_table_ids_reply_d1d20e1d")
        api.RegisterMessage((*ClassifyTableInfo)(nil), "classify_table_info_0cca2cd9")
        api.RegisterMessage((*ClassifyTableInfoReply)(nil), "classify_table_info_reply_4a573c0e")
+       api.RegisterMessage((*ClassifyTraceGetTables)(nil), "classify_trace_get_tables_51077d14")
+       api.RegisterMessage((*ClassifyTraceGetTablesReply)(nil), "classify_trace_get_tables_reply_5f5bc9e6")
+       api.RegisterMessage((*ClassifyTraceLookupTable)(nil), "classify_trace_lookup_table_3f7b72e4")
+       api.RegisterMessage((*ClassifyTraceLookupTableReply)(nil), "classify_trace_lookup_table_reply_9c6c6773")
+       api.RegisterMessage((*ClassifyTraceSetTable)(nil), "classify_trace_set_table_3909b55a")
+       api.RegisterMessage((*ClassifyTraceSetTableReply)(nil), "classify_trace_set_table_reply_9c6c6773")
        api.RegisterMessage((*FlowClassifyDetails)(nil), "flow_classify_details_dfd08765")
        api.RegisterMessage((*FlowClassifyDump)(nil), "flow_classify_dump_8a6ad43d")
        api.RegisterMessage((*FlowClassifySetInterface)(nil), "flow_classify_set_interface_b6192f1c")
@@ -1380,6 +1878,12 @@ func AllMessages() []api.Message {
                (*ClassifyAddDelSessionReply)(nil),
                (*ClassifyAddDelTable)(nil),
                (*ClassifyAddDelTableReply)(nil),
+               (*ClassifyPcapGetTables)(nil),
+               (*ClassifyPcapGetTablesReply)(nil),
+               (*ClassifyPcapLookupTable)(nil),
+               (*ClassifyPcapLookupTableReply)(nil),
+               (*ClassifyPcapSetTable)(nil),
+               (*ClassifyPcapSetTableReply)(nil),
                (*ClassifySessionDetails)(nil),
                (*ClassifySessionDump)(nil),
                (*ClassifySetInterfaceIPTable)(nil),
@@ -1392,6 +1896,12 @@ func AllMessages() []api.Message {
                (*ClassifyTableIdsReply)(nil),
                (*ClassifyTableInfo)(nil),
                (*ClassifyTableInfoReply)(nil),
+               (*ClassifyTraceGetTables)(nil),
+               (*ClassifyTraceGetTablesReply)(nil),
+               (*ClassifyTraceLookupTable)(nil),
+               (*ClassifyTraceLookupTableReply)(nil),
+               (*ClassifyTraceSetTable)(nil),
+               (*ClassifyTraceSetTableReply)(nil),
                (*FlowClassifyDetails)(nil),
                (*FlowClassifyDump)(nil),
                (*FlowClassifySetInterface)(nil),
index 5bbb43b..4913758 100644 (file)
@@ -15,12 +15,18 @@ import (
 type RPCService interface {
        ClassifyAddDelSession(ctx context.Context, in *ClassifyAddDelSession) (*ClassifyAddDelSessionReply, error)
        ClassifyAddDelTable(ctx context.Context, in *ClassifyAddDelTable) (*ClassifyAddDelTableReply, error)
+       ClassifyPcapGetTables(ctx context.Context, in *ClassifyPcapGetTables) (*ClassifyPcapGetTablesReply, error)
+       ClassifyPcapLookupTable(ctx context.Context, in *ClassifyPcapLookupTable) (*ClassifyPcapLookupTableReply, error)
+       ClassifyPcapSetTable(ctx context.Context, in *ClassifyPcapSetTable) (*ClassifyPcapSetTableReply, error)
        ClassifySessionDump(ctx context.Context, in *ClassifySessionDump) (RPCService_ClassifySessionDumpClient, error)
        ClassifySetInterfaceIPTable(ctx context.Context, in *ClassifySetInterfaceIPTable) (*ClassifySetInterfaceIPTableReply, error)
        ClassifySetInterfaceL2Tables(ctx context.Context, in *ClassifySetInterfaceL2Tables) (*ClassifySetInterfaceL2TablesReply, error)
        ClassifyTableByInterface(ctx context.Context, in *ClassifyTableByInterface) (*ClassifyTableByInterfaceReply, error)
        ClassifyTableIds(ctx context.Context, in *ClassifyTableIds) (*ClassifyTableIdsReply, error)
        ClassifyTableInfo(ctx context.Context, in *ClassifyTableInfo) (*ClassifyTableInfoReply, error)
+       ClassifyTraceGetTables(ctx context.Context, in *ClassifyTraceGetTables) (*ClassifyTraceGetTablesReply, error)
+       ClassifyTraceLookupTable(ctx context.Context, in *ClassifyTraceLookupTable) (*ClassifyTraceLookupTableReply, error)
+       ClassifyTraceSetTable(ctx context.Context, in *ClassifyTraceSetTable) (*ClassifyTraceSetTableReply, error)
        FlowClassifyDump(ctx context.Context, in *FlowClassifyDump) (RPCService_FlowClassifyDumpClient, error)
        FlowClassifySetInterface(ctx context.Context, in *FlowClassifySetInterface) (*FlowClassifySetInterfaceReply, error)
        InputACLSetInterface(ctx context.Context, in *InputACLSetInterface) (*InputACLSetInterfaceReply, error)
@@ -55,6 +61,33 @@ func (c *serviceClient) ClassifyAddDelTable(ctx context.Context, in *ClassifyAdd
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) ClassifyPcapGetTables(ctx context.Context, in *ClassifyPcapGetTables) (*ClassifyPcapGetTablesReply, error) {
+       out := new(ClassifyPcapGetTablesReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) ClassifyPcapLookupTable(ctx context.Context, in *ClassifyPcapLookupTable) (*ClassifyPcapLookupTableReply, error) {
+       out := new(ClassifyPcapLookupTableReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) ClassifyPcapSetTable(ctx context.Context, in *ClassifyPcapSetTable) (*ClassifyPcapSetTableReply, error) {
+       out := new(ClassifyPcapSetTableReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) ClassifySessionDump(ctx context.Context, in *ClassifySessionDump) (RPCService_ClassifySessionDumpClient, error) {
        stream, err := c.conn.NewStream(ctx)
        if err != nil {
@@ -139,6 +172,33 @@ func (c *serviceClient) ClassifyTableInfo(ctx context.Context, in *ClassifyTable
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) ClassifyTraceGetTables(ctx context.Context, in *ClassifyTraceGetTables) (*ClassifyTraceGetTablesReply, error) {
+       out := new(ClassifyTraceGetTablesReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) ClassifyTraceLookupTable(ctx context.Context, in *ClassifyTraceLookupTable) (*ClassifyTraceLookupTableReply, error) {
+       out := new(ClassifyTraceLookupTableReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) ClassifyTraceSetTable(ctx context.Context, in *ClassifyTraceSetTable) (*ClassifyTraceSetTableReply, error) {
+       out := new(ClassifyTraceSetTableReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) FlowClassifyDump(ctx context.Context, in *FlowClassifyDump) (RPCService_FlowClassifyDumpClient, error) {
        stream, err := c.conn.NewStream(ctx)
        if err != nil {
diff --git a/binapi/cnat/cnat.ba.go b/binapi/cnat/cnat.ba.go
new file mode 100644 (file)
index 0000000..735aaeb
--- /dev/null
@@ -0,0 +1,1213 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/cnat.api.json
+
+// Package cnat contains generated bindings for API file cnat.api.
+//
+// Contents:
+//   5 enums
+//   4 structs
+//  20 messages
+//
+package cnat
+
+import (
+       "strconv"
+
+       api "git.fd.io/govpp.git/api"
+       _ "git.fd.io/govpp.git/binapi/fib_types"
+       interface_types "git.fd.io/govpp.git/binapi/interface_types"
+       ip_types "git.fd.io/govpp.git/binapi/ip_types"
+       codec "git.fd.io/govpp.git/codec"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+const (
+       APIFile    = "cnat"
+       APIVersion = "0.2.0"
+       VersionCrc = 0xfd05573b
+)
+
+// CnatEndpointTupleFlags defines enum 'cnat_endpoint_tuple_flags'.
+type CnatEndpointTupleFlags uint8
+
+const (
+       CNAT_EPT_NO_NAT CnatEndpointTupleFlags = 1
+)
+
+var (
+       CnatEndpointTupleFlags_name = map[uint8]string{
+               1: "CNAT_EPT_NO_NAT",
+       }
+       CnatEndpointTupleFlags_value = map[string]uint8{
+               "CNAT_EPT_NO_NAT": 1,
+       }
+)
+
+func (x CnatEndpointTupleFlags) String() string {
+       s, ok := CnatEndpointTupleFlags_name[uint8(x)]
+       if ok {
+               return s
+       }
+       str := func(n uint8) string {
+               s, ok := CnatEndpointTupleFlags_name[uint8(n)]
+               if ok {
+                       return s
+               }
+               return "CnatEndpointTupleFlags(" + strconv.Itoa(int(n)) + ")"
+       }
+       for i := uint8(0); i <= 8; i++ {
+               val := uint8(x)
+               if val&(1<<i) != 0 {
+                       if s != "" {
+                               s += "|"
+                       }
+                       s += str(1 << i)
+               }
+       }
+       if s == "" {
+               return str(uint8(x))
+       }
+       return s
+}
+
+// CnatLbType defines enum 'cnat_lb_type'.
+type CnatLbType uint8
+
+const (
+       CNAT_LB_TYPE_DEFAULT CnatLbType = 0
+       CNAT_LB_TYPE_MAGLEV  CnatLbType = 1
+)
+
+var (
+       CnatLbType_name = map[uint8]string{
+               0: "CNAT_LB_TYPE_DEFAULT",
+               1: "CNAT_LB_TYPE_MAGLEV",
+       }
+       CnatLbType_value = map[string]uint8{
+               "CNAT_LB_TYPE_DEFAULT": 0,
+               "CNAT_LB_TYPE_MAGLEV":  1,
+       }
+)
+
+func (x CnatLbType) String() string {
+       s, ok := CnatLbType_name[uint8(x)]
+       if ok {
+               return s
+       }
+       return "CnatLbType(" + strconv.Itoa(int(x)) + ")"
+}
+
+// CnatSnatPolicies defines enum 'cnat_snat_policies'.
+type CnatSnatPolicies uint8
+
+const (
+       CNAT_POLICY_NONE   CnatSnatPolicies = 0
+       CNAT_POLICY_IF_PFX CnatSnatPolicies = 1
+       CNAT_POLICY_K8S    CnatSnatPolicies = 2
+)
+
+var (
+       CnatSnatPolicies_name = map[uint8]string{
+               0: "CNAT_POLICY_NONE",
+               1: "CNAT_POLICY_IF_PFX",
+               2: "CNAT_POLICY_K8S",
+       }
+       CnatSnatPolicies_value = map[string]uint8{
+               "CNAT_POLICY_NONE":   0,
+               "CNAT_POLICY_IF_PFX": 1,
+               "CNAT_POLICY_K8S":    2,
+       }
+)
+
+func (x CnatSnatPolicies) String() string {
+       s, ok := CnatSnatPolicies_name[uint8(x)]
+       if ok {
+               return s
+       }
+       return "CnatSnatPolicies(" + strconv.Itoa(int(x)) + ")"
+}
+
+// CnatSnatPolicyTable defines enum 'cnat_snat_policy_table'.
+type CnatSnatPolicyTable uint8
+
+const (
+       CNAT_POLICY_INCLUDE_V4 CnatSnatPolicyTable = 0
+       CNAT_POLICY_INCLUDE_V6 CnatSnatPolicyTable = 1
+       CNAT_POLICY_POD        CnatSnatPolicyTable = 2
+)
+
+var (
+       CnatSnatPolicyTable_name = map[uint8]string{
+               0: "CNAT_POLICY_INCLUDE_V4",
+               1: "CNAT_POLICY_INCLUDE_V6",
+               2: "CNAT_POLICY_POD",
+       }
+       CnatSnatPolicyTable_value = map[string]uint8{
+               "CNAT_POLICY_INCLUDE_V4": 0,
+               "CNAT_POLICY_INCLUDE_V6": 1,
+               "CNAT_POLICY_POD":        2,
+       }
+)
+
+func (x CnatSnatPolicyTable) String() string {
+       s, ok := CnatSnatPolicyTable_name[uint8(x)]
+       if ok {
+               return s
+       }
+       return "CnatSnatPolicyTable(" + strconv.Itoa(int(x)) + ")"
+}
+
+// CnatTranslationFlags defines enum 'cnat_translation_flags'.
+type CnatTranslationFlags uint8
+
+const (
+       CNAT_TRANSLATION_ALLOC_PORT CnatTranslationFlags = 1
+)
+
+var (
+       CnatTranslationFlags_name = map[uint8]string{
+               1: "CNAT_TRANSLATION_ALLOC_PORT",
+       }
+       CnatTranslationFlags_value = map[string]uint8{
+               "CNAT_TRANSLATION_ALLOC_PORT": 1,
+       }
+)
+
+func (x CnatTranslationFlags) String() string {
+       s, ok := CnatTranslationFlags_name[uint8(x)]
+       if ok {
+               return s
+       }
+       str := func(n uint8) string {
+               s, ok := CnatTranslationFlags_name[uint8(n)]
+               if ok {
+                       return s
+               }
+               return "CnatTranslationFlags(" + strconv.Itoa(int(n)) + ")"
+       }
+       for i := uint8(0); i <= 8; i++ {
+               val := uint8(x)
+               if val&(1<<i) != 0 {
+                       if s != "" {
+                               s += "|"
+                       }
+                       s += str(1 << i)
+               }
+       }
+       if s == "" {
+               return str(uint8(x))
+       }
+       return s
+}
+
+// CnatEndpoint defines type 'cnat_endpoint'.
+type CnatEndpoint struct {
+       Addr      ip_types.Address               `binapi:"address,name=addr" json:"addr,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       IfAf      ip_types.AddressFamily         `binapi:"address_family,name=if_af" json:"if_af,omitempty"`
+       Port      uint16                         `binapi:"u16,name=port" json:"port,omitempty"`
+}
+
+// CnatEndpointTuple defines type 'cnat_endpoint_tuple'.
+type CnatEndpointTuple struct {
+       DstEp CnatEndpoint `binapi:"cnat_endpoint,name=dst_ep" json:"dst_ep,omitempty"`
+       SrcEp CnatEndpoint `binapi:"cnat_endpoint,name=src_ep" json:"src_ep,omitempty"`
+       Flags uint8        `binapi:"u8,name=flags" json:"flags,omitempty"`
+}
+
+// CnatSession defines type 'cnat_session'.
+type CnatSession struct {
+       Src       CnatEndpoint     `binapi:"cnat_endpoint,name=src" json:"src,omitempty"`
+       Dst       CnatEndpoint     `binapi:"cnat_endpoint,name=dst" json:"dst,omitempty"`
+       New       CnatEndpoint     `binapi:"cnat_endpoint,name=new" json:"new,omitempty"`
+       IPProto   ip_types.IPProto `binapi:"ip_proto,name=ip_proto" json:"ip_proto,omitempty"`
+       Location  uint8            `binapi:"u8,name=location" json:"location,omitempty"`
+       Timestamp float64          `binapi:"f64,name=timestamp" json:"timestamp,omitempty"`
+}
+
+// CnatTranslation defines type 'cnat_translation'.
+type CnatTranslation struct {
+       Vip      CnatEndpoint        `binapi:"cnat_endpoint,name=vip" json:"vip,omitempty"`
+       ID       uint32              `binapi:"u32,name=id" json:"id,omitempty"`
+       IPProto  ip_types.IPProto    `binapi:"ip_proto,name=ip_proto" json:"ip_proto,omitempty"`
+       IsRealIP uint8               `binapi:"u8,name=is_real_ip" json:"is_real_ip,omitempty"`
+       Flags    uint8               `binapi:"u8,name=flags" json:"flags,omitempty"`
+       LbType   CnatLbType          `binapi:"cnat_lb_type,name=lb_type" json:"lb_type,omitempty"`
+       NPaths   uint32              `binapi:"u32,name=n_paths" json:"-"`
+       Paths    []CnatEndpointTuple `binapi:"cnat_endpoint_tuple[n_paths],name=paths" json:"paths,omitempty"`
+}
+
+// CnatGetSnatAddresses defines message 'cnat_get_snat_addresses'.
+// InProgress: the message form may change in the future versions
+type CnatGetSnatAddresses struct{}
+
+func (m *CnatGetSnatAddresses) Reset()               { *m = CnatGetSnatAddresses{} }
+func (*CnatGetSnatAddresses) GetMessageName() string { return "cnat_get_snat_addresses" }
+func (*CnatGetSnatAddresses) GetCrcString() string   { return "51077d14" }
+func (*CnatGetSnatAddresses) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *CnatGetSnatAddresses) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *CnatGetSnatAddresses) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *CnatGetSnatAddresses) Unmarshal(b []byte) error {
+       return nil
+}
+
+// CnatGetSnatAddressesReply defines message 'cnat_get_snat_addresses_reply'.
+// InProgress: the message form may change in the future versions
+type CnatGetSnatAddressesReply struct {
+       Retval    int32                          `binapi:"i32,name=retval" json:"retval,omitempty"`
+       ID        uint32                         `binapi:"u32,name=id" json:"id,omitempty"`
+       SnatIP4   ip_types.IP4Address            `binapi:"ip4_address,name=snat_ip4" json:"snat_ip4,omitempty"`
+       SnatIP6   ip_types.IP6Address            `binapi:"ip6_address,name=snat_ip6" json:"snat_ip6,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *CnatGetSnatAddressesReply) Reset()               { *m = CnatGetSnatAddressesReply{} }
+func (*CnatGetSnatAddressesReply) GetMessageName() string { return "cnat_get_snat_addresses_reply" }
+func (*CnatGetSnatAddressesReply) GetCrcString() string   { return "879513c1" }
+func (*CnatGetSnatAddressesReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *CnatGetSnatAddressesReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4      // m.Retval
+       size += 4      // m.ID
+       size += 1 * 4  // m.SnatIP4
+       size += 1 * 16 // m.SnatIP6
+       size += 4      // m.SwIfIndex
+       return size
+}
+func (m *CnatGetSnatAddressesReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.ID)
+       buf.EncodeBytes(m.SnatIP4[:], 4)
+       buf.EncodeBytes(m.SnatIP6[:], 16)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *CnatGetSnatAddressesReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.ID = buf.DecodeUint32()
+       copy(m.SnatIP4[:], buf.DecodeBytes(4))
+       copy(m.SnatIP6[:], buf.DecodeBytes(16))
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// CnatSessionDetails defines message 'cnat_session_details'.
+// InProgress: the message form may change in the future versions
+type CnatSessionDetails struct {
+       Session CnatSession `binapi:"cnat_session,name=session" json:"session,omitempty"`
+}
+
+func (m *CnatSessionDetails) Reset()               { *m = CnatSessionDetails{} }
+func (*CnatSessionDetails) GetMessageName() string { return "cnat_session_details" }
+func (*CnatSessionDetails) GetCrcString() string   { return "7e5017c7" }
+func (*CnatSessionDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *CnatSessionDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1      // m.Session.Src.Addr.Af
+       size += 1 * 16 // m.Session.Src.Addr.Un
+       size += 4      // m.Session.Src.SwIfIndex
+       size += 1      // m.Session.Src.IfAf
+       size += 2      // m.Session.Src.Port
+       size += 1      // m.Session.Dst.Addr.Af
+       size += 1 * 16 // m.Session.Dst.Addr.Un
+       size += 4      // m.Session.Dst.SwIfIndex
+       size += 1      // m.Session.Dst.IfAf
+       size += 2      // m.Session.Dst.Port
+       size += 1      // m.Session.New.Addr.Af
+       size += 1 * 16 // m.Session.New.Addr.Un
+       size += 4      // m.Session.New.SwIfIndex
+       size += 1      // m.Session.New.IfAf
+       size += 2      // m.Session.New.Port
+       size += 1      // m.Session.IPProto
+       size += 1      // m.Session.Location
+       size += 8      // m.Session.Timestamp
+       return size
+}
+func (m *CnatSessionDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(uint8(m.Session.Src.Addr.Af))
+       buf.EncodeBytes(m.Session.Src.Addr.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint32(uint32(m.Session.Src.SwIfIndex))
+       buf.EncodeUint8(uint8(m.Session.Src.IfAf))
+       buf.EncodeUint16(m.Session.Src.Port)
+       buf.EncodeUint8(uint8(m.Session.Dst.Addr.Af))
+       buf.EncodeBytes(m.Session.Dst.Addr.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint32(uint32(m.Session.Dst.SwIfIndex))
+       buf.EncodeUint8(uint8(m.Session.Dst.IfAf))
+       buf.EncodeUint16(m.Session.Dst.Port)
+       buf.EncodeUint8(uint8(m.Session.New.Addr.Af))
+       buf.EncodeBytes(m.Session.New.Addr.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint32(uint32(m.Session.New.SwIfIndex))
+       buf.EncodeUint8(uint8(m.Session.New.IfAf))
+       buf.EncodeUint16(m.Session.New.Port)
+       buf.EncodeUint8(uint8(m.Session.IPProto))
+       buf.EncodeUint8(m.Session.Location)
+       buf.EncodeFloat64(m.Session.Timestamp)
+       return buf.Bytes(), nil
+}
+func (m *CnatSessionDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Session.Src.Addr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Session.Src.Addr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Session.Src.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Session.Src.IfAf = ip_types.AddressFamily(buf.DecodeUint8())
+       m.Session.Src.Port = buf.DecodeUint16()
+       m.Session.Dst.Addr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Session.Dst.Addr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Session.Dst.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Session.Dst.IfAf = ip_types.AddressFamily(buf.DecodeUint8())
+       m.Session.Dst.Port = buf.DecodeUint16()
+       m.Session.New.Addr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Session.New.Addr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Session.New.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Session.New.IfAf = ip_types.AddressFamily(buf.DecodeUint8())
+       m.Session.New.Port = buf.DecodeUint16()
+       m.Session.IPProto = ip_types.IPProto(buf.DecodeUint8())
+       m.Session.Location = buf.DecodeUint8()
+       m.Session.Timestamp = buf.DecodeFloat64()
+       return nil
+}
+
+// CnatSessionDump defines message 'cnat_session_dump'.
+// InProgress: the message form may change in the future versions
+type CnatSessionDump struct{}
+
+func (m *CnatSessionDump) Reset()               { *m = CnatSessionDump{} }
+func (*CnatSessionDump) GetMessageName() string { return "cnat_session_dump" }
+func (*CnatSessionDump) GetCrcString() string   { return "51077d14" }
+func (*CnatSessionDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *CnatSessionDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *CnatSessionDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *CnatSessionDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+// CnatSessionPurge defines message 'cnat_session_purge'.
+// InProgress: the message form may change in the future versions
+type CnatSessionPurge struct{}
+
+func (m *CnatSessionPurge) Reset()               { *m = CnatSessionPurge{} }
+func (*CnatSessionPurge) GetMessageName() string { return "cnat_session_purge" }
+func (*CnatSessionPurge) GetCrcString() string   { return "51077d14" }
+func (*CnatSessionPurge) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *CnatSessionPurge) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *CnatSessionPurge) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *CnatSessionPurge) Unmarshal(b []byte) error {
+       return nil
+}
+
+// CnatSessionPurgeReply defines message 'cnat_session_purge_reply'.
+// InProgress: the message form may change in the future versions
+type CnatSessionPurgeReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *CnatSessionPurgeReply) Reset()               { *m = CnatSessionPurgeReply{} }
+func (*CnatSessionPurgeReply) GetMessageName() string { return "cnat_session_purge_reply" }
+func (*CnatSessionPurgeReply) GetCrcString() string   { return "e8d4e804" }
+func (*CnatSessionPurgeReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *CnatSessionPurgeReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *CnatSessionPurgeReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *CnatSessionPurgeReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// CnatSetSnatAddresses defines message 'cnat_set_snat_addresses'.
+// InProgress: the message form may change in the future versions
+type CnatSetSnatAddresses struct {
+       SnatIP4   ip_types.IP4Address            `binapi:"ip4_address,name=snat_ip4" json:"snat_ip4,omitempty"`
+       SnatIP6   ip_types.IP6Address            `binapi:"ip6_address,name=snat_ip6" json:"snat_ip6,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *CnatSetSnatAddresses) Reset()               { *m = CnatSetSnatAddresses{} }
+func (*CnatSetSnatAddresses) GetMessageName() string { return "cnat_set_snat_addresses" }
+func (*CnatSetSnatAddresses) GetCrcString() string   { return "d997e96c" }
+func (*CnatSetSnatAddresses) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *CnatSetSnatAddresses) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4  // m.SnatIP4
+       size += 1 * 16 // m.SnatIP6
+       size += 4      // m.SwIfIndex
+       return size
+}
+func (m *CnatSetSnatAddresses) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.SnatIP4[:], 4)
+       buf.EncodeBytes(m.SnatIP6[:], 16)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *CnatSetSnatAddresses) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.SnatIP4[:], buf.DecodeBytes(4))
+       copy(m.SnatIP6[:], buf.DecodeBytes(16))
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// CnatSetSnatAddressesReply defines message 'cnat_set_snat_addresses_reply'.
+// InProgress: the message form may change in the future versions
+type CnatSetSnatAddressesReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *CnatSetSnatAddressesReply) Reset()               { *m = CnatSetSnatAddressesReply{} }
+func (*CnatSetSnatAddressesReply) GetMessageName() string { return "cnat_set_snat_addresses_reply" }
+func (*CnatSetSnatAddressesReply) GetCrcString() string   { return "e8d4e804" }
+func (*CnatSetSnatAddressesReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *CnatSetSnatAddressesReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *CnatSetSnatAddressesReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *CnatSetSnatAddressesReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// CnatSetSnatPolicy defines message 'cnat_set_snat_policy'.
+// InProgress: the message form may change in the future versions
+type CnatSetSnatPolicy struct {
+       Policy CnatSnatPolicies `binapi:"cnat_snat_policies,name=policy" json:"policy,omitempty"`
+}
+
+func (m *CnatSetSnatPolicy) Reset()               { *m = CnatSetSnatPolicy{} }
+func (*CnatSetSnatPolicy) GetMessageName() string { return "cnat_set_snat_policy" }
+func (*CnatSetSnatPolicy) GetCrcString() string   { return "d3e6eaf4" }
+func (*CnatSetSnatPolicy) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *CnatSetSnatPolicy) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.Policy
+       return size
+}
+func (m *CnatSetSnatPolicy) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(uint8(m.Policy))
+       return buf.Bytes(), nil
+}
+func (m *CnatSetSnatPolicy) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Policy = CnatSnatPolicies(buf.DecodeUint8())
+       return nil
+}
+
+// CnatSetSnatPolicyReply defines message 'cnat_set_snat_policy_reply'.
+// InProgress: the message form may change in the future versions
+type CnatSetSnatPolicyReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *CnatSetSnatPolicyReply) Reset()               { *m = CnatSetSnatPolicyReply{} }
+func (*CnatSetSnatPolicyReply) GetMessageName() string { return "cnat_set_snat_policy_reply" }
+func (*CnatSetSnatPolicyReply) GetCrcString() string   { return "e8d4e804" }
+func (*CnatSetSnatPolicyReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *CnatSetSnatPolicyReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *CnatSetSnatPolicyReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *CnatSetSnatPolicyReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// CnatSnatPolicyAddDelExcludePfx defines message 'cnat_snat_policy_add_del_exclude_pfx'.
+// InProgress: the message form may change in the future versions
+type CnatSnatPolicyAddDelExcludePfx struct {
+       IsAdd  uint8           `binapi:"u8,name=is_add" json:"is_add,omitempty"`
+       Prefix ip_types.Prefix `binapi:"prefix,name=prefix" json:"prefix,omitempty"`
+}
+
+func (m *CnatSnatPolicyAddDelExcludePfx) Reset() { *m = CnatSnatPolicyAddDelExcludePfx{} }
+func (*CnatSnatPolicyAddDelExcludePfx) GetMessageName() string {
+       return "cnat_snat_policy_add_del_exclude_pfx"
+}
+func (*CnatSnatPolicyAddDelExcludePfx) GetCrcString() string { return "e26dd79a" }
+func (*CnatSnatPolicyAddDelExcludePfx) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *CnatSnatPolicyAddDelExcludePfx) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1      // m.IsAdd
+       size += 1      // m.Prefix.Address.Af
+       size += 1 * 16 // m.Prefix.Address.Un
+       size += 1      // m.Prefix.Len
+       return size
+}
+func (m *CnatSnatPolicyAddDelExcludePfx) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(m.IsAdd)
+       buf.EncodeUint8(uint8(m.Prefix.Address.Af))
+       buf.EncodeBytes(m.Prefix.Address.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(m.Prefix.Len)
+       return buf.Bytes(), nil
+}
+func (m *CnatSnatPolicyAddDelExcludePfx) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeUint8()
+       m.Prefix.Address.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Prefix.Address.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Prefix.Len = buf.DecodeUint8()
+       return nil
+}
+
+// CnatSnatPolicyAddDelExcludePfxReply defines message 'cnat_snat_policy_add_del_exclude_pfx_reply'.
+// InProgress: the message form may change in the future versions
+type CnatSnatPolicyAddDelExcludePfxReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *CnatSnatPolicyAddDelExcludePfxReply) Reset() { *m = CnatSnatPolicyAddDelExcludePfxReply{} }
+func (*CnatSnatPolicyAddDelExcludePfxReply) GetMessageName() string {
+       return "cnat_snat_policy_add_del_exclude_pfx_reply"
+}
+func (*CnatSnatPolicyAddDelExcludePfxReply) GetCrcString() string { return "e8d4e804" }
+func (*CnatSnatPolicyAddDelExcludePfxReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *CnatSnatPolicyAddDelExcludePfxReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *CnatSnatPolicyAddDelExcludePfxReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *CnatSnatPolicyAddDelExcludePfxReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// CnatSnatPolicyAddDelIf defines message 'cnat_snat_policy_add_del_if'.
+// InProgress: the message form may change in the future versions
+type CnatSnatPolicyAddDelIf struct {
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       IsAdd     uint8                          `binapi:"u8,name=is_add" json:"is_add,omitempty"`
+       Table     CnatSnatPolicyTable            `binapi:"cnat_snat_policy_table,name=table" json:"table,omitempty"`
+}
+
+func (m *CnatSnatPolicyAddDelIf) Reset()               { *m = CnatSnatPolicyAddDelIf{} }
+func (*CnatSnatPolicyAddDelIf) GetMessageName() string { return "cnat_snat_policy_add_del_if" }
+func (*CnatSnatPolicyAddDelIf) GetCrcString() string   { return "6828deca" }
+func (*CnatSnatPolicyAddDelIf) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *CnatSnatPolicyAddDelIf) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       size += 1 // m.IsAdd
+       size += 1 // m.Table
+       return size
+}
+func (m *CnatSnatPolicyAddDelIf) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint8(m.IsAdd)
+       buf.EncodeUint8(uint8(m.Table))
+       return buf.Bytes(), nil
+}
+func (m *CnatSnatPolicyAddDelIf) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.IsAdd = buf.DecodeUint8()
+       m.Table = CnatSnatPolicyTable(buf.DecodeUint8())
+       return nil
+}
+
+// CnatSnatPolicyAddDelIfReply defines message 'cnat_snat_policy_add_del_if_reply'.
+// InProgress: the message form may change in the future versions
+type CnatSnatPolicyAddDelIfReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *CnatSnatPolicyAddDelIfReply) Reset() { *m = CnatSnatPolicyAddDelIfReply{} }
+func (*CnatSnatPolicyAddDelIfReply) GetMessageName() string {
+       return "cnat_snat_policy_add_del_if_reply"
+}
+func (*CnatSnatPolicyAddDelIfReply) GetCrcString() string { return "e8d4e804" }
+func (*CnatSnatPolicyAddDelIfReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *CnatSnatPolicyAddDelIfReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *CnatSnatPolicyAddDelIfReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *CnatSnatPolicyAddDelIfReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// CnatTranslationDel defines message 'cnat_translation_del'.
+// InProgress: the message form may change in the future versions
+type CnatTranslationDel struct {
+       ID uint32 `binapi:"u32,name=id" json:"id,omitempty"`
+}
+
+func (m *CnatTranslationDel) Reset()               { *m = CnatTranslationDel{} }
+func (*CnatTranslationDel) GetMessageName() string { return "cnat_translation_del" }
+func (*CnatTranslationDel) GetCrcString() string   { return "3a91bde5" }
+func (*CnatTranslationDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *CnatTranslationDel) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.ID
+       return size
+}
+func (m *CnatTranslationDel) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.ID)
+       return buf.Bytes(), nil
+}
+func (m *CnatTranslationDel) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.ID = buf.DecodeUint32()
+       return nil
+}
+
+// CnatTranslationDelReply defines message 'cnat_translation_del_reply'.
+// InProgress: the message form may change in the future versions
+type CnatTranslationDelReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *CnatTranslationDelReply) Reset()               { *m = CnatTranslationDelReply{} }
+func (*CnatTranslationDelReply) GetMessageName() string { return "cnat_translation_del_reply" }
+func (*CnatTranslationDelReply) GetCrcString() string   { return "e8d4e804" }
+func (*CnatTranslationDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *CnatTranslationDelReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *CnatTranslationDelReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *CnatTranslationDelReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// CnatTranslationDetails defines message 'cnat_translation_details'.
+// InProgress: the message form may change in the future versions
+type CnatTranslationDetails struct {
+       Translation CnatTranslation `binapi:"cnat_translation,name=translation" json:"translation,omitempty"`
+}
+
+func (m *CnatTranslationDetails) Reset()               { *m = CnatTranslationDetails{} }
+func (*CnatTranslationDetails) GetMessageName() string { return "cnat_translation_details" }
+func (*CnatTranslationDetails) GetCrcString() string   { return "347e1f16" }
+func (*CnatTranslationDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *CnatTranslationDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1      // m.Translation.Vip.Addr.Af
+       size += 1 * 16 // m.Translation.Vip.Addr.Un
+       size += 4      // m.Translation.Vip.SwIfIndex
+       size += 1      // m.Translation.Vip.IfAf
+       size += 2      // m.Translation.Vip.Port
+       size += 4      // m.Translation.ID
+       size += 1      // m.Translation.IPProto
+       size += 1      // m.Translation.IsRealIP
+       size += 1      // m.Translation.Flags
+       size += 1      // m.Translation.LbType
+       size += 4      // m.Translation.NPaths
+       for j2 := 0; j2 < len(m.Translation.Paths); j2++ {
+               var s2 CnatEndpointTuple
+               _ = s2
+               if j2 < len(m.Translation.Paths) {
+                       s2 = m.Translation.Paths[j2]
+               }
+               size += 1      // s2.DstEp.Addr.Af
+               size += 1 * 16 // s2.DstEp.Addr.Un
+               size += 4      // s2.DstEp.SwIfIndex
+               size += 1      // s2.DstEp.IfAf
+               size += 2      // s2.DstEp.Port
+               size += 1      // s2.SrcEp.Addr.Af
+               size += 1 * 16 // s2.SrcEp.Addr.Un
+               size += 4      // s2.SrcEp.SwIfIndex
+               size += 1      // s2.SrcEp.IfAf
+               size += 2      // s2.SrcEp.Port
+               size += 1      // s2.Flags
+       }
+       return size
+}
+func (m *CnatTranslationDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(uint8(m.Translation.Vip.Addr.Af))
+       buf.EncodeBytes(m.Translation.Vip.Addr.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint32(uint32(m.Translation.Vip.SwIfIndex))
+       buf.EncodeUint8(uint8(m.Translation.Vip.IfAf))
+       buf.EncodeUint16(m.Translation.Vip.Port)
+       buf.EncodeUint32(m.Translation.ID)
+       buf.EncodeUint8(uint8(m.Translation.IPProto))
+       buf.EncodeUint8(m.Translation.IsRealIP)
+       buf.EncodeUint8(m.Translation.Flags)
+       buf.EncodeUint8(uint8(m.Translation.LbType))
+       buf.EncodeUint32(uint32(len(m.Translation.Paths)))
+       for j1 := 0; j1 < len(m.Translation.Paths); j1++ {
+               var v1 CnatEndpointTuple // Paths
+               if j1 < len(m.Translation.Paths) {
+                       v1 = m.Translation.Paths[j1]
+               }
+               buf.EncodeUint8(uint8(v1.DstEp.Addr.Af))
+               buf.EncodeBytes(v1.DstEp.Addr.Un.XXX_UnionData[:], 16)
+               buf.EncodeUint32(uint32(v1.DstEp.SwIfIndex))
+               buf.EncodeUint8(uint8(v1.DstEp.IfAf))
+               buf.EncodeUint16(v1.DstEp.Port)
+               buf.EncodeUint8(uint8(v1.SrcEp.Addr.Af))
+               buf.EncodeBytes(v1.SrcEp.Addr.Un.XXX_UnionData[:], 16)
+               buf.EncodeUint32(uint32(v1.SrcEp.SwIfIndex))
+               buf.EncodeUint8(uint8(v1.SrcEp.IfAf))
+               buf.EncodeUint16(v1.SrcEp.Port)
+               buf.EncodeUint8(v1.Flags)
+       }
+       return buf.Bytes(), nil
+}
+func (m *CnatTranslationDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Translation.Vip.Addr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Translation.Vip.Addr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Translation.Vip.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Translation.Vip.IfAf = ip_types.AddressFamily(buf.DecodeUint8())
+       m.Translation.Vip.Port = buf.DecodeUint16()
+       m.Translation.ID = buf.DecodeUint32()
+       m.Translation.IPProto = ip_types.IPProto(buf.DecodeUint8())
+       m.Translation.IsRealIP = buf.DecodeUint8()
+       m.Translation.Flags = buf.DecodeUint8()
+       m.Translation.LbType = CnatLbType(buf.DecodeUint8())
+       m.Translation.NPaths = buf.DecodeUint32()
+       m.Translation.Paths = make([]CnatEndpointTuple, m.Translation.NPaths)
+       for j1 := 0; j1 < len(m.Translation.Paths); j1++ {
+               m.Translation.Paths[j1].DstEp.Addr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+               copy(m.Translation.Paths[j1].DstEp.Addr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+               m.Translation.Paths[j1].DstEp.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+               m.Translation.Paths[j1].DstEp.IfAf = ip_types.AddressFamily(buf.DecodeUint8())
+               m.Translation.Paths[j1].DstEp.Port = buf.DecodeUint16()
+               m.Translation.Paths[j1].SrcEp.Addr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+               copy(m.Translation.Paths[j1].SrcEp.Addr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+               m.Translation.Paths[j1].SrcEp.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+               m.Translation.Paths[j1].SrcEp.IfAf = ip_types.AddressFamily(buf.DecodeUint8())
+               m.Translation.Paths[j1].SrcEp.Port = buf.DecodeUint16()
+               m.Translation.Paths[j1].Flags = buf.DecodeUint8()
+       }
+       return nil
+}
+
+// CnatTranslationDump defines message 'cnat_translation_dump'.
+// InProgress: the message form may change in the future versions
+type CnatTranslationDump struct{}
+
+func (m *CnatTranslationDump) Reset()               { *m = CnatTranslationDump{} }
+func (*CnatTranslationDump) GetMessageName() string { return "cnat_translation_dump" }
+func (*CnatTranslationDump) GetCrcString() string   { return "51077d14" }
+func (*CnatTranslationDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *CnatTranslationDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *CnatTranslationDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *CnatTranslationDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+// CnatTranslationUpdate defines message 'cnat_translation_update'.
+// InProgress: the message form may change in the future versions
+type CnatTranslationUpdate struct {
+       Translation CnatTranslation `binapi:"cnat_translation,name=translation" json:"translation,omitempty"`
+}
+
+func (m *CnatTranslationUpdate) Reset()               { *m = CnatTranslationUpdate{} }
+func (*CnatTranslationUpdate) GetMessageName() string { return "cnat_translation_update" }
+func (*CnatTranslationUpdate) GetCrcString() string   { return "cd5aedf5" }
+func (*CnatTranslationUpdate) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *CnatTranslationUpdate) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1      // m.Translation.Vip.Addr.Af
+       size += 1 * 16 // m.Translation.Vip.Addr.Un
+       size += 4      // m.Translation.Vip.SwIfIndex
+       size += 1      // m.Translation.Vip.IfAf
+       size += 2      // m.Translation.Vip.Port
+       size += 4      // m.Translation.ID
+       size += 1      // m.Translation.IPProto
+       size += 1      // m.Translation.IsRealIP
+       size += 1      // m.Translation.Flags
+       size += 1      // m.Translation.LbType
+       size += 4      // m.Translation.NPaths
+       for j2 := 0; j2 < len(m.Translation.Paths); j2++ {
+               var s2 CnatEndpointTuple
+               _ = s2
+               if j2 < len(m.Translation.Paths) {
+                       s2 = m.Translation.Paths[j2]
+               }
+               size += 1      // s2.DstEp.Addr.Af
+               size += 1 * 16 // s2.DstEp.Addr.Un
+               size += 4      // s2.DstEp.SwIfIndex
+               size += 1      // s2.DstEp.IfAf
+               size += 2      // s2.DstEp.Port
+               size += 1      // s2.SrcEp.Addr.Af
+               size += 1 * 16 // s2.SrcEp.Addr.Un
+               size += 4      // s2.SrcEp.SwIfIndex
+               size += 1      // s2.SrcEp.IfAf
+               size += 2      // s2.SrcEp.Port
+               size += 1      // s2.Flags
+       }
+       return size
+}
+func (m *CnatTranslationUpdate) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(uint8(m.Translation.Vip.Addr.Af))
+       buf.EncodeBytes(m.Translation.Vip.Addr.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint32(uint32(m.Translation.Vip.SwIfIndex))
+       buf.EncodeUint8(uint8(m.Translation.Vip.IfAf))
+       buf.EncodeUint16(m.Translation.Vip.Port)
+       buf.EncodeUint32(m.Translation.ID)
+       buf.EncodeUint8(uint8(m.Translation.IPProto))
+       buf.EncodeUint8(m.Translation.IsRealIP)
+       buf.EncodeUint8(m.Translation.Flags)
+       buf.EncodeUint8(uint8(m.Translation.LbType))
+       buf.EncodeUint32(uint32(len(m.Translation.Paths)))
+       for j1 := 0; j1 < len(m.Translation.Paths); j1++ {
+               var v1 CnatEndpointTuple // Paths
+               if j1 < len(m.Translation.Paths) {
+                       v1 = m.Translation.Paths[j1]
+               }
+               buf.EncodeUint8(uint8(v1.DstEp.Addr.Af))
+               buf.EncodeBytes(v1.DstEp.Addr.Un.XXX_UnionData[:], 16)
+               buf.EncodeUint32(uint32(v1.DstEp.SwIfIndex))
+               buf.EncodeUint8(uint8(v1.DstEp.IfAf))
+               buf.EncodeUint16(v1.DstEp.Port)
+               buf.EncodeUint8(uint8(v1.SrcEp.Addr.Af))
+               buf.EncodeBytes(v1.SrcEp.Addr.Un.XXX_UnionData[:], 16)
+               buf.EncodeUint32(uint32(v1.SrcEp.SwIfIndex))
+               buf.EncodeUint8(uint8(v1.SrcEp.IfAf))
+               buf.EncodeUint16(v1.SrcEp.Port)
+               buf.EncodeUint8(v1.Flags)
+       }
+       return buf.Bytes(), nil
+}
+func (m *CnatTranslationUpdate) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Translation.Vip.Addr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Translation.Vip.Addr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Translation.Vip.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Translation.Vip.IfAf = ip_types.AddressFamily(buf.DecodeUint8())
+       m.Translation.Vip.Port = buf.DecodeUint16()
+       m.Translation.ID = buf.DecodeUint32()
+       m.Translation.IPProto = ip_types.IPProto(buf.DecodeUint8())
+       m.Translation.IsRealIP = buf.DecodeUint8()
+       m.Translation.Flags = buf.DecodeUint8()
+       m.Translation.LbType = CnatLbType(buf.DecodeUint8())
+       m.Translation.NPaths = buf.DecodeUint32()
+       m.Translation.Paths = make([]CnatEndpointTuple, m.Translation.NPaths)
+       for j1 := 0; j1 < len(m.Translation.Paths); j1++ {
+               m.Translation.Paths[j1].DstEp.Addr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+               copy(m.Translation.Paths[j1].DstEp.Addr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+               m.Translation.Paths[j1].DstEp.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+               m.Translation.Paths[j1].DstEp.IfAf = ip_types.AddressFamily(buf.DecodeUint8())
+               m.Translation.Paths[j1].DstEp.Port = buf.DecodeUint16()
+               m.Translation.Paths[j1].SrcEp.Addr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+               copy(m.Translation.Paths[j1].SrcEp.Addr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+               m.Translation.Paths[j1].SrcEp.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+               m.Translation.Paths[j1].SrcEp.IfAf = ip_types.AddressFamily(buf.DecodeUint8())
+               m.Translation.Paths[j1].SrcEp.Port = buf.DecodeUint16()
+               m.Translation.Paths[j1].Flags = buf.DecodeUint8()
+       }
+       return nil
+}
+
+// CnatTranslationUpdateReply defines message 'cnat_translation_update_reply'.
+// InProgress: the message form may change in the future versions
+type CnatTranslationUpdateReply struct {
+       Retval int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       ID     uint32 `binapi:"u32,name=id" json:"id,omitempty"`
+}
+
+func (m *CnatTranslationUpdateReply) Reset()               { *m = CnatTranslationUpdateReply{} }
+func (*CnatTranslationUpdateReply) GetMessageName() string { return "cnat_translation_update_reply" }
+func (*CnatTranslationUpdateReply) GetCrcString() string   { return "e2fc8294" }
+func (*CnatTranslationUpdateReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *CnatTranslationUpdateReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.ID
+       return size
+}
+func (m *CnatTranslationUpdateReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.ID)
+       return buf.Bytes(), nil
+}
+func (m *CnatTranslationUpdateReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.ID = buf.DecodeUint32()
+       return nil
+}
+
+func init() { file_cnat_binapi_init() }
+func file_cnat_binapi_init() {
+       api.RegisterMessage((*CnatGetSnatAddresses)(nil), "cnat_get_snat_addresses_51077d14")
+       api.RegisterMessage((*CnatGetSnatAddressesReply)(nil), "cnat_get_snat_addresses_reply_879513c1")
+       api.RegisterMessage((*CnatSessionDetails)(nil), "cnat_session_details_7e5017c7")
+       api.RegisterMessage((*CnatSessionDump)(nil), "cnat_session_dump_51077d14")
+       api.RegisterMessage((*CnatSessionPurge)(nil), "cnat_session_purge_51077d14")
+       api.RegisterMessage((*CnatSessionPurgeReply)(nil), "cnat_session_purge_reply_e8d4e804")
+       api.RegisterMessage((*CnatSetSnatAddresses)(nil), "cnat_set_snat_addresses_d997e96c")
+       api.RegisterMessage((*CnatSetSnatAddressesReply)(nil), "cnat_set_snat_addresses_reply_e8d4e804")
+       api.RegisterMessage((*CnatSetSnatPolicy)(nil), "cnat_set_snat_policy_d3e6eaf4")
+       api.RegisterMessage((*CnatSetSnatPolicyReply)(nil), "cnat_set_snat_policy_reply_e8d4e804")
+       api.RegisterMessage((*CnatSnatPolicyAddDelExcludePfx)(nil), "cnat_snat_policy_add_del_exclude_pfx_e26dd79a")
+       api.RegisterMessage((*CnatSnatPolicyAddDelExcludePfxReply)(nil), "cnat_snat_policy_add_del_exclude_pfx_reply_e8d4e804")
+       api.RegisterMessage((*CnatSnatPolicyAddDelIf)(nil), "cnat_snat_policy_add_del_if_6828deca")
+       api.RegisterMessage((*CnatSnatPolicyAddDelIfReply)(nil), "cnat_snat_policy_add_del_if_reply_e8d4e804")
+       api.RegisterMessage((*CnatTranslationDel)(nil), "cnat_translation_del_3a91bde5")
+       api.RegisterMessage((*CnatTranslationDelReply)(nil), "cnat_translation_del_reply_e8d4e804")
+       api.RegisterMessage((*CnatTranslationDetails)(nil), "cnat_translation_details_347e1f16")
+       api.RegisterMessage((*CnatTranslationDump)(nil), "cnat_translation_dump_51077d14")
+       api.RegisterMessage((*CnatTranslationUpdate)(nil), "cnat_translation_update_cd5aedf5")
+       api.RegisterMessage((*CnatTranslationUpdateReply)(nil), "cnat_translation_update_reply_e2fc8294")
+}
+
+// Messages returns list of all messages in this module.
+func AllMessages() []api.Message {
+       return []api.Message{
+               (*CnatGetSnatAddresses)(nil),
+               (*CnatGetSnatAddressesReply)(nil),
+               (*CnatSessionDetails)(nil),
+               (*CnatSessionDump)(nil),
+               (*CnatSessionPurge)(nil),
+               (*CnatSessionPurgeReply)(nil),
+               (*CnatSetSnatAddresses)(nil),
+               (*CnatSetSnatAddressesReply)(nil),
+               (*CnatSetSnatPolicy)(nil),
+               (*CnatSetSnatPolicyReply)(nil),
+               (*CnatSnatPolicyAddDelExcludePfx)(nil),
+               (*CnatSnatPolicyAddDelExcludePfxReply)(nil),
+               (*CnatSnatPolicyAddDelIf)(nil),
+               (*CnatSnatPolicyAddDelIfReply)(nil),
+               (*CnatTranslationDel)(nil),
+               (*CnatTranslationDelReply)(nil),
+               (*CnatTranslationDetails)(nil),
+               (*CnatTranslationDump)(nil),
+               (*CnatTranslationUpdate)(nil),
+               (*CnatTranslationUpdateReply)(nil),
+       }
+}
diff --git a/binapi/cnat/cnat_rpc.ba.go b/binapi/cnat/cnat_rpc.ba.go
new file mode 100644 (file)
index 0000000..4a87669
--- /dev/null
@@ -0,0 +1,184 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+
+package cnat
+
+import (
+       "context"
+       "fmt"
+       "io"
+
+       api "git.fd.io/govpp.git/api"
+       vpe "git.fd.io/govpp.git/binapi/vpe"
+)
+
+// RPCService defines RPC service cnat.
+type RPCService interface {
+       CnatGetSnatAddresses(ctx context.Context, in *CnatGetSnatAddresses) (*CnatGetSnatAddressesReply, error)
+       CnatSessionDump(ctx context.Context, in *CnatSessionDump) (RPCService_CnatSessionDumpClient, error)
+       CnatSessionPurge(ctx context.Context, in *CnatSessionPurge) (*CnatSessionPurgeReply, error)
+       CnatSetSnatAddresses(ctx context.Context, in *CnatSetSnatAddresses) (*CnatSetSnatAddressesReply, error)
+       CnatSetSnatPolicy(ctx context.Context, in *CnatSetSnatPolicy) (*CnatSetSnatPolicyReply, error)
+       CnatSnatPolicyAddDelExcludePfx(ctx context.Context, in *CnatSnatPolicyAddDelExcludePfx) (*CnatSnatPolicyAddDelExcludePfxReply, error)
+       CnatSnatPolicyAddDelIf(ctx context.Context, in *CnatSnatPolicyAddDelIf) (*CnatSnatPolicyAddDelIfReply, error)
+       CnatTranslationDel(ctx context.Context, in *CnatTranslationDel) (*CnatTranslationDelReply, error)
+       CnatTranslationDump(ctx context.Context, in *CnatTranslationDump) (RPCService_CnatTranslationDumpClient, error)
+       CnatTranslationUpdate(ctx context.Context, in *CnatTranslationUpdate) (*CnatTranslationUpdateReply, error)
+}
+
+type serviceClient struct {
+       conn api.Connection
+}
+
+func NewServiceClient(conn api.Connection) RPCService {
+       return &serviceClient{conn}
+}
+
+func (c *serviceClient) CnatGetSnatAddresses(ctx context.Context, in *CnatGetSnatAddresses) (*CnatGetSnatAddressesReply, error) {
+       out := new(CnatGetSnatAddressesReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) CnatSessionDump(ctx context.Context, in *CnatSessionDump) (RPCService_CnatSessionDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_CnatSessionDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_CnatSessionDumpClient interface {
+       Recv() (*CnatSessionDetails, error)
+       api.Stream
+}
+
+type serviceClient_CnatSessionDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_CnatSessionDumpClient) Recv() (*CnatSessionDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *CnatSessionDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) CnatSessionPurge(ctx context.Context, in *CnatSessionPurge) (*CnatSessionPurgeReply, error) {
+       out := new(CnatSessionPurgeReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) CnatSetSnatAddresses(ctx context.Context, in *CnatSetSnatAddresses) (*CnatSetSnatAddressesReply, error) {
+       out := new(CnatSetSnatAddressesReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) CnatSetSnatPolicy(ctx context.Context, in *CnatSetSnatPolicy) (*CnatSetSnatPolicyReply, error) {
+       out := new(CnatSetSnatPolicyReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) CnatSnatPolicyAddDelExcludePfx(ctx context.Context, in *CnatSnatPolicyAddDelExcludePfx) (*CnatSnatPolicyAddDelExcludePfxReply, error) {
+       out := new(CnatSnatPolicyAddDelExcludePfxReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) CnatSnatPolicyAddDelIf(ctx context.Context, in *CnatSnatPolicyAddDelIf) (*CnatSnatPolicyAddDelIfReply, error) {
+       out := new(CnatSnatPolicyAddDelIfReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) CnatTranslationDel(ctx context.Context, in *CnatTranslationDel) (*CnatTranslationDelReply, error) {
+       out := new(CnatTranslationDelReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) CnatTranslationDump(ctx context.Context, in *CnatTranslationDump) (RPCService_CnatTranslationDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_CnatTranslationDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_CnatTranslationDumpClient interface {
+       Recv() (*CnatTranslationDetails, error)
+       api.Stream
+}
+
+type serviceClient_CnatTranslationDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_CnatTranslationDumpClient) Recv() (*CnatTranslationDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *CnatTranslationDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) CnatTranslationUpdate(ctx context.Context, in *CnatTranslationUpdate) (*CnatTranslationUpdateReply, error) {
+       out := new(CnatTranslationUpdateReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
diff --git a/binapi/cop/cop.ba.go b/binapi/cop/cop.ba.go
deleted file mode 100644 (file)
index 6159982..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
-// versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
-// source: /usr/share/vpp/api/core/cop.api.json
-
-// Package cop contains generated bindings for API file cop.api.
-//
-// Contents:
-//   4 messages
-//
-package cop
-
-import (
-       api "git.fd.io/govpp.git/api"
-       interface_types "git.fd.io/govpp.git/binapi/interface_types"
-       codec "git.fd.io/govpp.git/codec"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the GoVPP api package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// GoVPP api package needs to be updated.
-const _ = api.GoVppAPIPackageIsVersion2
-
-const (
-       APIFile    = "cop"
-       APIVersion = "1.0.1"
-       VersionCrc = 0xfd7e767d
-)
-
-// CopInterfaceEnableDisable defines message 'cop_interface_enable_disable'.
-type CopInterfaceEnableDisable struct {
-       SwIfIndex     interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
-       EnableDisable bool                           `binapi:"bool,name=enable_disable" json:"enable_disable,omitempty"`
-}
-
-func (m *CopInterfaceEnableDisable) Reset()               { *m = CopInterfaceEnableDisable{} }
-func (*CopInterfaceEnableDisable) GetMessageName() string { return "cop_interface_enable_disable" }
-func (*CopInterfaceEnableDisable) GetCrcString() string   { return "5501adee" }
-func (*CopInterfaceEnableDisable) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *CopInterfaceEnableDisable) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 4 // m.SwIfIndex
-       size += 1 // m.EnableDisable
-       return size
-}
-func (m *CopInterfaceEnableDisable) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeUint32(uint32(m.SwIfIndex))
-       buf.EncodeBool(m.EnableDisable)
-       return buf.Bytes(), nil
-}
-func (m *CopInterfaceEnableDisable) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
-       m.EnableDisable = buf.DecodeBool()
-       return nil
-}
-
-// CopInterfaceEnableDisableReply defines message 'cop_interface_enable_disable_reply'.
-type CopInterfaceEnableDisableReply struct {
-       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
-}
-
-func (m *CopInterfaceEnableDisableReply) Reset() { *m = CopInterfaceEnableDisableReply{} }
-func (*CopInterfaceEnableDisableReply) GetMessageName() string {
-       return "cop_interface_enable_disable_reply"
-}
-func (*CopInterfaceEnableDisableReply) GetCrcString() string { return "e8d4e804" }
-func (*CopInterfaceEnableDisableReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *CopInterfaceEnableDisableReply) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 4 // m.Retval
-       return size
-}
-func (m *CopInterfaceEnableDisableReply) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeInt32(m.Retval)
-       return buf.Bytes(), nil
-}
-func (m *CopInterfaceEnableDisableReply) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.Retval = buf.DecodeInt32()
-       return nil
-}
-
-// CopWhitelistEnableDisable defines message 'cop_whitelist_enable_disable'.
-type CopWhitelistEnableDisable struct {
-       SwIfIndex  interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
-       FibID      uint32                         `binapi:"u32,name=fib_id" json:"fib_id,omitempty"`
-       IP4        bool                           `binapi:"bool,name=ip4" json:"ip4,omitempty"`
-       IP6        bool                           `binapi:"bool,name=ip6" json:"ip6,omitempty"`
-       DefaultCop bool                           `binapi:"bool,name=default_cop" json:"default_cop,omitempty"`
-}
-
-func (m *CopWhitelistEnableDisable) Reset()               { *m = CopWhitelistEnableDisable{} }
-func (*CopWhitelistEnableDisable) GetMessageName() string { return "cop_whitelist_enable_disable" }
-func (*CopWhitelistEnableDisable) GetCrcString() string   { return "debe13ea" }
-func (*CopWhitelistEnableDisable) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *CopWhitelistEnableDisable) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 4 // m.SwIfIndex
-       size += 4 // m.FibID
-       size += 1 // m.IP4
-       size += 1 // m.IP6
-       size += 1 // m.DefaultCop
-       return size
-}
-func (m *CopWhitelistEnableDisable) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeUint32(uint32(m.SwIfIndex))
-       buf.EncodeUint32(m.FibID)
-       buf.EncodeBool(m.IP4)
-       buf.EncodeBool(m.IP6)
-       buf.EncodeBool(m.DefaultCop)
-       return buf.Bytes(), nil
-}
-func (m *CopWhitelistEnableDisable) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
-       m.FibID = buf.DecodeUint32()
-       m.IP4 = buf.DecodeBool()
-       m.IP6 = buf.DecodeBool()
-       m.DefaultCop = buf.DecodeBool()
-       return nil
-}
-
-// CopWhitelistEnableDisableReply defines message 'cop_whitelist_enable_disable_reply'.
-type CopWhitelistEnableDisableReply struct {
-       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
-}
-
-func (m *CopWhitelistEnableDisableReply) Reset() { *m = CopWhitelistEnableDisableReply{} }
-func (*CopWhitelistEnableDisableReply) GetMessageName() string {
-       return "cop_whitelist_enable_disable_reply"
-}
-func (*CopWhitelistEnableDisableReply) GetCrcString() string { return "e8d4e804" }
-func (*CopWhitelistEnableDisableReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *CopWhitelistEnableDisableReply) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 4 // m.Retval
-       return size
-}
-func (m *CopWhitelistEnableDisableReply) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeInt32(m.Retval)
-       return buf.Bytes(), nil
-}
-func (m *CopWhitelistEnableDisableReply) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.Retval = buf.DecodeInt32()
-       return nil
-}
-
-func init() { file_cop_binapi_init() }
-func file_cop_binapi_init() {
-       api.RegisterMessage((*CopInterfaceEnableDisable)(nil), "cop_interface_enable_disable_5501adee")
-       api.RegisterMessage((*CopInterfaceEnableDisableReply)(nil), "cop_interface_enable_disable_reply_e8d4e804")
-       api.RegisterMessage((*CopWhitelistEnableDisable)(nil), "cop_whitelist_enable_disable_debe13ea")
-       api.RegisterMessage((*CopWhitelistEnableDisableReply)(nil), "cop_whitelist_enable_disable_reply_e8d4e804")
-}
-
-// Messages returns list of all messages in this module.
-func AllMessages() []api.Message {
-       return []api.Message{
-               (*CopInterfaceEnableDisable)(nil),
-               (*CopInterfaceEnableDisableReply)(nil),
-               (*CopWhitelistEnableDisable)(nil),
-               (*CopWhitelistEnableDisableReply)(nil),
-       }
-}
diff --git a/binapi/cop/cop_rpc.ba.go b/binapi/cop/cop_rpc.ba.go
deleted file mode 100644 (file)
index 120613d..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
-
-package cop
-
-import (
-       "context"
-
-       api "git.fd.io/govpp.git/api"
-)
-
-// RPCService defines RPC service cop.
-type RPCService interface {
-       CopInterfaceEnableDisable(ctx context.Context, in *CopInterfaceEnableDisable) (*CopInterfaceEnableDisableReply, error)
-       CopWhitelistEnableDisable(ctx context.Context, in *CopWhitelistEnableDisable) (*CopWhitelistEnableDisableReply, error)
-}
-
-type serviceClient struct {
-       conn api.Connection
-}
-
-func NewServiceClient(conn api.Connection) RPCService {
-       return &serviceClient{conn}
-}
-
-func (c *serviceClient) CopInterfaceEnableDisable(ctx context.Context, in *CopInterfaceEnableDisable) (*CopInterfaceEnableDisableReply, error) {
-       out := new(CopInterfaceEnableDisableReply)
-       err := c.conn.Invoke(ctx, in, out)
-       if err != nil {
-               return nil, err
-       }
-       return out, api.RetvalToVPPApiError(out.Retval)
-}
-
-func (c *serviceClient) CopWhitelistEnableDisable(ctx context.Context, in *CopWhitelistEnableDisable) (*CopWhitelistEnableDisableReply, error) {
-       out := new(CopWhitelistEnableDisableReply)
-       err := c.conn.Invoke(ctx, in, out)
-       if err != nil {
-               return nil, err
-       }
-       return out, api.RetvalToVPPApiError(out.Retval)
-}
diff --git a/binapi/crypto/crypto.ba.go b/binapi/crypto/crypto.ba.go
new file mode 100644 (file)
index 0000000..2b8a3b5
--- /dev/null
@@ -0,0 +1,251 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/core/crypto.api.json
+
+// Package crypto contains generated bindings for API file crypto.api.
+//
+// Contents:
+//   2 enums
+//   4 messages
+//
+package crypto
+
+import (
+       "strconv"
+
+       api "git.fd.io/govpp.git/api"
+       codec "git.fd.io/govpp.git/codec"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+const (
+       APIFile    = "crypto"
+       APIVersion = "1.0.1"
+       VersionCrc = 0x22355ec6
+)
+
+// CryptoDispatchMode defines enum 'crypto_dispatch_mode'.
+type CryptoDispatchMode uint8
+
+const (
+       CRYPTO_ASYNC_DISPATCH_POLLING   CryptoDispatchMode = 0
+       CRYPTO_ASYNC_DISPATCH_INTERRUPT CryptoDispatchMode = 1
+)
+
+var (
+       CryptoDispatchMode_name = map[uint8]string{
+               0: "CRYPTO_ASYNC_DISPATCH_POLLING",
+               1: "CRYPTO_ASYNC_DISPATCH_INTERRUPT",
+       }
+       CryptoDispatchMode_value = map[string]uint8{
+               "CRYPTO_ASYNC_DISPATCH_POLLING":   0,
+               "CRYPTO_ASYNC_DISPATCH_INTERRUPT": 1,
+       }
+)
+
+func (x CryptoDispatchMode) String() string {
+       s, ok := CryptoDispatchMode_name[uint8(x)]
+       if ok {
+               return s
+       }
+       return "CryptoDispatchMode(" + strconv.Itoa(int(x)) + ")"
+}
+
+// CryptoOpClassType defines enum 'crypto_op_class_type'.
+type CryptoOpClassType uint8
+
+const (
+       CRYPTO_API_OP_SIMPLE  CryptoOpClassType = 0
+       CRYPTO_API_OP_CHAINED CryptoOpClassType = 1
+       CRYPTO_API_OP_BOTH    CryptoOpClassType = 2
+)
+
+var (
+       CryptoOpClassType_name = map[uint8]string{
+               0: "CRYPTO_API_OP_SIMPLE",
+               1: "CRYPTO_API_OP_CHAINED",
+               2: "CRYPTO_API_OP_BOTH",
+       }
+       CryptoOpClassType_value = map[string]uint8{
+               "CRYPTO_API_OP_SIMPLE":  0,
+               "CRYPTO_API_OP_CHAINED": 1,
+               "CRYPTO_API_OP_BOTH":    2,
+       }
+)
+
+func (x CryptoOpClassType) String() string {
+       s, ok := CryptoOpClassType_name[uint8(x)]
+       if ok {
+               return s
+       }
+       return "CryptoOpClassType(" + strconv.Itoa(int(x)) + ")"
+}
+
+// CryptoSetAsyncDispatch defines message 'crypto_set_async_dispatch'.
+type CryptoSetAsyncDispatch struct {
+       Mode CryptoDispatchMode `binapi:"crypto_dispatch_mode,name=mode" json:"mode,omitempty"`
+}
+
+func (m *CryptoSetAsyncDispatch) Reset()               { *m = CryptoSetAsyncDispatch{} }
+func (*CryptoSetAsyncDispatch) GetMessageName() string { return "crypto_set_async_dispatch" }
+func (*CryptoSetAsyncDispatch) GetCrcString() string   { return "5ca4adc0" }
+func (*CryptoSetAsyncDispatch) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *CryptoSetAsyncDispatch) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.Mode
+       return size
+}
+func (m *CryptoSetAsyncDispatch) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(uint8(m.Mode))
+       return buf.Bytes(), nil
+}
+func (m *CryptoSetAsyncDispatch) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Mode = CryptoDispatchMode(buf.DecodeUint8())
+       return nil
+}
+
+// CryptoSetAsyncDispatchReply defines message 'crypto_set_async_dispatch_reply'.
+type CryptoSetAsyncDispatchReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *CryptoSetAsyncDispatchReply) Reset()               { *m = CryptoSetAsyncDispatchReply{} }
+func (*CryptoSetAsyncDispatchReply) GetMessageName() string { return "crypto_set_async_dispatch_reply" }
+func (*CryptoSetAsyncDispatchReply) GetCrcString() string   { return "e8d4e804" }
+func (*CryptoSetAsyncDispatchReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *CryptoSetAsyncDispatchReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *CryptoSetAsyncDispatchReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *CryptoSetAsyncDispatchReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// CryptoSetHandler defines message 'crypto_set_handler'.
+type CryptoSetHandler struct {
+       AlgName string            `binapi:"string[32],name=alg_name" json:"alg_name,omitempty"`
+       Engine  string            `binapi:"string[16],name=engine" json:"engine,omitempty"`
+       Oct     CryptoOpClassType `binapi:"crypto_op_class_type,name=oct" json:"oct,omitempty"`
+       IsAsync uint8             `binapi:"u8,name=is_async" json:"is_async,omitempty"`
+}
+
+func (m *CryptoSetHandler) Reset()               { *m = CryptoSetHandler{} }
+func (*CryptoSetHandler) GetMessageName() string { return "crypto_set_handler" }
+func (*CryptoSetHandler) GetCrcString() string   { return "ce9ad00d" }
+func (*CryptoSetHandler) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *CryptoSetHandler) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 32 // m.AlgName
+       size += 16 // m.Engine
+       size += 1  // m.Oct
+       size += 1  // m.IsAsync
+       return size
+}
+func (m *CryptoSetHandler) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeString(m.AlgName, 32)
+       buf.EncodeString(m.Engine, 16)
+       buf.EncodeUint8(uint8(m.Oct))
+       buf.EncodeUint8(m.IsAsync)
+       return buf.Bytes(), nil
+}
+func (m *CryptoSetHandler) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.AlgName = buf.DecodeString(32)
+       m.Engine = buf.DecodeString(16)
+       m.Oct = CryptoOpClassType(buf.DecodeUint8())
+       m.IsAsync = buf.DecodeUint8()
+       return nil
+}
+
+// CryptoSetHandlerReply defines message 'crypto_set_handler_reply'.
+type CryptoSetHandlerReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *CryptoSetHandlerReply) Reset()               { *m = CryptoSetHandlerReply{} }
+func (*CryptoSetHandlerReply) GetMessageName() string { return "crypto_set_handler_reply" }
+func (*CryptoSetHandlerReply) GetCrcString() string   { return "e8d4e804" }
+func (*CryptoSetHandlerReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *CryptoSetHandlerReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *CryptoSetHandlerReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *CryptoSetHandlerReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+func init() { file_crypto_binapi_init() }
+func file_crypto_binapi_init() {
+       api.RegisterMessage((*CryptoSetAsyncDispatch)(nil), "crypto_set_async_dispatch_5ca4adc0")
+       api.RegisterMessage((*CryptoSetAsyncDispatchReply)(nil), "crypto_set_async_dispatch_reply_e8d4e804")
+       api.RegisterMessage((*CryptoSetHandler)(nil), "crypto_set_handler_ce9ad00d")
+       api.RegisterMessage((*CryptoSetHandlerReply)(nil), "crypto_set_handler_reply_e8d4e804")
+}
+
+// Messages returns list of all messages in this module.
+func AllMessages() []api.Message {
+       return []api.Message{
+               (*CryptoSetAsyncDispatch)(nil),
+               (*CryptoSetAsyncDispatchReply)(nil),
+               (*CryptoSetHandler)(nil),
+               (*CryptoSetHandlerReply)(nil),
+       }
+}
diff --git a/binapi/crypto/crypto_rpc.ba.go b/binapi/crypto/crypto_rpc.ba.go
new file mode 100644 (file)
index 0000000..e247b33
--- /dev/null
@@ -0,0 +1,41 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+
+package crypto
+
+import (
+       "context"
+
+       api "git.fd.io/govpp.git/api"
+)
+
+// RPCService defines RPC service crypto.
+type RPCService interface {
+       CryptoSetAsyncDispatch(ctx context.Context, in *CryptoSetAsyncDispatch) (*CryptoSetAsyncDispatchReply, error)
+       CryptoSetHandler(ctx context.Context, in *CryptoSetHandler) (*CryptoSetHandlerReply, error)
+}
+
+type serviceClient struct {
+       conn api.Connection
+}
+
+func NewServiceClient(conn api.Connection) RPCService {
+       return &serviceClient{conn}
+}
+
+func (c *serviceClient) CryptoSetAsyncDispatch(ctx context.Context, in *CryptoSetAsyncDispatch) (*CryptoSetAsyncDispatchReply, error) {
+       out := new(CryptoSetAsyncDispatchReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) CryptoSetHandler(ctx context.Context, in *CryptoSetHandler) (*CryptoSetHandlerReply, error) {
+       out := new(CryptoSetHandlerReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
diff --git a/binapi/crypto_sw_scheduler/crypto_sw_scheduler.ba.go b/binapi/crypto_sw_scheduler/crypto_sw_scheduler.ba.go
new file mode 100644 (file)
index 0000000..bfd0e50
--- /dev/null
@@ -0,0 +1,117 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/crypto_sw_scheduler.api.json
+
+// Package crypto_sw_scheduler contains generated bindings for API file crypto_sw_scheduler.api.
+//
+// Contents:
+//   2 messages
+//
+package crypto_sw_scheduler
+
+import (
+       api "git.fd.io/govpp.git/api"
+       codec "git.fd.io/govpp.git/codec"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+const (
+       APIFile    = "crypto_sw_scheduler"
+       APIVersion = "0.1.0"
+       VersionCrc = 0xf4b02951
+)
+
+// CryptoSwSchedulerSetWorker defines message 'crypto_sw_scheduler_set_worker'.
+// InProgress: the message form may change in the future versions
+type CryptoSwSchedulerSetWorker struct {
+       WorkerIndex  uint32 `binapi:"u32,name=worker_index" json:"worker_index,omitempty"`
+       CryptoEnable bool   `binapi:"bool,name=crypto_enable" json:"crypto_enable,omitempty"`
+}
+
+func (m *CryptoSwSchedulerSetWorker) Reset()               { *m = CryptoSwSchedulerSetWorker{} }
+func (*CryptoSwSchedulerSetWorker) GetMessageName() string { return "crypto_sw_scheduler_set_worker" }
+func (*CryptoSwSchedulerSetWorker) GetCrcString() string   { return "b4274502" }
+func (*CryptoSwSchedulerSetWorker) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *CryptoSwSchedulerSetWorker) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.WorkerIndex
+       size += 1 // m.CryptoEnable
+       return size
+}
+func (m *CryptoSwSchedulerSetWorker) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.WorkerIndex)
+       buf.EncodeBool(m.CryptoEnable)
+       return buf.Bytes(), nil
+}
+func (m *CryptoSwSchedulerSetWorker) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.WorkerIndex = buf.DecodeUint32()
+       m.CryptoEnable = buf.DecodeBool()
+       return nil
+}
+
+// CryptoSwSchedulerSetWorkerReply defines message 'crypto_sw_scheduler_set_worker_reply'.
+// InProgress: the message form may change in the future versions
+type CryptoSwSchedulerSetWorkerReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *CryptoSwSchedulerSetWorkerReply) Reset() { *m = CryptoSwSchedulerSetWorkerReply{} }
+func (*CryptoSwSchedulerSetWorkerReply) GetMessageName() string {
+       return "crypto_sw_scheduler_set_worker_reply"
+}
+func (*CryptoSwSchedulerSetWorkerReply) GetCrcString() string { return "e8d4e804" }
+func (*CryptoSwSchedulerSetWorkerReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *CryptoSwSchedulerSetWorkerReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *CryptoSwSchedulerSetWorkerReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *CryptoSwSchedulerSetWorkerReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+func init() { file_crypto_sw_scheduler_binapi_init() }
+func file_crypto_sw_scheduler_binapi_init() {
+       api.RegisterMessage((*CryptoSwSchedulerSetWorker)(nil), "crypto_sw_scheduler_set_worker_b4274502")
+       api.RegisterMessage((*CryptoSwSchedulerSetWorkerReply)(nil), "crypto_sw_scheduler_set_worker_reply_e8d4e804")
+}
+
+// Messages returns list of all messages in this module.
+func AllMessages() []api.Message {
+       return []api.Message{
+               (*CryptoSwSchedulerSetWorker)(nil),
+               (*CryptoSwSchedulerSetWorkerReply)(nil),
+       }
+}
diff --git a/binapi/crypto_sw_scheduler/crypto_sw_scheduler_rpc.ba.go b/binapi/crypto_sw_scheduler/crypto_sw_scheduler_rpc.ba.go
new file mode 100644 (file)
index 0000000..c48c9c1
--- /dev/null
@@ -0,0 +1,31 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+
+package crypto_sw_scheduler
+
+import (
+       "context"
+
+       api "git.fd.io/govpp.git/api"
+)
+
+// RPCService defines RPC service crypto_sw_scheduler.
+type RPCService interface {
+       CryptoSwSchedulerSetWorker(ctx context.Context, in *CryptoSwSchedulerSetWorker) (*CryptoSwSchedulerSetWorkerReply, error)
+}
+
+type serviceClient struct {
+       conn api.Connection
+}
+
+func NewServiceClient(conn api.Connection) RPCService {
+       return &serviceClient{conn}
+}
+
+func (c *serviceClient) CryptoSwSchedulerSetWorker(ctx context.Context, in *CryptoSwSchedulerSetWorker) (*CryptoSwSchedulerSetWorkerReply, error) {
+       out := new(CryptoSwSchedulerSetWorkerReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
index 40394db..fc9925f 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/ct6.api.json
 
 // Package ct6 contains generated bindings for API file ct6.api.
@@ -26,7 +26,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "ct6"
        APIVersion = "1.0.0"
-       VersionCrc = 0xd9691434
+       VersionCrc = 0x5c824a95
 )
 
 // Ct6EnableDisable defines message 'ct6_enable_disable'.
diff --git a/binapi/det44/det44.ba.go b/binapi/det44/det44.ba.go
new file mode 100644 (file)
index 0000000..e94ba8c
--- /dev/null
@@ -0,0 +1,1635 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/det44.api.json
+
+// Package det44 contains generated bindings for API file det44.api.
+//
+// Contents:
+//  38 messages
+//
+package det44
+
+import (
+       api "git.fd.io/govpp.git/api"
+       interface_types "git.fd.io/govpp.git/binapi/interface_types"
+       ip_types "git.fd.io/govpp.git/binapi/ip_types"
+       _ "git.fd.io/govpp.git/binapi/nat_types"
+       codec "git.fd.io/govpp.git/codec"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+const (
+       APIFile    = "det44"
+       APIVersion = "1.0.0"
+       VersionCrc = 0x6d6e88dd
+)
+
+// Det44AddDelMap defines message 'det44_add_del_map'.
+type Det44AddDelMap struct {
+       IsAdd   bool                `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       InAddr  ip_types.IP4Address `binapi:"ip4_address,name=in_addr" json:"in_addr,omitempty"`
+       InPlen  uint8               `binapi:"u8,name=in_plen" json:"in_plen,omitempty"`
+       OutAddr ip_types.IP4Address `binapi:"ip4_address,name=out_addr" json:"out_addr,omitempty"`
+       OutPlen uint8               `binapi:"u8,name=out_plen" json:"out_plen,omitempty"`
+}
+
+func (m *Det44AddDelMap) Reset()               { *m = Det44AddDelMap{} }
+func (*Det44AddDelMap) GetMessageName() string { return "det44_add_del_map" }
+func (*Det44AddDelMap) GetCrcString() string   { return "1150a190" }
+func (*Det44AddDelMap) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Det44AddDelMap) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1     // m.IsAdd
+       size += 1 * 4 // m.InAddr
+       size += 1     // m.InPlen
+       size += 1 * 4 // m.OutAddr
+       size += 1     // m.OutPlen
+       return size
+}
+func (m *Det44AddDelMap) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsAdd)
+       buf.EncodeBytes(m.InAddr[:], 4)
+       buf.EncodeUint8(m.InPlen)
+       buf.EncodeBytes(m.OutAddr[:], 4)
+       buf.EncodeUint8(m.OutPlen)
+       return buf.Bytes(), nil
+}
+func (m *Det44AddDelMap) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeBool()
+       copy(m.InAddr[:], buf.DecodeBytes(4))
+       m.InPlen = buf.DecodeUint8()
+       copy(m.OutAddr[:], buf.DecodeBytes(4))
+       m.OutPlen = buf.DecodeUint8()
+       return nil
+}
+
+// Det44AddDelMapReply defines message 'det44_add_del_map_reply'.
+type Det44AddDelMapReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Det44AddDelMapReply) Reset()               { *m = Det44AddDelMapReply{} }
+func (*Det44AddDelMapReply) GetMessageName() string { return "det44_add_del_map_reply" }
+func (*Det44AddDelMapReply) GetCrcString() string   { return "e8d4e804" }
+func (*Det44AddDelMapReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Det44AddDelMapReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Det44AddDelMapReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Det44AddDelMapReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Det44CloseSessionIn defines message 'det44_close_session_in'.
+type Det44CloseSessionIn struct {
+       InAddr  ip_types.IP4Address `binapi:"ip4_address,name=in_addr" json:"in_addr,omitempty"`
+       InPort  uint16              `binapi:"u16,name=in_port" json:"in_port,omitempty"`
+       ExtAddr ip_types.IP4Address `binapi:"ip4_address,name=ext_addr" json:"ext_addr,omitempty"`
+       ExtPort uint16              `binapi:"u16,name=ext_port" json:"ext_port,omitempty"`
+}
+
+func (m *Det44CloseSessionIn) Reset()               { *m = Det44CloseSessionIn{} }
+func (*Det44CloseSessionIn) GetMessageName() string { return "det44_close_session_in" }
+func (*Det44CloseSessionIn) GetCrcString() string   { return "3c68e073" }
+func (*Det44CloseSessionIn) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Det44CloseSessionIn) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4 // m.InAddr
+       size += 2     // m.InPort
+       size += 1 * 4 // m.ExtAddr
+       size += 2     // m.ExtPort
+       return size
+}
+func (m *Det44CloseSessionIn) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.InAddr[:], 4)
+       buf.EncodeUint16(m.InPort)
+       buf.EncodeBytes(m.ExtAddr[:], 4)
+       buf.EncodeUint16(m.ExtPort)
+       return buf.Bytes(), nil
+}
+func (m *Det44CloseSessionIn) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.InAddr[:], buf.DecodeBytes(4))
+       m.InPort = buf.DecodeUint16()
+       copy(m.ExtAddr[:], buf.DecodeBytes(4))
+       m.ExtPort = buf.DecodeUint16()
+       return nil
+}
+
+// Det44CloseSessionInReply defines message 'det44_close_session_in_reply'.
+type Det44CloseSessionInReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Det44CloseSessionInReply) Reset()               { *m = Det44CloseSessionInReply{} }
+func (*Det44CloseSessionInReply) GetMessageName() string { return "det44_close_session_in_reply" }
+func (*Det44CloseSessionInReply) GetCrcString() string   { return "e8d4e804" }
+func (*Det44CloseSessionInReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Det44CloseSessionInReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Det44CloseSessionInReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Det44CloseSessionInReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Det44CloseSessionOut defines message 'det44_close_session_out'.
+type Det44CloseSessionOut struct {
+       OutAddr ip_types.IP4Address `binapi:"ip4_address,name=out_addr" json:"out_addr,omitempty"`
+       OutPort uint16              `binapi:"u16,name=out_port" json:"out_port,omitempty"`
+       ExtAddr ip_types.IP4Address `binapi:"ip4_address,name=ext_addr" json:"ext_addr,omitempty"`
+       ExtPort uint16              `binapi:"u16,name=ext_port" json:"ext_port,omitempty"`
+}
+
+func (m *Det44CloseSessionOut) Reset()               { *m = Det44CloseSessionOut{} }
+func (*Det44CloseSessionOut) GetMessageName() string { return "det44_close_session_out" }
+func (*Det44CloseSessionOut) GetCrcString() string   { return "f6b259d1" }
+func (*Det44CloseSessionOut) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Det44CloseSessionOut) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4 // m.OutAddr
+       size += 2     // m.OutPort
+       size += 1 * 4 // m.ExtAddr
+       size += 2     // m.ExtPort
+       return size
+}
+func (m *Det44CloseSessionOut) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.OutAddr[:], 4)
+       buf.EncodeUint16(m.OutPort)
+       buf.EncodeBytes(m.ExtAddr[:], 4)
+       buf.EncodeUint16(m.ExtPort)
+       return buf.Bytes(), nil
+}
+func (m *Det44CloseSessionOut) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.OutAddr[:], buf.DecodeBytes(4))
+       m.OutPort = buf.DecodeUint16()
+       copy(m.ExtAddr[:], buf.DecodeBytes(4))
+       m.ExtPort = buf.DecodeUint16()
+       return nil
+}
+
+// Det44CloseSessionOutReply defines message 'det44_close_session_out_reply'.
+type Det44CloseSessionOutReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Det44CloseSessionOutReply) Reset()               { *m = Det44CloseSessionOutReply{} }
+func (*Det44CloseSessionOutReply) GetMessageName() string { return "det44_close_session_out_reply" }
+func (*Det44CloseSessionOutReply) GetCrcString() string   { return "e8d4e804" }
+func (*Det44CloseSessionOutReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Det44CloseSessionOutReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Det44CloseSessionOutReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Det44CloseSessionOutReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Det44Forward defines message 'det44_forward'.
+type Det44Forward struct {
+       InAddr ip_types.IP4Address `binapi:"ip4_address,name=in_addr" json:"in_addr,omitempty"`
+}
+
+func (m *Det44Forward) Reset()               { *m = Det44Forward{} }
+func (*Det44Forward) GetMessageName() string { return "det44_forward" }
+func (*Det44Forward) GetCrcString() string   { return "7f8a89cd" }
+func (*Det44Forward) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Det44Forward) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4 // m.InAddr
+       return size
+}
+func (m *Det44Forward) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.InAddr[:], 4)
+       return buf.Bytes(), nil
+}
+func (m *Det44Forward) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.InAddr[:], buf.DecodeBytes(4))
+       return nil
+}
+
+// Det44ForwardReply defines message 'det44_forward_reply'.
+type Det44ForwardReply struct {
+       Retval    int32               `binapi:"i32,name=retval" json:"retval,omitempty"`
+       OutPortLo uint16              `binapi:"u16,name=out_port_lo" json:"out_port_lo,omitempty"`
+       OutPortHi uint16              `binapi:"u16,name=out_port_hi" json:"out_port_hi,omitempty"`
+       OutAddr   ip_types.IP4Address `binapi:"ip4_address,name=out_addr" json:"out_addr,omitempty"`
+}
+
+func (m *Det44ForwardReply) Reset()               { *m = Det44ForwardReply{} }
+func (*Det44ForwardReply) GetMessageName() string { return "det44_forward_reply" }
+func (*Det44ForwardReply) GetCrcString() string   { return "a8ccbdc0" }
+func (*Det44ForwardReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Det44ForwardReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4     // m.Retval
+       size += 2     // m.OutPortLo
+       size += 2     // m.OutPortHi
+       size += 1 * 4 // m.OutAddr
+       return size
+}
+func (m *Det44ForwardReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint16(m.OutPortLo)
+       buf.EncodeUint16(m.OutPortHi)
+       buf.EncodeBytes(m.OutAddr[:], 4)
+       return buf.Bytes(), nil
+}
+func (m *Det44ForwardReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.OutPortLo = buf.DecodeUint16()
+       m.OutPortHi = buf.DecodeUint16()
+       copy(m.OutAddr[:], buf.DecodeBytes(4))
+       return nil
+}
+
+// Det44GetTimeouts defines message 'det44_get_timeouts'.
+type Det44GetTimeouts struct{}
+
+func (m *Det44GetTimeouts) Reset()               { *m = Det44GetTimeouts{} }
+func (*Det44GetTimeouts) GetMessageName() string { return "det44_get_timeouts" }
+func (*Det44GetTimeouts) GetCrcString() string   { return "51077d14" }
+func (*Det44GetTimeouts) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Det44GetTimeouts) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Det44GetTimeouts) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Det44GetTimeouts) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Det44GetTimeoutsReply defines message 'det44_get_timeouts_reply'.
+// InProgress: the message form may change in the future versions
+type Det44GetTimeoutsReply struct {
+       Retval         int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       UDP            uint32 `binapi:"u32,name=udp" json:"udp,omitempty"`
+       TCPEstablished uint32 `binapi:"u32,name=tcp_established" json:"tcp_established,omitempty"`
+       TCPTransitory  uint32 `binapi:"u32,name=tcp_transitory" json:"tcp_transitory,omitempty"`
+       ICMP           uint32 `binapi:"u32,name=icmp" json:"icmp,omitempty"`
+}
+
+func (m *Det44GetTimeoutsReply) Reset()               { *m = Det44GetTimeoutsReply{} }
+func (*Det44GetTimeoutsReply) GetMessageName() string { return "det44_get_timeouts_reply" }
+func (*Det44GetTimeoutsReply) GetCrcString() string   { return "3c4df4e1" }
+func (*Det44GetTimeoutsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Det44GetTimeoutsReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.UDP
+       size += 4 // m.TCPEstablished
+       size += 4 // m.TCPTransitory
+       size += 4 // m.ICMP
+       return size
+}
+func (m *Det44GetTimeoutsReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.UDP)
+       buf.EncodeUint32(m.TCPEstablished)
+       buf.EncodeUint32(m.TCPTransitory)
+       buf.EncodeUint32(m.ICMP)
+       return buf.Bytes(), nil
+}
+func (m *Det44GetTimeoutsReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.UDP = buf.DecodeUint32()
+       m.TCPEstablished = buf.DecodeUint32()
+       m.TCPTransitory = buf.DecodeUint32()
+       m.ICMP = buf.DecodeUint32()
+       return nil
+}
+
+// Det44InterfaceAddDelFeature defines message 'det44_interface_add_del_feature'.
+// InProgress: the message form may change in the future versions
+type Det44InterfaceAddDelFeature struct {
+       IsAdd     bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       IsInside  bool                           `binapi:"bool,name=is_inside" json:"is_inside,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *Det44InterfaceAddDelFeature) Reset()               { *m = Det44InterfaceAddDelFeature{} }
+func (*Det44InterfaceAddDelFeature) GetMessageName() string { return "det44_interface_add_del_feature" }
+func (*Det44InterfaceAddDelFeature) GetCrcString() string   { return "dc17a836" }
+func (*Det44InterfaceAddDelFeature) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Det44InterfaceAddDelFeature) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.IsAdd
+       size += 1 // m.IsInside
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *Det44InterfaceAddDelFeature) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsAdd)
+       buf.EncodeBool(m.IsInside)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *Det44InterfaceAddDelFeature) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeBool()
+       m.IsInside = buf.DecodeBool()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// Det44InterfaceAddDelFeatureReply defines message 'det44_interface_add_del_feature_reply'.
+// InProgress: the message form may change in the future versions
+type Det44InterfaceAddDelFeatureReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Det44InterfaceAddDelFeatureReply) Reset() { *m = Det44InterfaceAddDelFeatureReply{} }
+func (*Det44InterfaceAddDelFeatureReply) GetMessageName() string {
+       return "det44_interface_add_del_feature_reply"
+}
+func (*Det44InterfaceAddDelFeatureReply) GetCrcString() string { return "e8d4e804" }
+func (*Det44InterfaceAddDelFeatureReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Det44InterfaceAddDelFeatureReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Det44InterfaceAddDelFeatureReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Det44InterfaceAddDelFeatureReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Det44InterfaceDetails defines message 'det44_interface_details'.
+// InProgress: the message form may change in the future versions
+type Det44InterfaceDetails struct {
+       IsInside  bool                           `binapi:"bool,name=is_inside" json:"is_inside,omitempty"`
+       IsOutside bool                           `binapi:"bool,name=is_outside" json:"is_outside,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *Det44InterfaceDetails) Reset()               { *m = Det44InterfaceDetails{} }
+func (*Det44InterfaceDetails) GetMessageName() string { return "det44_interface_details" }
+func (*Det44InterfaceDetails) GetCrcString() string   { return "e60cc5be" }
+func (*Det44InterfaceDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Det44InterfaceDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.IsInside
+       size += 1 // m.IsOutside
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *Det44InterfaceDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsInside)
+       buf.EncodeBool(m.IsOutside)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *Det44InterfaceDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsInside = buf.DecodeBool()
+       m.IsOutside = buf.DecodeBool()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// Det44InterfaceDump defines message 'det44_interface_dump'.
+// InProgress: the message form may change in the future versions
+type Det44InterfaceDump struct{}
+
+func (m *Det44InterfaceDump) Reset()               { *m = Det44InterfaceDump{} }
+func (*Det44InterfaceDump) GetMessageName() string { return "det44_interface_dump" }
+func (*Det44InterfaceDump) GetCrcString() string   { return "51077d14" }
+func (*Det44InterfaceDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Det44InterfaceDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Det44InterfaceDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Det44InterfaceDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Det44MapDetails defines message 'det44_map_details'.
+type Det44MapDetails struct {
+       InAddr       ip_types.IP4Address `binapi:"ip4_address,name=in_addr" json:"in_addr,omitempty"`
+       InPlen       uint8               `binapi:"u8,name=in_plen" json:"in_plen,omitempty"`
+       OutAddr      ip_types.IP4Address `binapi:"ip4_address,name=out_addr" json:"out_addr,omitempty"`
+       OutPlen      uint8               `binapi:"u8,name=out_plen" json:"out_plen,omitempty"`
+       SharingRatio uint32              `binapi:"u32,name=sharing_ratio" json:"sharing_ratio,omitempty"`
+       PortsPerHost uint16              `binapi:"u16,name=ports_per_host" json:"ports_per_host,omitempty"`
+       SesNum       uint32              `binapi:"u32,name=ses_num" json:"ses_num,omitempty"`
+}
+
+func (m *Det44MapDetails) Reset()               { *m = Det44MapDetails{} }
+func (*Det44MapDetails) GetMessageName() string { return "det44_map_details" }
+func (*Det44MapDetails) GetCrcString() string   { return "ad91dc83" }
+func (*Det44MapDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Det44MapDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4 // m.InAddr
+       size += 1     // m.InPlen
+       size += 1 * 4 // m.OutAddr
+       size += 1     // m.OutPlen
+       size += 4     // m.SharingRatio
+       size += 2     // m.PortsPerHost
+       size += 4     // m.SesNum
+       return size
+}
+func (m *Det44MapDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.InAddr[:], 4)
+       buf.EncodeUint8(m.InPlen)
+       buf.EncodeBytes(m.OutAddr[:], 4)
+       buf.EncodeUint8(m.OutPlen)
+       buf.EncodeUint32(m.SharingRatio)
+       buf.EncodeUint16(m.PortsPerHost)
+       buf.EncodeUint32(m.SesNum)
+       return buf.Bytes(), nil
+}
+func (m *Det44MapDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.InAddr[:], buf.DecodeBytes(4))
+       m.InPlen = buf.DecodeUint8()
+       copy(m.OutAddr[:], buf.DecodeBytes(4))
+       m.OutPlen = buf.DecodeUint8()
+       m.SharingRatio = buf.DecodeUint32()
+       m.PortsPerHost = buf.DecodeUint16()
+       m.SesNum = buf.DecodeUint32()
+       return nil
+}
+
+// Det44MapDump defines message 'det44_map_dump'.
+type Det44MapDump struct{}
+
+func (m *Det44MapDump) Reset()               { *m = Det44MapDump{} }
+func (*Det44MapDump) GetMessageName() string { return "det44_map_dump" }
+func (*Det44MapDump) GetCrcString() string   { return "51077d14" }
+func (*Det44MapDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Det44MapDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Det44MapDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Det44MapDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Det44PluginEnableDisable defines message 'det44_plugin_enable_disable'.
+// InProgress: the message form may change in the future versions
+type Det44PluginEnableDisable struct {
+       InsideVrf  uint32 `binapi:"u32,name=inside_vrf" json:"inside_vrf,omitempty"`
+       OutsideVrf uint32 `binapi:"u32,name=outside_vrf" json:"outside_vrf,omitempty"`
+       Enable     bool   `binapi:"bool,name=enable" json:"enable,omitempty"`
+}
+
+func (m *Det44PluginEnableDisable) Reset()               { *m = Det44PluginEnableDisable{} }
+func (*Det44PluginEnableDisable) GetMessageName() string { return "det44_plugin_enable_disable" }
+func (*Det44PluginEnableDisable) GetCrcString() string   { return "617b6bf8" }
+func (*Det44PluginEnableDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Det44PluginEnableDisable) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.InsideVrf
+       size += 4 // m.OutsideVrf
+       size += 1 // m.Enable
+       return size
+}
+func (m *Det44PluginEnableDisable) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.InsideVrf)
+       buf.EncodeUint32(m.OutsideVrf)
+       buf.EncodeBool(m.Enable)
+       return buf.Bytes(), nil
+}
+func (m *Det44PluginEnableDisable) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.InsideVrf = buf.DecodeUint32()
+       m.OutsideVrf = buf.DecodeUint32()
+       m.Enable = buf.DecodeBool()
+       return nil
+}
+
+// Det44PluginEnableDisableReply defines message 'det44_plugin_enable_disable_reply'.
+// InProgress: the message form may change in the future versions
+type Det44PluginEnableDisableReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Det44PluginEnableDisableReply) Reset() { *m = Det44PluginEnableDisableReply{} }
+func (*Det44PluginEnableDisableReply) GetMessageName() string {
+       return "det44_plugin_enable_disable_reply"
+}
+func (*Det44PluginEnableDisableReply) GetCrcString() string { return "e8d4e804" }
+func (*Det44PluginEnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Det44PluginEnableDisableReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Det44PluginEnableDisableReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Det44PluginEnableDisableReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Det44Reverse defines message 'det44_reverse'.
+type Det44Reverse struct {
+       OutPort uint16              `binapi:"u16,name=out_port" json:"out_port,omitempty"`
+       OutAddr ip_types.IP4Address `binapi:"ip4_address,name=out_addr" json:"out_addr,omitempty"`
+}
+
+func (m *Det44Reverse) Reset()               { *m = Det44Reverse{} }
+func (*Det44Reverse) GetMessageName() string { return "det44_reverse" }
+func (*Det44Reverse) GetCrcString() string   { return "a7573fe1" }
+func (*Det44Reverse) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Det44Reverse) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 2     // m.OutPort
+       size += 1 * 4 // m.OutAddr
+       return size
+}
+func (m *Det44Reverse) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint16(m.OutPort)
+       buf.EncodeBytes(m.OutAddr[:], 4)
+       return buf.Bytes(), nil
+}
+func (m *Det44Reverse) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.OutPort = buf.DecodeUint16()
+       copy(m.OutAddr[:], buf.DecodeBytes(4))
+       return nil
+}
+
+// Det44ReverseReply defines message 'det44_reverse_reply'.
+type Det44ReverseReply struct {
+       Retval int32               `binapi:"i32,name=retval" json:"retval,omitempty"`
+       InAddr ip_types.IP4Address `binapi:"ip4_address,name=in_addr" json:"in_addr,omitempty"`
+}
+
+func (m *Det44ReverseReply) Reset()               { *m = Det44ReverseReply{} }
+func (*Det44ReverseReply) GetMessageName() string { return "det44_reverse_reply" }
+func (*Det44ReverseReply) GetCrcString() string   { return "34066d48" }
+func (*Det44ReverseReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Det44ReverseReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4     // m.Retval
+       size += 1 * 4 // m.InAddr
+       return size
+}
+func (m *Det44ReverseReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeBytes(m.InAddr[:], 4)
+       return buf.Bytes(), nil
+}
+func (m *Det44ReverseReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       copy(m.InAddr[:], buf.DecodeBytes(4))
+       return nil
+}
+
+// Det44SessionDetails defines message 'det44_session_details'.
+type Det44SessionDetails struct {
+       InPort  uint16              `binapi:"u16,name=in_port" json:"in_port,omitempty"`
+       ExtAddr ip_types.IP4Address `binapi:"ip4_address,name=ext_addr" json:"ext_addr,omitempty"`
+       ExtPort uint16              `binapi:"u16,name=ext_port" json:"ext_port,omitempty"`
+       OutPort uint16              `binapi:"u16,name=out_port" json:"out_port,omitempty"`
+       State   uint8               `binapi:"u8,name=state" json:"state,omitempty"`
+       Expire  uint32              `binapi:"u32,name=expire" json:"expire,omitempty"`
+}
+
+func (m *Det44SessionDetails) Reset()               { *m = Det44SessionDetails{} }
+func (*Det44SessionDetails) GetMessageName() string { return "det44_session_details" }
+func (*Det44SessionDetails) GetCrcString() string   { return "27f3c171" }
+func (*Det44SessionDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Det44SessionDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 2     // m.InPort
+       size += 1 * 4 // m.ExtAddr
+       size += 2     // m.ExtPort
+       size += 2     // m.OutPort
+       size += 1     // m.State
+       size += 4     // m.Expire
+       return size
+}
+func (m *Det44SessionDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint16(m.InPort)
+       buf.EncodeBytes(m.ExtAddr[:], 4)
+       buf.EncodeUint16(m.ExtPort)
+       buf.EncodeUint16(m.OutPort)
+       buf.EncodeUint8(m.State)
+       buf.EncodeUint32(m.Expire)
+       return buf.Bytes(), nil
+}
+func (m *Det44SessionDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.InPort = buf.DecodeUint16()
+       copy(m.ExtAddr[:], buf.DecodeBytes(4))
+       m.ExtPort = buf.DecodeUint16()
+       m.OutPort = buf.DecodeUint16()
+       m.State = buf.DecodeUint8()
+       m.Expire = buf.DecodeUint32()
+       return nil
+}
+
+// Det44SessionDump defines message 'det44_session_dump'.
+type Det44SessionDump struct {
+       UserAddr ip_types.IP4Address `binapi:"ip4_address,name=user_addr" json:"user_addr,omitempty"`
+}
+
+func (m *Det44SessionDump) Reset()               { *m = Det44SessionDump{} }
+func (*Det44SessionDump) GetMessageName() string { return "det44_session_dump" }
+func (*Det44SessionDump) GetCrcString() string   { return "e45a3af7" }
+func (*Det44SessionDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Det44SessionDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4 // m.UserAddr
+       return size
+}
+func (m *Det44SessionDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.UserAddr[:], 4)
+       return buf.Bytes(), nil
+}
+func (m *Det44SessionDump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.UserAddr[:], buf.DecodeBytes(4))
+       return nil
+}
+
+// Det44SetTimeouts defines message 'det44_set_timeouts'.
+// InProgress: the message form may change in the future versions
+type Det44SetTimeouts struct {
+       UDP            uint32 `binapi:"u32,name=udp" json:"udp,omitempty"`
+       TCPEstablished uint32 `binapi:"u32,name=tcp_established" json:"tcp_established,omitempty"`
+       TCPTransitory  uint32 `binapi:"u32,name=tcp_transitory" json:"tcp_transitory,omitempty"`
+       ICMP           uint32 `binapi:"u32,name=icmp" json:"icmp,omitempty"`
+}
+
+func (m *Det44SetTimeouts) Reset()               { *m = Det44SetTimeouts{} }
+func (*Det44SetTimeouts) GetMessageName() string { return "det44_set_timeouts" }
+func (*Det44SetTimeouts) GetCrcString() string   { return "d4746b16" }
+func (*Det44SetTimeouts) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Det44SetTimeouts) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.UDP
+       size += 4 // m.TCPEstablished
+       size += 4 // m.TCPTransitory
+       size += 4 // m.ICMP
+       return size
+}
+func (m *Det44SetTimeouts) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.UDP)
+       buf.EncodeUint32(m.TCPEstablished)
+       buf.EncodeUint32(m.TCPTransitory)
+       buf.EncodeUint32(m.ICMP)
+       return buf.Bytes(), nil
+}
+func (m *Det44SetTimeouts) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.UDP = buf.DecodeUint32()
+       m.TCPEstablished = buf.DecodeUint32()
+       m.TCPTransitory = buf.DecodeUint32()
+       m.ICMP = buf.DecodeUint32()
+       return nil
+}
+
+// Det44SetTimeoutsReply defines message 'det44_set_timeouts_reply'.
+// InProgress: the message form may change in the future versions
+type Det44SetTimeoutsReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Det44SetTimeoutsReply) Reset()               { *m = Det44SetTimeoutsReply{} }
+func (*Det44SetTimeoutsReply) GetMessageName() string { return "det44_set_timeouts_reply" }
+func (*Det44SetTimeoutsReply) GetCrcString() string   { return "e8d4e804" }
+func (*Det44SetTimeoutsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Det44SetTimeoutsReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Det44SetTimeoutsReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Det44SetTimeoutsReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// NatDetAddDelMap defines message 'nat_det_add_del_map'.
+// Deprecated: the message will be removed in the future versions
+type NatDetAddDelMap struct {
+       IsAdd   bool                `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       InAddr  ip_types.IP4Address `binapi:"ip4_address,name=in_addr" json:"in_addr,omitempty"`
+       InPlen  uint8               `binapi:"u8,name=in_plen" json:"in_plen,omitempty"`
+       OutAddr ip_types.IP4Address `binapi:"ip4_address,name=out_addr" json:"out_addr,omitempty"`
+       OutPlen uint8               `binapi:"u8,name=out_plen" json:"out_plen,omitempty"`
+}
+
+func (m *NatDetAddDelMap) Reset()               { *m = NatDetAddDelMap{} }
+func (*NatDetAddDelMap) GetMessageName() string { return "nat_det_add_del_map" }
+func (*NatDetAddDelMap) GetCrcString() string   { return "1150a190" }
+func (*NatDetAddDelMap) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *NatDetAddDelMap) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1     // m.IsAdd
+       size += 1 * 4 // m.InAddr
+       size += 1     // m.InPlen
+       size += 1 * 4 // m.OutAddr
+       size += 1     // m.OutPlen
+       return size
+}
+func (m *NatDetAddDelMap) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsAdd)
+       buf.EncodeBytes(m.InAddr[:], 4)
+       buf.EncodeUint8(m.InPlen)
+       buf.EncodeBytes(m.OutAddr[:], 4)
+       buf.EncodeUint8(m.OutPlen)
+       return buf.Bytes(), nil
+}
+func (m *NatDetAddDelMap) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeBool()
+       copy(m.InAddr[:], buf.DecodeBytes(4))
+       m.InPlen = buf.DecodeUint8()
+       copy(m.OutAddr[:], buf.DecodeBytes(4))
+       m.OutPlen = buf.DecodeUint8()
+       return nil
+}
+
+// NatDetAddDelMapReply defines message 'nat_det_add_del_map_reply'.
+// Deprecated: the message will be removed in the future versions
+type NatDetAddDelMapReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *NatDetAddDelMapReply) Reset()               { *m = NatDetAddDelMapReply{} }
+func (*NatDetAddDelMapReply) GetMessageName() string { return "nat_det_add_del_map_reply" }
+func (*NatDetAddDelMapReply) GetCrcString() string   { return "e8d4e804" }
+func (*NatDetAddDelMapReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *NatDetAddDelMapReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *NatDetAddDelMapReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *NatDetAddDelMapReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// NatDetCloseSessionIn defines message 'nat_det_close_session_in'.
+// Deprecated: the message will be removed in the future versions
+type NatDetCloseSessionIn struct {
+       InAddr  ip_types.IP4Address `binapi:"ip4_address,name=in_addr" json:"in_addr,omitempty"`
+       InPort  uint16              `binapi:"u16,name=in_port" json:"in_port,omitempty"`
+       ExtAddr ip_types.IP4Address `binapi:"ip4_address,name=ext_addr" json:"ext_addr,omitempty"`
+       ExtPort uint16              `binapi:"u16,name=ext_port" json:"ext_port,omitempty"`
+}
+
+func (m *NatDetCloseSessionIn) Reset()               { *m = NatDetCloseSessionIn{} }
+func (*NatDetCloseSessionIn) GetMessageName() string { return "nat_det_close_session_in" }
+func (*NatDetCloseSessionIn) GetCrcString() string   { return "3c68e073" }
+func (*NatDetCloseSessionIn) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *NatDetCloseSessionIn) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4 // m.InAddr
+       size += 2     // m.InPort
+       size += 1 * 4 // m.ExtAddr
+       size += 2     // m.ExtPort
+       return size
+}
+func (m *NatDetCloseSessionIn) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.InAddr[:], 4)
+       buf.EncodeUint16(m.InPort)
+       buf.EncodeBytes(m.ExtAddr[:], 4)
+       buf.EncodeUint16(m.ExtPort)
+       return buf.Bytes(), nil
+}
+func (m *NatDetCloseSessionIn) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.InAddr[:], buf.DecodeBytes(4))
+       m.InPort = buf.DecodeUint16()
+       copy(m.ExtAddr[:], buf.DecodeBytes(4))
+       m.ExtPort = buf.DecodeUint16()
+       return nil
+}
+
+// NatDetCloseSessionInReply defines message 'nat_det_close_session_in_reply'.
+// Deprecated: the message will be removed in the future versions
+type NatDetCloseSessionInReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *NatDetCloseSessionInReply) Reset()               { *m = NatDetCloseSessionInReply{} }
+func (*NatDetCloseSessionInReply) GetMessageName() string { return "nat_det_close_session_in_reply" }
+func (*NatDetCloseSessionInReply) GetCrcString() string   { return "e8d4e804" }
+func (*NatDetCloseSessionInReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *NatDetCloseSessionInReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *NatDetCloseSessionInReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *NatDetCloseSessionInReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// NatDetCloseSessionOut defines message 'nat_det_close_session_out'.
+// Deprecated: the message will be removed in the future versions
+type NatDetCloseSessionOut struct {
+       OutAddr ip_types.IP4Address `binapi:"ip4_address,name=out_addr" json:"out_addr,omitempty"`
+       OutPort uint16              `binapi:"u16,name=out_port" json:"out_port,omitempty"`
+       ExtAddr ip_types.IP4Address `binapi:"ip4_address,name=ext_addr" json:"ext_addr,omitempty"`
+       ExtPort uint16              `binapi:"u16,name=ext_port" json:"ext_port,omitempty"`
+}
+
+func (m *NatDetCloseSessionOut) Reset()               { *m = NatDetCloseSessionOut{} }
+func (*NatDetCloseSessionOut) GetMessageName() string { return "nat_det_close_session_out" }
+func (*NatDetCloseSessionOut) GetCrcString() string   { return "f6b259d1" }
+func (*NatDetCloseSessionOut) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *NatDetCloseSessionOut) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4 // m.OutAddr
+       size += 2     // m.OutPort
+       size += 1 * 4 // m.ExtAddr
+       size += 2     // m.ExtPort
+       return size
+}
+func (m *NatDetCloseSessionOut) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.OutAddr[:], 4)
+       buf.EncodeUint16(m.OutPort)
+       buf.EncodeBytes(m.ExtAddr[:], 4)
+       buf.EncodeUint16(m.ExtPort)
+       return buf.Bytes(), nil
+}
+func (m *NatDetCloseSessionOut) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.OutAddr[:], buf.DecodeBytes(4))
+       m.OutPort = buf.DecodeUint16()
+       copy(m.ExtAddr[:], buf.DecodeBytes(4))
+       m.ExtPort = buf.DecodeUint16()
+       return nil
+}
+
+// NatDetCloseSessionOutReply defines message 'nat_det_close_session_out_reply'.
+// Deprecated: the message will be removed in the future versions
+type NatDetCloseSessionOutReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *NatDetCloseSessionOutReply) Reset()               { *m = NatDetCloseSessionOutReply{} }
+func (*NatDetCloseSessionOutReply) GetMessageName() string { return "nat_det_close_session_out_reply" }
+func (*NatDetCloseSessionOutReply) GetCrcString() string   { return "e8d4e804" }
+func (*NatDetCloseSessionOutReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *NatDetCloseSessionOutReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *NatDetCloseSessionOutReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *NatDetCloseSessionOutReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// NatDetForward defines message 'nat_det_forward'.
+// Deprecated: the message will be removed in the future versions
+type NatDetForward struct {
+       InAddr ip_types.IP4Address `binapi:"ip4_address,name=in_addr" json:"in_addr,omitempty"`
+}
+
+func (m *NatDetForward) Reset()               { *m = NatDetForward{} }
+func (*NatDetForward) GetMessageName() string { return "nat_det_forward" }
+func (*NatDetForward) GetCrcString() string   { return "7f8a89cd" }
+func (*NatDetForward) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *NatDetForward) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4 // m.InAddr
+       return size
+}
+func (m *NatDetForward) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.InAddr[:], 4)
+       return buf.Bytes(), nil
+}
+func (m *NatDetForward) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.InAddr[:], buf.DecodeBytes(4))
+       return nil
+}
+
+// NatDetForwardReply defines message 'nat_det_forward_reply'.
+// Deprecated: the message will be removed in the future versions
+type NatDetForwardReply struct {
+       Retval    int32               `binapi:"i32,name=retval" json:"retval,omitempty"`
+       OutPortLo uint16              `binapi:"u16,name=out_port_lo" json:"out_port_lo,omitempty"`
+       OutPortHi uint16              `binapi:"u16,name=out_port_hi" json:"out_port_hi,omitempty"`
+       OutAddr   ip_types.IP4Address `binapi:"ip4_address,name=out_addr" json:"out_addr,omitempty"`
+}
+
+func (m *NatDetForwardReply) Reset()               { *m = NatDetForwardReply{} }
+func (*NatDetForwardReply) GetMessageName() string { return "nat_det_forward_reply" }
+func (*NatDetForwardReply) GetCrcString() string   { return "a8ccbdc0" }
+func (*NatDetForwardReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *NatDetForwardReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4     // m.Retval
+       size += 2     // m.OutPortLo
+       size += 2     // m.OutPortHi
+       size += 1 * 4 // m.OutAddr
+       return size
+}
+func (m *NatDetForwardReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint16(m.OutPortLo)
+       buf.EncodeUint16(m.OutPortHi)
+       buf.EncodeBytes(m.OutAddr[:], 4)
+       return buf.Bytes(), nil
+}
+func (m *NatDetForwardReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.OutPortLo = buf.DecodeUint16()
+       m.OutPortHi = buf.DecodeUint16()
+       copy(m.OutAddr[:], buf.DecodeBytes(4))
+       return nil
+}
+
+// NatDetMapDetails defines message 'nat_det_map_details'.
+// Deprecated: the message will be removed in the future versions
+type NatDetMapDetails struct {
+       InAddr       ip_types.IP4Address `binapi:"ip4_address,name=in_addr" json:"in_addr,omitempty"`
+       InPlen       uint8               `binapi:"u8,name=in_plen" json:"in_plen,omitempty"`
+       OutAddr      ip_types.IP4Address `binapi:"ip4_address,name=out_addr" json:"out_addr,omitempty"`
+       OutPlen      uint8               `binapi:"u8,name=out_plen" json:"out_plen,omitempty"`
+       SharingRatio uint32              `binapi:"u32,name=sharing_ratio" json:"sharing_ratio,omitempty"`
+       PortsPerHost uint16              `binapi:"u16,name=ports_per_host" json:"ports_per_host,omitempty"`
+       SesNum       uint32              `binapi:"u32,name=ses_num" json:"ses_num,omitempty"`
+}
+
+func (m *NatDetMapDetails) Reset()               { *m = NatDetMapDetails{} }
+func (*NatDetMapDetails) GetMessageName() string { return "nat_det_map_details" }
+func (*NatDetMapDetails) GetCrcString() string   { return "ad91dc83" }
+func (*NatDetMapDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *NatDetMapDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4 // m.InAddr
+       size += 1     // m.InPlen
+       size += 1 * 4 // m.OutAddr
+       size += 1     // m.OutPlen
+       size += 4     // m.SharingRatio
+       size += 2     // m.PortsPerHost
+       size += 4     // m.SesNum
+       return size
+}
+func (m *NatDetMapDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.InAddr[:], 4)
+       buf.EncodeUint8(m.InPlen)
+       buf.EncodeBytes(m.OutAddr[:], 4)
+       buf.EncodeUint8(m.OutPlen)
+       buf.EncodeUint32(m.SharingRatio)
+       buf.EncodeUint16(m.PortsPerHost)
+       buf.EncodeUint32(m.SesNum)
+       return buf.Bytes(), nil
+}
+func (m *NatDetMapDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.InAddr[:], buf.DecodeBytes(4))
+       m.InPlen = buf.DecodeUint8()
+       copy(m.OutAddr[:], buf.DecodeBytes(4))
+       m.OutPlen = buf.DecodeUint8()
+       m.SharingRatio = buf.DecodeUint32()
+       m.PortsPerHost = buf.DecodeUint16()
+       m.SesNum = buf.DecodeUint32()
+       return nil
+}
+
+// NatDetMapDump defines message 'nat_det_map_dump'.
+// Deprecated: the message will be removed in the future versions
+type NatDetMapDump struct{}
+
+func (m *NatDetMapDump) Reset()               { *m = NatDetMapDump{} }
+func (*NatDetMapDump) GetMessageName() string { return "nat_det_map_dump" }
+func (*NatDetMapDump) GetCrcString() string   { return "51077d14" }
+func (*NatDetMapDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *NatDetMapDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *NatDetMapDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *NatDetMapDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+// NatDetReverse defines message 'nat_det_reverse'.
+// Deprecated: the message will be removed in the future versions
+type NatDetReverse struct {
+       OutPort uint16              `binapi:"u16,name=out_port" json:"out_port,omitempty"`
+       OutAddr ip_types.IP4Address `binapi:"ip4_address,name=out_addr" json:"out_addr,omitempty"`
+}
+
+func (m *NatDetReverse) Reset()               { *m = NatDetReverse{} }
+func (*NatDetReverse) GetMessageName() string { return "nat_det_reverse" }
+func (*NatDetReverse) GetCrcString() string   { return "a7573fe1" }
+func (*NatDetReverse) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *NatDetReverse) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 2     // m.OutPort
+       size += 1 * 4 // m.OutAddr
+       return size
+}
+func (m *NatDetReverse) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint16(m.OutPort)
+       buf.EncodeBytes(m.OutAddr[:], 4)
+       return buf.Bytes(), nil
+}
+func (m *NatDetReverse) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.OutPort = buf.DecodeUint16()
+       copy(m.OutAddr[:], buf.DecodeBytes(4))
+       return nil
+}
+
+// NatDetReverseReply defines message 'nat_det_reverse_reply'.
+// Deprecated: the message will be removed in the future versions
+type NatDetReverseReply struct {
+       Retval int32               `binapi:"i32,name=retval" json:"retval,omitempty"`
+       InAddr ip_types.IP4Address `binapi:"ip4_address,name=in_addr" json:"in_addr,omitempty"`
+}
+
+func (m *NatDetReverseReply) Reset()               { *m = NatDetReverseReply{} }
+func (*NatDetReverseReply) GetMessageName() string { return "nat_det_reverse_reply" }
+func (*NatDetReverseReply) GetCrcString() string   { return "34066d48" }
+func (*NatDetReverseReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *NatDetReverseReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4     // m.Retval
+       size += 1 * 4 // m.InAddr
+       return size
+}
+func (m *NatDetReverseReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeBytes(m.InAddr[:], 4)
+       return buf.Bytes(), nil
+}
+func (m *NatDetReverseReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       copy(m.InAddr[:], buf.DecodeBytes(4))
+       return nil
+}
+
+// NatDetSessionDetails defines message 'nat_det_session_details'.
+// Deprecated: the message will be removed in the future versions
+type NatDetSessionDetails struct {
+       InPort  uint16              `binapi:"u16,name=in_port" json:"in_port,omitempty"`
+       ExtAddr ip_types.IP4Address `binapi:"ip4_address,name=ext_addr" json:"ext_addr,omitempty"`
+       ExtPort uint16              `binapi:"u16,name=ext_port" json:"ext_port,omitempty"`
+       OutPort uint16              `binapi:"u16,name=out_port" json:"out_port,omitempty"`
+       State   uint8               `binapi:"u8,name=state" json:"state,omitempty"`
+       Expire  uint32              `binapi:"u32,name=expire" json:"expire,omitempty"`
+}
+
+func (m *NatDetSessionDetails) Reset()               { *m = NatDetSessionDetails{} }
+func (*NatDetSessionDetails) GetMessageName() string { return "nat_det_session_details" }
+func (*NatDetSessionDetails) GetCrcString() string   { return "27f3c171" }
+func (*NatDetSessionDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *NatDetSessionDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 2     // m.InPort
+       size += 1 * 4 // m.ExtAddr
+       size += 2     // m.ExtPort
+       size += 2     // m.OutPort
+       size += 1     // m.State
+       size += 4     // m.Expire
+       return size
+}
+func (m *NatDetSessionDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint16(m.InPort)
+       buf.EncodeBytes(m.ExtAddr[:], 4)
+       buf.EncodeUint16(m.ExtPort)
+       buf.EncodeUint16(m.OutPort)
+       buf.EncodeUint8(m.State)
+       buf.EncodeUint32(m.Expire)
+       return buf.Bytes(), nil
+}
+func (m *NatDetSessionDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.InPort = buf.DecodeUint16()
+       copy(m.ExtAddr[:], buf.DecodeBytes(4))
+       m.ExtPort = buf.DecodeUint16()
+       m.OutPort = buf.DecodeUint16()
+       m.State = buf.DecodeUint8()
+       m.Expire = buf.DecodeUint32()
+       return nil
+}
+
+// NatDetSessionDump defines message 'nat_det_session_dump'.
+// Deprecated: the message will be removed in the future versions
+type NatDetSessionDump struct {
+       UserAddr ip_types.IP4Address `binapi:"ip4_address,name=user_addr" json:"user_addr,omitempty"`
+}
+
+func (m *NatDetSessionDump) Reset()               { *m = NatDetSessionDump{} }
+func (*NatDetSessionDump) GetMessageName() string { return "nat_det_session_dump" }
+func (*NatDetSessionDump) GetCrcString() string   { return "e45a3af7" }
+func (*NatDetSessionDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *NatDetSessionDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4 // m.UserAddr
+       return size
+}
+func (m *NatDetSessionDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.UserAddr[:], 4)
+       return buf.Bytes(), nil
+}
+func (m *NatDetSessionDump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.UserAddr[:], buf.DecodeBytes(4))
+       return nil
+}
+
+func init() { file_det44_binapi_init() }
+func file_det44_binapi_init() {
+       api.RegisterMessage((*Det44AddDelMap)(nil), "det44_add_del_map_1150a190")
+       api.RegisterMessage((*Det44AddDelMapReply)(nil), "det44_add_del_map_reply_e8d4e804")
+       api.RegisterMessage((*Det44CloseSessionIn)(nil), "det44_close_session_in_3c68e073")
+       api.RegisterMessage((*Det44CloseSessionInReply)(nil), "det44_close_session_in_reply_e8d4e804")
+       api.RegisterMessage((*Det44CloseSessionOut)(nil), "det44_close_session_out_f6b259d1")
+       api.RegisterMessage((*Det44CloseSessionOutReply)(nil), "det44_close_session_out_reply_e8d4e804")
+       api.RegisterMessage((*Det44Forward)(nil), "det44_forward_7f8a89cd")
+       api.RegisterMessage((*Det44ForwardReply)(nil), "det44_forward_reply_a8ccbdc0")
+       api.RegisterMessage((*Det44GetTimeouts)(nil), "det44_get_timeouts_51077d14")
+       api.RegisterMessage((*Det44GetTimeoutsReply)(nil), "det44_get_timeouts_reply_3c4df4e1")
+       api.RegisterMessage((*Det44InterfaceAddDelFeature)(nil), "det44_interface_add_del_feature_dc17a836")
+       api.RegisterMessage((*Det44InterfaceAddDelFeatureReply)(nil), "det44_interface_add_del_feature_reply_e8d4e804")
+       api.RegisterMessage((*Det44InterfaceDetails)(nil), "det44_interface_details_e60cc5be")
+       api.RegisterMessage((*Det44InterfaceDump)(nil), "det44_interface_dump_51077d14")
+       api.RegisterMessage((*Det44MapDetails)(nil), "det44_map_details_ad91dc83")
+       api.RegisterMessage((*Det44MapDump)(nil), "det44_map_dump_51077d14")
+       api.RegisterMessage((*Det44PluginEnableDisable)(nil), "det44_plugin_enable_disable_617b6bf8")
+       api.RegisterMessage((*Det44PluginEnableDisableReply)(nil), "det44_plugin_enable_disable_reply_e8d4e804")
+       api.RegisterMessage((*Det44Reverse)(nil), "det44_reverse_a7573fe1")
+       api.RegisterMessage((*Det44ReverseReply)(nil), "det44_reverse_reply_34066d48")
+       api.RegisterMessage((*Det44SessionDetails)(nil), "det44_session_details_27f3c171")
+       api.RegisterMessage((*Det44SessionDump)(nil), "det44_session_dump_e45a3af7")
+       api.RegisterMessage((*Det44SetTimeouts)(nil), "det44_set_timeouts_d4746b16")
+       api.RegisterMessage((*Det44SetTimeoutsReply)(nil), "det44_set_timeouts_reply_e8d4e804")
+       api.RegisterMessage((*NatDetAddDelMap)(nil), "nat_det_add_del_map_1150a190")
+       api.RegisterMessage((*NatDetAddDelMapReply)(nil), "nat_det_add_del_map_reply_e8d4e804")
+       api.RegisterMessage((*NatDetCloseSessionIn)(nil), "nat_det_close_session_in_3c68e073")
+       api.RegisterMessage((*NatDetCloseSessionInReply)(nil), "nat_det_close_session_in_reply_e8d4e804")
+       api.RegisterMessage((*NatDetCloseSessionOut)(nil), "nat_det_close_session_out_f6b259d1")
+       api.RegisterMessage((*NatDetCloseSessionOutReply)(nil), "nat_det_close_session_out_reply_e8d4e804")
+       api.RegisterMessage((*NatDetForward)(nil), "nat_det_forward_7f8a89cd")
+       api.RegisterMessage((*NatDetForwardReply)(nil), "nat_det_forward_reply_a8ccbdc0")
+       api.RegisterMessage((*NatDetMapDetails)(nil), "nat_det_map_details_ad91dc83")
+       api.RegisterMessage((*NatDetMapDump)(nil), "nat_det_map_dump_51077d14")
+       api.RegisterMessage((*NatDetReverse)(nil), "nat_det_reverse_a7573fe1")
+       api.RegisterMessage((*NatDetReverseReply)(nil), "nat_det_reverse_reply_34066d48")
+       api.RegisterMessage((*NatDetSessionDetails)(nil), "nat_det_session_details_27f3c171")
+       api.RegisterMessage((*NatDetSessionDump)(nil), "nat_det_session_dump_e45a3af7")
+}
+
+// Messages returns list of all messages in this module.
+func AllMessages() []api.Message {
+       return []api.Message{
+               (*Det44AddDelMap)(nil),
+               (*Det44AddDelMapReply)(nil),
+               (*Det44CloseSessionIn)(nil),
+               (*Det44CloseSessionInReply)(nil),
+               (*Det44CloseSessionOut)(nil),
+               (*Det44CloseSessionOutReply)(nil),
+               (*Det44Forward)(nil),
+               (*Det44ForwardReply)(nil),
+               (*Det44GetTimeouts)(nil),
+               (*Det44GetTimeoutsReply)(nil),
+               (*Det44InterfaceAddDelFeature)(nil),
+               (*Det44InterfaceAddDelFeatureReply)(nil),
+               (*Det44InterfaceDetails)(nil),
+               (*Det44InterfaceDump)(nil),
+               (*Det44MapDetails)(nil),
+               (*Det44MapDump)(nil),
+               (*Det44PluginEnableDisable)(nil),
+               (*Det44PluginEnableDisableReply)(nil),
+               (*Det44Reverse)(nil),
+               (*Det44ReverseReply)(nil),
+               (*Det44SessionDetails)(nil),
+               (*Det44SessionDump)(nil),
+               (*Det44SetTimeouts)(nil),
+               (*Det44SetTimeoutsReply)(nil),
+               (*NatDetAddDelMap)(nil),
+               (*NatDetAddDelMapReply)(nil),
+               (*NatDetCloseSessionIn)(nil),
+               (*NatDetCloseSessionInReply)(nil),
+               (*NatDetCloseSessionOut)(nil),
+               (*NatDetCloseSessionOutReply)(nil),
+               (*NatDetForward)(nil),
+               (*NatDetForwardReply)(nil),
+               (*NatDetMapDetails)(nil),
+               (*NatDetMapDump)(nil),
+               (*NatDetReverse)(nil),
+               (*NatDetReverseReply)(nil),
+               (*NatDetSessionDetails)(nil),
+               (*NatDetSessionDump)(nil),
+       }
+}
diff --git a/binapi/det44/det44_rpc.ba.go b/binapi/det44/det44_rpc.ba.go
new file mode 100644 (file)
index 0000000..7efcc30
--- /dev/null
@@ -0,0 +1,364 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+
+package det44
+
+import (
+       "context"
+       "fmt"
+       "io"
+
+       api "git.fd.io/govpp.git/api"
+       vpe "git.fd.io/govpp.git/binapi/vpe"
+)
+
+// RPCService defines RPC service det44.
+type RPCService interface {
+       Det44AddDelMap(ctx context.Context, in *Det44AddDelMap) (*Det44AddDelMapReply, error)
+       Det44CloseSessionIn(ctx context.Context, in *Det44CloseSessionIn) (*Det44CloseSessionInReply, error)
+       Det44CloseSessionOut(ctx context.Context, in *Det44CloseSessionOut) (*Det44CloseSessionOutReply, error)
+       Det44Forward(ctx context.Context, in *Det44Forward) (*Det44ForwardReply, error)
+       Det44GetTimeouts(ctx context.Context, in *Det44GetTimeouts) (*Det44GetTimeoutsReply, error)
+       Det44InterfaceAddDelFeature(ctx context.Context, in *Det44InterfaceAddDelFeature) (*Det44InterfaceAddDelFeatureReply, error)
+       Det44InterfaceDump(ctx context.Context, in *Det44InterfaceDump) (RPCService_Det44InterfaceDumpClient, error)
+       Det44MapDump(ctx context.Context, in *Det44MapDump) (RPCService_Det44MapDumpClient, error)
+       Det44PluginEnableDisable(ctx context.Context, in *Det44PluginEnableDisable) (*Det44PluginEnableDisableReply, error)
+       Det44Reverse(ctx context.Context, in *Det44Reverse) (*Det44ReverseReply, error)
+       Det44SessionDump(ctx context.Context, in *Det44SessionDump) (RPCService_Det44SessionDumpClient, error)
+       Det44SetTimeouts(ctx context.Context, in *Det44SetTimeouts) (*Det44SetTimeoutsReply, error)
+       NatDetAddDelMap(ctx context.Context, in *NatDetAddDelMap) (*NatDetAddDelMapReply, error)
+       NatDetCloseSessionIn(ctx context.Context, in *NatDetCloseSessionIn) (*NatDetCloseSessionInReply, error)
+       NatDetCloseSessionOut(ctx context.Context, in *NatDetCloseSessionOut) (*NatDetCloseSessionOutReply, error)
+       NatDetForward(ctx context.Context, in *NatDetForward) (*NatDetForwardReply, error)
+       NatDetMapDump(ctx context.Context, in *NatDetMapDump) (RPCService_NatDetMapDumpClient, error)
+       NatDetReverse(ctx context.Context, in *NatDetReverse) (*NatDetReverseReply, error)
+       NatDetSessionDump(ctx context.Context, in *NatDetSessionDump) (RPCService_NatDetSessionDumpClient, error)
+}
+
+type serviceClient struct {
+       conn api.Connection
+}
+
+func NewServiceClient(conn api.Connection) RPCService {
+       return &serviceClient{conn}
+}
+
+func (c *serviceClient) Det44AddDelMap(ctx context.Context, in *Det44AddDelMap) (*Det44AddDelMapReply, error) {
+       out := new(Det44AddDelMapReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Det44CloseSessionIn(ctx context.Context, in *Det44CloseSessionIn) (*Det44CloseSessionInReply, error) {
+       out := new(Det44CloseSessionInReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Det44CloseSessionOut(ctx context.Context, in *Det44CloseSessionOut) (*Det44CloseSessionOutReply, error) {
+       out := new(Det44CloseSessionOutReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Det44Forward(ctx context.Context, in *Det44Forward) (*Det44ForwardReply, error) {
+       out := new(Det44ForwardReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Det44GetTimeouts(ctx context.Context, in *Det44GetTimeouts) (*Det44GetTimeoutsReply, error) {
+       out := new(Det44GetTimeoutsReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Det44InterfaceAddDelFeature(ctx context.Context, in *Det44InterfaceAddDelFeature) (*Det44InterfaceAddDelFeatureReply, error) {
+       out := new(Det44InterfaceAddDelFeatureReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Det44InterfaceDump(ctx context.Context, in *Det44InterfaceDump) (RPCService_Det44InterfaceDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Det44InterfaceDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Det44InterfaceDumpClient interface {
+       Recv() (*Det44InterfaceDetails, error)
+       api.Stream
+}
+
+type serviceClient_Det44InterfaceDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Det44InterfaceDumpClient) Recv() (*Det44InterfaceDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Det44InterfaceDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) Det44MapDump(ctx context.Context, in *Det44MapDump) (RPCService_Det44MapDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Det44MapDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Det44MapDumpClient interface {
+       Recv() (*Det44MapDetails, error)
+       api.Stream
+}
+
+type serviceClient_Det44MapDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Det44MapDumpClient) Recv() (*Det44MapDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Det44MapDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) Det44PluginEnableDisable(ctx context.Context, in *Det44PluginEnableDisable) (*Det44PluginEnableDisableReply, error) {
+       out := new(Det44PluginEnableDisableReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Det44Reverse(ctx context.Context, in *Det44Reverse) (*Det44ReverseReply, error) {
+       out := new(Det44ReverseReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Det44SessionDump(ctx context.Context, in *Det44SessionDump) (RPCService_Det44SessionDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Det44SessionDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Det44SessionDumpClient interface {
+       Recv() (*Det44SessionDetails, error)
+       api.Stream
+}
+
+type serviceClient_Det44SessionDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Det44SessionDumpClient) Recv() (*Det44SessionDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Det44SessionDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) Det44SetTimeouts(ctx context.Context, in *Det44SetTimeouts) (*Det44SetTimeoutsReply, error) {
+       out := new(Det44SetTimeoutsReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) NatDetAddDelMap(ctx context.Context, in *NatDetAddDelMap) (*NatDetAddDelMapReply, error) {
+       out := new(NatDetAddDelMapReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) NatDetCloseSessionIn(ctx context.Context, in *NatDetCloseSessionIn) (*NatDetCloseSessionInReply, error) {
+       out := new(NatDetCloseSessionInReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) NatDetCloseSessionOut(ctx context.Context, in *NatDetCloseSessionOut) (*NatDetCloseSessionOutReply, error) {
+       out := new(NatDetCloseSessionOutReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) NatDetForward(ctx context.Context, in *NatDetForward) (*NatDetForwardReply, error) {
+       out := new(NatDetForwardReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) NatDetMapDump(ctx context.Context, in *NatDetMapDump) (RPCService_NatDetMapDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_NatDetMapDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_NatDetMapDumpClient interface {
+       Recv() (*NatDetMapDetails, error)
+       api.Stream
+}
+
+type serviceClient_NatDetMapDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_NatDetMapDumpClient) Recv() (*NatDetMapDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *NatDetMapDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) NatDetReverse(ctx context.Context, in *NatDetReverse) (*NatDetReverseReply, error) {
+       out := new(NatDetReverseReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) NatDetSessionDump(ctx context.Context, in *NatDetSessionDump) (RPCService_NatDetSessionDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_NatDetSessionDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_NatDetSessionDumpClient interface {
+       Recv() (*NatDetSessionDetails, error)
+       api.Stream
+}
+
+type serviceClient_NatDetSessionDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_NatDetSessionDumpClient) Recv() (*NatDetSessionDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *NatDetSessionDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
index db84847..20cd356 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/dhcp.api.json
 
 // Package dhcp contains generated bindings for API file dhcp.api.
@@ -32,7 +32,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "dhcp"
        APIVersion = "3.0.1"
-       VersionCrc = 0x96274cae
+       VersionCrc = 0x3cf8291a
 )
 
 // DHCPClientState defines enum 'dhcp_client_state'.
@@ -360,7 +360,7 @@ type DHCP6PdReplyEvent struct {
 
 func (m *DHCP6PdReplyEvent) Reset()               { *m = DHCP6PdReplyEvent{} }
 func (*DHCP6PdReplyEvent) GetMessageName() string { return "dhcp6_pd_reply_event" }
-func (*DHCP6PdReplyEvent) GetCrcString() string   { return "cb3e462b" }
+func (*DHCP6PdReplyEvent) GetCrcString() string   { return "5e878029" }
 func (*DHCP6PdReplyEvent) GetMessageType() api.MessageType {
        return api.EventMessage
 }
@@ -459,7 +459,7 @@ type DHCP6PdSendClientMessage struct {
 
 func (m *DHCP6PdSendClientMessage) Reset()               { *m = DHCP6PdSendClientMessage{} }
 func (*DHCP6PdSendClientMessage) GetMessageName() string { return "dhcp6_pd_send_client_message" }
-func (*DHCP6PdSendClientMessage) GetCrcString() string   { return "064badb8" }
+func (*DHCP6PdSendClientMessage) GetCrcString() string   { return "3739fd8d" }
 func (*DHCP6PdSendClientMessage) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -595,7 +595,7 @@ type DHCP6ReplyEvent struct {
 
 func (m *DHCP6ReplyEvent) Reset()               { *m = DHCP6ReplyEvent{} }
 func (*DHCP6ReplyEvent) GetMessageName() string { return "dhcp6_reply_event" }
-func (*DHCP6ReplyEvent) GetCrcString() string   { return "9f3af9e5" }
+func (*DHCP6ReplyEvent) GetCrcString() string   { return "85b7b17e" }
 func (*DHCP6ReplyEvent) GetMessageType() api.MessageType {
        return api.EventMessage
 }
@@ -691,7 +691,7 @@ type DHCP6SendClientMessage struct {
 
 func (m *DHCP6SendClientMessage) Reset()               { *m = DHCP6SendClientMessage{} }
 func (*DHCP6SendClientMessage) GetMessageName() string { return "dhcp6_send_client_message" }
-func (*DHCP6SendClientMessage) GetCrcString() string   { return "f6f14ef0" }
+func (*DHCP6SendClientMessage) GetCrcString() string   { return "f8222476" }
 func (*DHCP6SendClientMessage) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -813,7 +813,7 @@ type DHCPClientConfig struct {
 
 func (m *DHCPClientConfig) Reset()               { *m = DHCPClientConfig{} }
 func (*DHCPClientConfig) GetMessageName() string { return "dhcp_client_config" }
-func (*DHCPClientConfig) GetCrcString() string   { return "959b80a3" }
+func (*DHCPClientConfig) GetCrcString() string   { return "1af013ea" }
 func (*DHCPClientConfig) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -902,7 +902,7 @@ type DHCPClientDetails struct {
 
 func (m *DHCPClientDetails) Reset()               { *m = DHCPClientDetails{} }
 func (*DHCPClientDetails) GetMessageName() string { return "dhcp_client_details" }
-func (*DHCPClientDetails) GetCrcString() string   { return "acd82f5a" }
+func (*DHCPClientDetails) GetCrcString() string   { return "3c5cd28a" }
 func (*DHCPClientDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1037,7 +1037,7 @@ type DHCPComplEvent struct {
 
 func (m *DHCPComplEvent) Reset()               { *m = DHCPComplEvent{} }
 func (*DHCPComplEvent) GetMessageName() string { return "dhcp_compl_event" }
-func (*DHCPComplEvent) GetCrcString() string   { return "e908fd1d" }
+func (*DHCPComplEvent) GetCrcString() string   { return "554a44e5" }
 func (*DHCPComplEvent) GetMessageType() api.MessageType {
        return api.EventMessage
 }
@@ -1261,7 +1261,7 @@ type DHCPProxyConfig struct {
 
 func (m *DHCPProxyConfig) Reset()               { *m = DHCPProxyConfig{} }
 func (*DHCPProxyConfig) GetMessageName() string { return "dhcp_proxy_config" }
-func (*DHCPProxyConfig) GetCrcString() string   { return "6767230e" }
+func (*DHCPProxyConfig) GetCrcString() string   { return "4058a689" }
 func (*DHCPProxyConfig) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1353,7 +1353,7 @@ type DHCPProxyDetails struct {
 
 func (m *DHCPProxyDetails) Reset()               { *m = DHCPProxyDetails{} }
 func (*DHCPProxyDetails) GetMessageName() string { return "dhcp_proxy_details" }
-func (*DHCPProxyDetails) GetCrcString() string   { return "ce16f044" }
+func (*DHCPProxyDetails) GetCrcString() string   { return "dcbaf540" }
 func (*DHCPProxyDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1699,24 +1699,24 @@ func file_dhcp_binapi_init() {
        api.RegisterMessage((*DHCP6ClientsEnableDisableReply)(nil), "dhcp6_clients_enable_disable_reply_e8d4e804")
        api.RegisterMessage((*DHCP6DuidLlSet)(nil), "dhcp6_duid_ll_set_0f6ca323")
        api.RegisterMessage((*DHCP6DuidLlSetReply)(nil), "dhcp6_duid_ll_set_reply_e8d4e804")
-       api.RegisterMessage((*DHCP6PdReplyEvent)(nil), "dhcp6_pd_reply_event_cb3e462b")
-       api.RegisterMessage((*DHCP6PdSendClientMessage)(nil), "dhcp6_pd_send_client_message_064badb8")
+       api.RegisterMessage((*DHCP6PdReplyEvent)(nil), "dhcp6_pd_reply_event_5e878029")
+       api.RegisterMessage((*DHCP6PdSendClientMessage)(nil), "dhcp6_pd_send_client_message_3739fd8d")
        api.RegisterMessage((*DHCP6PdSendClientMessageReply)(nil), "dhcp6_pd_send_client_message_reply_e8d4e804")
-       api.RegisterMessage((*DHCP6ReplyEvent)(nil), "dhcp6_reply_event_9f3af9e5")
-       api.RegisterMessage((*DHCP6SendClientMessage)(nil), "dhcp6_send_client_message_f6f14ef0")
+       api.RegisterMessage((*DHCP6ReplyEvent)(nil), "dhcp6_reply_event_85b7b17e")
+       api.RegisterMessage((*DHCP6SendClientMessage)(nil), "dhcp6_send_client_message_f8222476")
        api.RegisterMessage((*DHCP6SendClientMessageReply)(nil), "dhcp6_send_client_message_reply_e8d4e804")
-       api.RegisterMessage((*DHCPClientConfig)(nil), "dhcp_client_config_959b80a3")
+       api.RegisterMessage((*DHCPClientConfig)(nil), "dhcp_client_config_1af013ea")
        api.RegisterMessage((*DHCPClientConfigReply)(nil), "dhcp_client_config_reply_e8d4e804")
-       api.RegisterMessage((*DHCPClientDetails)(nil), "dhcp_client_details_acd82f5a")
+       api.RegisterMessage((*DHCPClientDetails)(nil), "dhcp_client_details_3c5cd28a")
        api.RegisterMessage((*DHCPClientDump)(nil), "dhcp_client_dump_51077d14")
-       api.RegisterMessage((*DHCPComplEvent)(nil), "dhcp_compl_event_e908fd1d")
+       api.RegisterMessage((*DHCPComplEvent)(nil), "dhcp_compl_event_554a44e5")
        api.RegisterMessage((*DHCPPluginControlPing)(nil), "dhcp_plugin_control_ping_51077d14")
        api.RegisterMessage((*DHCPPluginControlPingReply)(nil), "dhcp_plugin_control_ping_reply_f6b0b8ca")
        api.RegisterMessage((*DHCPPluginGetVersion)(nil), "dhcp_plugin_get_version_51077d14")
        api.RegisterMessage((*DHCPPluginGetVersionReply)(nil), "dhcp_plugin_get_version_reply_9b32cf86")
-       api.RegisterMessage((*DHCPProxyConfig)(nil), "dhcp_proxy_config_6767230e")
+       api.RegisterMessage((*DHCPProxyConfig)(nil), "dhcp_proxy_config_4058a689")
        api.RegisterMessage((*DHCPProxyConfigReply)(nil), "dhcp_proxy_config_reply_e8d4e804")
-       api.RegisterMessage((*DHCPProxyDetails)(nil), "dhcp_proxy_details_ce16f044")
+       api.RegisterMessage((*DHCPProxyDetails)(nil), "dhcp_proxy_details_dcbaf540")
        api.RegisterMessage((*DHCPProxyDump)(nil), "dhcp_proxy_dump_5c5b063f")
        api.RegisterMessage((*DHCPProxySetVss)(nil), "dhcp_proxy_set_vss_50537301")
        api.RegisterMessage((*DHCPProxySetVssReply)(nil), "dhcp_proxy_set_vss_reply_e8d4e804")
index ca4f01d..70537d7 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/dhcp6_ia_na_client_cp.api.json
 
 // Package dhcp6_ia_na_client_cp contains generated bindings for API file dhcp6_ia_na_client_cp.api.
@@ -26,7 +26,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "dhcp6_ia_na_client_cp"
        APIVersion = "1.0.1"
-       VersionCrc = 0x7c918b8
+       VersionCrc = 0x6e8abdfb
 )
 
 // DHCP6ClientEnableDisable defines message 'dhcp6_client_enable_disable'.
index f5690d1..8a8f96a 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/dhcp6_pd_client_cp.api.json
 
 // Package dhcp6_pd_client_cp contains generated bindings for API file dhcp6_pd_client_cp.api.
@@ -27,7 +27,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "dhcp6_pd_client_cp"
        APIVersion = "2.0.0"
-       VersionCrc = 0x96f41948
+       VersionCrc = 0xd4418668
 )
 
 // DHCP6PdClientEnableDisable defines message 'dhcp6_pd_client_enable_disable'.
@@ -118,7 +118,7 @@ func (m *IP6AddDelAddressUsingPrefix) Reset() { *m = IP6AddDelAddressUsingPrefix
 func (*IP6AddDelAddressUsingPrefix) GetMessageName() string {
        return "ip6_add_del_address_using_prefix"
 }
-func (*IP6AddDelAddressUsingPrefix) GetCrcString() string { return "9b3d11e0" }
+func (*IP6AddDelAddressUsingPrefix) GetCrcString() string { return "3982f30a" }
 func (*IP6AddDelAddressUsingPrefix) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -195,7 +195,7 @@ func init() { file_dhcp6_pd_client_cp_binapi_init() }
 func file_dhcp6_pd_client_cp_binapi_init() {
        api.RegisterMessage((*DHCP6PdClientEnableDisable)(nil), "dhcp6_pd_client_enable_disable_a75a0772")
        api.RegisterMessage((*DHCP6PdClientEnableDisableReply)(nil), "dhcp6_pd_client_enable_disable_reply_e8d4e804")
-       api.RegisterMessage((*IP6AddDelAddressUsingPrefix)(nil), "ip6_add_del_address_using_prefix_9b3d11e0")
+       api.RegisterMessage((*IP6AddDelAddressUsingPrefix)(nil), "ip6_add_del_address_using_prefix_3982f30a")
        api.RegisterMessage((*IP6AddDelAddressUsingPrefixReply)(nil), "ip6_add_del_address_using_prefix_reply_e8d4e804")
 }
 
index 8ebb3bf..2107ff3 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/dns.api.json
 
 // Package dns contains generated bindings for API file dns.api.
index 0837892..77d8220 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/dslite.api.json
 
 // Package dslite contains generated bindings for API file dslite.api.
@@ -27,7 +27,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "dslite"
        APIVersion = "1.0.0"
-       VersionCrc = 0xb62715c5
+       VersionCrc = 0x1afa049b
 )
 
 // DsliteAddDelPoolAddrRange defines message 'dslite_add_del_pool_addr_range'.
@@ -39,7 +39,7 @@ type DsliteAddDelPoolAddrRange struct {
 
 func (m *DsliteAddDelPoolAddrRange) Reset()               { *m = DsliteAddDelPoolAddrRange{} }
 func (*DsliteAddDelPoolAddrRange) GetMessageName() string { return "dslite_add_del_pool_addr_range" }
-func (*DsliteAddDelPoolAddrRange) GetCrcString() string   { return "c448457a" }
+func (*DsliteAddDelPoolAddrRange) GetCrcString() string   { return "de2a5b02" }
 func (*DsliteAddDelPoolAddrRange) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -202,7 +202,7 @@ type DsliteGetAftrAddrReply struct {
 
 func (m *DsliteGetAftrAddrReply) Reset()               { *m = DsliteGetAftrAddrReply{} }
 func (*DsliteGetAftrAddrReply) GetMessageName() string { return "dslite_get_aftr_addr_reply" }
-func (*DsliteGetAftrAddrReply) GetCrcString() string   { return "38e30db1" }
+func (*DsliteGetAftrAddrReply) GetCrcString() string   { return "8e23608e" }
 func (*DsliteGetAftrAddrReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -270,7 +270,7 @@ type DsliteGetB4AddrReply struct {
 
 func (m *DsliteGetB4AddrReply) Reset()               { *m = DsliteGetB4AddrReply{} }
 func (*DsliteGetB4AddrReply) GetMessageName() string { return "dslite_get_b4_addr_reply" }
-func (*DsliteGetB4AddrReply) GetCrcString() string   { return "38e30db1" }
+func (*DsliteGetB4AddrReply) GetCrcString() string   { return "8e23608e" }
 func (*DsliteGetB4AddrReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -310,7 +310,7 @@ type DsliteSetAftrAddr struct {
 
 func (m *DsliteSetAftrAddr) Reset()               { *m = DsliteSetAftrAddr{} }
 func (*DsliteSetAftrAddr) GetMessageName() string { return "dslite_set_aftr_addr" }
-func (*DsliteSetAftrAddr) GetCrcString() string   { return "1e955f8d" }
+func (*DsliteSetAftrAddr) GetCrcString() string   { return "78b50fdf" }
 func (*DsliteSetAftrAddr) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -380,7 +380,7 @@ type DsliteSetB4Addr struct {
 
 func (m *DsliteSetB4Addr) Reset()               { *m = DsliteSetB4Addr{} }
 func (*DsliteSetB4Addr) GetMessageName() string { return "dslite_set_b4_addr" }
-func (*DsliteSetB4Addr) GetCrcString() string   { return "1e955f8d" }
+func (*DsliteSetB4Addr) GetCrcString() string   { return "78b50fdf" }
 func (*DsliteSetB4Addr) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -444,17 +444,17 @@ func (m *DsliteSetB4AddrReply) Unmarshal(b []byte) error {
 
 func init() { file_dslite_binapi_init() }
 func file_dslite_binapi_init() {
-       api.RegisterMessage((*DsliteAddDelPoolAddrRange)(nil), "dslite_add_del_pool_addr_range_c448457a")
+       api.RegisterMessage((*DsliteAddDelPoolAddrRange)(nil), "dslite_add_del_pool_addr_range_de2a5b02")
        api.RegisterMessage((*DsliteAddDelPoolAddrRangeReply)(nil), "dslite_add_del_pool_addr_range_reply_e8d4e804")
        api.RegisterMessage((*DsliteAddressDetails)(nil), "dslite_address_details_ec26d648")
        api.RegisterMessage((*DsliteAddressDump)(nil), "dslite_address_dump_51077d14")
        api.RegisterMessage((*DsliteGetAftrAddr)(nil), "dslite_get_aftr_addr_51077d14")
-       api.RegisterMessage((*DsliteGetAftrAddrReply)(nil), "dslite_get_aftr_addr_reply_38e30db1")
+       api.RegisterMessage((*DsliteGetAftrAddrReply)(nil), "dslite_get_aftr_addr_reply_8e23608e")
        api.RegisterMessage((*DsliteGetB4Addr)(nil), "dslite_get_b4_addr_51077d14")
-       api.RegisterMessage((*DsliteGetB4AddrReply)(nil), "dslite_get_b4_addr_reply_38e30db1")
-       api.RegisterMessage((*DsliteSetAftrAddr)(nil), "dslite_set_aftr_addr_1e955f8d")
+       api.RegisterMessage((*DsliteGetB4AddrReply)(nil), "dslite_get_b4_addr_reply_8e23608e")
+       api.RegisterMessage((*DsliteSetAftrAddr)(nil), "dslite_set_aftr_addr_78b50fdf")
        api.RegisterMessage((*DsliteSetAftrAddrReply)(nil), "dslite_set_aftr_addr_reply_e8d4e804")
-       api.RegisterMessage((*DsliteSetB4Addr)(nil), "dslite_set_b4_addr_1e955f8d")
+       api.RegisterMessage((*DsliteSetB4Addr)(nil), "dslite_set_b4_addr_78b50fdf")
        api.RegisterMessage((*DsliteSetB4AddrReply)(nil), "dslite_set_b4_addr_reply_e8d4e804")
 }
 
index 5956376..9b393ff 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/ethernet_types.api.json
 
 // Package ethernet_types contains generated bindings for API file ethernet_types.api.
index db5cafc..e4e79da 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/feature.api.json
 
 // Package feature contains generated bindings for API file feature.api.
@@ -26,7 +26,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "feature"
        APIVersion = "1.0.2"
-       VersionCrc = 0x8dd9f8ab
+       VersionCrc = 0x8a6e6da1
 )
 
 // FeatureEnableDisable defines message 'feature_enable_disable'.
diff --git a/binapi/fib/fib.ba.go b/binapi/fib/fib.ba.go
new file mode 100644 (file)
index 0000000..f805aa3
--- /dev/null
@@ -0,0 +1,199 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/core/fib.api.json
+
+// Package fib contains generated bindings for API file fib.api.
+//
+// Contents:
+//   1 struct
+//   4 messages
+//
+package fib
+
+import (
+       api "git.fd.io/govpp.git/api"
+       _ "git.fd.io/govpp.git/binapi/fib_types"
+       _ "git.fd.io/govpp.git/binapi/ip_types"
+       codec "git.fd.io/govpp.git/codec"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+const (
+       APIFile    = "fib"
+       APIVersion = "1.0.0"
+       VersionCrc = 0x4ef4abc1
+)
+
+// FibSource defines type 'fib_source'.
+type FibSource struct {
+       Priority uint8  `binapi:"u8,name=priority" json:"priority,omitempty"`
+       ID       uint8  `binapi:"u8,name=id" json:"id,omitempty"`
+       Name     string `binapi:"string[64],name=name" json:"name,omitempty"`
+}
+
+// FibSourceAdd defines message 'fib_source_add'.
+type FibSourceAdd struct {
+       Src FibSource `binapi:"fib_source,name=src" json:"src,omitempty"`
+}
+
+func (m *FibSourceAdd) Reset()               { *m = FibSourceAdd{} }
+func (*FibSourceAdd) GetMessageName() string { return "fib_source_add" }
+func (*FibSourceAdd) GetCrcString() string   { return "b3ac2aec" }
+func (*FibSourceAdd) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *FibSourceAdd) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1  // m.Src.Priority
+       size += 1  // m.Src.ID
+       size += 64 // m.Src.Name
+       return size
+}
+func (m *FibSourceAdd) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(m.Src.Priority)
+       buf.EncodeUint8(m.Src.ID)
+       buf.EncodeString(m.Src.Name, 64)
+       return buf.Bytes(), nil
+}
+func (m *FibSourceAdd) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Src.Priority = buf.DecodeUint8()
+       m.Src.ID = buf.DecodeUint8()
+       m.Src.Name = buf.DecodeString(64)
+       return nil
+}
+
+// FibSourceAddReply defines message 'fib_source_add_reply'.
+type FibSourceAddReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+       ID     uint8 `binapi:"u8,name=id" json:"id,omitempty"`
+}
+
+func (m *FibSourceAddReply) Reset()               { *m = FibSourceAddReply{} }
+func (*FibSourceAddReply) GetMessageName() string { return "fib_source_add_reply" }
+func (*FibSourceAddReply) GetCrcString() string   { return "604fd6f1" }
+func (*FibSourceAddReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *FibSourceAddReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 1 // m.ID
+       return size
+}
+func (m *FibSourceAddReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint8(m.ID)
+       return buf.Bytes(), nil
+}
+func (m *FibSourceAddReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.ID = buf.DecodeUint8()
+       return nil
+}
+
+// FibSourceDetails defines message 'fib_source_details'.
+type FibSourceDetails struct {
+       Src FibSource `binapi:"fib_source,name=src" json:"src,omitempty"`
+}
+
+func (m *FibSourceDetails) Reset()               { *m = FibSourceDetails{} }
+func (*FibSourceDetails) GetMessageName() string { return "fib_source_details" }
+func (*FibSourceDetails) GetCrcString() string   { return "8668acdb" }
+func (*FibSourceDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *FibSourceDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1  // m.Src.Priority
+       size += 1  // m.Src.ID
+       size += 64 // m.Src.Name
+       return size
+}
+func (m *FibSourceDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(m.Src.Priority)
+       buf.EncodeUint8(m.Src.ID)
+       buf.EncodeString(m.Src.Name, 64)
+       return buf.Bytes(), nil
+}
+func (m *FibSourceDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Src.Priority = buf.DecodeUint8()
+       m.Src.ID = buf.DecodeUint8()
+       m.Src.Name = buf.DecodeString(64)
+       return nil
+}
+
+// FibSourceDump defines message 'fib_source_dump'.
+type FibSourceDump struct{}
+
+func (m *FibSourceDump) Reset()               { *m = FibSourceDump{} }
+func (*FibSourceDump) GetMessageName() string { return "fib_source_dump" }
+func (*FibSourceDump) GetCrcString() string   { return "51077d14" }
+func (*FibSourceDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *FibSourceDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *FibSourceDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *FibSourceDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+func init() { file_fib_binapi_init() }
+func file_fib_binapi_init() {
+       api.RegisterMessage((*FibSourceAdd)(nil), "fib_source_add_b3ac2aec")
+       api.RegisterMessage((*FibSourceAddReply)(nil), "fib_source_add_reply_604fd6f1")
+       api.RegisterMessage((*FibSourceDetails)(nil), "fib_source_details_8668acdb")
+       api.RegisterMessage((*FibSourceDump)(nil), "fib_source_dump_51077d14")
+}
+
+// Messages returns list of all messages in this module.
+func AllMessages() []api.Message {
+       return []api.Message{
+               (*FibSourceAdd)(nil),
+               (*FibSourceAddReply)(nil),
+               (*FibSourceDetails)(nil),
+               (*FibSourceDump)(nil),
+       }
+}
diff --git a/binapi/fib/fib_rpc.ba.go b/binapi/fib/fib_rpc.ba.go
new file mode 100644 (file)
index 0000000..245663b
--- /dev/null
@@ -0,0 +1,74 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+
+package fib
+
+import (
+       "context"
+       "fmt"
+       "io"
+
+       api "git.fd.io/govpp.git/api"
+       vpe "git.fd.io/govpp.git/binapi/vpe"
+)
+
+// RPCService defines RPC service fib.
+type RPCService interface {
+       FibSourceAdd(ctx context.Context, in *FibSourceAdd) (*FibSourceAddReply, error)
+       FibSourceDump(ctx context.Context, in *FibSourceDump) (RPCService_FibSourceDumpClient, error)
+}
+
+type serviceClient struct {
+       conn api.Connection
+}
+
+func NewServiceClient(conn api.Connection) RPCService {
+       return &serviceClient{conn}
+}
+
+func (c *serviceClient) FibSourceAdd(ctx context.Context, in *FibSourceAdd) (*FibSourceAddReply, error) {
+       out := new(FibSourceAddReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) FibSourceDump(ctx context.Context, in *FibSourceDump) (RPCService_FibSourceDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_FibSourceDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_FibSourceDumpClient interface {
+       Recv() (*FibSourceDetails, error)
+       api.Stream
+}
+
+type serviceClient_FibSourceDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_FibSourceDumpClient) Recv() (*FibSourceDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *FibSourceDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
index 1fcf29e..3841117 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/fib_types.api.json
 
 // Package fib_types contains generated bindings for API file fib_types.api.
diff --git a/binapi/flow/flow.ba.go b/binapi/flow/flow.ba.go
new file mode 100644 (file)
index 0000000..bd479b7
--- /dev/null
@@ -0,0 +1,367 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/core/flow.api.json
+
+// Package flow contains generated bindings for API file flow.api.
+//
+// Contents:
+//   8 messages
+//
+package flow
+
+import (
+       api "git.fd.io/govpp.git/api"
+       _ "git.fd.io/govpp.git/binapi/ethernet_types"
+       flow_types "git.fd.io/govpp.git/binapi/flow_types"
+       _ "git.fd.io/govpp.git/binapi/interface_types"
+       _ "git.fd.io/govpp.git/binapi/ip_types"
+       codec "git.fd.io/govpp.git/codec"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+const (
+       APIFile    = "flow"
+       APIVersion = "0.0.2"
+       VersionCrc = 0x140d3585
+)
+
+// FlowAdd defines message 'flow_add'.
+// InProgress: the message form may change in the future versions
+type FlowAdd struct {
+       Flow flow_types.FlowRule `binapi:"flow_rule,name=flow" json:"flow,omitempty"`
+}
+
+func (m *FlowAdd) Reset()               { *m = FlowAdd{} }
+func (*FlowAdd) GetMessageName() string { return "flow_add" }
+func (*FlowAdd) GetCrcString() string   { return "f946ed84" }
+func (*FlowAdd) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *FlowAdd) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4      // m.Flow.Type
+       size += 4      // m.Flow.Index
+       size += 4      // m.Flow.Actions
+       size += 4      // m.Flow.MarkFlowID
+       size += 4      // m.Flow.RedirectNodeIndex
+       size += 4      // m.Flow.RedirectDeviceInputNextIndex
+       size += 4      // m.Flow.RedirectQueue
+       size += 4      // m.Flow.BufferAdvance
+       size += 1 * 82 // m.Flow.Flow
+       return size
+}
+func (m *FlowAdd) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.Flow.Type))
+       buf.EncodeUint32(m.Flow.Index)
+       buf.EncodeUint32(uint32(m.Flow.Actions))
+       buf.EncodeUint32(m.Flow.MarkFlowID)
+       buf.EncodeUint32(m.Flow.RedirectNodeIndex)
+       buf.EncodeUint32(m.Flow.RedirectDeviceInputNextIndex)
+       buf.EncodeUint32(m.Flow.RedirectQueue)
+       buf.EncodeInt32(m.Flow.BufferAdvance)
+       buf.EncodeBytes(m.Flow.Flow.XXX_UnionData[:], 82)
+       return buf.Bytes(), nil
+}
+func (m *FlowAdd) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Flow.Type = flow_types.FlowType(buf.DecodeUint32())
+       m.Flow.Index = buf.DecodeUint32()
+       m.Flow.Actions = flow_types.FlowAction(buf.DecodeUint32())
+       m.Flow.MarkFlowID = buf.DecodeUint32()
+       m.Flow.RedirectNodeIndex = buf.DecodeUint32()
+       m.Flow.RedirectDeviceInputNextIndex = buf.DecodeUint32()
+       m.Flow.RedirectQueue = buf.DecodeUint32()
+       m.Flow.BufferAdvance = buf.DecodeInt32()
+       copy(m.Flow.Flow.XXX_UnionData[:], buf.DecodeBytes(82))
+       return nil
+}
+
+// FlowAddReply defines message 'flow_add_reply'.
+// InProgress: the message form may change in the future versions
+type FlowAddReply struct {
+       Retval    int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       FlowIndex uint32 `binapi:"u32,name=flow_index" json:"flow_index,omitempty"`
+}
+
+func (m *FlowAddReply) Reset()               { *m = FlowAddReply{} }
+func (*FlowAddReply) GetMessageName() string { return "flow_add_reply" }
+func (*FlowAddReply) GetCrcString() string   { return "8587dc85" }
+func (*FlowAddReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *FlowAddReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.FlowIndex
+       return size
+}
+func (m *FlowAddReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.FlowIndex)
+       return buf.Bytes(), nil
+}
+func (m *FlowAddReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.FlowIndex = buf.DecodeUint32()
+       return nil
+}
+
+// FlowDel defines message 'flow_del'.
+// InProgress: the message form may change in the future versions
+type FlowDel struct {
+       FlowIndex uint32 `binapi:"u32,name=flow_index" json:"flow_index,omitempty"`
+}
+
+func (m *FlowDel) Reset()               { *m = FlowDel{} }
+func (*FlowDel) GetMessageName() string { return "flow_del" }
+func (*FlowDel) GetCrcString() string   { return "b6b9b02c" }
+func (*FlowDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *FlowDel) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.FlowIndex
+       return size
+}
+func (m *FlowDel) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.FlowIndex)
+       return buf.Bytes(), nil
+}
+func (m *FlowDel) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.FlowIndex = buf.DecodeUint32()
+       return nil
+}
+
+// FlowDelReply defines message 'flow_del_reply'.
+// InProgress: the message form may change in the future versions
+type FlowDelReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *FlowDelReply) Reset()               { *m = FlowDelReply{} }
+func (*FlowDelReply) GetMessageName() string { return "flow_del_reply" }
+func (*FlowDelReply) GetCrcString() string   { return "e8d4e804" }
+func (*FlowDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *FlowDelReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *FlowDelReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *FlowDelReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// FlowDisable defines message 'flow_disable'.
+// InProgress: the message form may change in the future versions
+type FlowDisable struct {
+       FlowIndex uint32 `binapi:"u32,name=flow_index" json:"flow_index,omitempty"`
+       HwIfIndex uint32 `binapi:"u32,name=hw_if_index" json:"hw_if_index,omitempty"`
+}
+
+func (m *FlowDisable) Reset()               { *m = FlowDisable{} }
+func (*FlowDisable) GetMessageName() string { return "flow_disable" }
+func (*FlowDisable) GetCrcString() string   { return "2024be69" }
+func (*FlowDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *FlowDisable) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.FlowIndex
+       size += 4 // m.HwIfIndex
+       return size
+}
+func (m *FlowDisable) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.FlowIndex)
+       buf.EncodeUint32(m.HwIfIndex)
+       return buf.Bytes(), nil
+}
+func (m *FlowDisable) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.FlowIndex = buf.DecodeUint32()
+       m.HwIfIndex = buf.DecodeUint32()
+       return nil
+}
+
+// FlowDisableReply defines message 'flow_disable_reply'.
+// InProgress: the message form may change in the future versions
+type FlowDisableReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *FlowDisableReply) Reset()               { *m = FlowDisableReply{} }
+func (*FlowDisableReply) GetMessageName() string { return "flow_disable_reply" }
+func (*FlowDisableReply) GetCrcString() string   { return "e8d4e804" }
+func (*FlowDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *FlowDisableReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *FlowDisableReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *FlowDisableReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// FlowEnable defines message 'flow_enable'.
+// InProgress: the message form may change in the future versions
+type FlowEnable struct {
+       FlowIndex uint32 `binapi:"u32,name=flow_index" json:"flow_index,omitempty"`
+       HwIfIndex uint32 `binapi:"u32,name=hw_if_index" json:"hw_if_index,omitempty"`
+}
+
+func (m *FlowEnable) Reset()               { *m = FlowEnable{} }
+func (*FlowEnable) GetMessageName() string { return "flow_enable" }
+func (*FlowEnable) GetCrcString() string   { return "2024be69" }
+func (*FlowEnable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *FlowEnable) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.FlowIndex
+       size += 4 // m.HwIfIndex
+       return size
+}
+func (m *FlowEnable) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.FlowIndex)
+       buf.EncodeUint32(m.HwIfIndex)
+       return buf.Bytes(), nil
+}
+func (m *FlowEnable) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.FlowIndex = buf.DecodeUint32()
+       m.HwIfIndex = buf.DecodeUint32()
+       return nil
+}
+
+// FlowEnableReply defines message 'flow_enable_reply'.
+// InProgress: the message form may change in the future versions
+type FlowEnableReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *FlowEnableReply) Reset()               { *m = FlowEnableReply{} }
+func (*FlowEnableReply) GetMessageName() string { return "flow_enable_reply" }
+func (*FlowEnableReply) GetCrcString() string   { return "e8d4e804" }
+func (*FlowEnableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *FlowEnableReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *FlowEnableReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *FlowEnableReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+func init() { file_flow_binapi_init() }
+func file_flow_binapi_init() {
+       api.RegisterMessage((*FlowAdd)(nil), "flow_add_f946ed84")
+       api.RegisterMessage((*FlowAddReply)(nil), "flow_add_reply_8587dc85")
+       api.RegisterMessage((*FlowDel)(nil), "flow_del_b6b9b02c")
+       api.RegisterMessage((*FlowDelReply)(nil), "flow_del_reply_e8d4e804")
+       api.RegisterMessage((*FlowDisable)(nil), "flow_disable_2024be69")
+       api.RegisterMessage((*FlowDisableReply)(nil), "flow_disable_reply_e8d4e804")
+       api.RegisterMessage((*FlowEnable)(nil), "flow_enable_2024be69")
+       api.RegisterMessage((*FlowEnableReply)(nil), "flow_enable_reply_e8d4e804")
+}
+
+// Messages returns list of all messages in this module.
+func AllMessages() []api.Message {
+       return []api.Message{
+               (*FlowAdd)(nil),
+               (*FlowAddReply)(nil),
+               (*FlowDel)(nil),
+               (*FlowDelReply)(nil),
+               (*FlowDisable)(nil),
+               (*FlowDisableReply)(nil),
+               (*FlowEnable)(nil),
+               (*FlowEnableReply)(nil),
+       }
+}
diff --git a/binapi/flow/flow_rpc.ba.go b/binapi/flow/flow_rpc.ba.go
new file mode 100644 (file)
index 0000000..ad828b4
--- /dev/null
@@ -0,0 +1,61 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+
+package flow
+
+import (
+       "context"
+
+       api "git.fd.io/govpp.git/api"
+)
+
+// RPCService defines RPC service flow.
+type RPCService interface {
+       FlowAdd(ctx context.Context, in *FlowAdd) (*FlowAddReply, error)
+       FlowDel(ctx context.Context, in *FlowDel) (*FlowDelReply, error)
+       FlowDisable(ctx context.Context, in *FlowDisable) (*FlowDisableReply, error)
+       FlowEnable(ctx context.Context, in *FlowEnable) (*FlowEnableReply, error)
+}
+
+type serviceClient struct {
+       conn api.Connection
+}
+
+func NewServiceClient(conn api.Connection) RPCService {
+       return &serviceClient{conn}
+}
+
+func (c *serviceClient) FlowAdd(ctx context.Context, in *FlowAdd) (*FlowAddReply, error) {
+       out := new(FlowAddReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) FlowDel(ctx context.Context, in *FlowDel) (*FlowDelReply, error) {
+       out := new(FlowDelReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) FlowDisable(ctx context.Context, in *FlowDisable) (*FlowDisableReply, error) {
+       out := new(FlowDisableReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) FlowEnable(ctx context.Context, in *FlowEnable) (*FlowEnableReply, error) {
+       out := new(FlowEnableReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
diff --git a/binapi/flow_types/flow_types.ba.go b/binapi/flow_types/flow_types.ba.go
new file mode 100644 (file)
index 0000000..bf6aa00
--- /dev/null
@@ -0,0 +1,747 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/core/flow_types.api.json
+
+// Package flow_types contains generated bindings for API file flow_types.api.
+//
+// Contents:
+//   2 enums
+//  17 structs
+//   1 union
+//
+package flow_types
+
+import (
+       "strconv"
+
+       api "git.fd.io/govpp.git/api"
+       ethernet_types "git.fd.io/govpp.git/binapi/ethernet_types"
+       ip_types "git.fd.io/govpp.git/binapi/ip_types"
+       codec "git.fd.io/govpp.git/codec"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+// FlowAction defines enum 'flow_action'.
+type FlowAction uint32
+
+const (
+       FLOW_ACTION_COUNT             FlowAction = 1
+       FLOW_ACTION_MARK              FlowAction = 2
+       FLOW_ACTION_BUFFER_ADVANCE    FlowAction = 4
+       FLOW_ACTION_REDIRECT_TO_NODE  FlowAction = 8
+       FLOW_ACTION_REDIRECT_TO_QUEUE FlowAction = 16
+       FLOW_ACTION_DROP              FlowAction = 64
+)
+
+var (
+       FlowAction_name = map[uint32]string{
+               1:  "FLOW_ACTION_COUNT",
+               2:  "FLOW_ACTION_MARK",
+               4:  "FLOW_ACTION_BUFFER_ADVANCE",
+               8:  "FLOW_ACTION_REDIRECT_TO_NODE",
+               16: "FLOW_ACTION_REDIRECT_TO_QUEUE",
+               64: "FLOW_ACTION_DROP",
+       }
+       FlowAction_value = map[string]uint32{
+               "FLOW_ACTION_COUNT":             1,
+               "FLOW_ACTION_MARK":              2,
+               "FLOW_ACTION_BUFFER_ADVANCE":    4,
+               "FLOW_ACTION_REDIRECT_TO_NODE":  8,
+               "FLOW_ACTION_REDIRECT_TO_QUEUE": 16,
+               "FLOW_ACTION_DROP":              64,
+       }
+)
+
+func (x FlowAction) String() string {
+       s, ok := FlowAction_name[uint32(x)]
+       if ok {
+               return s
+       }
+       return "FlowAction(" + strconv.Itoa(int(x)) + ")"
+}
+
+// FlowType defines enum 'flow_type'.
+type FlowType uint32
+
+const (
+       FLOW_TYPE_ETHERNET           FlowType = 1
+       FLOW_TYPE_IP4                FlowType = 2
+       FLOW_TYPE_IP6                FlowType = 3
+       FLOW_TYPE_IP4_L2TPV3OIP      FlowType = 4
+       FLOW_TYPE_IP4_IPSEC_ESP      FlowType = 5
+       FLOW_TYPE_IP4_IPSEC_AH       FlowType = 6
+       FLOW_TYPE_IP4_N_TUPLE        FlowType = 7
+       FLOW_TYPE_IP6_N_TUPLE        FlowType = 8
+       FLOW_TYPE_IP4_N_TUPLE_TAGGED FlowType = 9
+       FLOW_TYPE_IP6_N_TUPLE_TAGGED FlowType = 10
+       FLOW_TYPE_IP4_VXLAN          FlowType = 11
+       FLOW_TYPE_IP6_VXLAN          FlowType = 12
+       FLOW_TYPE_IP4_GTPC           FlowType = 13
+       FLOW_TYPE_IP4_GTPU           FlowType = 14
+)
+
+var (
+       FlowType_name = map[uint32]string{
+               1:  "FLOW_TYPE_ETHERNET",
+               2:  "FLOW_TYPE_IP4",
+               3:  "FLOW_TYPE_IP6",
+               4:  "FLOW_TYPE_IP4_L2TPV3OIP",
+               5:  "FLOW_TYPE_IP4_IPSEC_ESP",
+               6:  "FLOW_TYPE_IP4_IPSEC_AH",
+               7:  "FLOW_TYPE_IP4_N_TUPLE",
+               8:  "FLOW_TYPE_IP6_N_TUPLE",
+               9:  "FLOW_TYPE_IP4_N_TUPLE_TAGGED",
+               10: "FLOW_TYPE_IP6_N_TUPLE_TAGGED",
+               11: "FLOW_TYPE_IP4_VXLAN",
+               12: "FLOW_TYPE_IP6_VXLAN",
+               13: "FLOW_TYPE_IP4_GTPC",
+               14: "FLOW_TYPE_IP4_GTPU",
+       }
+       FlowType_value = map[string]uint32{
+               "FLOW_TYPE_ETHERNET":           1,
+               "FLOW_TYPE_IP4":                2,
+               "FLOW_TYPE_IP6":                3,
+               "FLOW_TYPE_IP4_L2TPV3OIP":      4,
+               "FLOW_TYPE_IP4_IPSEC_ESP":      5,
+               "FLOW_TYPE_IP4_IPSEC_AH":       6,
+               "FLOW_TYPE_IP4_N_TUPLE":        7,
+               "FLOW_TYPE_IP6_N_TUPLE":        8,
+               "FLOW_TYPE_IP4_N_TUPLE_TAGGED": 9,
+               "FLOW_TYPE_IP6_N_TUPLE_TAGGED": 10,
+               "FLOW_TYPE_IP4_VXLAN":          11,
+               "FLOW_TYPE_IP6_VXLAN":          12,
+               "FLOW_TYPE_IP4_GTPC":           13,
+               "FLOW_TYPE_IP4_GTPU":           14,
+       }
+)
+
+func (x FlowType) String() string {
+       s, ok := FlowType_name[uint32(x)]
+       if ok {
+               return s
+       }
+       return "FlowType(" + strconv.Itoa(int(x)) + ")"
+}
+
+// FlowEthernet defines type 'flow_ethernet'.
+type FlowEthernet struct {
+       Foo     int32                     `binapi:"i32,name=foo" json:"foo,omitempty"`
+       SrcAddr ethernet_types.MacAddress `binapi:"mac_address,name=src_addr" json:"src_addr,omitempty"`
+       DstAddr ethernet_types.MacAddress `binapi:"mac_address,name=dst_addr" json:"dst_addr,omitempty"`
+       Type    uint16                    `binapi:"u16,name=type" json:"type,omitempty"`
+}
+
+// FlowIP4 defines type 'flow_ip4'.
+type FlowIP4 struct {
+       Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
+       SrcAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
+       DstAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
+       Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
+}
+
+// FlowIP4Gtpc defines type 'flow_ip4_gtpc'.
+type FlowIP4Gtpc struct {
+       Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
+       SrcAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
+       DstAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
+       Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
+       SrcPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=src_port" json:"src_port,omitempty"`
+       DstPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=dst_port" json:"dst_port,omitempty"`
+       Teid     uint32                     `binapi:"u32,name=teid" json:"teid,omitempty"`
+}
+
+// FlowIP4Gtpu defines type 'flow_ip4_gtpu'.
+type FlowIP4Gtpu struct {
+       Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
+       SrcAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
+       DstAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
+       Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
+       SrcPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=src_port" json:"src_port,omitempty"`
+       DstPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=dst_port" json:"dst_port,omitempty"`
+       Teid     uint32                     `binapi:"u32,name=teid" json:"teid,omitempty"`
+}
+
+// FlowIP4IpsecAh defines type 'flow_ip4_ipsec_ah'.
+type FlowIP4IpsecAh struct {
+       Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
+       SrcAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
+       DstAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
+       Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
+       Spi      uint32                     `binapi:"u32,name=spi" json:"spi,omitempty"`
+}
+
+// FlowIP4IpsecEsp defines type 'flow_ip4_ipsec_esp'.
+type FlowIP4IpsecEsp struct {
+       Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
+       SrcAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
+       DstAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
+       Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
+       Spi      uint32                     `binapi:"u32,name=spi" json:"spi,omitempty"`
+}
+
+// FlowIP4L2tpv3oip defines type 'flow_ip4_l2tpv3oip'.
+type FlowIP4L2tpv3oip struct {
+       Foo       int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
+       SrcAddr   ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
+       DstAddr   ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
+       Protocol  IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
+       SessionID uint32                     `binapi:"u32,name=session_id" json:"session_id,omitempty"`
+}
+
+// FlowIP4NTuple defines type 'flow_ip4_n_tuple'.
+type FlowIP4NTuple struct {
+       Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
+       SrcAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
+       DstAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
+       Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
+       SrcPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=src_port" json:"src_port,omitempty"`
+       DstPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=dst_port" json:"dst_port,omitempty"`
+}
+
+// FlowIP4NTupleTagged defines type 'flow_ip4_n_tuple_tagged'.
+type FlowIP4NTupleTagged struct {
+       Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
+       SrcAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
+       DstAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
+       Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
+       SrcPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=src_port" json:"src_port,omitempty"`
+       DstPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=dst_port" json:"dst_port,omitempty"`
+}
+
+// FlowIP4Vxlan defines type 'flow_ip4_vxlan'.
+type FlowIP4Vxlan struct {
+       Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
+       SrcAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
+       DstAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
+       Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
+       SrcPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=src_port" json:"src_port,omitempty"`
+       DstPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=dst_port" json:"dst_port,omitempty"`
+       Vni      uint32                     `binapi:"u32,name=vni" json:"vni,omitempty"`
+}
+
+// FlowIP6 defines type 'flow_ip6'.
+type FlowIP6 struct {
+       Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
+       SrcAddr  ip_types.IP6AddressAndMask `binapi:"ip6_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
+       DstAddr  ip_types.IP6AddressAndMask `binapi:"ip6_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
+       Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
+}
+
+// FlowIP6NTuple defines type 'flow_ip6_n_tuple'.
+type FlowIP6NTuple struct {
+       Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
+       SrcAddr  ip_types.IP6AddressAndMask `binapi:"ip6_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
+       DstAddr  ip_types.IP6AddressAndMask `binapi:"ip6_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
+       Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
+       SrcPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=src_port" json:"src_port,omitempty"`
+       DstPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=dst_port" json:"dst_port,omitempty"`
+}
+
+// FlowIP6NTupleTagged defines type 'flow_ip6_n_tuple_tagged'.
+type FlowIP6NTupleTagged struct {
+       Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
+       SrcAddr  ip_types.IP6AddressAndMask `binapi:"ip6_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
+       DstAddr  ip_types.IP6AddressAndMask `binapi:"ip6_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
+       Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
+       SrcPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=src_port" json:"src_port,omitempty"`
+       DstPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=dst_port" json:"dst_port,omitempty"`
+}
+
+// FlowIP6Vxlan defines type 'flow_ip6_vxlan'.
+type FlowIP6Vxlan struct {
+       Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
+       SrcAddr  ip_types.IP6AddressAndMask `binapi:"ip6_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
+       DstAddr  ip_types.IP6AddressAndMask `binapi:"ip6_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
+       Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
+       SrcPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=src_port" json:"src_port,omitempty"`
+       DstPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=dst_port" json:"dst_port,omitempty"`
+       Vni      uint32                     `binapi:"u32,name=vni" json:"vni,omitempty"`
+}
+
+// FlowRule defines type 'flow_rule'.
+type FlowRule struct {
+       Type                         FlowType   `binapi:"flow_type,name=type" json:"type,omitempty"`
+       Index                        uint32     `binapi:"u32,name=index" json:"index,omitempty"`
+       Actions                      FlowAction `binapi:"flow_action,name=actions" json:"actions,omitempty"`
+       MarkFlowID                   uint32     `binapi:"u32,name=mark_flow_id" json:"mark_flow_id,omitempty"`
+       RedirectNodeIndex            uint32     `binapi:"u32,name=redirect_node_index" json:"redirect_node_index,omitempty"`
+       RedirectDeviceInputNextIndex uint32     `binapi:"u32,name=redirect_device_input_next_index" json:"redirect_device_input_next_index,omitempty"`
+       RedirectQueue                uint32     `binapi:"u32,name=redirect_queue" json:"redirect_queue,omitempty"`
+       BufferAdvance                int32      `binapi:"i32,name=buffer_advance" json:"buffer_advance,omitempty"`
+       Flow                         FlowUnion  `binapi:"flow,name=flow" json:"flow,omitempty"`
+}
+
+// IPPortAndMask defines type 'ip_port_and_mask'.
+type IPPortAndMask struct {
+       Port uint16 `binapi:"u16,name=port" json:"port,omitempty"`
+       Mask uint16 `binapi:"u16,name=mask" json:"mask,omitempty"`
+}
+
+// IPProtAndMask defines type 'ip_prot_and_mask'.
+type IPProtAndMask struct {
+       Prot ip_types.IPProto `binapi:"ip_proto,name=prot" json:"prot,omitempty"`
+       Mask uint8            `binapi:"u8,name=mask" json:"mask,omitempty"`
+}
+
+// FlowUnion defines union 'flow'.
+type FlowUnion struct {
+       // FlowUnion can be one of:
+       // - Ethernet *FlowEthernet
+       // - IP4 *FlowIP4
+       // - IP6 *FlowIP6
+       // - IP4L2tpv3oip *FlowIP4L2tpv3oip
+       // - IP4IpsecEsp *FlowIP4IpsecEsp
+       // - IP4IpsecAh *FlowIP4IpsecAh
+       // - IP4NTuple *FlowIP4NTuple
+       // - IP6NTuple *FlowIP6NTuple
+       // - IP4NTupleTagged *FlowIP4NTupleTagged
+       // - IP6NTupleTagged *FlowIP6NTupleTagged
+       // - IP4Vxlan *FlowIP4Vxlan
+       // - IP6Vxlan *FlowIP6Vxlan
+       // - IP4Gtpc *FlowIP4Gtpc
+       // - IP4Gtpu *FlowIP4Gtpu
+       XXX_UnionData [82]byte
+}
+
+func FlowUnionEthernet(a FlowEthernet) (u FlowUnion) {
+       u.SetEthernet(a)
+       return
+}
+func (u *FlowUnion) SetEthernet(a FlowEthernet) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       buf.EncodeInt32(a.Foo)
+       buf.EncodeBytes(a.SrcAddr[:], 6)
+       buf.EncodeBytes(a.DstAddr[:], 6)
+       buf.EncodeUint16(a.Type)
+}
+func (u *FlowUnion) GetEthernet() (a FlowEthernet) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       a.Foo = buf.DecodeInt32()
+       copy(a.SrcAddr[:], buf.DecodeBytes(6))
+       copy(a.DstAddr[:], buf.DecodeBytes(6))
+       a.Type = buf.DecodeUint16()
+       return
+}
+
+func FlowUnionIP4(a FlowIP4) (u FlowUnion) {
+       u.SetIP4(a)
+       return
+}
+func (u *FlowUnion) SetIP4(a FlowIP4) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       buf.EncodeInt32(a.Foo)
+       buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
+       buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
+       buf.EncodeBytes(a.DstAddr.Addr[:], 4)
+       buf.EncodeBytes(a.DstAddr.Mask[:], 4)
+       buf.EncodeUint8(uint8(a.Protocol.Prot))
+       buf.EncodeUint8(a.Protocol.Mask)
+}
+func (u *FlowUnion) GetIP4() (a FlowIP4) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       a.Foo = buf.DecodeInt32()
+       copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
+       copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
+       copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
+       copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
+       a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
+       a.Protocol.Mask = buf.DecodeUint8()
+       return
+}
+
+func FlowUnionIP6(a FlowIP6) (u FlowUnion) {
+       u.SetIP6(a)
+       return
+}
+func (u *FlowUnion) SetIP6(a FlowIP6) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       buf.EncodeInt32(a.Foo)
+       buf.EncodeBytes(a.SrcAddr.Addr[:], 16)
+       buf.EncodeBytes(a.SrcAddr.Mask[:], 16)
+       buf.EncodeBytes(a.DstAddr.Addr[:], 16)
+       buf.EncodeBytes(a.DstAddr.Mask[:], 16)
+       buf.EncodeUint8(uint8(a.Protocol.Prot))
+       buf.EncodeUint8(a.Protocol.Mask)
+}
+func (u *FlowUnion) GetIP6() (a FlowIP6) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       a.Foo = buf.DecodeInt32()
+       copy(a.SrcAddr.Addr[:], buf.DecodeBytes(16))
+       copy(a.SrcAddr.Mask[:], buf.DecodeBytes(16))
+       copy(a.DstAddr.Addr[:], buf.DecodeBytes(16))
+       copy(a.DstAddr.Mask[:], buf.DecodeBytes(16))
+       a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
+       a.Protocol.Mask = buf.DecodeUint8()
+       return
+}
+
+func FlowUnionIP4L2tpv3oip(a FlowIP4L2tpv3oip) (u FlowUnion) {
+       u.SetIP4L2tpv3oip(a)
+       return
+}
+func (u *FlowUnion) SetIP4L2tpv3oip(a FlowIP4L2tpv3oip) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       buf.EncodeInt32(a.Foo)
+       buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
+       buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
+       buf.EncodeBytes(a.DstAddr.Addr[:], 4)
+       buf.EncodeBytes(a.DstAddr.Mask[:], 4)
+       buf.EncodeUint8(uint8(a.Protocol.Prot))
+       buf.EncodeUint8(a.Protocol.Mask)
+       buf.EncodeUint32(a.SessionID)
+}
+func (u *FlowUnion) GetIP4L2tpv3oip() (a FlowIP4L2tpv3oip) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       a.Foo = buf.DecodeInt32()
+       copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
+       copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
+       copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
+       copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
+       a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
+       a.Protocol.Mask = buf.DecodeUint8()
+       a.SessionID = buf.DecodeUint32()
+       return
+}
+
+func FlowUnionIP4IpsecEsp(a FlowIP4IpsecEsp) (u FlowUnion) {
+       u.SetIP4IpsecEsp(a)
+       return
+}
+func (u *FlowUnion) SetIP4IpsecEsp(a FlowIP4IpsecEsp) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       buf.EncodeInt32(a.Foo)
+       buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
+       buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
+       buf.EncodeBytes(a.DstAddr.Addr[:], 4)
+       buf.EncodeBytes(a.DstAddr.Mask[:], 4)
+       buf.EncodeUint8(uint8(a.Protocol.Prot))
+       buf.EncodeUint8(a.Protocol.Mask)
+       buf.EncodeUint32(a.Spi)
+}
+func (u *FlowUnion) GetIP4IpsecEsp() (a FlowIP4IpsecEsp) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       a.Foo = buf.DecodeInt32()
+       copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
+       copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
+       copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
+       copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
+       a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
+       a.Protocol.Mask = buf.DecodeUint8()
+       a.Spi = buf.DecodeUint32()
+       return
+}
+
+func FlowUnionIP4IpsecAh(a FlowIP4IpsecAh) (u FlowUnion) {
+       u.SetIP4IpsecAh(a)
+       return
+}
+func (u *FlowUnion) SetIP4IpsecAh(a FlowIP4IpsecAh) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       buf.EncodeInt32(a.Foo)
+       buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
+       buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
+       buf.EncodeBytes(a.DstAddr.Addr[:], 4)
+       buf.EncodeBytes(a.DstAddr.Mask[:], 4)
+       buf.EncodeUint8(uint8(a.Protocol.Prot))
+       buf.EncodeUint8(a.Protocol.Mask)
+       buf.EncodeUint32(a.Spi)
+}
+func (u *FlowUnion) GetIP4IpsecAh() (a FlowIP4IpsecAh) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       a.Foo = buf.DecodeInt32()
+       copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
+       copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
+       copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
+       copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
+       a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
+       a.Protocol.Mask = buf.DecodeUint8()
+       a.Spi = buf.DecodeUint32()
+       return
+}
+
+func FlowUnionIP4NTuple(a FlowIP4NTuple) (u FlowUnion) {
+       u.SetIP4NTuple(a)
+       return
+}
+func (u *FlowUnion) SetIP4NTuple(a FlowIP4NTuple) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       buf.EncodeInt32(a.Foo)
+       buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
+       buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
+       buf.EncodeBytes(a.DstAddr.Addr[:], 4)
+       buf.EncodeBytes(a.DstAddr.Mask[:], 4)
+       buf.EncodeUint8(uint8(a.Protocol.Prot))
+       buf.EncodeUint8(a.Protocol.Mask)
+       buf.EncodeUint16(a.SrcPort.Port)
+       buf.EncodeUint16(a.SrcPort.Mask)
+       buf.EncodeUint16(a.DstPort.Port)
+       buf.EncodeUint16(a.DstPort.Mask)
+}
+func (u *FlowUnion) GetIP4NTuple() (a FlowIP4NTuple) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       a.Foo = buf.DecodeInt32()
+       copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
+       copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
+       copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
+       copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
+       a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
+       a.Protocol.Mask = buf.DecodeUint8()
+       a.SrcPort.Port = buf.DecodeUint16()
+       a.SrcPort.Mask = buf.DecodeUint16()
+       a.DstPort.Port = buf.DecodeUint16()
+       a.DstPort.Mask = buf.DecodeUint16()
+       return
+}
+
+func FlowUnionIP6NTuple(a FlowIP6NTuple) (u FlowUnion) {
+       u.SetIP6NTuple(a)
+       return
+}
+func (u *FlowUnion) SetIP6NTuple(a FlowIP6NTuple) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       buf.EncodeInt32(a.Foo)
+       buf.EncodeBytes(a.SrcAddr.Addr[:], 16)
+       buf.EncodeBytes(a.SrcAddr.Mask[:], 16)
+       buf.EncodeBytes(a.DstAddr.Addr[:], 16)
+       buf.EncodeBytes(a.DstAddr.Mask[:], 16)
+       buf.EncodeUint8(uint8(a.Protocol.Prot))
+       buf.EncodeUint8(a.Protocol.Mask)
+       buf.EncodeUint16(a.SrcPort.Port)
+       buf.EncodeUint16(a.SrcPort.Mask)
+       buf.EncodeUint16(a.DstPort.Port)
+       buf.EncodeUint16(a.DstPort.Mask)
+}
+func (u *FlowUnion) GetIP6NTuple() (a FlowIP6NTuple) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       a.Foo = buf.DecodeInt32()
+       copy(a.SrcAddr.Addr[:], buf.DecodeBytes(16))
+       copy(a.SrcAddr.Mask[:], buf.DecodeBytes(16))
+       copy(a.DstAddr.Addr[:], buf.DecodeBytes(16))
+       copy(a.DstAddr.Mask[:], buf.DecodeBytes(16))
+       a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
+       a.Protocol.Mask = buf.DecodeUint8()
+       a.SrcPort.Port = buf.DecodeUint16()
+       a.SrcPort.Mask = buf.DecodeUint16()
+       a.DstPort.Port = buf.DecodeUint16()
+       a.DstPort.Mask = buf.DecodeUint16()
+       return
+}
+
+func FlowUnionIP4NTupleTagged(a FlowIP4NTupleTagged) (u FlowUnion) {
+       u.SetIP4NTupleTagged(a)
+       return
+}
+func (u *FlowUnion) SetIP4NTupleTagged(a FlowIP4NTupleTagged) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       buf.EncodeInt32(a.Foo)
+       buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
+       buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
+       buf.EncodeBytes(a.DstAddr.Addr[:], 4)
+       buf.EncodeBytes(a.DstAddr.Mask[:], 4)
+       buf.EncodeUint8(uint8(a.Protocol.Prot))
+       buf.EncodeUint8(a.Protocol.Mask)
+       buf.EncodeUint16(a.SrcPort.Port)
+       buf.EncodeUint16(a.SrcPort.Mask)
+       buf.EncodeUint16(a.DstPort.Port)
+       buf.EncodeUint16(a.DstPort.Mask)
+}
+func (u *FlowUnion) GetIP4NTupleTagged() (a FlowIP4NTupleTagged) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       a.Foo = buf.DecodeInt32()
+       copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
+       copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
+       copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
+       copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
+       a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
+       a.Protocol.Mask = buf.DecodeUint8()
+       a.SrcPort.Port = buf.DecodeUint16()
+       a.SrcPort.Mask = buf.DecodeUint16()
+       a.DstPort.Port = buf.DecodeUint16()
+       a.DstPort.Mask = buf.DecodeUint16()
+       return
+}
+
+func FlowUnionIP6NTupleTagged(a FlowIP6NTupleTagged) (u FlowUnion) {
+       u.SetIP6NTupleTagged(a)
+       return
+}
+func (u *FlowUnion) SetIP6NTupleTagged(a FlowIP6NTupleTagged) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       buf.EncodeInt32(a.Foo)
+       buf.EncodeBytes(a.SrcAddr.Addr[:], 16)
+       buf.EncodeBytes(a.SrcAddr.Mask[:], 16)
+       buf.EncodeBytes(a.DstAddr.Addr[:], 16)
+       buf.EncodeBytes(a.DstAddr.Mask[:], 16)
+       buf.EncodeUint8(uint8(a.Protocol.Prot))
+       buf.EncodeUint8(a.Protocol.Mask)
+       buf.EncodeUint16(a.SrcPort.Port)
+       buf.EncodeUint16(a.SrcPort.Mask)
+       buf.EncodeUint16(a.DstPort.Port)
+       buf.EncodeUint16(a.DstPort.Mask)
+}
+func (u *FlowUnion) GetIP6NTupleTagged() (a FlowIP6NTupleTagged) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       a.Foo = buf.DecodeInt32()
+       copy(a.SrcAddr.Addr[:], buf.DecodeBytes(16))
+       copy(a.SrcAddr.Mask[:], buf.DecodeBytes(16))
+       copy(a.DstAddr.Addr[:], buf.DecodeBytes(16))
+       copy(a.DstAddr.Mask[:], buf.DecodeBytes(16))
+       a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
+       a.Protocol.Mask = buf.DecodeUint8()
+       a.SrcPort.Port = buf.DecodeUint16()
+       a.SrcPort.Mask = buf.DecodeUint16()
+       a.DstPort.Port = buf.DecodeUint16()
+       a.DstPort.Mask = buf.DecodeUint16()
+       return
+}
+
+func FlowUnionIP4Vxlan(a FlowIP4Vxlan) (u FlowUnion) {
+       u.SetIP4Vxlan(a)
+       return
+}
+func (u *FlowUnion) SetIP4Vxlan(a FlowIP4Vxlan) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       buf.EncodeInt32(a.Foo)
+       buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
+       buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
+       buf.EncodeBytes(a.DstAddr.Addr[:], 4)
+       buf.EncodeBytes(a.DstAddr.Mask[:], 4)
+       buf.EncodeUint8(uint8(a.Protocol.Prot))
+       buf.EncodeUint8(a.Protocol.Mask)
+       buf.EncodeUint16(a.SrcPort.Port)
+       buf.EncodeUint16(a.SrcPort.Mask)
+       buf.EncodeUint16(a.DstPort.Port)
+       buf.EncodeUint16(a.DstPort.Mask)
+       buf.EncodeUint32(a.Vni)
+}
+func (u *FlowUnion) GetIP4Vxlan() (a FlowIP4Vxlan) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       a.Foo = buf.DecodeInt32()
+       copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
+       copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
+       copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
+       copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
+       a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
+       a.Protocol.Mask = buf.DecodeUint8()
+       a.SrcPort.Port = buf.DecodeUint16()
+       a.SrcPort.Mask = buf.DecodeUint16()
+       a.DstPort.Port = buf.DecodeUint16()
+       a.DstPort.Mask = buf.DecodeUint16()
+       a.Vni = buf.DecodeUint32()
+       return
+}
+
+func FlowUnionIP6Vxlan(a FlowIP6Vxlan) (u FlowUnion) {
+       u.SetIP6Vxlan(a)
+       return
+}
+func (u *FlowUnion) SetIP6Vxlan(a FlowIP6Vxlan) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       buf.EncodeInt32(a.Foo)
+       buf.EncodeBytes(a.SrcAddr.Addr[:], 16)
+       buf.EncodeBytes(a.SrcAddr.Mask[:], 16)
+       buf.EncodeBytes(a.DstAddr.Addr[:], 16)
+       buf.EncodeBytes(a.DstAddr.Mask[:], 16)
+       buf.EncodeUint8(uint8(a.Protocol.Prot))
+       buf.EncodeUint8(a.Protocol.Mask)
+       buf.EncodeUint16(a.SrcPort.Port)
+       buf.EncodeUint16(a.SrcPort.Mask)
+       buf.EncodeUint16(a.DstPort.Port)
+       buf.EncodeUint16(a.DstPort.Mask)
+       buf.EncodeUint32(a.Vni)
+}
+func (u *FlowUnion) GetIP6Vxlan() (a FlowIP6Vxlan) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       a.Foo = buf.DecodeInt32()
+       copy(a.SrcAddr.Addr[:], buf.DecodeBytes(16))
+       copy(a.SrcAddr.Mask[:], buf.DecodeBytes(16))
+       copy(a.DstAddr.Addr[:], buf.DecodeBytes(16))
+       copy(a.DstAddr.Mask[:], buf.DecodeBytes(16))
+       a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
+       a.Protocol.Mask = buf.DecodeUint8()
+       a.SrcPort.Port = buf.DecodeUint16()
+       a.SrcPort.Mask = buf.DecodeUint16()
+       a.DstPort.Port = buf.DecodeUint16()
+       a.DstPort.Mask = buf.DecodeUint16()
+       a.Vni = buf.DecodeUint32()
+       return
+}
+
+func FlowUnionIP4Gtpc(a FlowIP4Gtpc) (u FlowUnion) {
+       u.SetIP4Gtpc(a)
+       return
+}
+func (u *FlowUnion) SetIP4Gtpc(a FlowIP4Gtpc) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       buf.EncodeInt32(a.Foo)
+       buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
+       buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
+       buf.EncodeBytes(a.DstAddr.Addr[:], 4)
+       buf.EncodeBytes(a.DstAddr.Mask[:], 4)
+       buf.EncodeUint8(uint8(a.Protocol.Prot))
+       buf.EncodeUint8(a.Protocol.Mask)
+       buf.EncodeUint16(a.SrcPort.Port)
+       buf.EncodeUint16(a.SrcPort.Mask)
+       buf.EncodeUint16(a.DstPort.Port)
+       buf.EncodeUint16(a.DstPort.Mask)
+       buf.EncodeUint32(a.Teid)
+}
+func (u *FlowUnion) GetIP4Gtpc() (a FlowIP4Gtpc) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       a.Foo = buf.DecodeInt32()
+       copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
+       copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
+       copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
+       copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
+       a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
+       a.Protocol.Mask = buf.DecodeUint8()
+       a.SrcPort.Port = buf.DecodeUint16()
+       a.SrcPort.Mask = buf.DecodeUint16()
+       a.DstPort.Port = buf.DecodeUint16()
+       a.DstPort.Mask = buf.DecodeUint16()
+       a.Teid = buf.DecodeUint32()
+       return
+}
+
+func FlowUnionIP4Gtpu(a FlowIP4Gtpu) (u FlowUnion) {
+       u.SetIP4Gtpu(a)
+       return
+}
+func (u *FlowUnion) SetIP4Gtpu(a FlowIP4Gtpu) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       buf.EncodeInt32(a.Foo)
+       buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
+       buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
+       buf.EncodeBytes(a.DstAddr.Addr[:], 4)
+       buf.EncodeBytes(a.DstAddr.Mask[:], 4)
+       buf.EncodeUint8(uint8(a.Protocol.Prot))
+       buf.EncodeUint8(a.Protocol.Mask)
+       buf.EncodeUint16(a.SrcPort.Port)
+       buf.EncodeUint16(a.SrcPort.Mask)
+       buf.EncodeUint16(a.DstPort.Port)
+       buf.EncodeUint16(a.DstPort.Mask)
+       buf.EncodeUint32(a.Teid)
+}
+func (u *FlowUnion) GetIP4Gtpu() (a FlowIP4Gtpu) {
+       buf := codec.NewBuffer(u.XXX_UnionData[:])
+       a.Foo = buf.DecodeInt32()
+       copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
+       copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
+       copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
+       copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
+       a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
+       a.Protocol.Mask = buf.DecodeUint8()
+       a.SrcPort.Port = buf.DecodeUint16()
+       a.SrcPort.Mask = buf.DecodeUint16()
+       a.DstPort.Port = buf.DecodeUint16()
+       a.DstPort.Mask = buf.DecodeUint16()
+       a.Teid = buf.DecodeUint32()
+       return
+}
index 3082b52..30fc50a 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/flowprobe.api.json
 
 // Package flowprobe contains generated bindings for API file flowprobe.api.
@@ -29,7 +29,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "flowprobe"
        APIVersion = "1.0.0"
-       VersionCrc = 0xe904179b
+       VersionCrc = 0x8da9f1c
 )
 
 // FlowprobeRecordFlags defines enum 'flowprobe_record_flags'.
index efa1bbc..cbcf23b 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/gbp.api.json
 
 // Package gbp contains generated bindings for API file gbp.api.
@@ -33,7 +33,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "gbp"
        APIVersion = "2.0.0"
-       VersionCrc = 0xa084c6b0
+       VersionCrc = 0x5b2d93
 )
 
 // GbpBridgeDomainFlags defines enum 'gbp_bridge_domain_flags'.
@@ -421,8 +421,8 @@ type GbpRule struct {
 // GbpSubnet defines type 'gbp_subnet'.
 type GbpSubnet struct {
        RdID      uint32                         `binapi:"u32,name=rd_id" json:"rd_id,omitempty"`
-       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
-       Sclass    uint16                         `binapi:"u16,name=sclass" json:"sclass,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index,default=4294967295" json:"sw_if_index,omitempty"`
+       Sclass    uint16                         `binapi:"u16,name=sclass,default=4294967295" json:"sclass,omitempty"`
        Type      GbpSubnetType                  `binapi:"gbp_subnet_type,name=type" json:"type,omitempty"`
        Prefix    ip_types.Prefix                `binapi:"prefix,name=prefix" json:"prefix,omitempty"`
 }
@@ -436,13 +436,14 @@ type GbpVxlanTunnel struct {
 }
 
 // GbpBridgeDomainAdd defines message 'gbp_bridge_domain_add'.
+// InProgress: the message form may change in the future versions
 type GbpBridgeDomainAdd struct {
        Bd GbpBridgeDomain `binapi:"gbp_bridge_domain,name=bd" json:"bd,omitempty"`
 }
 
 func (m *GbpBridgeDomainAdd) Reset()               { *m = GbpBridgeDomainAdd{} }
 func (*GbpBridgeDomainAdd) GetMessageName() string { return "gbp_bridge_domain_add" }
-func (*GbpBridgeDomainAdd) GetCrcString() string   { return "8454bfdf" }
+func (*GbpBridgeDomainAdd) GetCrcString() string   { return "918e8c01" }
 func (*GbpBridgeDomainAdd) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -484,6 +485,7 @@ func (m *GbpBridgeDomainAdd) Unmarshal(b []byte) error {
 }
 
 // GbpBridgeDomainAddReply defines message 'gbp_bridge_domain_add_reply'.
+// InProgress: the message form may change in the future versions
 type GbpBridgeDomainAddReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -517,6 +519,7 @@ func (m *GbpBridgeDomainAddReply) Unmarshal(b []byte) error {
 }
 
 // GbpBridgeDomainDel defines message 'gbp_bridge_domain_del'.
+// InProgress: the message form may change in the future versions
 type GbpBridgeDomainDel struct {
        BdID uint32 `binapi:"u32,name=bd_id" json:"bd_id,omitempty"`
 }
@@ -550,6 +553,7 @@ func (m *GbpBridgeDomainDel) Unmarshal(b []byte) error {
 }
 
 // GbpBridgeDomainDelReply defines message 'gbp_bridge_domain_del_reply'.
+// InProgress: the message form may change in the future versions
 type GbpBridgeDomainDelReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -583,13 +587,14 @@ func (m *GbpBridgeDomainDelReply) Unmarshal(b []byte) error {
 }
 
 // GbpBridgeDomainDetails defines message 'gbp_bridge_domain_details'.
+// InProgress: the message form may change in the future versions
 type GbpBridgeDomainDetails struct {
        Bd GbpBridgeDomain `binapi:"gbp_bridge_domain,name=bd" json:"bd,omitempty"`
 }
 
 func (m *GbpBridgeDomainDetails) Reset()               { *m = GbpBridgeDomainDetails{} }
 func (*GbpBridgeDomainDetails) GetMessageName() string { return "gbp_bridge_domain_details" }
-func (*GbpBridgeDomainDetails) GetCrcString() string   { return "2acd15f9" }
+func (*GbpBridgeDomainDetails) GetCrcString() string   { return "51d51be9" }
 func (*GbpBridgeDomainDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -631,6 +636,7 @@ func (m *GbpBridgeDomainDetails) Unmarshal(b []byte) error {
 }
 
 // GbpBridgeDomainDump defines message 'gbp_bridge_domain_dump'.
+// InProgress: the message form may change in the future versions
 type GbpBridgeDomainDump struct{}
 
 func (m *GbpBridgeDomainDump) Reset()               { *m = GbpBridgeDomainDump{} }
@@ -658,6 +664,7 @@ func (m *GbpBridgeDomainDump) Unmarshal(b []byte) error {
 }
 
 // GbpBridgeDomainDumpReply defines message 'gbp_bridge_domain_dump_reply'.
+// InProgress: the message form may change in the future versions
 type GbpBridgeDomainDumpReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -691,6 +698,7 @@ func (m *GbpBridgeDomainDumpReply) Unmarshal(b []byte) error {
 }
 
 // GbpContractAddDel defines message 'gbp_contract_add_del'.
+// InProgress: the message form may change in the future versions
 type GbpContractAddDel struct {
        IsAdd    bool        `binapi:"bool,name=is_add" json:"is_add,omitempty"`
        Contract GbpContract `binapi:"gbp_contract,name=contract" json:"contract,omitempty"`
@@ -698,7 +706,7 @@ type GbpContractAddDel struct {
 
 func (m *GbpContractAddDel) Reset()               { *m = GbpContractAddDel{} }
 func (*GbpContractAddDel) GetMessageName() string { return "gbp_contract_add_del" }
-func (*GbpContractAddDel) GetCrcString() string   { return "553e275b" }
+func (*GbpContractAddDel) GetCrcString() string   { return "aa8d652d" }
 func (*GbpContractAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -801,6 +809,7 @@ func (m *GbpContractAddDel) Unmarshal(b []byte) error {
 }
 
 // GbpContractAddDelReply defines message 'gbp_contract_add_del_reply'.
+// InProgress: the message form may change in the future versions
 type GbpContractAddDelReply struct {
        Retval     int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
        StatsIndex uint32 `binapi:"u32,name=stats_index" json:"stats_index,omitempty"`
@@ -838,13 +847,14 @@ func (m *GbpContractAddDelReply) Unmarshal(b []byte) error {
 }
 
 // GbpContractDetails defines message 'gbp_contract_details'.
+// InProgress: the message form may change in the future versions
 type GbpContractDetails struct {
        Contract GbpContract `binapi:"gbp_contract,name=contract" json:"contract,omitempty"`
 }
 
 func (m *GbpContractDetails) Reset()               { *m = GbpContractDetails{} }
 func (*GbpContractDetails) GetMessageName() string { return "gbp_contract_details" }
-func (*GbpContractDetails) GetCrcString() string   { return "2a18db6e" }
+func (*GbpContractDetails) GetCrcString() string   { return "65dec325" }
 func (*GbpContractDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -944,6 +954,7 @@ func (m *GbpContractDetails) Unmarshal(b []byte) error {
 }
 
 // GbpContractDump defines message 'gbp_contract_dump'.
+// InProgress: the message form may change in the future versions
 type GbpContractDump struct{}
 
 func (m *GbpContractDump) Reset()               { *m = GbpContractDump{} }
@@ -971,13 +982,14 @@ func (m *GbpContractDump) Unmarshal(b []byte) error {
 }
 
 // GbpEndpointAdd defines message 'gbp_endpoint_add'.
+// InProgress: the message form may change in the future versions
 type GbpEndpointAdd struct {
        Endpoint GbpEndpoint `binapi:"gbp_endpoint,name=endpoint" json:"endpoint,omitempty"`
 }
 
 func (m *GbpEndpointAdd) Reset()               { *m = GbpEndpointAdd{} }
 func (*GbpEndpointAdd) GetMessageName() string { return "gbp_endpoint_add" }
-func (*GbpEndpointAdd) GetCrcString() string   { return "9ce16d5a" }
+func (*GbpEndpointAdd) GetCrcString() string   { return "7b3af7de" }
 func (*GbpEndpointAdd) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1050,6 +1062,7 @@ func (m *GbpEndpointAdd) Unmarshal(b []byte) error {
 }
 
 // GbpEndpointAddReply defines message 'gbp_endpoint_add_reply'.
+// InProgress: the message form may change in the future versions
 type GbpEndpointAddReply struct {
        Retval int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
        Handle uint32 `binapi:"u32,name=handle" json:"handle,omitempty"`
@@ -1087,6 +1100,7 @@ func (m *GbpEndpointAddReply) Unmarshal(b []byte) error {
 }
 
 // GbpEndpointDel defines message 'gbp_endpoint_del'.
+// InProgress: the message form may change in the future versions
 type GbpEndpointDel struct {
        Handle uint32 `binapi:"u32,name=handle" json:"handle,omitempty"`
 }
@@ -1120,6 +1134,7 @@ func (m *GbpEndpointDel) Unmarshal(b []byte) error {
 }
 
 // GbpEndpointDelReply defines message 'gbp_endpoint_del_reply'.
+// InProgress: the message form may change in the future versions
 type GbpEndpointDelReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -1153,6 +1168,7 @@ func (m *GbpEndpointDelReply) Unmarshal(b []byte) error {
 }
 
 // GbpEndpointDetails defines message 'gbp_endpoint_details'.
+// InProgress: the message form may change in the future versions
 type GbpEndpointDetails struct {
        Age      float64     `binapi:"f64,name=age" json:"age,omitempty"`
        Handle   uint32      `binapi:"u32,name=handle" json:"handle,omitempty"`
@@ -1161,7 +1177,7 @@ type GbpEndpointDetails struct {
 
 func (m *GbpEndpointDetails) Reset()               { *m = GbpEndpointDetails{} }
 func (*GbpEndpointDetails) GetMessageName() string { return "gbp_endpoint_details" }
-func (*GbpEndpointDetails) GetCrcString() string   { return "08aecb60" }
+func (*GbpEndpointDetails) GetCrcString() string   { return "8dd8fbd3" }
 func (*GbpEndpointDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1240,6 +1256,7 @@ func (m *GbpEndpointDetails) Unmarshal(b []byte) error {
 }
 
 // GbpEndpointDump defines message 'gbp_endpoint_dump'.
+// InProgress: the message form may change in the future versions
 type GbpEndpointDump struct{}
 
 func (m *GbpEndpointDump) Reset()               { *m = GbpEndpointDump{} }
@@ -1267,13 +1284,14 @@ func (m *GbpEndpointDump) Unmarshal(b []byte) error {
 }
 
 // GbpEndpointGroupAdd defines message 'gbp_endpoint_group_add'.
+// InProgress: the message form may change in the future versions
 type GbpEndpointGroupAdd struct {
        Epg GbpEndpointGroup `binapi:"gbp_endpoint_group,name=epg" json:"epg,omitempty"`
 }
 
 func (m *GbpEndpointGroupAdd) Reset()               { *m = GbpEndpointGroupAdd{} }
 func (*GbpEndpointGroupAdd) GetMessageName() string { return "gbp_endpoint_group_add" }
-func (*GbpEndpointGroupAdd) GetCrcString() string   { return "8e0f4054" }
+func (*GbpEndpointGroupAdd) GetCrcString() string   { return "301ddf15" }
 func (*GbpEndpointGroupAdd) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1315,6 +1333,7 @@ func (m *GbpEndpointGroupAdd) Unmarshal(b []byte) error {
 }
 
 // GbpEndpointGroupAddReply defines message 'gbp_endpoint_group_add_reply'.
+// InProgress: the message form may change in the future versions
 type GbpEndpointGroupAddReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -1348,6 +1367,7 @@ func (m *GbpEndpointGroupAddReply) Unmarshal(b []byte) error {
 }
 
 // GbpEndpointGroupDel defines message 'gbp_endpoint_group_del'.
+// InProgress: the message form may change in the future versions
 type GbpEndpointGroupDel struct {
        Sclass uint16 `binapi:"u16,name=sclass" json:"sclass,omitempty"`
 }
@@ -1381,6 +1401,7 @@ func (m *GbpEndpointGroupDel) Unmarshal(b []byte) error {
 }
 
 // GbpEndpointGroupDelReply defines message 'gbp_endpoint_group_del_reply'.
+// InProgress: the message form may change in the future versions
 type GbpEndpointGroupDelReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -1414,13 +1435,14 @@ func (m *GbpEndpointGroupDelReply) Unmarshal(b []byte) error {
 }
 
 // GbpEndpointGroupDetails defines message 'gbp_endpoint_group_details'.
+// InProgress: the message form may change in the future versions
 type GbpEndpointGroupDetails struct {
        Epg GbpEndpointGroup `binapi:"gbp_endpoint_group,name=epg" json:"epg,omitempty"`
 }
 
 func (m *GbpEndpointGroupDetails) Reset()               { *m = GbpEndpointGroupDetails{} }
 func (*GbpEndpointGroupDetails) GetMessageName() string { return "gbp_endpoint_group_details" }
-func (*GbpEndpointGroupDetails) GetCrcString() string   { return "8f38292c" }
+func (*GbpEndpointGroupDetails) GetCrcString() string   { return "ab71d723" }
 func (*GbpEndpointGroupDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1462,6 +1484,7 @@ func (m *GbpEndpointGroupDetails) Unmarshal(b []byte) error {
 }
 
 // GbpEndpointGroupDump defines message 'gbp_endpoint_group_dump'.
+// InProgress: the message form may change in the future versions
 type GbpEndpointGroupDump struct{}
 
 func (m *GbpEndpointGroupDump) Reset()               { *m = GbpEndpointGroupDump{} }
@@ -1489,6 +1512,7 @@ func (m *GbpEndpointGroupDump) Unmarshal(b []byte) error {
 }
 
 // GbpExtItfAddDel defines message 'gbp_ext_itf_add_del'.
+// InProgress: the message form may change in the future versions
 type GbpExtItfAddDel struct {
        IsAdd  bool      `binapi:"bool,name=is_add" json:"is_add,omitempty"`
        ExtItf GbpExtItf `binapi:"gbp_ext_itf,name=ext_itf" json:"ext_itf,omitempty"`
@@ -1496,7 +1520,7 @@ type GbpExtItfAddDel struct {
 
 func (m *GbpExtItfAddDel) Reset()               { *m = GbpExtItfAddDel{} }
 func (*GbpExtItfAddDel) GetMessageName() string { return "gbp_ext_itf_add_del" }
-func (*GbpExtItfAddDel) GetCrcString() string   { return "12ed5700" }
+func (*GbpExtItfAddDel) GetCrcString() string   { return "7606d0e1" }
 func (*GbpExtItfAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1535,6 +1559,7 @@ func (m *GbpExtItfAddDel) Unmarshal(b []byte) error {
 }
 
 // GbpExtItfAddDelReply defines message 'gbp_ext_itf_add_del_reply'.
+// InProgress: the message form may change in the future versions
 type GbpExtItfAddDelReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -1568,13 +1593,14 @@ func (m *GbpExtItfAddDelReply) Unmarshal(b []byte) error {
 }
 
 // GbpExtItfDetails defines message 'gbp_ext_itf_details'.
+// InProgress: the message form may change in the future versions
 type GbpExtItfDetails struct {
        ExtItf GbpExtItf `binapi:"gbp_ext_itf,name=ext_itf" json:"ext_itf,omitempty"`
 }
 
 func (m *GbpExtItfDetails) Reset()               { *m = GbpExtItfDetails{} }
 func (*GbpExtItfDetails) GetMessageName() string { return "gbp_ext_itf_details" }
-func (*GbpExtItfDetails) GetCrcString() string   { return "408a45c0" }
+func (*GbpExtItfDetails) GetCrcString() string   { return "519c3d3c" }
 func (*GbpExtItfDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1610,6 +1636,7 @@ func (m *GbpExtItfDetails) Unmarshal(b []byte) error {
 }
 
 // GbpExtItfDump defines message 'gbp_ext_itf_dump'.
+// InProgress: the message form may change in the future versions
 type GbpExtItfDump struct{}
 
 func (m *GbpExtItfDump) Reset()               { *m = GbpExtItfDump{} }
@@ -1637,6 +1664,7 @@ func (m *GbpExtItfDump) Unmarshal(b []byte) error {
 }
 
 // GbpRecircAddDel defines message 'gbp_recirc_add_del'.
+// InProgress: the message form may change in the future versions
 type GbpRecircAddDel struct {
        IsAdd  bool      `binapi:"bool,name=is_add" json:"is_add,omitempty"`
        Recirc GbpRecirc `binapi:"gbp_recirc,name=recirc" json:"recirc,omitempty"`
@@ -1680,6 +1708,7 @@ func (m *GbpRecircAddDel) Unmarshal(b []byte) error {
 }
 
 // GbpRecircAddDelReply defines message 'gbp_recirc_add_del_reply'.
+// InProgress: the message form may change in the future versions
 type GbpRecircAddDelReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -1713,6 +1742,7 @@ func (m *GbpRecircAddDelReply) Unmarshal(b []byte) error {
 }
 
 // GbpRecircDetails defines message 'gbp_recirc_details'.
+// InProgress: the message form may change in the future versions
 type GbpRecircDetails struct {
        Recirc GbpRecirc `binapi:"gbp_recirc,name=recirc" json:"recirc,omitempty"`
 }
@@ -1752,6 +1782,7 @@ func (m *GbpRecircDetails) Unmarshal(b []byte) error {
 }
 
 // GbpRecircDump defines message 'gbp_recirc_dump'.
+// InProgress: the message form may change in the future versions
 type GbpRecircDump struct{}
 
 func (m *GbpRecircDump) Reset()               { *m = GbpRecircDump{} }
@@ -1779,13 +1810,14 @@ func (m *GbpRecircDump) Unmarshal(b []byte) error {
 }
 
 // GbpRouteDomainAdd defines message 'gbp_route_domain_add'.
+// InProgress: the message form may change in the future versions
 type GbpRouteDomainAdd struct {
        Rd GbpRouteDomain `binapi:"gbp_route_domain,name=rd" json:"rd,omitempty"`
 }
 
 func (m *GbpRouteDomainAdd) Reset()               { *m = GbpRouteDomainAdd{} }
 func (*GbpRouteDomainAdd) GetMessageName() string { return "gbp_route_domain_add" }
-func (*GbpRouteDomainAdd) GetCrcString() string   { return "2d0afe38" }
+func (*GbpRouteDomainAdd) GetCrcString() string   { return "204c79e1" }
 func (*GbpRouteDomainAdd) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1827,6 +1859,7 @@ func (m *GbpRouteDomainAdd) Unmarshal(b []byte) error {
 }
 
 // GbpRouteDomainAddReply defines message 'gbp_route_domain_add_reply'.
+// InProgress: the message form may change in the future versions
 type GbpRouteDomainAddReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -1860,6 +1893,7 @@ func (m *GbpRouteDomainAddReply) Unmarshal(b []byte) error {
 }
 
 // GbpRouteDomainDel defines message 'gbp_route_domain_del'.
+// InProgress: the message form may change in the future versions
 type GbpRouteDomainDel struct {
        RdID uint32 `binapi:"u32,name=rd_id" json:"rd_id,omitempty"`
 }
@@ -1893,6 +1927,7 @@ func (m *GbpRouteDomainDel) Unmarshal(b []byte) error {
 }
 
 // GbpRouteDomainDelReply defines message 'gbp_route_domain_del_reply'.
+// InProgress: the message form may change in the future versions
 type GbpRouteDomainDelReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -1926,13 +1961,14 @@ func (m *GbpRouteDomainDelReply) Unmarshal(b []byte) error {
 }
 
 // GbpRouteDomainDetails defines message 'gbp_route_domain_details'.
+// InProgress: the message form may change in the future versions
 type GbpRouteDomainDetails struct {
        Rd GbpRouteDomain `binapi:"gbp_route_domain,name=rd" json:"rd,omitempty"`
 }
 
 func (m *GbpRouteDomainDetails) Reset()               { *m = GbpRouteDomainDetails{} }
 func (*GbpRouteDomainDetails) GetMessageName() string { return "gbp_route_domain_details" }
-func (*GbpRouteDomainDetails) GetCrcString() string   { return "8ab11375" }
+func (*GbpRouteDomainDetails) GetCrcString() string   { return "a78bfbca" }
 func (*GbpRouteDomainDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1974,6 +2010,7 @@ func (m *GbpRouteDomainDetails) Unmarshal(b []byte) error {
 }
 
 // GbpRouteDomainDump defines message 'gbp_route_domain_dump'.
+// InProgress: the message form may change in the future versions
 type GbpRouteDomainDump struct{}
 
 func (m *GbpRouteDomainDump) Reset()               { *m = GbpRouteDomainDump{} }
@@ -2001,6 +2038,7 @@ func (m *GbpRouteDomainDump) Unmarshal(b []byte) error {
 }
 
 // GbpRouteDomainDumpReply defines message 'gbp_route_domain_dump_reply'.
+// InProgress: the message form may change in the future versions
 type GbpRouteDomainDumpReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -2034,6 +2072,7 @@ func (m *GbpRouteDomainDumpReply) Unmarshal(b []byte) error {
 }
 
 // GbpSubnetAddDel defines message 'gbp_subnet_add_del'.
+// InProgress: the message form may change in the future versions
 type GbpSubnetAddDel struct {
        IsAdd  bool      `binapi:"bool,name=is_add" json:"is_add,omitempty"`
        Subnet GbpSubnet `binapi:"gbp_subnet,name=subnet" json:"subnet,omitempty"`
@@ -2041,7 +2080,7 @@ type GbpSubnetAddDel struct {
 
 func (m *GbpSubnetAddDel) Reset()               { *m = GbpSubnetAddDel{} }
 func (*GbpSubnetAddDel) GetMessageName() string { return "gbp_subnet_add_del" }
-func (*GbpSubnetAddDel) GetCrcString() string   { return "888aca35" }
+func (*GbpSubnetAddDel) GetCrcString() string   { return "a8803c80" }
 func (*GbpSubnetAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -2089,6 +2128,7 @@ func (m *GbpSubnetAddDel) Unmarshal(b []byte) error {
 }
 
 // GbpSubnetAddDelReply defines message 'gbp_subnet_add_del_reply'.
+// InProgress: the message form may change in the future versions
 type GbpSubnetAddDelReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -2122,13 +2162,14 @@ func (m *GbpSubnetAddDelReply) Unmarshal(b []byte) error {
 }
 
 // GbpSubnetDetails defines message 'gbp_subnet_details'.
+// InProgress: the message form may change in the future versions
 type GbpSubnetDetails struct {
        Subnet GbpSubnet `binapi:"gbp_subnet,name=subnet" json:"subnet,omitempty"`
 }
 
 func (m *GbpSubnetDetails) Reset()               { *m = GbpSubnetDetails{} }
 func (*GbpSubnetDetails) GetMessageName() string { return "gbp_subnet_details" }
-func (*GbpSubnetDetails) GetCrcString() string   { return "4ed84156" }
+func (*GbpSubnetDetails) GetCrcString() string   { return "cbc5ca18" }
 func (*GbpSubnetDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -2173,6 +2214,7 @@ func (m *GbpSubnetDetails) Unmarshal(b []byte) error {
 }
 
 // GbpSubnetDump defines message 'gbp_subnet_dump'.
+// InProgress: the message form may change in the future versions
 type GbpSubnetDump struct{}
 
 func (m *GbpSubnetDump) Reset()               { *m = GbpSubnetDump{} }
@@ -2200,6 +2242,7 @@ func (m *GbpSubnetDump) Unmarshal(b []byte) error {
 }
 
 // GbpVxlanTunnelAdd defines message 'gbp_vxlan_tunnel_add'.
+// InProgress: the message form may change in the future versions
 type GbpVxlanTunnelAdd struct {
        Tunnel GbpVxlanTunnel `binapi:"gbp_vxlan_tunnel,name=tunnel" json:"tunnel,omitempty"`
 }
@@ -2242,6 +2285,7 @@ func (m *GbpVxlanTunnelAdd) Unmarshal(b []byte) error {
 }
 
 // GbpVxlanTunnelAddReply defines message 'gbp_vxlan_tunnel_add_reply'.
+// InProgress: the message form may change in the future versions
 type GbpVxlanTunnelAddReply struct {
        Retval    int32                          `binapi:"i32,name=retval" json:"retval,omitempty"`
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
@@ -2279,6 +2323,7 @@ func (m *GbpVxlanTunnelAddReply) Unmarshal(b []byte) error {
 }
 
 // GbpVxlanTunnelDel defines message 'gbp_vxlan_tunnel_del'.
+// InProgress: the message form may change in the future versions
 type GbpVxlanTunnelDel struct {
        Vni uint32 `binapi:"u32,name=vni" json:"vni,omitempty"`
 }
@@ -2312,6 +2357,7 @@ func (m *GbpVxlanTunnelDel) Unmarshal(b []byte) error {
 }
 
 // GbpVxlanTunnelDelReply defines message 'gbp_vxlan_tunnel_del_reply'.
+// InProgress: the message form may change in the future versions
 type GbpVxlanTunnelDelReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -2345,6 +2391,7 @@ func (m *GbpVxlanTunnelDelReply) Unmarshal(b []byte) error {
 }
 
 // GbpVxlanTunnelDetails defines message 'gbp_vxlan_tunnel_details'.
+// InProgress: the message form may change in the future versions
 type GbpVxlanTunnelDetails struct {
        Tunnel GbpVxlanTunnel `binapi:"gbp_vxlan_tunnel,name=tunnel" json:"tunnel,omitempty"`
 }
@@ -2387,6 +2434,7 @@ func (m *GbpVxlanTunnelDetails) Unmarshal(b []byte) error {
 }
 
 // GbpVxlanTunnelDump defines message 'gbp_vxlan_tunnel_dump'.
+// InProgress: the message form may change in the future versions
 type GbpVxlanTunnelDump struct{}
 
 func (m *GbpVxlanTunnelDump) Reset()               { *m = GbpVxlanTunnelDump{} }
@@ -2415,47 +2463,47 @@ func (m *GbpVxlanTunnelDump) Unmarshal(b []byte) error {
 
 func init() { file_gbp_binapi_init() }
 func file_gbp_binapi_init() {
-       api.RegisterMessage((*GbpBridgeDomainAdd)(nil), "gbp_bridge_domain_add_8454bfdf")
+       api.RegisterMessage((*GbpBridgeDomainAdd)(nil), "gbp_bridge_domain_add_918e8c01")
        api.RegisterMessage((*GbpBridgeDomainAddReply)(nil), "gbp_bridge_domain_add_reply_e8d4e804")
        api.RegisterMessage((*GbpBridgeDomainDel)(nil), "gbp_bridge_domain_del_c25fdce6")
        api.RegisterMessage((*GbpBridgeDomainDelReply)(nil), "gbp_bridge_domain_del_reply_e8d4e804")
-       api.RegisterMessage((*GbpBridgeDomainDetails)(nil), "gbp_bridge_domain_details_2acd15f9")
+       api.RegisterMessage((*GbpBridgeDomainDetails)(nil), "gbp_bridge_domain_details_51d51be9")
        api.RegisterMessage((*GbpBridgeDomainDump)(nil), "gbp_bridge_domain_dump_51077d14")
        api.RegisterMessage((*GbpBridgeDomainDumpReply)(nil), "gbp_bridge_domain_dump_reply_e8d4e804")
-       api.RegisterMessage((*GbpContractAddDel)(nil), "gbp_contract_add_del_553e275b")
+       api.RegisterMessage((*GbpContractAddDel)(nil), "gbp_contract_add_del_aa8d652d")
        api.RegisterMessage((*GbpContractAddDelReply)(nil), "gbp_contract_add_del_reply_1992deab")
-       api.RegisterMessage((*GbpContractDetails)(nil), "gbp_contract_details_2a18db6e")
+       api.RegisterMessage((*GbpContractDetails)(nil), "gbp_contract_details_65dec325")
        api.RegisterMessage((*GbpContractDump)(nil), "gbp_contract_dump_51077d14")
-       api.RegisterMessage((*GbpEndpointAdd)(nil), "gbp_endpoint_add_9ce16d5a")
+       api.RegisterMessage((*GbpEndpointAdd)(nil), "gbp_endpoint_add_7b3af7de")
        api.RegisterMessage((*GbpEndpointAddReply)(nil), "gbp_endpoint_add_reply_1dd3ff3e")
        api.RegisterMessage((*GbpEndpointDel)(nil), "gbp_endpoint_del_b93cd566")
        api.RegisterMessage((*GbpEndpointDelReply)(nil), "gbp_endpoint_del_reply_e8d4e804")
-       api.RegisterMessage((*GbpEndpointDetails)(nil), "gbp_endpoint_details_08aecb60")
+       api.RegisterMessage((*GbpEndpointDetails)(nil), "gbp_endpoint_details_8dd8fbd3")
        api.RegisterMessage((*GbpEndpointDump)(nil), "gbp_endpoint_dump_51077d14")
-       api.RegisterMessage((*GbpEndpointGroupAdd)(nil), "gbp_endpoint_group_add_8e0f4054")
+       api.RegisterMessage((*GbpEndpointGroupAdd)(nil), "gbp_endpoint_group_add_301ddf15")
        api.RegisterMessage((*GbpEndpointGroupAddReply)(nil), "gbp_endpoint_group_add_reply_e8d4e804")
        api.RegisterMessage((*GbpEndpointGroupDel)(nil), "gbp_endpoint_group_del_3436b8b7")
        api.RegisterMessage((*GbpEndpointGroupDelReply)(nil), "gbp_endpoint_group_del_reply_e8d4e804")
-       api.RegisterMessage((*GbpEndpointGroupDetails)(nil), "gbp_endpoint_group_details_8f38292c")
+       api.RegisterMessage((*GbpEndpointGroupDetails)(nil), "gbp_endpoint_group_details_ab71d723")
        api.RegisterMessage((*GbpEndpointGroupDump)(nil), "gbp_endpoint_group_dump_51077d14")
-       api.RegisterMessage((*GbpExtItfAddDel)(nil), "gbp_ext_itf_add_del_12ed5700")
+       api.RegisterMessage((*GbpExtItfAddDel)(nil), "gbp_ext_itf_add_del_7606d0e1")
        api.RegisterMessage((*GbpExtItfAddDelReply)(nil), "gbp_ext_itf_add_del_reply_e8d4e804")
-       api.RegisterMessage((*GbpExtItfDetails)(nil), "gbp_ext_itf_details_408a45c0")
+       api.RegisterMessage((*GbpExtItfDetails)(nil), "gbp_ext_itf_details_519c3d3c")
        api.RegisterMessage((*GbpExtItfDump)(nil), "gbp_ext_itf_dump_51077d14")
        api.RegisterMessage((*GbpRecircAddDel)(nil), "gbp_recirc_add_del_718c69c3")
        api.RegisterMessage((*GbpRecircAddDelReply)(nil), "gbp_recirc_add_del_reply_e8d4e804")
        api.RegisterMessage((*GbpRecircDetails)(nil), "gbp_recirc_details_66ecc42e")
        api.RegisterMessage((*GbpRecircDump)(nil), "gbp_recirc_dump_51077d14")
-       api.RegisterMessage((*GbpRouteDomainAdd)(nil), "gbp_route_domain_add_2d0afe38")
+       api.RegisterMessage((*GbpRouteDomainAdd)(nil), "gbp_route_domain_add_204c79e1")
        api.RegisterMessage((*GbpRouteDomainAddReply)(nil), "gbp_route_domain_add_reply_e8d4e804")
        api.RegisterMessage((*GbpRouteDomainDel)(nil), "gbp_route_domain_del_bee4edcd")
        api.RegisterMessage((*GbpRouteDomainDelReply)(nil), "gbp_route_domain_del_reply_e8d4e804")
-       api.RegisterMessage((*GbpRouteDomainDetails)(nil), "gbp_route_domain_details_8ab11375")
+       api.RegisterMessage((*GbpRouteDomainDetails)(nil), "gbp_route_domain_details_a78bfbca")
        api.RegisterMessage((*GbpRouteDomainDump)(nil), "gbp_route_domain_dump_51077d14")
        api.RegisterMessage((*GbpRouteDomainDumpReply)(nil), "gbp_route_domain_dump_reply_e8d4e804")
-       api.RegisterMessage((*GbpSubnetAddDel)(nil), "gbp_subnet_add_del_888aca35")
+       api.RegisterMessage((*GbpSubnetAddDel)(nil), "gbp_subnet_add_del_a8803c80")
        api.RegisterMessage((*GbpSubnetAddDelReply)(nil), "gbp_subnet_add_del_reply_e8d4e804")
-       api.RegisterMessage((*GbpSubnetDetails)(nil), "gbp_subnet_details_4ed84156")
+       api.RegisterMessage((*GbpSubnetDetails)(nil), "gbp_subnet_details_cbc5ca18")
        api.RegisterMessage((*GbpSubnetDump)(nil), "gbp_subnet_dump_51077d14")
        api.RegisterMessage((*GbpVxlanTunnelAdd)(nil), "gbp_vxlan_tunnel_add_3e070b35")
        api.RegisterMessage((*GbpVxlanTunnelAddReply)(nil), "gbp_vxlan_tunnel_add_reply_5383d31f")
index 58c5988..27304f0 100644 (file)
@@ -1,13 +1,13 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
-// source: /usr/share/vpp/api/core/geneve.api.json
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/geneve.api.json
 
 // Package geneve contains generated bindings for API file geneve.api.
 //
 // Contents:
-//   6 messages
+//   8 messages
 //
 package geneve
 
@@ -27,11 +27,12 @@ const _ = api.GoVppAPIPackageIsVersion2
 
 const (
        APIFile    = "geneve"
-       APIVersion = "2.0.0"
-       VersionCrc = 0x7730c1d3
+       APIVersion = "2.1.0"
+       VersionCrc = 0xe3dbb8a3
 )
 
 // GeneveAddDelTunnel defines message 'geneve_add_del_tunnel'.
+// Deprecated: the message will be removed in the future versions
 type GeneveAddDelTunnel struct {
        IsAdd          bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
        LocalAddress   ip_types.Address               `binapi:"address,name=local_address" json:"local_address,omitempty"`
@@ -44,7 +45,7 @@ type GeneveAddDelTunnel struct {
 
 func (m *GeneveAddDelTunnel) Reset()               { *m = GeneveAddDelTunnel{} }
 func (*GeneveAddDelTunnel) GetMessageName() string { return "geneve_add_del_tunnel" }
-func (*GeneveAddDelTunnel) GetCrcString() string   { return "976693b5" }
+func (*GeneveAddDelTunnel) GetCrcString() string   { return "99445831" }
 func (*GeneveAddDelTunnel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -94,6 +95,110 @@ func (m *GeneveAddDelTunnel) Unmarshal(b []byte) error {
        return nil
 }
 
+// GeneveAddDelTunnel2 defines message 'geneve_add_del_tunnel2'.
+type GeneveAddDelTunnel2 struct {
+       IsAdd          bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       LocalAddress   ip_types.Address               `binapi:"address,name=local_address" json:"local_address,omitempty"`
+       RemoteAddress  ip_types.Address               `binapi:"address,name=remote_address" json:"remote_address,omitempty"`
+       McastSwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=mcast_sw_if_index" json:"mcast_sw_if_index,omitempty"`
+       EncapVrfID     uint32                         `binapi:"u32,name=encap_vrf_id" json:"encap_vrf_id,omitempty"`
+       DecapNextIndex uint32                         `binapi:"u32,name=decap_next_index" json:"decap_next_index,omitempty"`
+       Vni            uint32                         `binapi:"u32,name=vni" json:"vni,omitempty"`
+       L3Mode         bool                           `binapi:"bool,name=l3_mode" json:"l3_mode,omitempty"`
+}
+
+func (m *GeneveAddDelTunnel2) Reset()               { *m = GeneveAddDelTunnel2{} }
+func (*GeneveAddDelTunnel2) GetMessageName() string { return "geneve_add_del_tunnel2" }
+func (*GeneveAddDelTunnel2) GetCrcString() string   { return "8c2a9999" }
+func (*GeneveAddDelTunnel2) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *GeneveAddDelTunnel2) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1      // m.IsAdd
+       size += 1      // m.LocalAddress.Af
+       size += 1 * 16 // m.LocalAddress.Un
+       size += 1      // m.RemoteAddress.Af
+       size += 1 * 16 // m.RemoteAddress.Un
+       size += 4      // m.McastSwIfIndex
+       size += 4      // m.EncapVrfID
+       size += 4      // m.DecapNextIndex
+       size += 4      // m.Vni
+       size += 1      // m.L3Mode
+       return size
+}
+func (m *GeneveAddDelTunnel2) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsAdd)
+       buf.EncodeUint8(uint8(m.LocalAddress.Af))
+       buf.EncodeBytes(m.LocalAddress.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(uint8(m.RemoteAddress.Af))
+       buf.EncodeBytes(m.RemoteAddress.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint32(uint32(m.McastSwIfIndex))
+       buf.EncodeUint32(m.EncapVrfID)
+       buf.EncodeUint32(m.DecapNextIndex)
+       buf.EncodeUint32(m.Vni)
+       buf.EncodeBool(m.L3Mode)
+       return buf.Bytes(), nil
+}
+func (m *GeneveAddDelTunnel2) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeBool()
+       m.LocalAddress.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.LocalAddress.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.RemoteAddress.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.RemoteAddress.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.McastSwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.EncapVrfID = buf.DecodeUint32()
+       m.DecapNextIndex = buf.DecodeUint32()
+       m.Vni = buf.DecodeUint32()
+       m.L3Mode = buf.DecodeBool()
+       return nil
+}
+
+// GeneveAddDelTunnel2Reply defines message 'geneve_add_del_tunnel2_reply'.
+type GeneveAddDelTunnel2Reply struct {
+       Retval    int32                          `binapi:"i32,name=retval" json:"retval,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *GeneveAddDelTunnel2Reply) Reset()               { *m = GeneveAddDelTunnel2Reply{} }
+func (*GeneveAddDelTunnel2Reply) GetMessageName() string { return "geneve_add_del_tunnel2_reply" }
+func (*GeneveAddDelTunnel2Reply) GetCrcString() string   { return "5383d31f" }
+func (*GeneveAddDelTunnel2Reply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *GeneveAddDelTunnel2Reply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *GeneveAddDelTunnel2Reply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *GeneveAddDelTunnel2Reply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
 // GeneveAddDelTunnelReply defines message 'geneve_add_del_tunnel_reply'.
 type GeneveAddDelTunnelReply struct {
        Retval    int32                          `binapi:"i32,name=retval" json:"retval,omitempty"`
@@ -144,7 +249,7 @@ type GeneveTunnelDetails struct {
 
 func (m *GeneveTunnelDetails) Reset()               { *m = GeneveTunnelDetails{} }
 func (*GeneveTunnelDetails) GetMessageName() string { return "geneve_tunnel_details" }
-func (*GeneveTunnelDetails) GetCrcString() string   { return "e27e2748" }
+func (*GeneveTunnelDetails) GetCrcString() string   { return "6b16eb24" }
 func (*GeneveTunnelDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -305,9 +410,11 @@ func (m *SwInterfaceSetGeneveBypassReply) Unmarshal(b []byte) error {
 
 func init() { file_geneve_binapi_init() }
 func file_geneve_binapi_init() {
-       api.RegisterMessage((*GeneveAddDelTunnel)(nil), "geneve_add_del_tunnel_976693b5")
+       api.RegisterMessage((*GeneveAddDelTunnel)(nil), "geneve_add_del_tunnel_99445831")
+       api.RegisterMessage((*GeneveAddDelTunnel2)(nil), "geneve_add_del_tunnel2_8c2a9999")
+       api.RegisterMessage((*GeneveAddDelTunnel2Reply)(nil), "geneve_add_del_tunnel2_reply_5383d31f")
        api.RegisterMessage((*GeneveAddDelTunnelReply)(nil), "geneve_add_del_tunnel_reply_5383d31f")
-       api.RegisterMessage((*GeneveTunnelDetails)(nil), "geneve_tunnel_details_e27e2748")
+       api.RegisterMessage((*GeneveTunnelDetails)(nil), "geneve_tunnel_details_6b16eb24")
        api.RegisterMessage((*GeneveTunnelDump)(nil), "geneve_tunnel_dump_f9e6675e")
        api.RegisterMessage((*SwInterfaceSetGeneveBypass)(nil), "sw_interface_set_geneve_bypass_65247409")
        api.RegisterMessage((*SwInterfaceSetGeneveBypassReply)(nil), "sw_interface_set_geneve_bypass_reply_e8d4e804")
@@ -317,6 +424,8 @@ func file_geneve_binapi_init() {
 func AllMessages() []api.Message {
        return []api.Message{
                (*GeneveAddDelTunnel)(nil),
+               (*GeneveAddDelTunnel2)(nil),
+               (*GeneveAddDelTunnel2Reply)(nil),
                (*GeneveAddDelTunnelReply)(nil),
                (*GeneveTunnelDetails)(nil),
                (*GeneveTunnelDump)(nil),
index f2dacb8..5d44d7d 100644 (file)
@@ -14,6 +14,7 @@ import (
 // RPCService defines RPC service geneve.
 type RPCService interface {
        GeneveAddDelTunnel(ctx context.Context, in *GeneveAddDelTunnel) (*GeneveAddDelTunnelReply, error)
+       GeneveAddDelTunnel2(ctx context.Context, in *GeneveAddDelTunnel2) (*GeneveAddDelTunnel2Reply, error)
        GeneveTunnelDump(ctx context.Context, in *GeneveTunnelDump) (RPCService_GeneveTunnelDumpClient, error)
        SwInterfaceSetGeneveBypass(ctx context.Context, in *SwInterfaceSetGeneveBypass) (*SwInterfaceSetGeneveBypassReply, error)
 }
@@ -35,6 +36,15 @@ func (c *serviceClient) GeneveAddDelTunnel(ctx context.Context, in *GeneveAddDel
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) GeneveAddDelTunnel2(ctx context.Context, in *GeneveAddDelTunnel2) (*GeneveAddDelTunnel2Reply, error) {
+       out := new(GeneveAddDelTunnel2Reply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) GeneveTunnelDump(ctx context.Context, in *GeneveTunnelDump) (RPCService_GeneveTunnelDumpClient, error) {
        stream, err := c.conn.NewStream(ctx)
        if err != nil {
diff --git a/binapi/graph/graph.ba.go b/binapi/graph/graph.ba.go
new file mode 100644 (file)
index 0000000..7847689
--- /dev/null
@@ -0,0 +1,240 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/graph.api.json
+
+// Package graph contains generated bindings for API file graph.api.
+//
+// Contents:
+//   1 enum
+//   3 messages
+//
+package graph
+
+import (
+       "strconv"
+
+       api "git.fd.io/govpp.git/api"
+       codec "git.fd.io/govpp.git/codec"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+const (
+       APIFile    = "graph"
+       APIVersion = "1.0.0"
+       VersionCrc = 0xa0b3fd1c
+)
+
+// NodeFlag defines enum 'node_flag'.
+type NodeFlag uint32
+
+const (
+       NODE_FLAG_FRAME_NO_FREE_AFTER_DISPATCH          NodeFlag = 1
+       NODE_FLAG_IS_OUTPUT                             NodeFlag = 2
+       NODE_FLAG_IS_DROP                               NodeFlag = 4
+       NODE_FLAG_IS_PUNT                               NodeFlag = 8
+       NODE_FLAG_IS_HANDOFF                            NodeFlag = 16
+       NODE_FLAG_TRACE                                 NodeFlag = 32
+       NODE_FLAG_SWITCH_FROM_INTERRUPT_TO_POLLING_MODE NodeFlag = 64
+       NODE_FLAG_SWITCH_FROM_POLLING_TO_INTERRUPT_MODE NodeFlag = 128
+       NODE_FLAG_TRACE_SUPPORTED                       NodeFlag = 256
+)
+
+var (
+       NodeFlag_name = map[uint32]string{
+               1:   "NODE_FLAG_FRAME_NO_FREE_AFTER_DISPATCH",
+               2:   "NODE_FLAG_IS_OUTPUT",
+               4:   "NODE_FLAG_IS_DROP",
+               8:   "NODE_FLAG_IS_PUNT",
+               16:  "NODE_FLAG_IS_HANDOFF",
+               32:  "NODE_FLAG_TRACE",
+               64:  "NODE_FLAG_SWITCH_FROM_INTERRUPT_TO_POLLING_MODE",
+               128: "NODE_FLAG_SWITCH_FROM_POLLING_TO_INTERRUPT_MODE",
+               256: "NODE_FLAG_TRACE_SUPPORTED",
+       }
+       NodeFlag_value = map[string]uint32{
+               "NODE_FLAG_FRAME_NO_FREE_AFTER_DISPATCH":          1,
+               "NODE_FLAG_IS_OUTPUT":                             2,
+               "NODE_FLAG_IS_DROP":                               4,
+               "NODE_FLAG_IS_PUNT":                               8,
+               "NODE_FLAG_IS_HANDOFF":                            16,
+               "NODE_FLAG_TRACE":                                 32,
+               "NODE_FLAG_SWITCH_FROM_INTERRUPT_TO_POLLING_MODE": 64,
+               "NODE_FLAG_SWITCH_FROM_POLLING_TO_INTERRUPT_MODE": 128,
+               "NODE_FLAG_TRACE_SUPPORTED":                       256,
+       }
+)
+
+func (x NodeFlag) String() string {
+       s, ok := NodeFlag_name[uint32(x)]
+       if ok {
+               return s
+       }
+       return "NodeFlag(" + strconv.Itoa(int(x)) + ")"
+}
+
+// GraphNodeDetails defines message 'graph_node_details'.
+type GraphNodeDetails struct {
+       Index   uint32   `binapi:"u32,name=index" json:"index,omitempty"`
+       Name    string   `binapi:"string[64],name=name" json:"name,omitempty"`
+       Flags   NodeFlag `binapi:"node_flag,name=flags" json:"flags,omitempty"`
+       NArcs   uint32   `binapi:"u32,name=n_arcs" json:"-"`
+       ArcsOut []uint32 `binapi:"u32[n_arcs],name=arcs_out" json:"arcs_out,omitempty"`
+}
+
+func (m *GraphNodeDetails) Reset()               { *m = GraphNodeDetails{} }
+func (*GraphNodeDetails) GetMessageName() string { return "graph_node_details" }
+func (*GraphNodeDetails) GetCrcString() string   { return "ac762018" }
+func (*GraphNodeDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *GraphNodeDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4                  // m.Index
+       size += 64                 // m.Name
+       size += 4                  // m.Flags
+       size += 4                  // m.NArcs
+       size += 4 * len(m.ArcsOut) // m.ArcsOut
+       return size
+}
+func (m *GraphNodeDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.Index)
+       buf.EncodeString(m.Name, 64)
+       buf.EncodeUint32(uint32(m.Flags))
+       buf.EncodeUint32(uint32(len(m.ArcsOut)))
+       for i := 0; i < len(m.ArcsOut); i++ {
+               var x uint32
+               if i < len(m.ArcsOut) {
+                       x = uint32(m.ArcsOut[i])
+               }
+               buf.EncodeUint32(x)
+       }
+       return buf.Bytes(), nil
+}
+func (m *GraphNodeDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Index = buf.DecodeUint32()
+       m.Name = buf.DecodeString(64)
+       m.Flags = NodeFlag(buf.DecodeUint32())
+       m.NArcs = buf.DecodeUint32()
+       m.ArcsOut = make([]uint32, m.NArcs)
+       for i := 0; i < len(m.ArcsOut); i++ {
+               m.ArcsOut[i] = buf.DecodeUint32()
+       }
+       return nil
+}
+
+// GraphNodeGet defines message 'graph_node_get'.
+type GraphNodeGet struct {
+       Cursor   uint32   `binapi:"u32,name=cursor" json:"cursor,omitempty"`
+       Index    uint32   `binapi:"u32,name=index" json:"index,omitempty"`
+       Name     string   `binapi:"string[64],name=name" json:"name,omitempty"`
+       Flags    NodeFlag `binapi:"node_flag,name=flags" json:"flags,omitempty"`
+       WantArcs bool     `binapi:"bool,name=want_arcs" json:"want_arcs,omitempty"`
+}
+
+func (m *GraphNodeGet) Reset()               { *m = GraphNodeGet{} }
+func (*GraphNodeGet) GetMessageName() string { return "graph_node_get" }
+func (*GraphNodeGet) GetCrcString() string   { return "39c8792e" }
+func (*GraphNodeGet) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *GraphNodeGet) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4  // m.Cursor
+       size += 4  // m.Index
+       size += 64 // m.Name
+       size += 4  // m.Flags
+       size += 1  // m.WantArcs
+       return size
+}
+func (m *GraphNodeGet) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.Cursor)
+       buf.EncodeUint32(m.Index)
+       buf.EncodeString(m.Name, 64)
+       buf.EncodeUint32(uint32(m.Flags))
+       buf.EncodeBool(m.WantArcs)
+       return buf.Bytes(), nil
+}
+func (m *GraphNodeGet) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Cursor = buf.DecodeUint32()
+       m.Index = buf.DecodeUint32()
+       m.Name = buf.DecodeString(64)
+       m.Flags = NodeFlag(buf.DecodeUint32())
+       m.WantArcs = buf.DecodeBool()
+       return nil
+}
+
+// GraphNodeGetReply defines message 'graph_node_get_reply'.
+type GraphNodeGetReply struct {
+       Retval int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       Cursor uint32 `binapi:"u32,name=cursor" json:"cursor,omitempty"`
+}
+
+func (m *GraphNodeGetReply) Reset()               { *m = GraphNodeGetReply{} }
+func (*GraphNodeGetReply) GetMessageName() string { return "graph_node_get_reply" }
+func (*GraphNodeGetReply) GetCrcString() string   { return "53b48f5d" }
+func (*GraphNodeGetReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *GraphNodeGetReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.Cursor
+       return size
+}
+func (m *GraphNodeGetReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.Cursor)
+       return buf.Bytes(), nil
+}
+func (m *GraphNodeGetReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.Cursor = buf.DecodeUint32()
+       return nil
+}
+
+func init() { file_graph_binapi_init() }
+func file_graph_binapi_init() {
+       api.RegisterMessage((*GraphNodeDetails)(nil), "graph_node_details_ac762018")
+       api.RegisterMessage((*GraphNodeGet)(nil), "graph_node_get_39c8792e")
+       api.RegisterMessage((*GraphNodeGetReply)(nil), "graph_node_get_reply_53b48f5d")
+}
+
+// Messages returns list of all messages in this module.
+func AllMessages() []api.Message {
+       return []api.Message{
+               (*GraphNodeDetails)(nil),
+               (*GraphNodeGet)(nil),
+               (*GraphNodeGetReply)(nil),
+       }
+}
diff --git a/binapi/graph/graph_rpc.ba.go b/binapi/graph/graph_rpc.ba.go
new file mode 100644 (file)
index 0000000..d799e4f
--- /dev/null
@@ -0,0 +1,60 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+
+package graph
+
+import (
+       "context"
+       "fmt"
+       "io"
+
+       api "git.fd.io/govpp.git/api"
+)
+
+// RPCService defines RPC service graph.
+type RPCService interface {
+       GraphNodeGet(ctx context.Context, in *GraphNodeGet) (RPCService_GraphNodeGetClient, error)
+}
+
+type serviceClient struct {
+       conn api.Connection
+}
+
+func NewServiceClient(conn api.Connection) RPCService {
+       return &serviceClient{conn}
+}
+
+func (c *serviceClient) GraphNodeGet(ctx context.Context, in *GraphNodeGet) (RPCService_GraphNodeGetClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_GraphNodeGetClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_GraphNodeGetClient interface {
+       Recv() (*GraphNodeDetails, error)
+       api.Stream
+}
+
+type serviceClient_GraphNodeGetClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_GraphNodeGetClient) Recv() (*GraphNodeDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *GraphNodeDetails:
+               return m, nil
+       case *GraphNodeGetReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
index 4c0b9c0..08a225d 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/gre.api.json
 
 // Package gre contains generated bindings for API file gre.api.
@@ -31,8 +31,8 @@ const _ = api.GoVppAPIPackageIsVersion2
 
 const (
        APIFile    = "gre"
-       APIVersion = "2.1.0"
-       VersionCrc = 0xb9021569
+       APIVersion = "2.1.1"
+       VersionCrc = 0x98b44dd1
 )
 
 // GreTunnelType defines enum 'gre_tunnel_type'.
@@ -86,7 +86,7 @@ type GreTunnelAddDel struct {
 
 func (m *GreTunnelAddDel) Reset()               { *m = GreTunnelAddDel{} }
 func (*GreTunnelAddDel) GetMessageName() string { return "gre_tunnel_add_del" }
-func (*GreTunnelAddDel) GetCrcString() string   { return "6efc9c22" }
+func (*GreTunnelAddDel) GetCrcString() string   { return "a27d7f17" }
 func (*GreTunnelAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -189,7 +189,7 @@ type GreTunnelDetails struct {
 
 func (m *GreTunnelDetails) Reset()               { *m = GreTunnelDetails{} }
 func (*GreTunnelDetails) GetMessageName() string { return "gre_tunnel_details" }
-func (*GreTunnelDetails) GetCrcString() string   { return "003bfbf1" }
+func (*GreTunnelDetails) GetCrcString() string   { return "24435433" }
 func (*GreTunnelDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -280,9 +280,9 @@ func (m *GreTunnelDump) Unmarshal(b []byte) error {
 
 func init() { file_gre_binapi_init() }
 func file_gre_binapi_init() {
-       api.RegisterMessage((*GreTunnelAddDel)(nil), "gre_tunnel_add_del_6efc9c22")
+       api.RegisterMessage((*GreTunnelAddDel)(nil), "gre_tunnel_add_del_a27d7f17")
        api.RegisterMessage((*GreTunnelAddDelReply)(nil), "gre_tunnel_add_del_reply_5383d31f")
-       api.RegisterMessage((*GreTunnelDetails)(nil), "gre_tunnel_details_003bfbf1")
+       api.RegisterMessage((*GreTunnelDetails)(nil), "gre_tunnel_details_24435433")
        api.RegisterMessage((*GreTunnelDump)(nil), "gre_tunnel_dump_f9e6675e")
 }
 
index f243772..3c16c00 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/gso.api.json
 
 // Package gso contains generated bindings for API file gso.api.
@@ -26,7 +26,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "gso"
        APIVersion = "1.0.0"
-       VersionCrc = 0x2ec8641f
+       VersionCrc = 0x81a73026
 )
 
 // FeatureGsoEnableDisable defines message 'feature_gso_enable_disable'.
index 5d2a038..0d5b315 100644 (file)
@@ -1,13 +1,13 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/gtpu.api.json
 
 // Package gtpu contains generated bindings for API file gtpu.api.
 //
 // Contents:
-//   8 messages
+//  10 messages
 //
 package gtpu
 
@@ -26,8 +26,8 @@ const _ = api.GoVppAPIPackageIsVersion2
 
 const (
        APIFile    = "gtpu"
-       APIVersion = "2.0.0"
-       VersionCrc = 0x30326e2d
+       APIVersion = "2.0.1"
+       VersionCrc = 0x1462473
 )
 
 // GtpuAddDelTunnel defines message 'gtpu_add_del_tunnel'.
@@ -39,11 +39,12 @@ type GtpuAddDelTunnel struct {
        EncapVrfID     uint32                         `binapi:"u32,name=encap_vrf_id" json:"encap_vrf_id,omitempty"`
        DecapNextIndex uint32                         `binapi:"u32,name=decap_next_index" json:"decap_next_index,omitempty"`
        Teid           uint32                         `binapi:"u32,name=teid" json:"teid,omitempty"`
+       Tteid          uint32                         `binapi:"u32,name=tteid" json:"tteid,omitempty"`
 }
 
 func (m *GtpuAddDelTunnel) Reset()               { *m = GtpuAddDelTunnel{} }
 func (*GtpuAddDelTunnel) GetMessageName() string { return "gtpu_add_del_tunnel" }
-func (*GtpuAddDelTunnel) GetCrcString() string   { return "9a26a51c" }
+func (*GtpuAddDelTunnel) GetCrcString() string   { return "ca983a2b" }
 func (*GtpuAddDelTunnel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -61,6 +62,7 @@ func (m *GtpuAddDelTunnel) Size() (size int) {
        size += 4      // m.EncapVrfID
        size += 4      // m.DecapNextIndex
        size += 4      // m.Teid
+       size += 4      // m.Tteid
        return size
 }
 func (m *GtpuAddDelTunnel) Marshal(b []byte) ([]byte, error) {
@@ -77,6 +79,7 @@ func (m *GtpuAddDelTunnel) Marshal(b []byte) ([]byte, error) {
        buf.EncodeUint32(m.EncapVrfID)
        buf.EncodeUint32(m.DecapNextIndex)
        buf.EncodeUint32(m.Teid)
+       buf.EncodeUint32(m.Tteid)
        return buf.Bytes(), nil
 }
 func (m *GtpuAddDelTunnel) Unmarshal(b []byte) error {
@@ -90,6 +93,7 @@ func (m *GtpuAddDelTunnel) Unmarshal(b []byte) error {
        m.EncapVrfID = buf.DecodeUint32()
        m.DecapNextIndex = buf.DecodeUint32()
        m.Teid = buf.DecodeUint32()
+       m.Tteid = buf.DecodeUint32()
        return nil
 }
 
@@ -213,11 +217,12 @@ type GtpuTunnelDetails struct {
        EncapVrfID     uint32                         `binapi:"u32,name=encap_vrf_id" json:"encap_vrf_id,omitempty"`
        DecapNextIndex uint32                         `binapi:"u32,name=decap_next_index" json:"decap_next_index,omitempty"`
        Teid           uint32                         `binapi:"u32,name=teid" json:"teid,omitempty"`
+       Tteid          uint32                         `binapi:"u32,name=tteid" json:"tteid,omitempty"`
 }
 
 func (m *GtpuTunnelDetails) Reset()               { *m = GtpuTunnelDetails{} }
 func (*GtpuTunnelDetails) GetMessageName() string { return "gtpu_tunnel_details" }
-func (*GtpuTunnelDetails) GetCrcString() string   { return "a4d81a09" }
+func (*GtpuTunnelDetails) GetCrcString() string   { return "27f434ae" }
 func (*GtpuTunnelDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -235,6 +240,7 @@ func (m *GtpuTunnelDetails) Size() (size int) {
        size += 4      // m.EncapVrfID
        size += 4      // m.DecapNextIndex
        size += 4      // m.Teid
+       size += 4      // m.Tteid
        return size
 }
 func (m *GtpuTunnelDetails) Marshal(b []byte) ([]byte, error) {
@@ -251,6 +257,7 @@ func (m *GtpuTunnelDetails) Marshal(b []byte) ([]byte, error) {
        buf.EncodeUint32(m.EncapVrfID)
        buf.EncodeUint32(m.DecapNextIndex)
        buf.EncodeUint32(m.Teid)
+       buf.EncodeUint32(m.Tteid)
        return buf.Bytes(), nil
 }
 func (m *GtpuTunnelDetails) Unmarshal(b []byte) error {
@@ -264,6 +271,7 @@ func (m *GtpuTunnelDetails) Unmarshal(b []byte) error {
        m.EncapVrfID = buf.DecodeUint32()
        m.DecapNextIndex = buf.DecodeUint32()
        m.Teid = buf.DecodeUint32()
+       m.Tteid = buf.DecodeUint32()
        return nil
 }
 
@@ -300,6 +308,87 @@ func (m *GtpuTunnelDump) Unmarshal(b []byte) error {
        return nil
 }
 
+// GtpuTunnelUpdateTteid defines message 'gtpu_tunnel_update_tteid'.
+type GtpuTunnelUpdateTteid struct {
+       DstAddress ip_types.Address `binapi:"address,name=dst_address" json:"dst_address,omitempty"`
+       EncapVrfID uint32           `binapi:"u32,name=encap_vrf_id" json:"encap_vrf_id,omitempty"`
+       Teid       uint32           `binapi:"u32,name=teid" json:"teid,omitempty"`
+       Tteid      uint32           `binapi:"u32,name=tteid" json:"tteid,omitempty"`
+}
+
+func (m *GtpuTunnelUpdateTteid) Reset()               { *m = GtpuTunnelUpdateTteid{} }
+func (*GtpuTunnelUpdateTteid) GetMessageName() string { return "gtpu_tunnel_update_tteid" }
+func (*GtpuTunnelUpdateTteid) GetCrcString() string   { return "79f33816" }
+func (*GtpuTunnelUpdateTteid) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *GtpuTunnelUpdateTteid) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1      // m.DstAddress.Af
+       size += 1 * 16 // m.DstAddress.Un
+       size += 4      // m.EncapVrfID
+       size += 4      // m.Teid
+       size += 4      // m.Tteid
+       return size
+}
+func (m *GtpuTunnelUpdateTteid) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(uint8(m.DstAddress.Af))
+       buf.EncodeBytes(m.DstAddress.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint32(m.EncapVrfID)
+       buf.EncodeUint32(m.Teid)
+       buf.EncodeUint32(m.Tteid)
+       return buf.Bytes(), nil
+}
+func (m *GtpuTunnelUpdateTteid) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.DstAddress.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.DstAddress.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.EncapVrfID = buf.DecodeUint32()
+       m.Teid = buf.DecodeUint32()
+       m.Tteid = buf.DecodeUint32()
+       return nil
+}
+
+// GtpuTunnelUpdateTteidReply defines message 'gtpu_tunnel_update_tteid_reply'.
+type GtpuTunnelUpdateTteidReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *GtpuTunnelUpdateTteidReply) Reset()               { *m = GtpuTunnelUpdateTteidReply{} }
+func (*GtpuTunnelUpdateTteidReply) GetMessageName() string { return "gtpu_tunnel_update_tteid_reply" }
+func (*GtpuTunnelUpdateTteidReply) GetCrcString() string   { return "e8d4e804" }
+func (*GtpuTunnelUpdateTteidReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *GtpuTunnelUpdateTteidReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *GtpuTunnelUpdateTteidReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *GtpuTunnelUpdateTteidReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
 // SwInterfaceSetGtpuBypass defines message 'sw_interface_set_gtpu_bypass'.
 type SwInterfaceSetGtpuBypass struct {
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
@@ -378,12 +467,14 @@ func (m *SwInterfaceSetGtpuBypassReply) Unmarshal(b []byte) error {
 
 func init() { file_gtpu_binapi_init() }
 func file_gtpu_binapi_init() {
-       api.RegisterMessage((*GtpuAddDelTunnel)(nil), "gtpu_add_del_tunnel_9a26a51c")
+       api.RegisterMessage((*GtpuAddDelTunnel)(nil), "gtpu_add_del_tunnel_ca983a2b")
        api.RegisterMessage((*GtpuAddDelTunnelReply)(nil), "gtpu_add_del_tunnel_reply_5383d31f")
        api.RegisterMessage((*GtpuOffloadRx)(nil), "gtpu_offload_rx_f0b08786")
        api.RegisterMessage((*GtpuOffloadRxReply)(nil), "gtpu_offload_rx_reply_e8d4e804")
-       api.RegisterMessage((*GtpuTunnelDetails)(nil), "gtpu_tunnel_details_a4d81a09")
+       api.RegisterMessage((*GtpuTunnelDetails)(nil), "gtpu_tunnel_details_27f434ae")
        api.RegisterMessage((*GtpuTunnelDump)(nil), "gtpu_tunnel_dump_f9e6675e")
+       api.RegisterMessage((*GtpuTunnelUpdateTteid)(nil), "gtpu_tunnel_update_tteid_79f33816")
+       api.RegisterMessage((*GtpuTunnelUpdateTteidReply)(nil), "gtpu_tunnel_update_tteid_reply_e8d4e804")
        api.RegisterMessage((*SwInterfaceSetGtpuBypass)(nil), "sw_interface_set_gtpu_bypass_65247409")
        api.RegisterMessage((*SwInterfaceSetGtpuBypassReply)(nil), "sw_interface_set_gtpu_bypass_reply_e8d4e804")
 }
@@ -397,6 +488,8 @@ func AllMessages() []api.Message {
                (*GtpuOffloadRxReply)(nil),
                (*GtpuTunnelDetails)(nil),
                (*GtpuTunnelDump)(nil),
+               (*GtpuTunnelUpdateTteid)(nil),
+               (*GtpuTunnelUpdateTteidReply)(nil),
                (*SwInterfaceSetGtpuBypass)(nil),
                (*SwInterfaceSetGtpuBypassReply)(nil),
        }
index 46a7e7d..6f5bd95 100644 (file)
@@ -16,6 +16,7 @@ type RPCService interface {
        GtpuAddDelTunnel(ctx context.Context, in *GtpuAddDelTunnel) (*GtpuAddDelTunnelReply, error)
        GtpuOffloadRx(ctx context.Context, in *GtpuOffloadRx) (*GtpuOffloadRxReply, error)
        GtpuTunnelDump(ctx context.Context, in *GtpuTunnelDump) (RPCService_GtpuTunnelDumpClient, error)
+       GtpuTunnelUpdateTteid(ctx context.Context, in *GtpuTunnelUpdateTteid) (*GtpuTunnelUpdateTteidReply, error)
        SwInterfaceSetGtpuBypass(ctx context.Context, in *SwInterfaceSetGtpuBypass) (*SwInterfaceSetGtpuBypassReply, error)
 }
 
@@ -84,6 +85,15 @@ func (c *serviceClient_GtpuTunnelDumpClient) Recv() (*GtpuTunnelDetails, error)
        }
 }
 
+func (c *serviceClient) GtpuTunnelUpdateTteid(ctx context.Context, in *GtpuTunnelUpdateTteid) (*GtpuTunnelUpdateTteidReply, error) {
+       out := new(GtpuTunnelUpdateTteidReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) SwInterfaceSetGtpuBypass(ctx context.Context, in *SwInterfaceSetGtpuBypass) (*SwInterfaceSetGtpuBypassReply, error) {
        out := new(SwInterfaceSetGtpuBypassReply)
        err := c.conn.Invoke(ctx, in, out)
index 811bb0d..2530887 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/http_static.api.json
 
 // Package http_static contains generated bindings for API file http_static.api.
index 2bbe575..3521d21 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/igmp.api.json
 
 // Package igmp contains generated bindings for API file igmp.api.
@@ -31,7 +31,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "igmp"
        APIVersion = "1.0.0"
-       VersionCrc = 0x290eccf8
+       VersionCrc = 0x95a4ff29
 )
 
 // FilterMode defines enum 'filter_mode'.
@@ -178,7 +178,7 @@ type IgmpDetails struct {
 
 func (m *IgmpDetails) Reset()               { *m = IgmpDetails{} }
 func (*IgmpDetails) GetMessageName() string { return "igmp_details" }
-func (*IgmpDetails) GetCrcString() string   { return "52f12a89" }
+func (*IgmpDetails) GetCrcString() string   { return "38f09929" }
 func (*IgmpDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -327,7 +327,7 @@ type IgmpEvent struct {
 
 func (m *IgmpEvent) Reset()               { *m = IgmpEvent{} }
 func (*IgmpEvent) GetMessageName() string { return "igmp_event" }
-func (*IgmpEvent) GetCrcString() string   { return "d7696eaf" }
+func (*IgmpEvent) GetCrcString() string   { return "85fe93ec" }
 func (*IgmpEvent) GetMessageType() api.MessageType {
        return api.OtherMessage
 }
@@ -369,7 +369,7 @@ type IgmpGroupPrefixDetails struct {
 
 func (m *IgmpGroupPrefixDetails) Reset()               { *m = IgmpGroupPrefixDetails{} }
 func (*IgmpGroupPrefixDetails) GetMessageName() string { return "igmp_group_prefix_details" }
-func (*IgmpGroupPrefixDetails) GetCrcString() string   { return "c3b3c526" }
+func (*IgmpGroupPrefixDetails) GetCrcString() string   { return "259ccd81" }
 func (*IgmpGroupPrefixDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -438,7 +438,7 @@ type IgmpGroupPrefixSet struct {
 
 func (m *IgmpGroupPrefixSet) Reset()               { *m = IgmpGroupPrefixSet{} }
 func (*IgmpGroupPrefixSet) GetMessageName() string { return "igmp_group_prefix_set" }
-func (*IgmpGroupPrefixSet) GetCrcString() string   { return "d4f20ac5" }
+func (*IgmpGroupPrefixSet) GetCrcString() string   { return "5b14a5ce" }
 func (*IgmpGroupPrefixSet) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -513,7 +513,7 @@ type IgmpListen struct {
 
 func (m *IgmpListen) Reset()               { *m = IgmpListen{} }
 func (*IgmpListen) GetMessageName() string { return "igmp_listen" }
-func (*IgmpListen) GetCrcString() string   { return "3f93a51a" }
+func (*IgmpListen) GetCrcString() string   { return "19a49f1e" }
 func (*IgmpListen) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -826,16 +826,16 @@ func init() { file_igmp_binapi_init() }
 func file_igmp_binapi_init() {
        api.RegisterMessage((*IgmpClearInterface)(nil), "igmp_clear_interface_f9e6675e")
        api.RegisterMessage((*IgmpClearInterfaceReply)(nil), "igmp_clear_interface_reply_e8d4e804")
-       api.RegisterMessage((*IgmpDetails)(nil), "igmp_details_52f12a89")
+       api.RegisterMessage((*IgmpDetails)(nil), "igmp_details_38f09929")
        api.RegisterMessage((*IgmpDump)(nil), "igmp_dump_f9e6675e")
        api.RegisterMessage((*IgmpEnableDisable)(nil), "igmp_enable_disable_b1edfb96")
        api.RegisterMessage((*IgmpEnableDisableReply)(nil), "igmp_enable_disable_reply_e8d4e804")
-       api.RegisterMessage((*IgmpEvent)(nil), "igmp_event_d7696eaf")
-       api.RegisterMessage((*IgmpGroupPrefixDetails)(nil), "igmp_group_prefix_details_c3b3c526")
+       api.RegisterMessage((*IgmpEvent)(nil), "igmp_event_85fe93ec")
+       api.RegisterMessage((*IgmpGroupPrefixDetails)(nil), "igmp_group_prefix_details_259ccd81")
        api.RegisterMessage((*IgmpGroupPrefixDump)(nil), "igmp_group_prefix_dump_51077d14")
-       api.RegisterMessage((*IgmpGroupPrefixSet)(nil), "igmp_group_prefix_set_d4f20ac5")
+       api.RegisterMessage((*IgmpGroupPrefixSet)(nil), "igmp_group_prefix_set_5b14a5ce")
        api.RegisterMessage((*IgmpGroupPrefixSetReply)(nil), "igmp_group_prefix_set_reply_e8d4e804")
-       api.RegisterMessage((*IgmpListen)(nil), "igmp_listen_3f93a51a")
+       api.RegisterMessage((*IgmpListen)(nil), "igmp_listen_19a49f1e")
        api.RegisterMessage((*IgmpListenReply)(nil), "igmp_listen_reply_e8d4e804")
        api.RegisterMessage((*IgmpProxyDeviceAddDel)(nil), "igmp_proxy_device_add_del_0b9be9ce")
        api.RegisterMessage((*IgmpProxyDeviceAddDelInterface)(nil), "igmp_proxy_device_add_del_interface_1a9ec24a")
index 8313ece..b5fa62e 100644 (file)
@@ -1,18 +1,19 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/ikev2.api.json
 
 // Package ikev2 contains generated bindings for API file ikev2.api.
 //
 // Contents:
-//  36 messages
+//  50 messages
 //
 package ikev2
 
 import (
        api "git.fd.io/govpp.git/api"
+       ikev2_types "git.fd.io/govpp.git/binapi/ikev2_types"
        interface_types "git.fd.io/govpp.git/binapi/interface_types"
        ip_types "git.fd.io/govpp.git/binapi/ip_types"
        codec "git.fd.io/govpp.git/codec"
@@ -27,10 +28,195 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "ikev2"
        APIVersion = "1.0.1"
-       VersionCrc = 0x2ebaa2d8
+       VersionCrc = 0x8eb2437c
 )
 
+// Ikev2ChildSaDetails defines message 'ikev2_child_sa_details'.
+// InProgress: the message form may change in the future versions
+type Ikev2ChildSaDetails struct {
+       Retval  int32                    `binapi:"i32,name=retval" json:"retval,omitempty"`
+       ChildSa ikev2_types.Ikev2ChildSa `binapi:"ikev2_child_sa,name=child_sa" json:"child_sa,omitempty"`
+}
+
+func (m *Ikev2ChildSaDetails) Reset()               { *m = Ikev2ChildSaDetails{} }
+func (*Ikev2ChildSaDetails) GetMessageName() string { return "ikev2_child_sa_details" }
+func (*Ikev2ChildSaDetails) GetCrcString() string   { return "ff67741f" }
+func (*Ikev2ChildSaDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Ikev2ChildSaDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4      // m.Retval
+       size += 4      // m.ChildSa.SaIndex
+       size += 4      // m.ChildSa.ChildSaIndex
+       size += 4      // m.ChildSa.ISpi
+       size += 4      // m.ChildSa.RSpi
+       size += 1 * 64 // m.ChildSa.Keys.SkD
+       size += 1      // m.ChildSa.Keys.SkDLen
+       size += 1 * 64 // m.ChildSa.Keys.SkAi
+       size += 1      // m.ChildSa.Keys.SkAiLen
+       size += 1 * 64 // m.ChildSa.Keys.SkAr
+       size += 1      // m.ChildSa.Keys.SkArLen
+       size += 1 * 64 // m.ChildSa.Keys.SkEi
+       size += 1      // m.ChildSa.Keys.SkEiLen
+       size += 1 * 64 // m.ChildSa.Keys.SkEr
+       size += 1      // m.ChildSa.Keys.SkErLen
+       size += 1 * 64 // m.ChildSa.Keys.SkPi
+       size += 1      // m.ChildSa.Keys.SkPiLen
+       size += 1 * 64 // m.ChildSa.Keys.SkPr
+       size += 1      // m.ChildSa.Keys.SkPrLen
+       size += 1      // m.ChildSa.Encryption.TransformType
+       size += 2      // m.ChildSa.Encryption.TransformID
+       size += 2      // m.ChildSa.Encryption.KeyLen
+       size += 2      // m.ChildSa.Encryption.KeyTrunc
+       size += 2      // m.ChildSa.Encryption.BlockSize
+       size += 1      // m.ChildSa.Encryption.DhGroup
+       size += 1      // m.ChildSa.Integrity.TransformType
+       size += 2      // m.ChildSa.Integrity.TransformID
+       size += 2      // m.ChildSa.Integrity.KeyLen
+       size += 2      // m.ChildSa.Integrity.KeyTrunc
+       size += 2      // m.ChildSa.Integrity.BlockSize
+       size += 1      // m.ChildSa.Integrity.DhGroup
+       size += 1      // m.ChildSa.Esn.TransformType
+       size += 2      // m.ChildSa.Esn.TransformID
+       size += 2      // m.ChildSa.Esn.KeyLen
+       size += 2      // m.ChildSa.Esn.KeyTrunc
+       size += 2      // m.ChildSa.Esn.BlockSize
+       size += 1      // m.ChildSa.Esn.DhGroup
+       return size
+}
+func (m *Ikev2ChildSaDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.ChildSa.SaIndex)
+       buf.EncodeUint32(m.ChildSa.ChildSaIndex)
+       buf.EncodeUint32(m.ChildSa.ISpi)
+       buf.EncodeUint32(m.ChildSa.RSpi)
+       buf.EncodeBytes(m.ChildSa.Keys.SkD, 64)
+       buf.EncodeUint8(m.ChildSa.Keys.SkDLen)
+       buf.EncodeBytes(m.ChildSa.Keys.SkAi, 64)
+       buf.EncodeUint8(m.ChildSa.Keys.SkAiLen)
+       buf.EncodeBytes(m.ChildSa.Keys.SkAr, 64)
+       buf.EncodeUint8(m.ChildSa.Keys.SkArLen)
+       buf.EncodeBytes(m.ChildSa.Keys.SkEi, 64)
+       buf.EncodeUint8(m.ChildSa.Keys.SkEiLen)
+       buf.EncodeBytes(m.ChildSa.Keys.SkEr, 64)
+       buf.EncodeUint8(m.ChildSa.Keys.SkErLen)
+       buf.EncodeBytes(m.ChildSa.Keys.SkPi, 64)
+       buf.EncodeUint8(m.ChildSa.Keys.SkPiLen)
+       buf.EncodeBytes(m.ChildSa.Keys.SkPr, 64)
+       buf.EncodeUint8(m.ChildSa.Keys.SkPrLen)
+       buf.EncodeUint8(m.ChildSa.Encryption.TransformType)
+       buf.EncodeUint16(m.ChildSa.Encryption.TransformID)
+       buf.EncodeUint16(m.ChildSa.Encryption.KeyLen)
+       buf.EncodeUint16(m.ChildSa.Encryption.KeyTrunc)
+       buf.EncodeUint16(m.ChildSa.Encryption.BlockSize)
+       buf.EncodeUint8(m.ChildSa.Encryption.DhGroup)
+       buf.EncodeUint8(m.ChildSa.Integrity.TransformType)
+       buf.EncodeUint16(m.ChildSa.Integrity.TransformID)
+       buf.EncodeUint16(m.ChildSa.Integrity.KeyLen)
+       buf.EncodeUint16(m.ChildSa.Integrity.KeyTrunc)
+       buf.EncodeUint16(m.ChildSa.Integrity.BlockSize)
+       buf.EncodeUint8(m.ChildSa.Integrity.DhGroup)
+       buf.EncodeUint8(m.ChildSa.Esn.TransformType)
+       buf.EncodeUint16(m.ChildSa.Esn.TransformID)
+       buf.EncodeUint16(m.ChildSa.Esn.KeyLen)
+       buf.EncodeUint16(m.ChildSa.Esn.KeyTrunc)
+       buf.EncodeUint16(m.ChildSa.Esn.BlockSize)
+       buf.EncodeUint8(m.ChildSa.Esn.DhGroup)
+       return buf.Bytes(), nil
+}
+func (m *Ikev2ChildSaDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.ChildSa.SaIndex = buf.DecodeUint32()
+       m.ChildSa.ChildSaIndex = buf.DecodeUint32()
+       m.ChildSa.ISpi = buf.DecodeUint32()
+       m.ChildSa.RSpi = buf.DecodeUint32()
+       m.ChildSa.Keys.SkD = make([]byte, 64)
+       copy(m.ChildSa.Keys.SkD, buf.DecodeBytes(len(m.ChildSa.Keys.SkD)))
+       m.ChildSa.Keys.SkDLen = buf.DecodeUint8()
+       m.ChildSa.Keys.SkAi = make([]byte, 64)
+       copy(m.ChildSa.Keys.SkAi, buf.DecodeBytes(len(m.ChildSa.Keys.SkAi)))
+       m.ChildSa.Keys.SkAiLen = buf.DecodeUint8()
+       m.ChildSa.Keys.SkAr = make([]byte, 64)
+       copy(m.ChildSa.Keys.SkAr, buf.DecodeBytes(len(m.ChildSa.Keys.SkAr)))
+       m.ChildSa.Keys.SkArLen = buf.DecodeUint8()
+       m.ChildSa.Keys.SkEi = make([]byte, 64)
+       copy(m.ChildSa.Keys.SkEi, buf.DecodeBytes(len(m.ChildSa.Keys.SkEi)))
+       m.ChildSa.Keys.SkEiLen = buf.DecodeUint8()
+       m.ChildSa.Keys.SkEr = make([]byte, 64)
+       copy(m.ChildSa.Keys.SkEr, buf.DecodeBytes(len(m.ChildSa.Keys.SkEr)))
+       m.ChildSa.Keys.SkErLen = buf.DecodeUint8()
+       m.ChildSa.Keys.SkPi = make([]byte, 64)
+       copy(m.ChildSa.Keys.SkPi, buf.DecodeBytes(len(m.ChildSa.Keys.SkPi)))
+       m.ChildSa.Keys.SkPiLen = buf.DecodeUint8()
+       m.ChildSa.Keys.SkPr = make([]byte, 64)
+       copy(m.ChildSa.Keys.SkPr, buf.DecodeBytes(len(m.ChildSa.Keys.SkPr)))
+       m.ChildSa.Keys.SkPrLen = buf.DecodeUint8()
+       m.ChildSa.Encryption.TransformType = buf.DecodeUint8()
+       m.ChildSa.Encryption.TransformID = buf.DecodeUint16()
+       m.ChildSa.Encryption.KeyLen = buf.DecodeUint16()
+       m.ChildSa.Encryption.KeyTrunc = buf.DecodeUint16()
+       m.ChildSa.Encryption.BlockSize = buf.DecodeUint16()
+       m.ChildSa.Encryption.DhGroup = buf.DecodeUint8()
+       m.ChildSa.Integrity.TransformType = buf.DecodeUint8()
+       m.ChildSa.Integrity.TransformID = buf.DecodeUint16()
+       m.ChildSa.Integrity.KeyLen = buf.DecodeUint16()
+       m.ChildSa.Integrity.KeyTrunc = buf.DecodeUint16()
+       m.ChildSa.Integrity.BlockSize = buf.DecodeUint16()
+       m.ChildSa.Integrity.DhGroup = buf.DecodeUint8()
+       m.ChildSa.Esn.TransformType = buf.DecodeUint8()
+       m.ChildSa.Esn.TransformID = buf.DecodeUint16()
+       m.ChildSa.Esn.KeyLen = buf.DecodeUint16()
+       m.ChildSa.Esn.KeyTrunc = buf.DecodeUint16()
+       m.ChildSa.Esn.BlockSize = buf.DecodeUint16()
+       m.ChildSa.Esn.DhGroup = buf.DecodeUint8()
+       return nil
+}
+
+// Ikev2ChildSaDump defines message 'ikev2_child_sa_dump'.
+// InProgress: the message form may change in the future versions
+type Ikev2ChildSaDump struct {
+       SaIndex uint32 `binapi:"u32,name=sa_index" json:"sa_index,omitempty"`
+}
+
+func (m *Ikev2ChildSaDump) Reset()               { *m = Ikev2ChildSaDump{} }
+func (*Ikev2ChildSaDump) GetMessageName() string { return "ikev2_child_sa_dump" }
+func (*Ikev2ChildSaDump) GetCrcString() string   { return "01eab609" }
+func (*Ikev2ChildSaDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Ikev2ChildSaDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SaIndex
+       return size
+}
+func (m *Ikev2ChildSaDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.SaIndex)
+       return buf.Bytes(), nil
+}
+func (m *Ikev2ChildSaDump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SaIndex = buf.DecodeUint32()
+       return nil
+}
+
 // Ikev2InitiateDelChildSa defines message 'ikev2_initiate_del_child_sa'.
+// InProgress: the message form may change in the future versions
 type Ikev2InitiateDelChildSa struct {
        Ispi uint32 `binapi:"u32,name=ispi" json:"ispi,omitempty"`
 }
@@ -64,6 +250,7 @@ func (m *Ikev2InitiateDelChildSa) Unmarshal(b []byte) error {
 }
 
 // Ikev2InitiateDelChildSaReply defines message 'ikev2_initiate_del_child_sa_reply'.
+// InProgress: the message form may change in the future versions
 type Ikev2InitiateDelChildSaReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -99,6 +286,7 @@ func (m *Ikev2InitiateDelChildSaReply) Unmarshal(b []byte) error {
 }
 
 // Ikev2InitiateDelIkeSa defines message 'ikev2_initiate_del_ike_sa'.
+// InProgress: the message form may change in the future versions
 type Ikev2InitiateDelIkeSa struct {
        Ispi uint64 `binapi:"u64,name=ispi" json:"ispi,omitempty"`
 }
@@ -132,6 +320,7 @@ func (m *Ikev2InitiateDelIkeSa) Unmarshal(b []byte) error {
 }
 
 // Ikev2InitiateDelIkeSaReply defines message 'ikev2_initiate_del_ike_sa_reply'.
+// InProgress: the message form may change in the future versions
 type Ikev2InitiateDelIkeSaReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -165,6 +354,7 @@ func (m *Ikev2InitiateDelIkeSaReply) Unmarshal(b []byte) error {
 }
 
 // Ikev2InitiateRekeyChildSa defines message 'ikev2_initiate_rekey_child_sa'.
+// InProgress: the message form may change in the future versions
 type Ikev2InitiateRekeyChildSa struct {
        Ispi uint32 `binapi:"u32,name=ispi" json:"ispi,omitempty"`
 }
@@ -198,6 +388,7 @@ func (m *Ikev2InitiateRekeyChildSa) Unmarshal(b []byte) error {
 }
 
 // Ikev2InitiateRekeyChildSaReply defines message 'ikev2_initiate_rekey_child_sa_reply'.
+// InProgress: the message form may change in the future versions
 type Ikev2InitiateRekeyChildSaReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -233,6 +424,7 @@ func (m *Ikev2InitiateRekeyChildSaReply) Unmarshal(b []byte) error {
 }
 
 // Ikev2InitiateSaInit defines message 'ikev2_initiate_sa_init'.
+// InProgress: the message form may change in the future versions
 type Ikev2InitiateSaInit struct {
        Name string `binapi:"string[64],name=name" json:"name,omitempty"`
 }
@@ -266,6 +458,7 @@ func (m *Ikev2InitiateSaInit) Unmarshal(b []byte) error {
 }
 
 // Ikev2InitiateSaInitReply defines message 'ikev2_initiate_sa_init_reply'.
+// InProgress: the message form may change in the future versions
 type Ikev2InitiateSaInitReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -298,6 +491,87 @@ func (m *Ikev2InitiateSaInitReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// Ikev2NonceGet defines message 'ikev2_nonce_get'.
+// InProgress: the message form may change in the future versions
+type Ikev2NonceGet struct {
+       IsInitiator bool   `binapi:"bool,name=is_initiator" json:"is_initiator,omitempty"`
+       SaIndex     uint32 `binapi:"u32,name=sa_index" json:"sa_index,omitempty"`
+}
+
+func (m *Ikev2NonceGet) Reset()               { *m = Ikev2NonceGet{} }
+func (*Ikev2NonceGet) GetMessageName() string { return "ikev2_nonce_get" }
+func (*Ikev2NonceGet) GetCrcString() string   { return "7fe9ad51" }
+func (*Ikev2NonceGet) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Ikev2NonceGet) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.IsInitiator
+       size += 4 // m.SaIndex
+       return size
+}
+func (m *Ikev2NonceGet) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsInitiator)
+       buf.EncodeUint32(m.SaIndex)
+       return buf.Bytes(), nil
+}
+func (m *Ikev2NonceGet) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsInitiator = buf.DecodeBool()
+       m.SaIndex = buf.DecodeUint32()
+       return nil
+}
+
+// Ikev2NonceGetReply defines message 'ikev2_nonce_get_reply'.
+// InProgress: the message form may change in the future versions
+type Ikev2NonceGetReply struct {
+       Retval  int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       DataLen uint32 `binapi:"u32,name=data_len" json:"-"`
+       Nonce   []byte `binapi:"u8[data_len],name=nonce" json:"nonce,omitempty"`
+}
+
+func (m *Ikev2NonceGetReply) Reset()               { *m = Ikev2NonceGetReply{} }
+func (*Ikev2NonceGetReply) GetMessageName() string { return "ikev2_nonce_get_reply" }
+func (*Ikev2NonceGetReply) GetCrcString() string   { return "1b37a342" }
+func (*Ikev2NonceGetReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Ikev2NonceGetReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4                // m.Retval
+       size += 4                // m.DataLen
+       size += 1 * len(m.Nonce) // m.Nonce
+       return size
+}
+func (m *Ikev2NonceGetReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(uint32(len(m.Nonce)))
+       buf.EncodeBytes(m.Nonce, 0)
+       return buf.Bytes(), nil
+}
+func (m *Ikev2NonceGetReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.DataLen = buf.DecodeUint32()
+       m.Nonce = make([]byte, m.DataLen)
+       copy(m.Nonce, buf.DecodeBytes(len(m.Nonce)))
+       return nil
+}
+
 // Ikev2PluginGetVersion defines message 'ikev2_plugin_get_version'.
 type Ikev2PluginGetVersion struct{}
 
@@ -363,6 +637,7 @@ func (m *Ikev2PluginGetVersionReply) Unmarshal(b []byte) error {
 }
 
 // Ikev2ProfileAddDel defines message 'ikev2_profile_add_del'.
+// InProgress: the message form may change in the future versions
 type Ikev2ProfileAddDel struct {
        Name  string `binapi:"string[64],name=name" json:"name,omitempty"`
        IsAdd bool   `binapi:"bool,name=is_add" json:"is_add,omitempty"`
@@ -400,6 +675,7 @@ func (m *Ikev2ProfileAddDel) Unmarshal(b []byte) error {
 }
 
 // Ikev2ProfileAddDelReply defines message 'ikev2_profile_add_del_reply'.
+// InProgress: the message form may change in the future versions
 type Ikev2ProfileAddDelReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -432,7 +708,285 @@ func (m *Ikev2ProfileAddDelReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// Ikev2ProfileDetails defines message 'ikev2_profile_details'.
+// InProgress: the message form may change in the future versions
+type Ikev2ProfileDetails struct {
+       Profile ikev2_types.Ikev2Profile `binapi:"ikev2_profile,name=profile" json:"profile,omitempty"`
+}
+
+func (m *Ikev2ProfileDetails) Reset()               { *m = Ikev2ProfileDetails{} }
+func (*Ikev2ProfileDetails) GetMessageName() string { return "ikev2_profile_details" }
+func (*Ikev2ProfileDetails) GetCrcString() string   { return "670d01d9" }
+func (*Ikev2ProfileDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Ikev2ProfileDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 64                           // m.Profile.Name
+       size += 1                            // m.Profile.LocID.Type
+       size += 1                            // m.Profile.LocID.DataLen
+       size += 64                           // m.Profile.LocID.Data
+       size += 1                            // m.Profile.RemID.Type
+       size += 1                            // m.Profile.RemID.DataLen
+       size += 64                           // m.Profile.RemID.Data
+       size += 4                            // m.Profile.LocTs.SaIndex
+       size += 4                            // m.Profile.LocTs.ChildSaIndex
+       size += 1                            // m.Profile.LocTs.IsLocal
+       size += 1                            // m.Profile.LocTs.ProtocolID
+       size += 2                            // m.Profile.LocTs.StartPort
+       size += 2                            // m.Profile.LocTs.EndPort
+       size += 1                            // m.Profile.LocTs.StartAddr.Af
+       size += 1 * 16                       // m.Profile.LocTs.StartAddr.Un
+       size += 1                            // m.Profile.LocTs.EndAddr.Af
+       size += 1 * 16                       // m.Profile.LocTs.EndAddr.Un
+       size += 4                            // m.Profile.RemTs.SaIndex
+       size += 4                            // m.Profile.RemTs.ChildSaIndex
+       size += 1                            // m.Profile.RemTs.IsLocal
+       size += 1                            // m.Profile.RemTs.ProtocolID
+       size += 2                            // m.Profile.RemTs.StartPort
+       size += 2                            // m.Profile.RemTs.EndPort
+       size += 1                            // m.Profile.RemTs.StartAddr.Af
+       size += 1 * 16                       // m.Profile.RemTs.StartAddr.Un
+       size += 1                            // m.Profile.RemTs.EndAddr.Af
+       size += 1 * 16                       // m.Profile.RemTs.EndAddr.Un
+       size += 4                            // m.Profile.Responder.SwIfIndex
+       size += 1                            // m.Profile.Responder.Addr.Af
+       size += 1 * 16                       // m.Profile.Responder.Addr.Un
+       size += 1                            // m.Profile.IkeTs.CryptoAlg
+       size += 4                            // m.Profile.IkeTs.CryptoKeySize
+       size += 1                            // m.Profile.IkeTs.IntegAlg
+       size += 1                            // m.Profile.IkeTs.DhGroup
+       size += 1                            // m.Profile.EspTs.CryptoAlg
+       size += 4                            // m.Profile.EspTs.CryptoKeySize
+       size += 1                            // m.Profile.EspTs.IntegAlg
+       size += 8                            // m.Profile.Lifetime
+       size += 8                            // m.Profile.LifetimeMaxdata
+       size += 4                            // m.Profile.LifetimeJitter
+       size += 4                            // m.Profile.Handover
+       size += 2                            // m.Profile.IpsecOverUDPPort
+       size += 4                            // m.Profile.TunItf
+       size += 1                            // m.Profile.UDPEncap
+       size += 1                            // m.Profile.NattDisabled
+       size += 1                            // m.Profile.Auth.Method
+       size += 1                            // m.Profile.Auth.Hex
+       size += 4                            // m.Profile.Auth.DataLen
+       size += 1 * len(m.Profile.Auth.Data) // m.Profile.Auth.Data
+       return size
+}
+func (m *Ikev2ProfileDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeString(m.Profile.Name, 64)
+       buf.EncodeUint8(m.Profile.LocID.Type)
+       buf.EncodeUint8(m.Profile.LocID.DataLen)
+       buf.EncodeString(m.Profile.LocID.Data, 64)
+       buf.EncodeUint8(m.Profile.RemID.Type)
+       buf.EncodeUint8(m.Profile.RemID.DataLen)
+       buf.EncodeString(m.Profile.RemID.Data, 64)
+       buf.EncodeUint32(m.Profile.LocTs.SaIndex)
+       buf.EncodeUint32(m.Profile.LocTs.ChildSaIndex)
+       buf.EncodeBool(m.Profile.LocTs.IsLocal)
+       buf.EncodeUint8(m.Profile.LocTs.ProtocolID)
+       buf.EncodeUint16(m.Profile.LocTs.StartPort)
+       buf.EncodeUint16(m.Profile.LocTs.EndPort)
+       buf.EncodeUint8(uint8(m.Profile.LocTs.StartAddr.Af))
+       buf.EncodeBytes(m.Profile.LocTs.StartAddr.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(uint8(m.Profile.LocTs.EndAddr.Af))
+       buf.EncodeBytes(m.Profile.LocTs.EndAddr.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint32(m.Profile.RemTs.SaIndex)
+       buf.EncodeUint32(m.Profile.RemTs.ChildSaIndex)
+       buf.EncodeBool(m.Profile.RemTs.IsLocal)
+       buf.EncodeUint8(m.Profile.RemTs.ProtocolID)
+       buf.EncodeUint16(m.Profile.RemTs.StartPort)
+       buf.EncodeUint16(m.Profile.RemTs.EndPort)
+       buf.EncodeUint8(uint8(m.Profile.RemTs.StartAddr.Af))
+       buf.EncodeBytes(m.Profile.RemTs.StartAddr.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(uint8(m.Profile.RemTs.EndAddr.Af))
+       buf.EncodeBytes(m.Profile.RemTs.EndAddr.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint32(uint32(m.Profile.Responder.SwIfIndex))
+       buf.EncodeUint8(uint8(m.Profile.Responder.Addr.Af))
+       buf.EncodeBytes(m.Profile.Responder.Addr.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(m.Profile.IkeTs.CryptoAlg)
+       buf.EncodeUint32(m.Profile.IkeTs.CryptoKeySize)
+       buf.EncodeUint8(m.Profile.IkeTs.IntegAlg)
+       buf.EncodeUint8(m.Profile.IkeTs.DhGroup)
+       buf.EncodeUint8(m.Profile.EspTs.CryptoAlg)
+       buf.EncodeUint32(m.Profile.EspTs.CryptoKeySize)
+       buf.EncodeUint8(m.Profile.EspTs.IntegAlg)
+       buf.EncodeUint64(m.Profile.Lifetime)
+       buf.EncodeUint64(m.Profile.LifetimeMaxdata)
+       buf.EncodeUint32(m.Profile.LifetimeJitter)
+       buf.EncodeUint32(m.Profile.Handover)
+       buf.EncodeUint16(m.Profile.IpsecOverUDPPort)
+       buf.EncodeUint32(m.Profile.TunItf)
+       buf.EncodeBool(m.Profile.UDPEncap)
+       buf.EncodeBool(m.Profile.NattDisabled)
+       buf.EncodeUint8(m.Profile.Auth.Method)
+       buf.EncodeUint8(m.Profile.Auth.Hex)
+       buf.EncodeUint32(uint32(len(m.Profile.Auth.Data)))
+       buf.EncodeBytes(m.Profile.Auth.Data, 0)
+       return buf.Bytes(), nil
+}
+func (m *Ikev2ProfileDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Profile.Name = buf.DecodeString(64)
+       m.Profile.LocID.Type = buf.DecodeUint8()
+       m.Profile.LocID.DataLen = buf.DecodeUint8()
+       m.Profile.LocID.Data = buf.DecodeString(64)
+       m.Profile.RemID.Type = buf.DecodeUint8()
+       m.Profile.RemID.DataLen = buf.DecodeUint8()
+       m.Profile.RemID.Data = buf.DecodeString(64)
+       m.Profile.LocTs.SaIndex = buf.DecodeUint32()
+       m.Profile.LocTs.ChildSaIndex = buf.DecodeUint32()
+       m.Profile.LocTs.IsLocal = buf.DecodeBool()
+       m.Profile.LocTs.ProtocolID = buf.DecodeUint8()
+       m.Profile.LocTs.StartPort = buf.DecodeUint16()
+       m.Profile.LocTs.EndPort = buf.DecodeUint16()
+       m.Profile.LocTs.StartAddr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Profile.LocTs.StartAddr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Profile.LocTs.EndAddr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Profile.LocTs.EndAddr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Profile.RemTs.SaIndex = buf.DecodeUint32()
+       m.Profile.RemTs.ChildSaIndex = buf.DecodeUint32()
+       m.Profile.RemTs.IsLocal = buf.DecodeBool()
+       m.Profile.RemTs.ProtocolID = buf.DecodeUint8()
+       m.Profile.RemTs.StartPort = buf.DecodeUint16()
+       m.Profile.RemTs.EndPort = buf.DecodeUint16()
+       m.Profile.RemTs.StartAddr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Profile.RemTs.StartAddr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Profile.RemTs.EndAddr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Profile.RemTs.EndAddr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Profile.Responder.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Profile.Responder.Addr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Profile.Responder.Addr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Profile.IkeTs.CryptoAlg = buf.DecodeUint8()
+       m.Profile.IkeTs.CryptoKeySize = buf.DecodeUint32()
+       m.Profile.IkeTs.IntegAlg = buf.DecodeUint8()
+       m.Profile.IkeTs.DhGroup = buf.DecodeUint8()
+       m.Profile.EspTs.CryptoAlg = buf.DecodeUint8()
+       m.Profile.EspTs.CryptoKeySize = buf.DecodeUint32()
+       m.Profile.EspTs.IntegAlg = buf.DecodeUint8()
+       m.Profile.Lifetime = buf.DecodeUint64()
+       m.Profile.LifetimeMaxdata = buf.DecodeUint64()
+       m.Profile.LifetimeJitter = buf.DecodeUint32()
+       m.Profile.Handover = buf.DecodeUint32()
+       m.Profile.IpsecOverUDPPort = buf.DecodeUint16()
+       m.Profile.TunItf = buf.DecodeUint32()
+       m.Profile.UDPEncap = buf.DecodeBool()
+       m.Profile.NattDisabled = buf.DecodeBool()
+       m.Profile.Auth.Method = buf.DecodeUint8()
+       m.Profile.Auth.Hex = buf.DecodeUint8()
+       m.Profile.Auth.DataLen = buf.DecodeUint32()
+       m.Profile.Auth.Data = make([]byte, m.Profile.Auth.DataLen)
+       copy(m.Profile.Auth.Data, buf.DecodeBytes(len(m.Profile.Auth.Data)))
+       return nil
+}
+
+// Ikev2ProfileDisableNatt defines message 'ikev2_profile_disable_natt'.
+// InProgress: the message form may change in the future versions
+type Ikev2ProfileDisableNatt struct {
+       Name string `binapi:"string[64],name=name" json:"name,omitempty"`
+}
+
+func (m *Ikev2ProfileDisableNatt) Reset()               { *m = Ikev2ProfileDisableNatt{} }
+func (*Ikev2ProfileDisableNatt) GetMessageName() string { return "ikev2_profile_disable_natt" }
+func (*Ikev2ProfileDisableNatt) GetCrcString() string   { return "ebf79a66" }
+func (*Ikev2ProfileDisableNatt) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Ikev2ProfileDisableNatt) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 64 // m.Name
+       return size
+}
+func (m *Ikev2ProfileDisableNatt) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeString(m.Name, 64)
+       return buf.Bytes(), nil
+}
+func (m *Ikev2ProfileDisableNatt) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Name = buf.DecodeString(64)
+       return nil
+}
+
+// Ikev2ProfileDisableNattReply defines message 'ikev2_profile_disable_natt_reply'.
+// InProgress: the message form may change in the future versions
+type Ikev2ProfileDisableNattReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Ikev2ProfileDisableNattReply) Reset() { *m = Ikev2ProfileDisableNattReply{} }
+func (*Ikev2ProfileDisableNattReply) GetMessageName() string {
+       return "ikev2_profile_disable_natt_reply"
+}
+func (*Ikev2ProfileDisableNattReply) GetCrcString() string { return "e8d4e804" }
+func (*Ikev2ProfileDisableNattReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Ikev2ProfileDisableNattReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Ikev2ProfileDisableNattReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Ikev2ProfileDisableNattReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Ikev2ProfileDump defines message 'ikev2_profile_dump'.
+// InProgress: the message form may change in the future versions
+type Ikev2ProfileDump struct{}
+
+func (m *Ikev2ProfileDump) Reset()               { *m = Ikev2ProfileDump{} }
+func (*Ikev2ProfileDump) GetMessageName() string { return "ikev2_profile_dump" }
+func (*Ikev2ProfileDump) GetCrcString() string   { return "51077d14" }
+func (*Ikev2ProfileDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Ikev2ProfileDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Ikev2ProfileDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Ikev2ProfileDump) Unmarshal(b []byte) error {
+       return nil
+}
+
 // Ikev2ProfileSetAuth defines message 'ikev2_profile_set_auth'.
+// InProgress: the message form may change in the future versions
 type Ikev2ProfileSetAuth struct {
        Name       string `binapi:"string[64],name=name" json:"name,omitempty"`
        AuthMethod uint8  `binapi:"u8,name=auth_method" json:"auth_method,omitempty"`
@@ -483,6 +1037,7 @@ func (m *Ikev2ProfileSetAuth) Unmarshal(b []byte) error {
 }
 
 // Ikev2ProfileSetAuthReply defines message 'ikev2_profile_set_auth_reply'.
+// InProgress: the message form may change in the future versions
 type Ikev2ProfileSetAuthReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -516,6 +1071,7 @@ func (m *Ikev2ProfileSetAuthReply) Unmarshal(b []byte) error {
 }
 
 // Ikev2ProfileSetID defines message 'ikev2_profile_set_id'.
+// InProgress: the message form may change in the future versions
 type Ikev2ProfileSetID struct {
        Name    string `binapi:"string[64],name=name" json:"name,omitempty"`
        IsLocal bool   `binapi:"bool,name=is_local" json:"is_local,omitempty"`
@@ -566,6 +1122,7 @@ func (m *Ikev2ProfileSetID) Unmarshal(b []byte) error {
 }
 
 // Ikev2ProfileSetIDReply defines message 'ikev2_profile_set_id_reply'.
+// InProgress: the message form may change in the future versions
 type Ikev2ProfileSetIDReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -599,6 +1156,7 @@ func (m *Ikev2ProfileSetIDReply) Unmarshal(b []byte) error {
 }
 
 // Ikev2ProfileSetIpsecUDPPort defines message 'ikev2_profile_set_ipsec_udp_port'.
+// InProgress: the message form may change in the future versions
 type Ikev2ProfileSetIpsecUDPPort struct {
        IsSet uint8  `binapi:"u8,name=is_set" json:"is_set,omitempty"`
        Port  uint16 `binapi:"u16,name=port" json:"port,omitempty"`
@@ -642,6 +1200,7 @@ func (m *Ikev2ProfileSetIpsecUDPPort) Unmarshal(b []byte) error {
 }
 
 // Ikev2ProfileSetIpsecUDPPortReply defines message 'ikev2_profile_set_ipsec_udp_port_reply'.
+// InProgress: the message form may change in the future versions
 type Ikev2ProfileSetIpsecUDPPortReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -677,6 +1236,7 @@ func (m *Ikev2ProfileSetIpsecUDPPortReply) Unmarshal(b []byte) error {
 }
 
 // Ikev2ProfileSetLiveness defines message 'ikev2_profile_set_liveness'.
+// InProgress: the message form may change in the future versions
 type Ikev2ProfileSetLiveness struct {
        Period     uint32 `binapi:"u32,name=period" json:"period,omitempty"`
        MaxRetries uint32 `binapi:"u32,name=max_retries" json:"max_retries,omitempty"`
@@ -714,6 +1274,7 @@ func (m *Ikev2ProfileSetLiveness) Unmarshal(b []byte) error {
 }
 
 // Ikev2ProfileSetLivenessReply defines message 'ikev2_profile_set_liveness_reply'.
+// InProgress: the message form may change in the future versions
 type Ikev2ProfileSetLivenessReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -749,19 +1310,15 @@ func (m *Ikev2ProfileSetLivenessReply) Unmarshal(b []byte) error {
 }
 
 // Ikev2ProfileSetTs defines message 'ikev2_profile_set_ts'.
+// InProgress: the message form may change in the future versions
 type Ikev2ProfileSetTs struct {
-       Name      string `binapi:"string[64],name=name" json:"name,omitempty"`
-       IsLocal   bool   `binapi:"bool,name=is_local" json:"is_local,omitempty"`
-       Proto     uint8  `binapi:"u8,name=proto" json:"proto,omitempty"`
-       StartPort uint16 `binapi:"u16,name=start_port" json:"start_port,omitempty"`
-       EndPort   uint16 `binapi:"u16,name=end_port" json:"end_port,omitempty"`
-       StartAddr uint32 `binapi:"u32,name=start_addr" json:"start_addr,omitempty"`
-       EndAddr   uint32 `binapi:"u32,name=end_addr" json:"end_addr,omitempty"`
+       Name string              `binapi:"string[64],name=name" json:"name,omitempty"`
+       Ts   ikev2_types.Ikev2Ts `binapi:"ikev2_ts,name=ts" json:"ts,omitempty"`
 }
 
 func (m *Ikev2ProfileSetTs) Reset()               { *m = Ikev2ProfileSetTs{} }
 func (*Ikev2ProfileSetTs) GetMessageName() string { return "ikev2_profile_set_ts" }
-func (*Ikev2ProfileSetTs) GetCrcString() string   { return "64d55c16" }
+func (*Ikev2ProfileSetTs) GetCrcString() string   { return "8eb8cfd1" }
 func (*Ikev2ProfileSetTs) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -770,13 +1327,17 @@ func (m *Ikev2ProfileSetTs) Size() (size int) {
        if m == nil {
                return 0
        }
-       size += 64 // m.Name
-       size += 1  // m.IsLocal
-       size += 1  // m.Proto
-       size += 2  // m.StartPort
-       size += 2  // m.EndPort
-       size += 4  // m.StartAddr
-       size += 4  // m.EndAddr
+       size += 64     // m.Name
+       size += 4      // m.Ts.SaIndex
+       size += 4      // m.Ts.ChildSaIndex
+       size += 1      // m.Ts.IsLocal
+       size += 1      // m.Ts.ProtocolID
+       size += 2      // m.Ts.StartPort
+       size += 2      // m.Ts.EndPort
+       size += 1      // m.Ts.StartAddr.Af
+       size += 1 * 16 // m.Ts.StartAddr.Un
+       size += 1      // m.Ts.EndAddr.Af
+       size += 1 * 16 // m.Ts.EndAddr.Un
        return size
 }
 func (m *Ikev2ProfileSetTs) Marshal(b []byte) ([]byte, error) {
@@ -785,27 +1346,36 @@ func (m *Ikev2ProfileSetTs) Marshal(b []byte) ([]byte, error) {
        }
        buf := codec.NewBuffer(b)
        buf.EncodeString(m.Name, 64)
-       buf.EncodeBool(m.IsLocal)
-       buf.EncodeUint8(m.Proto)
-       buf.EncodeUint16(m.StartPort)
-       buf.EncodeUint16(m.EndPort)
-       buf.EncodeUint32(m.StartAddr)
-       buf.EncodeUint32(m.EndAddr)
+       buf.EncodeUint32(m.Ts.SaIndex)
+       buf.EncodeUint32(m.Ts.ChildSaIndex)
+       buf.EncodeBool(m.Ts.IsLocal)
+       buf.EncodeUint8(m.Ts.ProtocolID)
+       buf.EncodeUint16(m.Ts.StartPort)
+       buf.EncodeUint16(m.Ts.EndPort)
+       buf.EncodeUint8(uint8(m.Ts.StartAddr.Af))
+       buf.EncodeBytes(m.Ts.StartAddr.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(uint8(m.Ts.EndAddr.Af))
+       buf.EncodeBytes(m.Ts.EndAddr.Un.XXX_UnionData[:], 16)
        return buf.Bytes(), nil
 }
 func (m *Ikev2ProfileSetTs) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
        m.Name = buf.DecodeString(64)
-       m.IsLocal = buf.DecodeBool()
-       m.Proto = buf.DecodeUint8()
-       m.StartPort = buf.DecodeUint16()
-       m.EndPort = buf.DecodeUint16()
-       m.StartAddr = buf.DecodeUint32()
-       m.EndAddr = buf.DecodeUint32()
+       m.Ts.SaIndex = buf.DecodeUint32()
+       m.Ts.ChildSaIndex = buf.DecodeUint32()
+       m.Ts.IsLocal = buf.DecodeBool()
+       m.Ts.ProtocolID = buf.DecodeUint8()
+       m.Ts.StartPort = buf.DecodeUint16()
+       m.Ts.EndPort = buf.DecodeUint16()
+       m.Ts.StartAddr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Ts.StartAddr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Ts.EndAddr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Ts.EndAddr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
        return nil
 }
 
 // Ikev2ProfileSetTsReply defines message 'ikev2_profile_set_ts_reply'.
+// InProgress: the message form may change in the future versions
 type Ikev2ProfileSetTsReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -839,6 +1409,7 @@ func (m *Ikev2ProfileSetTsReply) Unmarshal(b []byte) error {
 }
 
 // Ikev2ProfileSetUDPEncap defines message 'ikev2_profile_set_udp_encap'.
+// InProgress: the message form may change in the future versions
 type Ikev2ProfileSetUDPEncap struct {
        Name string `binapi:"string[64],name=name" json:"name,omitempty"`
 }
@@ -872,6 +1443,7 @@ func (m *Ikev2ProfileSetUDPEncap) Unmarshal(b []byte) error {
 }
 
 // Ikev2ProfileSetUDPEncapReply defines message 'ikev2_profile_set_udp_encap_reply'.
+// InProgress: the message form may change in the future versions
 type Ikev2ProfileSetUDPEncapReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -906,18 +1478,260 @@ func (m *Ikev2ProfileSetUDPEncapReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// Ikev2SaDetails defines message 'ikev2_sa_details'.
+// InProgress: the message form may change in the future versions
+type Ikev2SaDetails struct {
+       Retval int32               `binapi:"i32,name=retval" json:"retval,omitempty"`
+       Sa     ikev2_types.Ikev2Sa `binapi:"ikev2_sa,name=sa" json:"sa,omitempty"`
+}
+
+func (m *Ikev2SaDetails) Reset()               { *m = Ikev2SaDetails{} }
+func (*Ikev2SaDetails) GetMessageName() string { return "ikev2_sa_details" }
+func (*Ikev2SaDetails) GetCrcString() string   { return "937c22d5" }
+func (*Ikev2SaDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Ikev2SaDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4      // m.Retval
+       size += 4      // m.Sa.SaIndex
+       size += 4      // m.Sa.ProfileIndex
+       size += 8      // m.Sa.Ispi
+       size += 8      // m.Sa.Rspi
+       size += 1      // m.Sa.Iaddr.Af
+       size += 1 * 16 // m.Sa.Iaddr.Un
+       size += 1      // m.Sa.Raddr.Af
+       size += 1 * 16 // m.Sa.Raddr.Un
+       size += 1 * 64 // m.Sa.Keys.SkD
+       size += 1      // m.Sa.Keys.SkDLen
+       size += 1 * 64 // m.Sa.Keys.SkAi
+       size += 1      // m.Sa.Keys.SkAiLen
+       size += 1 * 64 // m.Sa.Keys.SkAr
+       size += 1      // m.Sa.Keys.SkArLen
+       size += 1 * 64 // m.Sa.Keys.SkEi
+       size += 1      // m.Sa.Keys.SkEiLen
+       size += 1 * 64 // m.Sa.Keys.SkEr
+       size += 1      // m.Sa.Keys.SkErLen
+       size += 1 * 64 // m.Sa.Keys.SkPi
+       size += 1      // m.Sa.Keys.SkPiLen
+       size += 1 * 64 // m.Sa.Keys.SkPr
+       size += 1      // m.Sa.Keys.SkPrLen
+       size += 1      // m.Sa.IID.Type
+       size += 1      // m.Sa.IID.DataLen
+       size += 64     // m.Sa.IID.Data
+       size += 1      // m.Sa.RID.Type
+       size += 1      // m.Sa.RID.DataLen
+       size += 64     // m.Sa.RID.Data
+       size += 1      // m.Sa.Encryption.TransformType
+       size += 2      // m.Sa.Encryption.TransformID
+       size += 2      // m.Sa.Encryption.KeyLen
+       size += 2      // m.Sa.Encryption.KeyTrunc
+       size += 2      // m.Sa.Encryption.BlockSize
+       size += 1      // m.Sa.Encryption.DhGroup
+       size += 1      // m.Sa.Integrity.TransformType
+       size += 2      // m.Sa.Integrity.TransformID
+       size += 2      // m.Sa.Integrity.KeyLen
+       size += 2      // m.Sa.Integrity.KeyTrunc
+       size += 2      // m.Sa.Integrity.BlockSize
+       size += 1      // m.Sa.Integrity.DhGroup
+       size += 1      // m.Sa.Prf.TransformType
+       size += 2      // m.Sa.Prf.TransformID
+       size += 2      // m.Sa.Prf.KeyLen
+       size += 2      // m.Sa.Prf.KeyTrunc
+       size += 2      // m.Sa.Prf.BlockSize
+       size += 1      // m.Sa.Prf.DhGroup
+       size += 1      // m.Sa.Dh.TransformType
+       size += 2      // m.Sa.Dh.TransformID
+       size += 2      // m.Sa.Dh.KeyLen
+       size += 2      // m.Sa.Dh.KeyTrunc
+       size += 2      // m.Sa.Dh.BlockSize
+       size += 1      // m.Sa.Dh.DhGroup
+       size += 2      // m.Sa.Stats.NKeepalives
+       size += 2      // m.Sa.Stats.NRekeyReq
+       size += 2      // m.Sa.Stats.NSaInitReq
+       size += 2      // m.Sa.Stats.NSaAuthReq
+       size += 2      // m.Sa.Stats.NRetransmit
+       size += 2      // m.Sa.Stats.NInitSaRetransmit
+       return size
+}
+func (m *Ikev2SaDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.Sa.SaIndex)
+       buf.EncodeUint32(m.Sa.ProfileIndex)
+       buf.EncodeUint64(m.Sa.Ispi)
+       buf.EncodeUint64(m.Sa.Rspi)
+       buf.EncodeUint8(uint8(m.Sa.Iaddr.Af))
+       buf.EncodeBytes(m.Sa.Iaddr.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(uint8(m.Sa.Raddr.Af))
+       buf.EncodeBytes(m.Sa.Raddr.Un.XXX_UnionData[:], 16)
+       buf.EncodeBytes(m.Sa.Keys.SkD, 64)
+       buf.EncodeUint8(m.Sa.Keys.SkDLen)
+       buf.EncodeBytes(m.Sa.Keys.SkAi, 64)
+       buf.EncodeUint8(m.Sa.Keys.SkAiLen)
+       buf.EncodeBytes(m.Sa.Keys.SkAr, 64)
+       buf.EncodeUint8(m.Sa.Keys.SkArLen)
+       buf.EncodeBytes(m.Sa.Keys.SkEi, 64)
+       buf.EncodeUint8(m.Sa.Keys.SkEiLen)
+       buf.EncodeBytes(m.Sa.Keys.SkEr, 64)
+       buf.EncodeUint8(m.Sa.Keys.SkErLen)
+       buf.EncodeBytes(m.Sa.Keys.SkPi, 64)
+       buf.EncodeUint8(m.Sa.Keys.SkPiLen)
+       buf.EncodeBytes(m.Sa.Keys.SkPr, 64)
+       buf.EncodeUint8(m.Sa.Keys.SkPrLen)
+       buf.EncodeUint8(m.Sa.IID.Type)
+       buf.EncodeUint8(m.Sa.IID.DataLen)
+       buf.EncodeString(m.Sa.IID.Data, 64)
+       buf.EncodeUint8(m.Sa.RID.Type)
+       buf.EncodeUint8(m.Sa.RID.DataLen)
+       buf.EncodeString(m.Sa.RID.Data, 64)
+       buf.EncodeUint8(m.Sa.Encryption.TransformType)
+       buf.EncodeUint16(m.Sa.Encryption.TransformID)
+       buf.EncodeUint16(m.Sa.Encryption.KeyLen)
+       buf.EncodeUint16(m.Sa.Encryption.KeyTrunc)
+       buf.EncodeUint16(m.Sa.Encryption.BlockSize)
+       buf.EncodeUint8(m.Sa.Encryption.DhGroup)
+       buf.EncodeUint8(m.Sa.Integrity.TransformType)
+       buf.EncodeUint16(m.Sa.Integrity.TransformID)
+       buf.EncodeUint16(m.Sa.Integrity.KeyLen)
+       buf.EncodeUint16(m.Sa.Integrity.KeyTrunc)
+       buf.EncodeUint16(m.Sa.Integrity.BlockSize)
+       buf.EncodeUint8(m.Sa.Integrity.DhGroup)
+       buf.EncodeUint8(m.Sa.Prf.TransformType)
+       buf.EncodeUint16(m.Sa.Prf.TransformID)
+       buf.EncodeUint16(m.Sa.Prf.KeyLen)
+       buf.EncodeUint16(m.Sa.Prf.KeyTrunc)
+       buf.EncodeUint16(m.Sa.Prf.BlockSize)
+       buf.EncodeUint8(m.Sa.Prf.DhGroup)
+       buf.EncodeUint8(m.Sa.Dh.TransformType)
+       buf.EncodeUint16(m.Sa.Dh.TransformID)
+       buf.EncodeUint16(m.Sa.Dh.KeyLen)
+       buf.EncodeUint16(m.Sa.Dh.KeyTrunc)
+       buf.EncodeUint16(m.Sa.Dh.BlockSize)
+       buf.EncodeUint8(m.Sa.Dh.DhGroup)
+       buf.EncodeUint16(m.Sa.Stats.NKeepalives)
+       buf.EncodeUint16(m.Sa.Stats.NRekeyReq)
+       buf.EncodeUint16(m.Sa.Stats.NSaInitReq)
+       buf.EncodeUint16(m.Sa.Stats.NSaAuthReq)
+       buf.EncodeUint16(m.Sa.Stats.NRetransmit)
+       buf.EncodeUint16(m.Sa.Stats.NInitSaRetransmit)
+       return buf.Bytes(), nil
+}
+func (m *Ikev2SaDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.Sa.SaIndex = buf.DecodeUint32()
+       m.Sa.ProfileIndex = buf.DecodeUint32()
+       m.Sa.Ispi = buf.DecodeUint64()
+       m.Sa.Rspi = buf.DecodeUint64()
+       m.Sa.Iaddr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Sa.Iaddr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Sa.Raddr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Sa.Raddr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Sa.Keys.SkD = make([]byte, 64)
+       copy(m.Sa.Keys.SkD, buf.DecodeBytes(len(m.Sa.Keys.SkD)))
+       m.Sa.Keys.SkDLen = buf.DecodeUint8()
+       m.Sa.Keys.SkAi = make([]byte, 64)
+       copy(m.Sa.Keys.SkAi, buf.DecodeBytes(len(m.Sa.Keys.SkAi)))
+       m.Sa.Keys.SkAiLen = buf.DecodeUint8()
+       m.Sa.Keys.SkAr = make([]byte, 64)
+       copy(m.Sa.Keys.SkAr, buf.DecodeBytes(len(m.Sa.Keys.SkAr)))
+       m.Sa.Keys.SkArLen = buf.DecodeUint8()
+       m.Sa.Keys.SkEi = make([]byte, 64)
+       copy(m.Sa.Keys.SkEi, buf.DecodeBytes(len(m.Sa.Keys.SkEi)))
+       m.Sa.Keys.SkEiLen = buf.DecodeUint8()
+       m.Sa.Keys.SkEr = make([]byte, 64)
+       copy(m.Sa.Keys.SkEr, buf.DecodeBytes(len(m.Sa.Keys.SkEr)))
+       m.Sa.Keys.SkErLen = buf.DecodeUint8()
+       m.Sa.Keys.SkPi = make([]byte, 64)
+       copy(m.Sa.Keys.SkPi, buf.DecodeBytes(len(m.Sa.Keys.SkPi)))
+       m.Sa.Keys.SkPiLen = buf.DecodeUint8()
+       m.Sa.Keys.SkPr = make([]byte, 64)
+       copy(m.Sa.Keys.SkPr, buf.DecodeBytes(len(m.Sa.Keys.SkPr)))
+       m.Sa.Keys.SkPrLen = buf.DecodeUint8()
+       m.Sa.IID.Type = buf.DecodeUint8()
+       m.Sa.IID.DataLen = buf.DecodeUint8()
+       m.Sa.IID.Data = buf.DecodeString(64)
+       m.Sa.RID.Type = buf.DecodeUint8()
+       m.Sa.RID.DataLen = buf.DecodeUint8()
+       m.Sa.RID.Data = buf.DecodeString(64)
+       m.Sa.Encryption.TransformType = buf.DecodeUint8()
+       m.Sa.Encryption.TransformID = buf.DecodeUint16()
+       m.Sa.Encryption.KeyLen = buf.DecodeUint16()
+       m.Sa.Encryption.KeyTrunc = buf.DecodeUint16()
+       m.Sa.Encryption.BlockSize = buf.DecodeUint16()
+       m.Sa.Encryption.DhGroup = buf.DecodeUint8()
+       m.Sa.Integrity.TransformType = buf.DecodeUint8()
+       m.Sa.Integrity.TransformID = buf.DecodeUint16()
+       m.Sa.Integrity.KeyLen = buf.DecodeUint16()
+       m.Sa.Integrity.KeyTrunc = buf.DecodeUint16()
+       m.Sa.Integrity.BlockSize = buf.DecodeUint16()
+       m.Sa.Integrity.DhGroup = buf.DecodeUint8()
+       m.Sa.Prf.TransformType = buf.DecodeUint8()
+       m.Sa.Prf.TransformID = buf.DecodeUint16()
+       m.Sa.Prf.KeyLen = buf.DecodeUint16()
+       m.Sa.Prf.KeyTrunc = buf.DecodeUint16()
+       m.Sa.Prf.BlockSize = buf.DecodeUint16()
+       m.Sa.Prf.DhGroup = buf.DecodeUint8()
+       m.Sa.Dh.TransformType = buf.DecodeUint8()
+       m.Sa.Dh.TransformID = buf.DecodeUint16()
+       m.Sa.Dh.KeyLen = buf.DecodeUint16()
+       m.Sa.Dh.KeyTrunc = buf.DecodeUint16()
+       m.Sa.Dh.BlockSize = buf.DecodeUint16()
+       m.Sa.Dh.DhGroup = buf.DecodeUint8()
+       m.Sa.Stats.NKeepalives = buf.DecodeUint16()
+       m.Sa.Stats.NRekeyReq = buf.DecodeUint16()
+       m.Sa.Stats.NSaInitReq = buf.DecodeUint16()
+       m.Sa.Stats.NSaAuthReq = buf.DecodeUint16()
+       m.Sa.Stats.NRetransmit = buf.DecodeUint16()
+       m.Sa.Stats.NInitSaRetransmit = buf.DecodeUint16()
+       return nil
+}
+
+// Ikev2SaDump defines message 'ikev2_sa_dump'.
+// InProgress: the message form may change in the future versions
+type Ikev2SaDump struct{}
+
+func (m *Ikev2SaDump) Reset()               { *m = Ikev2SaDump{} }
+func (*Ikev2SaDump) GetMessageName() string { return "ikev2_sa_dump" }
+func (*Ikev2SaDump) GetCrcString() string   { return "51077d14" }
+func (*Ikev2SaDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Ikev2SaDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Ikev2SaDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Ikev2SaDump) Unmarshal(b []byte) error {
+       return nil
+}
+
 // Ikev2SetEspTransforms defines message 'ikev2_set_esp_transforms'.
+// InProgress: the message form may change in the future versions
 type Ikev2SetEspTransforms struct {
-       Name          string `binapi:"string[64],name=name" json:"name,omitempty"`
-       CryptoAlg     uint32 `binapi:"u32,name=crypto_alg" json:"crypto_alg,omitempty"`
-       CryptoKeySize uint32 `binapi:"u32,name=crypto_key_size" json:"crypto_key_size,omitempty"`
-       IntegAlg      uint32 `binapi:"u32,name=integ_alg" json:"integ_alg,omitempty"`
-       DhGroup       uint32 `binapi:"u32,name=dh_group" json:"dh_group,omitempty"`
+       Name string                         `binapi:"string[64],name=name" json:"name,omitempty"`
+       Tr   ikev2_types.Ikev2EspTransforms `binapi:"ikev2_esp_transforms,name=tr" json:"tr,omitempty"`
 }
 
 func (m *Ikev2SetEspTransforms) Reset()               { *m = Ikev2SetEspTransforms{} }
 func (*Ikev2SetEspTransforms) GetMessageName() string { return "ikev2_set_esp_transforms" }
-func (*Ikev2SetEspTransforms) GetCrcString() string   { return "936a1a37" }
+func (*Ikev2SetEspTransforms) GetCrcString() string   { return "a63dc205" }
 func (*Ikev2SetEspTransforms) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -927,10 +1741,9 @@ func (m *Ikev2SetEspTransforms) Size() (size int) {
                return 0
        }
        size += 64 // m.Name
-       size += 4  // m.CryptoAlg
-       size += 4  // m.CryptoKeySize
-       size += 4  // m.IntegAlg
-       size += 4  // m.DhGroup
+       size += 1  // m.Tr.CryptoAlg
+       size += 4  // m.Tr.CryptoKeySize
+       size += 1  // m.Tr.IntegAlg
        return size
 }
 func (m *Ikev2SetEspTransforms) Marshal(b []byte) ([]byte, error) {
@@ -939,23 +1752,22 @@ func (m *Ikev2SetEspTransforms) Marshal(b []byte) ([]byte, error) {
        }
        buf := codec.NewBuffer(b)
        buf.EncodeString(m.Name, 64)
-       buf.EncodeUint32(m.CryptoAlg)
-       buf.EncodeUint32(m.CryptoKeySize)
-       buf.EncodeUint32(m.IntegAlg)
-       buf.EncodeUint32(m.DhGroup)
+       buf.EncodeUint8(m.Tr.CryptoAlg)
+       buf.EncodeUint32(m.Tr.CryptoKeySize)
+       buf.EncodeUint8(m.Tr.IntegAlg)
        return buf.Bytes(), nil
 }
 func (m *Ikev2SetEspTransforms) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
        m.Name = buf.DecodeString(64)
-       m.CryptoAlg = buf.DecodeUint32()
-       m.CryptoKeySize = buf.DecodeUint32()
-       m.IntegAlg = buf.DecodeUint32()
-       m.DhGroup = buf.DecodeUint32()
+       m.Tr.CryptoAlg = buf.DecodeUint8()
+       m.Tr.CryptoKeySize = buf.DecodeUint32()
+       m.Tr.IntegAlg = buf.DecodeUint8()
        return nil
 }
 
 // Ikev2SetEspTransformsReply defines message 'ikev2_set_esp_transforms_reply'.
+// InProgress: the message form may change in the future versions
 type Ikev2SetEspTransformsReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -989,17 +1801,15 @@ func (m *Ikev2SetEspTransformsReply) Unmarshal(b []byte) error {
 }
 
 // Ikev2SetIkeTransforms defines message 'ikev2_set_ike_transforms'.
+// InProgress: the message form may change in the future versions
 type Ikev2SetIkeTransforms struct {
-       Name          string `binapi:"string[64],name=name" json:"name,omitempty"`
-       CryptoAlg     uint32 `binapi:"u32,name=crypto_alg" json:"crypto_alg,omitempty"`
-       CryptoKeySize uint32 `binapi:"u32,name=crypto_key_size" json:"crypto_key_size,omitempty"`
-       IntegAlg      uint32 `binapi:"u32,name=integ_alg" json:"integ_alg,omitempty"`
-       DhGroup       uint32 `binapi:"u32,name=dh_group" json:"dh_group,omitempty"`
+       Name string                         `binapi:"string[64],name=name" json:"name,omitempty"`
+       Tr   ikev2_types.Ikev2IkeTransforms `binapi:"ikev2_ike_transforms,name=tr" json:"tr,omitempty"`
 }
 
 func (m *Ikev2SetIkeTransforms) Reset()               { *m = Ikev2SetIkeTransforms{} }
 func (*Ikev2SetIkeTransforms) GetMessageName() string { return "ikev2_set_ike_transforms" }
-func (*Ikev2SetIkeTransforms) GetCrcString() string   { return "936a1a37" }
+func (*Ikev2SetIkeTransforms) GetCrcString() string   { return "076d7378" }
 func (*Ikev2SetIkeTransforms) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1009,10 +1819,10 @@ func (m *Ikev2SetIkeTransforms) Size() (size int) {
                return 0
        }
        size += 64 // m.Name
-       size += 4  // m.CryptoAlg
-       size += 4  // m.CryptoKeySize
-       size += 4  // m.IntegAlg
-       size += 4  // m.DhGroup
+       size += 1  // m.Tr.CryptoAlg
+       size += 4  // m.Tr.CryptoKeySize
+       size += 1  // m.Tr.IntegAlg
+       size += 1  // m.Tr.DhGroup
        return size
 }
 func (m *Ikev2SetIkeTransforms) Marshal(b []byte) ([]byte, error) {
@@ -1021,23 +1831,24 @@ func (m *Ikev2SetIkeTransforms) Marshal(b []byte) ([]byte, error) {
        }
        buf := codec.NewBuffer(b)
        buf.EncodeString(m.Name, 64)
-       buf.EncodeUint32(m.CryptoAlg)
-       buf.EncodeUint32(m.CryptoKeySize)
-       buf.EncodeUint32(m.IntegAlg)
-       buf.EncodeUint32(m.DhGroup)
+       buf.EncodeUint8(m.Tr.CryptoAlg)
+       buf.EncodeUint32(m.Tr.CryptoKeySize)
+       buf.EncodeUint8(m.Tr.IntegAlg)
+       buf.EncodeUint8(m.Tr.DhGroup)
        return buf.Bytes(), nil
 }
 func (m *Ikev2SetIkeTransforms) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
        m.Name = buf.DecodeString(64)
-       m.CryptoAlg = buf.DecodeUint32()
-       m.CryptoKeySize = buf.DecodeUint32()
-       m.IntegAlg = buf.DecodeUint32()
-       m.DhGroup = buf.DecodeUint32()
+       m.Tr.CryptoAlg = buf.DecodeUint8()
+       m.Tr.CryptoKeySize = buf.DecodeUint32()
+       m.Tr.IntegAlg = buf.DecodeUint8()
+       m.Tr.DhGroup = buf.DecodeUint8()
        return nil
 }
 
 // Ikev2SetIkeTransformsReply defines message 'ikev2_set_ike_transforms_reply'.
+// InProgress: the message form may change in the future versions
 type Ikev2SetIkeTransformsReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -1071,6 +1882,7 @@ func (m *Ikev2SetIkeTransformsReply) Unmarshal(b []byte) error {
 }
 
 // Ikev2SetLocalKey defines message 'ikev2_set_local_key'.
+// InProgress: the message form may change in the future versions
 type Ikev2SetLocalKey struct {
        KeyFile string `binapi:"string[256],name=key_file" json:"key_file,omitempty"`
 }
@@ -1104,6 +1916,7 @@ func (m *Ikev2SetLocalKey) Unmarshal(b []byte) error {
 }
 
 // Ikev2SetLocalKeyReply defines message 'ikev2_set_local_key_reply'.
+// InProgress: the message form may change in the future versions
 type Ikev2SetLocalKeyReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -1137,15 +1950,15 @@ func (m *Ikev2SetLocalKeyReply) Unmarshal(b []byte) error {
 }
 
 // Ikev2SetResponder defines message 'ikev2_set_responder'.
+// InProgress: the message form may change in the future versions
 type Ikev2SetResponder struct {
-       Name      string                         `binapi:"string[64],name=name" json:"name,omitempty"`
-       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
-       Address   ip_types.IP4Address            `binapi:"ip4_address,name=address" json:"address,omitempty"`
+       Name      string                     `binapi:"string[64],name=name" json:"name,omitempty"`
+       Responder ikev2_types.Ikev2Responder `binapi:"ikev2_responder,name=responder" json:"responder,omitempty"`
 }
 
 func (m *Ikev2SetResponder) Reset()               { *m = Ikev2SetResponder{} }
 func (*Ikev2SetResponder) GetMessageName() string { return "ikev2_set_responder" }
-func (*Ikev2SetResponder) GetCrcString() string   { return "f0d3dc80" }
+func (*Ikev2SetResponder) GetCrcString() string   { return "a2055df1" }
 func (*Ikev2SetResponder) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1154,9 +1967,10 @@ func (m *Ikev2SetResponder) Size() (size int) {
        if m == nil {
                return 0
        }
-       size += 64    // m.Name
-       size += 4     // m.SwIfIndex
-       size += 1 * 4 // m.Address
+       size += 64     // m.Name
+       size += 4      // m.Responder.SwIfIndex
+       size += 1      // m.Responder.Addr.Af
+       size += 1 * 16 // m.Responder.Addr.Un
        return size
 }
 func (m *Ikev2SetResponder) Marshal(b []byte) ([]byte, error) {
@@ -1165,19 +1979,100 @@ func (m *Ikev2SetResponder) Marshal(b []byte) ([]byte, error) {
        }
        buf := codec.NewBuffer(b)
        buf.EncodeString(m.Name, 64)
-       buf.EncodeUint32(uint32(m.SwIfIndex))
-       buf.EncodeBytes(m.Address[:], 4)
+       buf.EncodeUint32(uint32(m.Responder.SwIfIndex))
+       buf.EncodeUint8(uint8(m.Responder.Addr.Af))
+       buf.EncodeBytes(m.Responder.Addr.Un.XXX_UnionData[:], 16)
        return buf.Bytes(), nil
 }
 func (m *Ikev2SetResponder) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
        m.Name = buf.DecodeString(64)
+       m.Responder.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Responder.Addr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Responder.Addr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       return nil
+}
+
+// Ikev2SetResponderHostname defines message 'ikev2_set_responder_hostname'.
+// InProgress: the message form may change in the future versions
+type Ikev2SetResponderHostname struct {
+       Name      string                         `binapi:"string[64],name=name" json:"name,omitempty"`
+       Hostname  string                         `binapi:"string[64],name=hostname" json:"hostname,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *Ikev2SetResponderHostname) Reset()               { *m = Ikev2SetResponderHostname{} }
+func (*Ikev2SetResponderHostname) GetMessageName() string { return "ikev2_set_responder_hostname" }
+func (*Ikev2SetResponderHostname) GetCrcString() string   { return "350d6949" }
+func (*Ikev2SetResponderHostname) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Ikev2SetResponderHostname) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 64 // m.Name
+       size += 64 // m.Hostname
+       size += 4  // m.SwIfIndex
+       return size
+}
+func (m *Ikev2SetResponderHostname) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeString(m.Name, 64)
+       buf.EncodeString(m.Hostname, 64)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *Ikev2SetResponderHostname) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Name = buf.DecodeString(64)
+       m.Hostname = buf.DecodeString(64)
        m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
-       copy(m.Address[:], buf.DecodeBytes(4))
+       return nil
+}
+
+// Ikev2SetResponderHostnameReply defines message 'ikev2_set_responder_hostname_reply'.
+// InProgress: the message form may change in the future versions
+type Ikev2SetResponderHostnameReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Ikev2SetResponderHostnameReply) Reset() { *m = Ikev2SetResponderHostnameReply{} }
+func (*Ikev2SetResponderHostnameReply) GetMessageName() string {
+       return "ikev2_set_responder_hostname_reply"
+}
+func (*Ikev2SetResponderHostnameReply) GetCrcString() string { return "e8d4e804" }
+func (*Ikev2SetResponderHostnameReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Ikev2SetResponderHostnameReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Ikev2SetResponderHostnameReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Ikev2SetResponderHostnameReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
        return nil
 }
 
 // Ikev2SetResponderReply defines message 'ikev2_set_responder_reply'.
+// InProgress: the message form may change in the future versions
 type Ikev2SetResponderReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -1211,6 +2106,7 @@ func (m *Ikev2SetResponderReply) Unmarshal(b []byte) error {
 }
 
 // Ikev2SetSaLifetime defines message 'ikev2_set_sa_lifetime'.
+// InProgress: the message form may change in the future versions
 type Ikev2SetSaLifetime struct {
        Name            string `binapi:"string[64],name=name" json:"name,omitempty"`
        Lifetime        uint64 `binapi:"u64,name=lifetime" json:"lifetime,omitempty"`
@@ -1260,6 +2156,7 @@ func (m *Ikev2SetSaLifetime) Unmarshal(b []byte) error {
 }
 
 // Ikev2SetSaLifetimeReply defines message 'ikev2_set_sa_lifetime_reply'.
+// InProgress: the message form may change in the future versions
 type Ikev2SetSaLifetimeReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -1293,6 +2190,7 @@ func (m *Ikev2SetSaLifetimeReply) Unmarshal(b []byte) error {
 }
 
 // Ikev2SetTunnelInterface defines message 'ikev2_set_tunnel_interface'.
+// InProgress: the message form may change in the future versions
 type Ikev2SetTunnelInterface struct {
        Name      string                         `binapi:"string[64],name=name" json:"name,omitempty"`
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
@@ -1330,6 +2228,7 @@ func (m *Ikev2SetTunnelInterface) Unmarshal(b []byte) error {
 }
 
 // Ikev2SetTunnelInterfaceReply defines message 'ikev2_set_tunnel_interface_reply'.
+// InProgress: the message form may change in the future versions
 type Ikev2SetTunnelInterfaceReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -1364,8 +2263,117 @@ func (m *Ikev2SetTunnelInterfaceReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// Ikev2TrafficSelectorDetails defines message 'ikev2_traffic_selector_details'.
+// InProgress: the message form may change in the future versions
+type Ikev2TrafficSelectorDetails struct {
+       Retval int32               `binapi:"i32,name=retval" json:"retval,omitempty"`
+       Ts     ikev2_types.Ikev2Ts `binapi:"ikev2_ts,name=ts" json:"ts,omitempty"`
+}
+
+func (m *Ikev2TrafficSelectorDetails) Reset()               { *m = Ikev2TrafficSelectorDetails{} }
+func (*Ikev2TrafficSelectorDetails) GetMessageName() string { return "ikev2_traffic_selector_details" }
+func (*Ikev2TrafficSelectorDetails) GetCrcString() string   { return "518cb06f" }
+func (*Ikev2TrafficSelectorDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Ikev2TrafficSelectorDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4      // m.Retval
+       size += 4      // m.Ts.SaIndex
+       size += 4      // m.Ts.ChildSaIndex
+       size += 1      // m.Ts.IsLocal
+       size += 1      // m.Ts.ProtocolID
+       size += 2      // m.Ts.StartPort
+       size += 2      // m.Ts.EndPort
+       size += 1      // m.Ts.StartAddr.Af
+       size += 1 * 16 // m.Ts.StartAddr.Un
+       size += 1      // m.Ts.EndAddr.Af
+       size += 1 * 16 // m.Ts.EndAddr.Un
+       return size
+}
+func (m *Ikev2TrafficSelectorDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.Ts.SaIndex)
+       buf.EncodeUint32(m.Ts.ChildSaIndex)
+       buf.EncodeBool(m.Ts.IsLocal)
+       buf.EncodeUint8(m.Ts.ProtocolID)
+       buf.EncodeUint16(m.Ts.StartPort)
+       buf.EncodeUint16(m.Ts.EndPort)
+       buf.EncodeUint8(uint8(m.Ts.StartAddr.Af))
+       buf.EncodeBytes(m.Ts.StartAddr.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(uint8(m.Ts.EndAddr.Af))
+       buf.EncodeBytes(m.Ts.EndAddr.Un.XXX_UnionData[:], 16)
+       return buf.Bytes(), nil
+}
+func (m *Ikev2TrafficSelectorDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.Ts.SaIndex = buf.DecodeUint32()
+       m.Ts.ChildSaIndex = buf.DecodeUint32()
+       m.Ts.IsLocal = buf.DecodeBool()
+       m.Ts.ProtocolID = buf.DecodeUint8()
+       m.Ts.StartPort = buf.DecodeUint16()
+       m.Ts.EndPort = buf.DecodeUint16()
+       m.Ts.StartAddr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Ts.StartAddr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Ts.EndAddr.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Ts.EndAddr.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       return nil
+}
+
+// Ikev2TrafficSelectorDump defines message 'ikev2_traffic_selector_dump'.
+// InProgress: the message form may change in the future versions
+type Ikev2TrafficSelectorDump struct {
+       IsInitiator  bool   `binapi:"bool,name=is_initiator" json:"is_initiator,omitempty"`
+       SaIndex      uint32 `binapi:"u32,name=sa_index" json:"sa_index,omitempty"`
+       ChildSaIndex uint32 `binapi:"u32,name=child_sa_index" json:"child_sa_index,omitempty"`
+}
+
+func (m *Ikev2TrafficSelectorDump) Reset()               { *m = Ikev2TrafficSelectorDump{} }
+func (*Ikev2TrafficSelectorDump) GetMessageName() string { return "ikev2_traffic_selector_dump" }
+func (*Ikev2TrafficSelectorDump) GetCrcString() string   { return "a7385e33" }
+func (*Ikev2TrafficSelectorDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Ikev2TrafficSelectorDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.IsInitiator
+       size += 4 // m.SaIndex
+       size += 4 // m.ChildSaIndex
+       return size
+}
+func (m *Ikev2TrafficSelectorDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsInitiator)
+       buf.EncodeUint32(m.SaIndex)
+       buf.EncodeUint32(m.ChildSaIndex)
+       return buf.Bytes(), nil
+}
+func (m *Ikev2TrafficSelectorDump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsInitiator = buf.DecodeBool()
+       m.SaIndex = buf.DecodeUint32()
+       m.ChildSaIndex = buf.DecodeUint32()
+       return nil
+}
+
 func init() { file_ikev2_binapi_init() }
 func file_ikev2_binapi_init() {
+       api.RegisterMessage((*Ikev2ChildSaDetails)(nil), "ikev2_child_sa_details_ff67741f")
+       api.RegisterMessage((*Ikev2ChildSaDump)(nil), "ikev2_child_sa_dump_01eab609")
        api.RegisterMessage((*Ikev2InitiateDelChildSa)(nil), "ikev2_initiate_del_child_sa_7f004d2e")
        api.RegisterMessage((*Ikev2InitiateDelChildSaReply)(nil), "ikev2_initiate_del_child_sa_reply_e8d4e804")
        api.RegisterMessage((*Ikev2InitiateDelIkeSa)(nil), "ikev2_initiate_del_ike_sa_8d125bdd")
@@ -1374,10 +2382,16 @@ func file_ikev2_binapi_init() {
        api.RegisterMessage((*Ikev2InitiateRekeyChildSaReply)(nil), "ikev2_initiate_rekey_child_sa_reply_e8d4e804")
        api.RegisterMessage((*Ikev2InitiateSaInit)(nil), "ikev2_initiate_sa_init_ebf79a66")
        api.RegisterMessage((*Ikev2InitiateSaInitReply)(nil), "ikev2_initiate_sa_init_reply_e8d4e804")
+       api.RegisterMessage((*Ikev2NonceGet)(nil), "ikev2_nonce_get_7fe9ad51")
+       api.RegisterMessage((*Ikev2NonceGetReply)(nil), "ikev2_nonce_get_reply_1b37a342")
        api.RegisterMessage((*Ikev2PluginGetVersion)(nil), "ikev2_plugin_get_version_51077d14")
        api.RegisterMessage((*Ikev2PluginGetVersionReply)(nil), "ikev2_plugin_get_version_reply_9b32cf86")
        api.RegisterMessage((*Ikev2ProfileAddDel)(nil), "ikev2_profile_add_del_2c925b55")
        api.RegisterMessage((*Ikev2ProfileAddDelReply)(nil), "ikev2_profile_add_del_reply_e8d4e804")
+       api.RegisterMessage((*Ikev2ProfileDetails)(nil), "ikev2_profile_details_670d01d9")
+       api.RegisterMessage((*Ikev2ProfileDisableNatt)(nil), "ikev2_profile_disable_natt_ebf79a66")
+       api.RegisterMessage((*Ikev2ProfileDisableNattReply)(nil), "ikev2_profile_disable_natt_reply_e8d4e804")
+       api.RegisterMessage((*Ikev2ProfileDump)(nil), "ikev2_profile_dump_51077d14")
        api.RegisterMessage((*Ikev2ProfileSetAuth)(nil), "ikev2_profile_set_auth_642c97cd")
        api.RegisterMessage((*Ikev2ProfileSetAuthReply)(nil), "ikev2_profile_set_auth_reply_e8d4e804")
        api.RegisterMessage((*Ikev2ProfileSetID)(nil), "ikev2_profile_set_id_4d7e2418")
@@ -1386,27 +2400,35 @@ func file_ikev2_binapi_init() {
        api.RegisterMessage((*Ikev2ProfileSetIpsecUDPPortReply)(nil), "ikev2_profile_set_ipsec_udp_port_reply_e8d4e804")
        api.RegisterMessage((*Ikev2ProfileSetLiveness)(nil), "ikev2_profile_set_liveness_6bdf4d65")
        api.RegisterMessage((*Ikev2ProfileSetLivenessReply)(nil), "ikev2_profile_set_liveness_reply_e8d4e804")
-       api.RegisterMessage((*Ikev2ProfileSetTs)(nil), "ikev2_profile_set_ts_64d55c16")
+       api.RegisterMessage((*Ikev2ProfileSetTs)(nil), "ikev2_profile_set_ts_8eb8cfd1")
        api.RegisterMessage((*Ikev2ProfileSetTsReply)(nil), "ikev2_profile_set_ts_reply_e8d4e804")
        api.RegisterMessage((*Ikev2ProfileSetUDPEncap)(nil), "ikev2_profile_set_udp_encap_ebf79a66")
        api.RegisterMessage((*Ikev2ProfileSetUDPEncapReply)(nil), "ikev2_profile_set_udp_encap_reply_e8d4e804")
-       api.RegisterMessage((*Ikev2SetEspTransforms)(nil), "ikev2_set_esp_transforms_936a1a37")
+       api.RegisterMessage((*Ikev2SaDetails)(nil), "ikev2_sa_details_937c22d5")
+       api.RegisterMessage((*Ikev2SaDump)(nil), "ikev2_sa_dump_51077d14")
+       api.RegisterMessage((*Ikev2SetEspTransforms)(nil), "ikev2_set_esp_transforms_a63dc205")
        api.RegisterMessage((*Ikev2SetEspTransformsReply)(nil), "ikev2_set_esp_transforms_reply_e8d4e804")
-       api.RegisterMessage((*Ikev2SetIkeTransforms)(nil), "ikev2_set_ike_transforms_936a1a37")
+       api.RegisterMessage((*Ikev2SetIkeTransforms)(nil), "ikev2_set_ike_transforms_076d7378")
        api.RegisterMessage((*Ikev2SetIkeTransformsReply)(nil), "ikev2_set_ike_transforms_reply_e8d4e804")
        api.RegisterMessage((*Ikev2SetLocalKey)(nil), "ikev2_set_local_key_799b69ec")
        api.RegisterMessage((*Ikev2SetLocalKeyReply)(nil), "ikev2_set_local_key_reply_e8d4e804")
-       api.RegisterMessage((*Ikev2SetResponder)(nil), "ikev2_set_responder_f0d3dc80")
+       api.RegisterMessage((*Ikev2SetResponder)(nil), "ikev2_set_responder_a2055df1")
+       api.RegisterMessage((*Ikev2SetResponderHostname)(nil), "ikev2_set_responder_hostname_350d6949")
+       api.RegisterMessage((*Ikev2SetResponderHostnameReply)(nil), "ikev2_set_responder_hostname_reply_e8d4e804")
        api.RegisterMessage((*Ikev2SetResponderReply)(nil), "ikev2_set_responder_reply_e8d4e804")
        api.RegisterMessage((*Ikev2SetSaLifetime)(nil), "ikev2_set_sa_lifetime_7039feaa")
        api.RegisterMessage((*Ikev2SetSaLifetimeReply)(nil), "ikev2_set_sa_lifetime_reply_e8d4e804")
        api.RegisterMessage((*Ikev2SetTunnelInterface)(nil), "ikev2_set_tunnel_interface_ca67182c")
        api.RegisterMessage((*Ikev2SetTunnelInterfaceReply)(nil), "ikev2_set_tunnel_interface_reply_e8d4e804")
+       api.RegisterMessage((*Ikev2TrafficSelectorDetails)(nil), "ikev2_traffic_selector_details_518cb06f")
+       api.RegisterMessage((*Ikev2TrafficSelectorDump)(nil), "ikev2_traffic_selector_dump_a7385e33")
 }
 
 // Messages returns list of all messages in this module.
 func AllMessages() []api.Message {
        return []api.Message{
+               (*Ikev2ChildSaDetails)(nil),
+               (*Ikev2ChildSaDump)(nil),
                (*Ikev2InitiateDelChildSa)(nil),
                (*Ikev2InitiateDelChildSaReply)(nil),
                (*Ikev2InitiateDelIkeSa)(nil),
@@ -1415,10 +2437,16 @@ func AllMessages() []api.Message {
                (*Ikev2InitiateRekeyChildSaReply)(nil),
                (*Ikev2InitiateSaInit)(nil),
                (*Ikev2InitiateSaInitReply)(nil),
+               (*Ikev2NonceGet)(nil),
+               (*Ikev2NonceGetReply)(nil),
                (*Ikev2PluginGetVersion)(nil),
                (*Ikev2PluginGetVersionReply)(nil),
                (*Ikev2ProfileAddDel)(nil),
                (*Ikev2ProfileAddDelReply)(nil),
+               (*Ikev2ProfileDetails)(nil),
+               (*Ikev2ProfileDisableNatt)(nil),
+               (*Ikev2ProfileDisableNattReply)(nil),
+               (*Ikev2ProfileDump)(nil),
                (*Ikev2ProfileSetAuth)(nil),
                (*Ikev2ProfileSetAuthReply)(nil),
                (*Ikev2ProfileSetID)(nil),
@@ -1431,6 +2459,8 @@ func AllMessages() []api.Message {
                (*Ikev2ProfileSetTsReply)(nil),
                (*Ikev2ProfileSetUDPEncap)(nil),
                (*Ikev2ProfileSetUDPEncapReply)(nil),
+               (*Ikev2SaDetails)(nil),
+               (*Ikev2SaDump)(nil),
                (*Ikev2SetEspTransforms)(nil),
                (*Ikev2SetEspTransformsReply)(nil),
                (*Ikev2SetIkeTransforms)(nil),
@@ -1438,10 +2468,14 @@ func AllMessages() []api.Message {
                (*Ikev2SetLocalKey)(nil),
                (*Ikev2SetLocalKeyReply)(nil),
                (*Ikev2SetResponder)(nil),
+               (*Ikev2SetResponderHostname)(nil),
+               (*Ikev2SetResponderHostnameReply)(nil),
                (*Ikev2SetResponderReply)(nil),
                (*Ikev2SetSaLifetime)(nil),
                (*Ikev2SetSaLifetimeReply)(nil),
                (*Ikev2SetTunnelInterface)(nil),
                (*Ikev2SetTunnelInterfaceReply)(nil),
+               (*Ikev2TrafficSelectorDetails)(nil),
+               (*Ikev2TrafficSelectorDump)(nil),
        }
 }
index 955c440..24b6a29 100644 (file)
@@ -4,30 +4,40 @@ package ikev2
 
 import (
        "context"
+       "fmt"
+       "io"
 
        api "git.fd.io/govpp.git/api"
+       vpe "git.fd.io/govpp.git/binapi/vpe"
 )
 
 // RPCService defines RPC service ikev2.
 type RPCService interface {
+       Ikev2ChildSaDump(ctx context.Context, in *Ikev2ChildSaDump) (RPCService_Ikev2ChildSaDumpClient, error)
        Ikev2InitiateDelChildSa(ctx context.Context, in *Ikev2InitiateDelChildSa) (*Ikev2InitiateDelChildSaReply, error)
        Ikev2InitiateDelIkeSa(ctx context.Context, in *Ikev2InitiateDelIkeSa) (*Ikev2InitiateDelIkeSaReply, error)
        Ikev2InitiateRekeyChildSa(ctx context.Context, in *Ikev2InitiateRekeyChildSa) (*Ikev2InitiateRekeyChildSaReply, error)
        Ikev2InitiateSaInit(ctx context.Context, in *Ikev2InitiateSaInit) (*Ikev2InitiateSaInitReply, error)
+       Ikev2NonceGet(ctx context.Context, in *Ikev2NonceGet) (*Ikev2NonceGetReply, error)
        Ikev2PluginGetVersion(ctx context.Context, in *Ikev2PluginGetVersion) (*Ikev2PluginGetVersionReply, error)
        Ikev2ProfileAddDel(ctx context.Context, in *Ikev2ProfileAddDel) (*Ikev2ProfileAddDelReply, error)
+       Ikev2ProfileDisableNatt(ctx context.Context, in *Ikev2ProfileDisableNatt) (*Ikev2ProfileDisableNattReply, error)
+       Ikev2ProfileDump(ctx context.Context, in *Ikev2ProfileDump) (RPCService_Ikev2ProfileDumpClient, error)
        Ikev2ProfileSetAuth(ctx context.Context, in *Ikev2ProfileSetAuth) (*Ikev2ProfileSetAuthReply, error)
        Ikev2ProfileSetID(ctx context.Context, in *Ikev2ProfileSetID) (*Ikev2ProfileSetIDReply, error)
        Ikev2ProfileSetIpsecUDPPort(ctx context.Context, in *Ikev2ProfileSetIpsecUDPPort) (*Ikev2ProfileSetIpsecUDPPortReply, error)
        Ikev2ProfileSetLiveness(ctx context.Context, in *Ikev2ProfileSetLiveness) (*Ikev2ProfileSetLivenessReply, error)
        Ikev2ProfileSetTs(ctx context.Context, in *Ikev2ProfileSetTs) (*Ikev2ProfileSetTsReply, error)
        Ikev2ProfileSetUDPEncap(ctx context.Context, in *Ikev2ProfileSetUDPEncap) (*Ikev2ProfileSetUDPEncapReply, error)
+       Ikev2SaDump(ctx context.Context, in *Ikev2SaDump) (RPCService_Ikev2SaDumpClient, error)
        Ikev2SetEspTransforms(ctx context.Context, in *Ikev2SetEspTransforms) (*Ikev2SetEspTransformsReply, error)
        Ikev2SetIkeTransforms(ctx context.Context, in *Ikev2SetIkeTransforms) (*Ikev2SetIkeTransformsReply, error)
        Ikev2SetLocalKey(ctx context.Context, in *Ikev2SetLocalKey) (*Ikev2SetLocalKeyReply, error)
        Ikev2SetResponder(ctx context.Context, in *Ikev2SetResponder) (*Ikev2SetResponderReply, error)
+       Ikev2SetResponderHostname(ctx context.Context, in *Ikev2SetResponderHostname) (*Ikev2SetResponderHostnameReply, error)
        Ikev2SetSaLifetime(ctx context.Context, in *Ikev2SetSaLifetime) (*Ikev2SetSaLifetimeReply, error)
        Ikev2SetTunnelInterface(ctx context.Context, in *Ikev2SetTunnelInterface) (*Ikev2SetTunnelInterfaceReply, error)
+       Ikev2TrafficSelectorDump(ctx context.Context, in *Ikev2TrafficSelectorDump) (RPCService_Ikev2TrafficSelectorDumpClient, error)
 }
 
 type serviceClient struct {
@@ -38,6 +48,45 @@ func NewServiceClient(conn api.Connection) RPCService {
        return &serviceClient{conn}
 }
 
+func (c *serviceClient) Ikev2ChildSaDump(ctx context.Context, in *Ikev2ChildSaDump) (RPCService_Ikev2ChildSaDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Ikev2ChildSaDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Ikev2ChildSaDumpClient interface {
+       Recv() (*Ikev2ChildSaDetails, error)
+       api.Stream
+}
+
+type serviceClient_Ikev2ChildSaDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Ikev2ChildSaDumpClient) Recv() (*Ikev2ChildSaDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Ikev2ChildSaDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
 func (c *serviceClient) Ikev2InitiateDelChildSa(ctx context.Context, in *Ikev2InitiateDelChildSa) (*Ikev2InitiateDelChildSaReply, error) {
        out := new(Ikev2InitiateDelChildSaReply)
        err := c.conn.Invoke(ctx, in, out)
@@ -74,6 +123,15 @@ func (c *serviceClient) Ikev2InitiateSaInit(ctx context.Context, in *Ikev2Initia
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) Ikev2NonceGet(ctx context.Context, in *Ikev2NonceGet) (*Ikev2NonceGetReply, error) {
+       out := new(Ikev2NonceGetReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) Ikev2PluginGetVersion(ctx context.Context, in *Ikev2PluginGetVersion) (*Ikev2PluginGetVersionReply, error) {
        out := new(Ikev2PluginGetVersionReply)
        err := c.conn.Invoke(ctx, in, out)
@@ -92,6 +150,54 @@ func (c *serviceClient) Ikev2ProfileAddDel(ctx context.Context, in *Ikev2Profile
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) Ikev2ProfileDisableNatt(ctx context.Context, in *Ikev2ProfileDisableNatt) (*Ikev2ProfileDisableNattReply, error) {
+       out := new(Ikev2ProfileDisableNattReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Ikev2ProfileDump(ctx context.Context, in *Ikev2ProfileDump) (RPCService_Ikev2ProfileDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Ikev2ProfileDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Ikev2ProfileDumpClient interface {
+       Recv() (*Ikev2ProfileDetails, error)
+       api.Stream
+}
+
+type serviceClient_Ikev2ProfileDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Ikev2ProfileDumpClient) Recv() (*Ikev2ProfileDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Ikev2ProfileDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
 func (c *serviceClient) Ikev2ProfileSetAuth(ctx context.Context, in *Ikev2ProfileSetAuth) (*Ikev2ProfileSetAuthReply, error) {
        out := new(Ikev2ProfileSetAuthReply)
        err := c.conn.Invoke(ctx, in, out)
@@ -146,6 +252,45 @@ func (c *serviceClient) Ikev2ProfileSetUDPEncap(ctx context.Context, in *Ikev2Pr
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) Ikev2SaDump(ctx context.Context, in *Ikev2SaDump) (RPCService_Ikev2SaDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Ikev2SaDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Ikev2SaDumpClient interface {
+       Recv() (*Ikev2SaDetails, error)
+       api.Stream
+}
+
+type serviceClient_Ikev2SaDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Ikev2SaDumpClient) Recv() (*Ikev2SaDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Ikev2SaDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
 func (c *serviceClient) Ikev2SetEspTransforms(ctx context.Context, in *Ikev2SetEspTransforms) (*Ikev2SetEspTransformsReply, error) {
        out := new(Ikev2SetEspTransformsReply)
        err := c.conn.Invoke(ctx, in, out)
@@ -182,6 +327,15 @@ func (c *serviceClient) Ikev2SetResponder(ctx context.Context, in *Ikev2SetRespo
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) Ikev2SetResponderHostname(ctx context.Context, in *Ikev2SetResponderHostname) (*Ikev2SetResponderHostnameReply, error) {
+       out := new(Ikev2SetResponderHostnameReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) Ikev2SetSaLifetime(ctx context.Context, in *Ikev2SetSaLifetime) (*Ikev2SetSaLifetimeReply, error) {
        out := new(Ikev2SetSaLifetimeReply)
        err := c.conn.Invoke(ctx, in, out)
@@ -199,3 +353,42 @@ func (c *serviceClient) Ikev2SetTunnelInterface(ctx context.Context, in *Ikev2Se
        }
        return out, api.RetvalToVPPApiError(out.Retval)
 }
+
+func (c *serviceClient) Ikev2TrafficSelectorDump(ctx context.Context, in *Ikev2TrafficSelectorDump) (RPCService_Ikev2TrafficSelectorDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Ikev2TrafficSelectorDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Ikev2TrafficSelectorDumpClient interface {
+       Recv() (*Ikev2TrafficSelectorDetails, error)
+       api.Stream
+}
+
+type serviceClient_Ikev2TrafficSelectorDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Ikev2TrafficSelectorDumpClient) Recv() (*Ikev2TrafficSelectorDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Ikev2TrafficSelectorDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
diff --git a/binapi/ikev2_types/ikev2_types.ba.go b/binapi/ikev2_types/ikev2_types.ba.go
new file mode 100644 (file)
index 0000000..57cdacf
--- /dev/null
@@ -0,0 +1,161 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/ikev2_types.api.json
+
+// Package ikev2_types contains generated bindings for API file ikev2_types.api.
+//
+// Contents:
+//  12 structs
+//
+package ikev2_types
+
+import (
+       api "git.fd.io/govpp.git/api"
+       interface_types "git.fd.io/govpp.git/binapi/interface_types"
+       ip_types "git.fd.io/govpp.git/binapi/ip_types"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+// Ikev2Auth defines type 'ikev2_auth'.
+type Ikev2Auth struct {
+       Method  uint8  `binapi:"u8,name=method" json:"method,omitempty"`
+       Hex     uint8  `binapi:"u8,name=hex" json:"hex,omitempty"`
+       DataLen uint32 `binapi:"u32,name=data_len" json:"-"`
+       Data    []byte `binapi:"u8[data_len],name=data" json:"data,omitempty"`
+}
+
+// Ikev2ChildSa defines type 'ikev2_child_sa'.
+type Ikev2ChildSa struct {
+       SaIndex      uint32           `binapi:"u32,name=sa_index" json:"sa_index,omitempty"`
+       ChildSaIndex uint32           `binapi:"u32,name=child_sa_index" json:"child_sa_index,omitempty"`
+       ISpi         uint32           `binapi:"u32,name=i_spi" json:"i_spi,omitempty"`
+       RSpi         uint32           `binapi:"u32,name=r_spi" json:"r_spi,omitempty"`
+       Keys         Ikev2Keys        `binapi:"ikev2_keys,name=keys" json:"keys,omitempty"`
+       Encryption   Ikev2SaTransform `binapi:"ikev2_sa_transform,name=encryption" json:"encryption,omitempty"`
+       Integrity    Ikev2SaTransform `binapi:"ikev2_sa_transform,name=integrity" json:"integrity,omitempty"`
+       Esn          Ikev2SaTransform `binapi:"ikev2_sa_transform,name=esn" json:"esn,omitempty"`
+}
+
+// Ikev2EspTransforms defines type 'ikev2_esp_transforms'.
+type Ikev2EspTransforms struct {
+       CryptoAlg     uint8  `binapi:"u8,name=crypto_alg" json:"crypto_alg,omitempty"`
+       CryptoKeySize uint32 `binapi:"u32,name=crypto_key_size" json:"crypto_key_size,omitempty"`
+       IntegAlg      uint8  `binapi:"u8,name=integ_alg" json:"integ_alg,omitempty"`
+}
+
+// Ikev2ID defines type 'ikev2_id'.
+type Ikev2ID struct {
+       Type    uint8  `binapi:"u8,name=type" json:"type,omitempty"`
+       DataLen uint8  `binapi:"u8,name=data_len" json:"data_len,omitempty"`
+       Data    string `binapi:"string[64],name=data" json:"data,omitempty"`
+}
+
+// Ikev2IkeTransforms defines type 'ikev2_ike_transforms'.
+type Ikev2IkeTransforms struct {
+       CryptoAlg     uint8  `binapi:"u8,name=crypto_alg" json:"crypto_alg,omitempty"`
+       CryptoKeySize uint32 `binapi:"u32,name=crypto_key_size" json:"crypto_key_size,omitempty"`
+       IntegAlg      uint8  `binapi:"u8,name=integ_alg" json:"integ_alg,omitempty"`
+       DhGroup       uint8  `binapi:"u8,name=dh_group" json:"dh_group,omitempty"`
+}
+
+// Ikev2Keys defines type 'ikev2_keys'.
+type Ikev2Keys struct {
+       SkD     []byte `binapi:"u8[64],name=sk_d" json:"sk_d,omitempty"`
+       SkDLen  uint8  `binapi:"u8,name=sk_d_len" json:"sk_d_len,omitempty"`
+       SkAi    []byte `binapi:"u8[64],name=sk_ai" json:"sk_ai,omitempty"`
+       SkAiLen uint8  `binapi:"u8,name=sk_ai_len" json:"sk_ai_len,omitempty"`
+       SkAr    []byte `binapi:"u8[64],name=sk_ar" json:"sk_ar,omitempty"`
+       SkArLen uint8  `binapi:"u8,name=sk_ar_len" json:"sk_ar_len,omitempty"`
+       SkEi    []byte `binapi:"u8[64],name=sk_ei" json:"sk_ei,omitempty"`
+       SkEiLen uint8  `binapi:"u8,name=sk_ei_len" json:"sk_ei_len,omitempty"`
+       SkEr    []byte `binapi:"u8[64],name=sk_er" json:"sk_er,omitempty"`
+       SkErLen uint8  `binapi:"u8,name=sk_er_len" json:"sk_er_len,omitempty"`
+       SkPi    []byte `binapi:"u8[64],name=sk_pi" json:"sk_pi,omitempty"`
+       SkPiLen uint8  `binapi:"u8,name=sk_pi_len" json:"sk_pi_len,omitempty"`
+       SkPr    []byte `binapi:"u8[64],name=sk_pr" json:"sk_pr,omitempty"`
+       SkPrLen uint8  `binapi:"u8,name=sk_pr_len" json:"sk_pr_len,omitempty"`
+}
+
+// Ikev2Profile defines type 'ikev2_profile'.
+type Ikev2Profile struct {
+       Name             string             `binapi:"string[64],name=name" json:"name,omitempty"`
+       LocID            Ikev2ID            `binapi:"ikev2_id,name=loc_id" json:"loc_id,omitempty"`
+       RemID            Ikev2ID            `binapi:"ikev2_id,name=rem_id" json:"rem_id,omitempty"`
+       LocTs            Ikev2Ts            `binapi:"ikev2_ts,name=loc_ts" json:"loc_ts,omitempty"`
+       RemTs            Ikev2Ts            `binapi:"ikev2_ts,name=rem_ts" json:"rem_ts,omitempty"`
+       Responder        Ikev2Responder     `binapi:"ikev2_responder,name=responder" json:"responder,omitempty"`
+       IkeTs            Ikev2IkeTransforms `binapi:"ikev2_ike_transforms,name=ike_ts" json:"ike_ts,omitempty"`
+       EspTs            Ikev2EspTransforms `binapi:"ikev2_esp_transforms,name=esp_ts" json:"esp_ts,omitempty"`
+       Lifetime         uint64             `binapi:"u64,name=lifetime" json:"lifetime,omitempty"`
+       LifetimeMaxdata  uint64             `binapi:"u64,name=lifetime_maxdata" json:"lifetime_maxdata,omitempty"`
+       LifetimeJitter   uint32             `binapi:"u32,name=lifetime_jitter" json:"lifetime_jitter,omitempty"`
+       Handover         uint32             `binapi:"u32,name=handover" json:"handover,omitempty"`
+       IpsecOverUDPPort uint16             `binapi:"u16,name=ipsec_over_udp_port" json:"ipsec_over_udp_port,omitempty"`
+       TunItf           uint32             `binapi:"u32,name=tun_itf" json:"tun_itf,omitempty"`
+       UDPEncap         bool               `binapi:"bool,name=udp_encap" json:"udp_encap,omitempty"`
+       NattDisabled     bool               `binapi:"bool,name=natt_disabled" json:"natt_disabled,omitempty"`
+       Auth             Ikev2Auth          `binapi:"ikev2_auth,name=auth" json:"auth,omitempty"`
+}
+
+// Ikev2Responder defines type 'ikev2_responder'.
+type Ikev2Responder struct {
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       Addr      ip_types.Address               `binapi:"address,name=addr" json:"addr,omitempty"`
+}
+
+// Ikev2Sa defines type 'ikev2_sa'.
+type Ikev2Sa struct {
+       SaIndex      uint32           `binapi:"u32,name=sa_index" json:"sa_index,omitempty"`
+       ProfileIndex uint32           `binapi:"u32,name=profile_index" json:"profile_index,omitempty"`
+       Ispi         uint64           `binapi:"u64,name=ispi" json:"ispi,omitempty"`
+       Rspi         uint64           `binapi:"u64,name=rspi" json:"rspi,omitempty"`
+       Iaddr        ip_types.Address `binapi:"address,name=iaddr" json:"iaddr,omitempty"`
+       Raddr        ip_types.Address `binapi:"address,name=raddr" json:"raddr,omitempty"`
+       Keys         Ikev2Keys        `binapi:"ikev2_keys,name=keys" json:"keys,omitempty"`
+       IID          Ikev2ID          `binapi:"ikev2_id,name=i_id" json:"i_id,omitempty"`
+       RID          Ikev2ID          `binapi:"ikev2_id,name=r_id" json:"r_id,omitempty"`
+       Encryption   Ikev2SaTransform `binapi:"ikev2_sa_transform,name=encryption" json:"encryption,omitempty"`
+       Integrity    Ikev2SaTransform `binapi:"ikev2_sa_transform,name=integrity" json:"integrity,omitempty"`
+       Prf          Ikev2SaTransform `binapi:"ikev2_sa_transform,name=prf" json:"prf,omitempty"`
+       Dh           Ikev2SaTransform `binapi:"ikev2_sa_transform,name=dh" json:"dh,omitempty"`
+       Stats        Ikev2SaStats     `binapi:"ikev2_sa_stats,name=stats" json:"stats,omitempty"`
+}
+
+// Ikev2SaStats defines type 'ikev2_sa_stats'.
+type Ikev2SaStats struct {
+       NKeepalives       uint16 `binapi:"u16,name=n_keepalives" json:"n_keepalives,omitempty"`
+       NRekeyReq         uint16 `binapi:"u16,name=n_rekey_req" json:"n_rekey_req,omitempty"`
+       NSaInitReq        uint16 `binapi:"u16,name=n_sa_init_req" json:"n_sa_init_req,omitempty"`
+       NSaAuthReq        uint16 `binapi:"u16,name=n_sa_auth_req" json:"n_sa_auth_req,omitempty"`
+       NRetransmit       uint16 `binapi:"u16,name=n_retransmit" json:"n_retransmit,omitempty"`
+       NInitSaRetransmit uint16 `binapi:"u16,name=n_init_sa_retransmit" json:"n_init_sa_retransmit,omitempty"`
+}
+
+// Ikev2SaTransform defines type 'ikev2_sa_transform'.
+type Ikev2SaTransform struct {
+       TransformType uint8  `binapi:"u8,name=transform_type" json:"transform_type,omitempty"`
+       TransformID   uint16 `binapi:"u16,name=transform_id" json:"transform_id,omitempty"`
+       KeyLen        uint16 `binapi:"u16,name=key_len" json:"key_len,omitempty"`
+       KeyTrunc      uint16 `binapi:"u16,name=key_trunc" json:"key_trunc,omitempty"`
+       BlockSize     uint16 `binapi:"u16,name=block_size" json:"block_size,omitempty"`
+       DhGroup       uint8  `binapi:"u8,name=dh_group" json:"dh_group,omitempty"`
+}
+
+// Ikev2Ts defines type 'ikev2_ts'.
+type Ikev2Ts struct {
+       SaIndex      uint32           `binapi:"u32,name=sa_index" json:"sa_index,omitempty"`
+       ChildSaIndex uint32           `binapi:"u32,name=child_sa_index" json:"child_sa_index,omitempty"`
+       IsLocal      bool             `binapi:"bool,name=is_local" json:"is_local,omitempty"`
+       ProtocolID   uint8            `binapi:"u8,name=protocol_id" json:"protocol_id,omitempty"`
+       StartPort    uint16           `binapi:"u16,name=start_port" json:"start_port,omitempty"`
+       EndPort      uint16           `binapi:"u16,name=end_port" json:"end_port,omitempty"`
+       StartAddr    ip_types.Address `binapi:"address,name=start_addr" json:"start_addr,omitempty"`
+       EndAddr      ip_types.Address `binapi:"address,name=end_addr" json:"end_addr,omitempty"`
+}
index cef8994..54d8062 100644 (file)
@@ -1,13 +1,13 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/interface.api.json
 
 // Package interfaces contains generated bindings for API file interface.api.
 //
 // Contents:
-//  57 messages
+//  59 messages
 //
 package interfaces
 
@@ -28,7 +28,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "interface"
        APIVersion = "3.2.2"
-       VersionCrc = 0x58d4cf5a
+       VersionCrc = 0x29a0076c
 )
 
 // CollectDetailedInterfaceStats defines message 'collect_detailed_interface_stats'.
@@ -264,7 +264,7 @@ type CreateSubif struct {
 
 func (m *CreateSubif) Reset()               { *m = CreateSubif{} }
 func (*CreateSubif) GetMessageName() string { return "create_subif" }
-func (*CreateSubif) GetCrcString() string   { return "cb371063" }
+func (*CreateSubif) GetCrcString() string   { return "790ca755" }
 func (*CreateSubif) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -695,7 +695,7 @@ type SwInterfaceAddDelAddress struct {
 
 func (m *SwInterfaceAddDelAddress) Reset()               { *m = SwInterfaceAddDelAddress{} }
 func (*SwInterfaceAddDelAddress) GetMessageName() string { return "sw_interface_add_del_address" }
-func (*SwInterfaceAddDelAddress) GetCrcString() string   { return "5803d5c4" }
+func (*SwInterfaceAddDelAddress) GetCrcString() string   { return "5463d73b" }
 func (*SwInterfaceAddDelAddress) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1075,7 +1075,7 @@ type SwInterfaceDetails struct {
 
 func (m *SwInterfaceDetails) Reset()               { *m = SwInterfaceDetails{} }
 func (*SwInterfaceDetails) GetMessageName() string { return "sw_interface_details" }
-func (*SwInterfaceDetails) GetCrcString() string   { return "17b69fa2" }
+func (*SwInterfaceDetails) GetCrcString() string   { return "6c221fc7" }
 func (*SwInterfaceDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1236,7 +1236,7 @@ type SwInterfaceEvent struct {
 
 func (m *SwInterfaceEvent) Reset()               { *m = SwInterfaceEvent{} }
 func (*SwInterfaceEvent) GetMessageName() string { return "sw_interface_event" }
-func (*SwInterfaceEvent) GetCrcString() string   { return "f709f78d" }
+func (*SwInterfaceEvent) GetCrcString() string   { return "2d3d95a7" }
 func (*SwInterfaceEvent) GetMessageType() api.MessageType {
        return api.EventMessage
 }
@@ -1429,7 +1429,7 @@ func (m *SwInterfaceRxPlacementDetails) Reset() { *m = SwInterfaceRxPlacementDet
 func (*SwInterfaceRxPlacementDetails) GetMessageName() string {
        return "sw_interface_rx_placement_details"
 }
-func (*SwInterfaceRxPlacementDetails) GetCrcString() string { return "f6d7d024" }
+func (*SwInterfaceRxPlacementDetails) GetCrcString() string { return "9e44a7ce" }
 func (*SwInterfaceRxPlacementDetails) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1505,7 +1505,7 @@ type SwInterfaceSetFlags struct {
 
 func (m *SwInterfaceSetFlags) Reset()               { *m = SwInterfaceSetFlags{} }
 func (*SwInterfaceSetFlags) GetMessageName() string { return "sw_interface_set_flags" }
-func (*SwInterfaceSetFlags) GetCrcString() string   { return "6a2b491a" }
+func (*SwInterfaceSetFlags) GetCrcString() string   { return "f5aec1b8" }
 func (*SwInterfaceSetFlags) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1651,7 +1651,7 @@ type SwInterfaceSetMacAddress struct {
 
 func (m *SwInterfaceSetMacAddress) Reset()               { *m = SwInterfaceSetMacAddress{} }
 func (*SwInterfaceSetMacAddress) GetMessageName() string { return "sw_interface_set_mac_address" }
-func (*SwInterfaceSetMacAddress) GetCrcString() string   { return "6aca746a" }
+func (*SwInterfaceSetMacAddress) GetCrcString() string   { return "c536e7eb" }
 func (*SwInterfaceSetMacAddress) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1794,6 +1794,76 @@ func (m *SwInterfaceSetMtuReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// SwInterfaceSetPromisc defines message 'sw_interface_set_promisc'.
+type SwInterfaceSetPromisc struct {
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       PromiscOn bool                           `binapi:"bool,name=promisc_on" json:"promisc_on,omitempty"`
+}
+
+func (m *SwInterfaceSetPromisc) Reset()               { *m = SwInterfaceSetPromisc{} }
+func (*SwInterfaceSetPromisc) GetMessageName() string { return "sw_interface_set_promisc" }
+func (*SwInterfaceSetPromisc) GetCrcString() string   { return "d40860d4" }
+func (*SwInterfaceSetPromisc) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *SwInterfaceSetPromisc) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       size += 1 // m.PromiscOn
+       return size
+}
+func (m *SwInterfaceSetPromisc) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeBool(m.PromiscOn)
+       return buf.Bytes(), nil
+}
+func (m *SwInterfaceSetPromisc) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.PromiscOn = buf.DecodeBool()
+       return nil
+}
+
+// SwInterfaceSetPromiscReply defines message 'sw_interface_set_promisc_reply'.
+type SwInterfaceSetPromiscReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *SwInterfaceSetPromiscReply) Reset()               { *m = SwInterfaceSetPromiscReply{} }
+func (*SwInterfaceSetPromiscReply) GetMessageName() string { return "sw_interface_set_promisc_reply" }
+func (*SwInterfaceSetPromiscReply) GetCrcString() string   { return "e8d4e804" }
+func (*SwInterfaceSetPromiscReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *SwInterfaceSetPromiscReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *SwInterfaceSetPromiscReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *SwInterfaceSetPromiscReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
 // SwInterfaceSetRxMode defines message 'sw_interface_set_rx_mode'.
 type SwInterfaceSetRxMode struct {
        SwIfIndex    interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
@@ -1804,7 +1874,7 @@ type SwInterfaceSetRxMode struct {
 
 func (m *SwInterfaceSetRxMode) Reset()               { *m = SwInterfaceSetRxMode{} }
 func (*SwInterfaceSetRxMode) GetMessageName() string { return "sw_interface_set_rx_mode" }
-func (*SwInterfaceSetRxMode) GetCrcString() string   { return "780f5cee" }
+func (*SwInterfaceSetRxMode) GetCrcString() string   { return "b04d1cfe" }
 func (*SwInterfaceSetRxMode) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -2035,7 +2105,7 @@ type SwInterfaceSetUnnumbered struct {
 
 func (m *SwInterfaceSetUnnumbered) Reset()               { *m = SwInterfaceSetUnnumbered{} }
 func (*SwInterfaceSetUnnumbered) GetMessageName() string { return "sw_interface_set_unnumbered" }
-func (*SwInterfaceSetUnnumbered) GetCrcString() string   { return "938ef33b" }
+func (*SwInterfaceSetUnnumbered) GetCrcString() string   { return "154a6439" }
 func (*SwInterfaceSetUnnumbered) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -2254,7 +2324,7 @@ func file_interfaces_binapi_init() {
        api.RegisterMessage((*CreateLoopbackInstance)(nil), "create_loopback_instance_d36a3ee2")
        api.RegisterMessage((*CreateLoopbackInstanceReply)(nil), "create_loopback_instance_reply_5383d31f")
        api.RegisterMessage((*CreateLoopbackReply)(nil), "create_loopback_reply_5383d31f")
-       api.RegisterMessage((*CreateSubif)(nil), "create_subif_cb371063")
+       api.RegisterMessage((*CreateSubif)(nil), "create_subif_790ca755")
        api.RegisterMessage((*CreateSubifReply)(nil), "create_subif_reply_5383d31f")
        api.RegisterMessage((*CreateVlanSubif)(nil), "create_vlan_subif_af34ac8b")
        api.RegisterMessage((*CreateVlanSubifReply)(nil), "create_vlan_subif_reply_5383d31f")
@@ -2266,7 +2336,7 @@ func file_interfaces_binapi_init() {
        api.RegisterMessage((*HwInterfaceSetMtuReply)(nil), "hw_interface_set_mtu_reply_e8d4e804")
        api.RegisterMessage((*InterfaceNameRenumber)(nil), "interface_name_renumber_2b8858b8")
        api.RegisterMessage((*InterfaceNameRenumberReply)(nil), "interface_name_renumber_reply_e8d4e804")
-       api.RegisterMessage((*SwInterfaceAddDelAddress)(nil), "sw_interface_add_del_address_5803d5c4")
+       api.RegisterMessage((*SwInterfaceAddDelAddress)(nil), "sw_interface_add_del_address_5463d73b")
        api.RegisterMessage((*SwInterfaceAddDelAddressReply)(nil), "sw_interface_add_del_address_reply_e8d4e804")
        api.RegisterMessage((*SwInterfaceAddDelMacAddress)(nil), "sw_interface_add_del_mac_address_638bb9f4")
        api.RegisterMessage((*SwInterfaceAddDelMacAddressReply)(nil), "sw_interface_add_del_mac_address_reply_e8d4e804")
@@ -2276,30 +2346,32 @@ func file_interfaces_binapi_init() {
        api.RegisterMessage((*SwInterfaceAddressReplaceEndReply)(nil), "sw_interface_address_replace_end_reply_e8d4e804")
        api.RegisterMessage((*SwInterfaceClearStats)(nil), "sw_interface_clear_stats_f9e6675e")
        api.RegisterMessage((*SwInterfaceClearStatsReply)(nil), "sw_interface_clear_stats_reply_e8d4e804")
-       api.RegisterMessage((*SwInterfaceDetails)(nil), "sw_interface_details_17b69fa2")
+       api.RegisterMessage((*SwInterfaceDetails)(nil), "sw_interface_details_6c221fc7")
        api.RegisterMessage((*SwInterfaceDump)(nil), "sw_interface_dump_aa610c27")
-       api.RegisterMessage((*SwInterfaceEvent)(nil), "sw_interface_event_f709f78d")
+       api.RegisterMessage((*SwInterfaceEvent)(nil), "sw_interface_event_2d3d95a7")
        api.RegisterMessage((*SwInterfaceGetMacAddress)(nil), "sw_interface_get_mac_address_f9e6675e")
        api.RegisterMessage((*SwInterfaceGetMacAddressReply)(nil), "sw_interface_get_mac_address_reply_40ef2c08")
        api.RegisterMessage((*SwInterfaceGetTable)(nil), "sw_interface_get_table_2d033de4")
        api.RegisterMessage((*SwInterfaceGetTableReply)(nil), "sw_interface_get_table_reply_a6eb0109")
-       api.RegisterMessage((*SwInterfaceRxPlacementDetails)(nil), "sw_interface_rx_placement_details_f6d7d024")
+       api.RegisterMessage((*SwInterfaceRxPlacementDetails)(nil), "sw_interface_rx_placement_details_9e44a7ce")
        api.RegisterMessage((*SwInterfaceRxPlacementDump)(nil), "sw_interface_rx_placement_dump_f9e6675e")
-       api.RegisterMessage((*SwInterfaceSetFlags)(nil), "sw_interface_set_flags_6a2b491a")
+       api.RegisterMessage((*SwInterfaceSetFlags)(nil), "sw_interface_set_flags_f5aec1b8")
        api.RegisterMessage((*SwInterfaceSetFlagsReply)(nil), "sw_interface_set_flags_reply_e8d4e804")
        api.RegisterMessage((*SwInterfaceSetIPDirectedBroadcast)(nil), "sw_interface_set_ip_directed_broadcast_ae6cfcfb")
        api.RegisterMessage((*SwInterfaceSetIPDirectedBroadcastReply)(nil), "sw_interface_set_ip_directed_broadcast_reply_e8d4e804")
-       api.RegisterMessage((*SwInterfaceSetMacAddress)(nil), "sw_interface_set_mac_address_6aca746a")
+       api.RegisterMessage((*SwInterfaceSetMacAddress)(nil), "sw_interface_set_mac_address_c536e7eb")
        api.RegisterMessage((*SwInterfaceSetMacAddressReply)(nil), "sw_interface_set_mac_address_reply_e8d4e804")
        api.RegisterMessage((*SwInterfaceSetMtu)(nil), "sw_interface_set_mtu_5cbe85e5")
        api.RegisterMessage((*SwInterfaceSetMtuReply)(nil), "sw_interface_set_mtu_reply_e8d4e804")
-       api.RegisterMessage((*SwInterfaceSetRxMode)(nil), "sw_interface_set_rx_mode_780f5cee")
+       api.RegisterMessage((*SwInterfaceSetPromisc)(nil), "sw_interface_set_promisc_d40860d4")
+       api.RegisterMessage((*SwInterfaceSetPromiscReply)(nil), "sw_interface_set_promisc_reply_e8d4e804")
+       api.RegisterMessage((*SwInterfaceSetRxMode)(nil), "sw_interface_set_rx_mode_b04d1cfe")
        api.RegisterMessage((*SwInterfaceSetRxModeReply)(nil), "sw_interface_set_rx_mode_reply_e8d4e804")
        api.RegisterMessage((*SwInterfaceSetRxPlacement)(nil), "sw_interface_set_rx_placement_db65f3c9")
        api.RegisterMessage((*SwInterfaceSetRxPlacementReply)(nil), "sw_interface_set_rx_placement_reply_e8d4e804")
        api.RegisterMessage((*SwInterfaceSetTable)(nil), "sw_interface_set_table_df42a577")
        api.RegisterMessage((*SwInterfaceSetTableReply)(nil), "sw_interface_set_table_reply_e8d4e804")
-       api.RegisterMessage((*SwInterfaceSetUnnumbered)(nil), "sw_interface_set_unnumbered_938ef33b")
+       api.RegisterMessage((*SwInterfaceSetUnnumbered)(nil), "sw_interface_set_unnumbered_154a6439")
        api.RegisterMessage((*SwInterfaceSetUnnumberedReply)(nil), "sw_interface_set_unnumbered_reply_e8d4e804")
        api.RegisterMessage((*SwInterfaceTagAddDel)(nil), "sw_interface_tag_add_del_426f8bc1")
        api.RegisterMessage((*SwInterfaceTagAddDelReply)(nil), "sw_interface_tag_add_del_reply_e8d4e804")
@@ -2355,6 +2427,8 @@ func AllMessages() []api.Message {
                (*SwInterfaceSetMacAddressReply)(nil),
                (*SwInterfaceSetMtu)(nil),
                (*SwInterfaceSetMtuReply)(nil),
+               (*SwInterfaceSetPromisc)(nil),
+               (*SwInterfaceSetPromiscReply)(nil),
                (*SwInterfaceSetRxMode)(nil),
                (*SwInterfaceSetRxModeReply)(nil),
                (*SwInterfaceSetRxPlacement)(nil),
index f797346..b4cecf9 100644 (file)
@@ -35,6 +35,7 @@ type RPCService interface {
        SwInterfaceSetIPDirectedBroadcast(ctx context.Context, in *SwInterfaceSetIPDirectedBroadcast) (*SwInterfaceSetIPDirectedBroadcastReply, error)
        SwInterfaceSetMacAddress(ctx context.Context, in *SwInterfaceSetMacAddress) (*SwInterfaceSetMacAddressReply, error)
        SwInterfaceSetMtu(ctx context.Context, in *SwInterfaceSetMtu) (*SwInterfaceSetMtuReply, error)
+       SwInterfaceSetPromisc(ctx context.Context, in *SwInterfaceSetPromisc) (*SwInterfaceSetPromiscReply, error)
        SwInterfaceSetRxMode(ctx context.Context, in *SwInterfaceSetRxMode) (*SwInterfaceSetRxModeReply, error)
        SwInterfaceSetRxPlacement(ctx context.Context, in *SwInterfaceSetRxPlacement) (*SwInterfaceSetRxPlacementReply, error)
        SwInterfaceSetTable(ctx context.Context, in *SwInterfaceSetTable) (*SwInterfaceSetTableReply, error)
@@ -309,6 +310,15 @@ func (c *serviceClient) SwInterfaceSetMtu(ctx context.Context, in *SwInterfaceSe
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) SwInterfaceSetPromisc(ctx context.Context, in *SwInterfaceSetPromisc) (*SwInterfaceSetPromiscReply, error) {
+       out := new(SwInterfaceSetPromiscReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) SwInterfaceSetRxMode(ctx context.Context, in *SwInterfaceSetRxMode) (*SwInterfaceSetRxModeReply, error) {
        out := new(SwInterfaceSetRxModeReply)
        err := c.conn.Invoke(ctx, in, out)
index d2a848a..b90fbd9 100644 (file)
@@ -1,14 +1,14 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/interface_types.api.json
 
 // Package interface_types contains generated bindings for API file interface_types.api.
 //
 // Contents:
 //   1 alias
-//   6 enums
+//   7 enums
 //
 package interface_types
 
@@ -24,6 +24,33 @@ import (
 // GoVPP api package needs to be updated.
 const _ = api.GoVppAPIPackageIsVersion2
 
+// Direction defines enum 'direction'.
+type Direction uint8
+
+const (
+       RX Direction = 0
+       TX Direction = 1
+)
+
+var (
+       Direction_name = map[uint8]string{
+               0: "RX",
+               1: "TX",
+       }
+       Direction_value = map[string]uint8{
+               "RX": 0,
+               "TX": 1,
+       }
+)
+
+func (x Direction) String() string {
+       s, ok := Direction_name[uint8(x)]
+       if ok {
+               return s
+       }
+       return "Direction(" + strconv.Itoa(int(x)) + ")"
+}
+
 // IfStatusFlags defines enum 'if_status_flags'.
 type IfStatusFlags uint32
 
index 1bae621..24824ce 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/ioam_cache.api.json
 
 // Package ioam_cache contains generated bindings for API file ioam_cache.api.
index b272777..58296bd 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/ioam_export.api.json
 
 // Package ioam_export contains generated bindings for API file ioam_export.api.
@@ -26,7 +26,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "ioam_export"
        APIVersion = "1.0.0"
-       VersionCrc = 0x56bd3b73
+       VersionCrc = 0x26bebf64
 )
 
 // IoamExportIP6EnableDisable defines message 'ioam_export_ip6_enable_disable'.
@@ -38,7 +38,7 @@ type IoamExportIP6EnableDisable struct {
 
 func (m *IoamExportIP6EnableDisable) Reset()               { *m = IoamExportIP6EnableDisable{} }
 func (*IoamExportIP6EnableDisable) GetMessageName() string { return "ioam_export_ip6_enable_disable" }
-func (*IoamExportIP6EnableDisable) GetCrcString() string   { return "e4d4ebfa" }
+func (*IoamExportIP6EnableDisable) GetCrcString() string   { return "d4c76d3a" }
 func (*IoamExportIP6EnableDisable) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -107,7 +107,7 @@ func (m *IoamExportIP6EnableDisableReply) Unmarshal(b []byte) error {
 
 func init() { file_ioam_export_binapi_init() }
 func file_ioam_export_binapi_init() {
-       api.RegisterMessage((*IoamExportIP6EnableDisable)(nil), "ioam_export_ip6_enable_disable_e4d4ebfa")
+       api.RegisterMessage((*IoamExportIP6EnableDisable)(nil), "ioam_export_ip6_enable_disable_d4c76d3a")
        api.RegisterMessage((*IoamExportIP6EnableDisableReply)(nil), "ioam_export_ip6_enable_disable_reply_e8d4e804")
 }
 
index 226071f..44f8a1c 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/ioam_vxlan_gpe.api.json
 
 // Package ioam_vxlan_gpe contains generated bindings for API file ioam_vxlan_gpe.api.
@@ -26,7 +26,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "ioam_vxlan_gpe"
        APIVersion = "1.0.0"
-       VersionCrc = 0xe60c2de2
+       VersionCrc = 0xb49eb0b9
 )
 
 // VxlanGpeIoamDisable defines message 'vxlan_gpe_ioam_disable'.
@@ -181,7 +181,7 @@ type VxlanGpeIoamTransitDisable struct {
 
 func (m *VxlanGpeIoamTransitDisable) Reset()               { *m = VxlanGpeIoamTransitDisable{} }
 func (*VxlanGpeIoamTransitDisable) GetMessageName() string { return "vxlan_gpe_ioam_transit_disable" }
-func (*VxlanGpeIoamTransitDisable) GetCrcString() string   { return "553f5b7b" }
+func (*VxlanGpeIoamTransitDisable) GetCrcString() string   { return "3d3ec657" }
 func (*VxlanGpeIoamTransitDisable) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -256,7 +256,7 @@ type VxlanGpeIoamTransitEnable struct {
 
 func (m *VxlanGpeIoamTransitEnable) Reset()               { *m = VxlanGpeIoamTransitEnable{} }
 func (*VxlanGpeIoamTransitEnable) GetMessageName() string { return "vxlan_gpe_ioam_transit_enable" }
-func (*VxlanGpeIoamTransitEnable) GetCrcString() string   { return "553f5b7b" }
+func (*VxlanGpeIoamTransitEnable) GetCrcString() string   { return "3d3ec657" }
 func (*VxlanGpeIoamTransitEnable) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -332,7 +332,7 @@ type VxlanGpeIoamVniDisable struct {
 
 func (m *VxlanGpeIoamVniDisable) Reset()               { *m = VxlanGpeIoamVniDisable{} }
 func (*VxlanGpeIoamVniDisable) GetMessageName() string { return "vxlan_gpe_ioam_vni_disable" }
-func (*VxlanGpeIoamVniDisable) GetCrcString() string   { return "997161fb" }
+func (*VxlanGpeIoamVniDisable) GetCrcString() string   { return "0fbb5fb1" }
 func (*VxlanGpeIoamVniDisable) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -414,7 +414,7 @@ type VxlanGpeIoamVniEnable struct {
 
 func (m *VxlanGpeIoamVniEnable) Reset()               { *m = VxlanGpeIoamVniEnable{} }
 func (*VxlanGpeIoamVniEnable) GetMessageName() string { return "vxlan_gpe_ioam_vni_enable" }
-func (*VxlanGpeIoamVniEnable) GetCrcString() string   { return "997161fb" }
+func (*VxlanGpeIoamVniEnable) GetCrcString() string   { return "0fbb5fb1" }
 func (*VxlanGpeIoamVniEnable) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -491,13 +491,13 @@ func file_ioam_vxlan_gpe_binapi_init() {
        api.RegisterMessage((*VxlanGpeIoamDisableReply)(nil), "vxlan_gpe_ioam_disable_reply_e8d4e804")
        api.RegisterMessage((*VxlanGpeIoamEnable)(nil), "vxlan_gpe_ioam_enable_2481bef7")
        api.RegisterMessage((*VxlanGpeIoamEnableReply)(nil), "vxlan_gpe_ioam_enable_reply_e8d4e804")
-       api.RegisterMessage((*VxlanGpeIoamTransitDisable)(nil), "vxlan_gpe_ioam_transit_disable_553f5b7b")
+       api.RegisterMessage((*VxlanGpeIoamTransitDisable)(nil), "vxlan_gpe_ioam_transit_disable_3d3ec657")
        api.RegisterMessage((*VxlanGpeIoamTransitDisableReply)(nil), "vxlan_gpe_ioam_transit_disable_reply_e8d4e804")
-       api.RegisterMessage((*VxlanGpeIoamTransitEnable)(nil), "vxlan_gpe_ioam_transit_enable_553f5b7b")
+       api.RegisterMessage((*VxlanGpeIoamTransitEnable)(nil), "vxlan_gpe_ioam_transit_enable_3d3ec657")
        api.RegisterMessage((*VxlanGpeIoamTransitEnableReply)(nil), "vxlan_gpe_ioam_transit_enable_reply_e8d4e804")
-       api.RegisterMessage((*VxlanGpeIoamVniDisable)(nil), "vxlan_gpe_ioam_vni_disable_997161fb")
+       api.RegisterMessage((*VxlanGpeIoamVniDisable)(nil), "vxlan_gpe_ioam_vni_disable_0fbb5fb1")
        api.RegisterMessage((*VxlanGpeIoamVniDisableReply)(nil), "vxlan_gpe_ioam_vni_disable_reply_e8d4e804")
-       api.RegisterMessage((*VxlanGpeIoamVniEnable)(nil), "vxlan_gpe_ioam_vni_enable_997161fb")
+       api.RegisterMessage((*VxlanGpeIoamVniEnable)(nil), "vxlan_gpe_ioam_vni_enable_0fbb5fb1")
        api.RegisterMessage((*VxlanGpeIoamVniEnableReply)(nil), "vxlan_gpe_ioam_vni_enable_reply_e8d4e804")
 }
 
index ce8278c..fa9d1a0 100644 (file)
@@ -1,15 +1,15 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/ip.api.json
 
 // Package ip contains generated bindings for API file ip.api.
 //
 // Contents:
-//   1 enum
-//   4 structs
-//  60 messages
+//   2 enums
+//   6 structs
+//  81 messages
 //
 package ip
 
@@ -33,8 +33,8 @@ const _ = api.GoVppAPIPackageIsVersion2
 
 const (
        APIFile    = "ip"
-       APIVersion = "3.0.1"
-       VersionCrc = 0x765d74b1
+       APIVersion = "3.1.0"
+       VersionCrc = 0x972432b4
 )
 
 // IPReassType defines enum 'ip_reass_type'.
@@ -64,14 +64,87 @@ func (x IPReassType) String() string {
        return "IPReassType(" + strconv.Itoa(int(x)) + ")"
 }
 
+// IPFlowHashConfig defines enum 'ip_flow_hash_config'.
+type IPFlowHashConfig uint32
+
+const (
+       IP_API_FLOW_HASH_SRC_IP     IPFlowHashConfig = 1
+       IP_API_FLOW_HASH_DST_IP     IPFlowHashConfig = 2
+       IP_API_FLOW_HASH_SRC_PORT   IPFlowHashConfig = 4
+       IP_API_FLOW_HASH_DST_PORT   IPFlowHashConfig = 8
+       IP_API_FLOW_HASH_PROTO      IPFlowHashConfig = 16
+       IP_API_FLOW_HASH_REVERSE    IPFlowHashConfig = 32
+       IP_API_FLOW_HASH_SYMETRIC   IPFlowHashConfig = 64
+       IP_API_FLOW_HASH_FLOW_LABEL IPFlowHashConfig = 128
+)
+
+var (
+       IPFlowHashConfig_name = map[uint32]string{
+               1:   "IP_API_FLOW_HASH_SRC_IP",
+               2:   "IP_API_FLOW_HASH_DST_IP",
+               4:   "IP_API_FLOW_HASH_SRC_PORT",
+               8:   "IP_API_FLOW_HASH_DST_PORT",
+               16:  "IP_API_FLOW_HASH_PROTO",
+               32:  "IP_API_FLOW_HASH_REVERSE",
+               64:  "IP_API_FLOW_HASH_SYMETRIC",
+               128: "IP_API_FLOW_HASH_FLOW_LABEL",
+       }
+       IPFlowHashConfig_value = map[string]uint32{
+               "IP_API_FLOW_HASH_SRC_IP":     1,
+               "IP_API_FLOW_HASH_DST_IP":     2,
+               "IP_API_FLOW_HASH_SRC_PORT":   4,
+               "IP_API_FLOW_HASH_DST_PORT":   8,
+               "IP_API_FLOW_HASH_PROTO":      16,
+               "IP_API_FLOW_HASH_REVERSE":    32,
+               "IP_API_FLOW_HASH_SYMETRIC":   64,
+               "IP_API_FLOW_HASH_FLOW_LABEL": 128,
+       }
+)
+
+func (x IPFlowHashConfig) String() string {
+       s, ok := IPFlowHashConfig_name[uint32(x)]
+       if ok {
+               return s
+       }
+       str := func(n uint32) string {
+               s, ok := IPFlowHashConfig_name[uint32(n)]
+               if ok {
+                       return s
+               }
+               return "IPFlowHashConfig(" + strconv.Itoa(int(n)) + ")"
+       }
+       for i := uint32(0); i <= 32; i++ {
+               val := uint32(x)
+               if val&(1<<i) != 0 {
+                       if s != "" {
+                               s += "|"
+                       }
+                       s += str(1 << i)
+               }
+       }
+       if s == "" {
+               return str(uint32(x))
+       }
+       return s
+}
+
 // IPMroute defines type 'ip_mroute'.
 type IPMroute struct {
-       TableID    uint32                `binapi:"u32,name=table_id" json:"table_id,omitempty"`
-       EntryFlags uint32                `binapi:"u32,name=entry_flags" json:"entry_flags,omitempty"`
-       RpfID      uint32                `binapi:"u32,name=rpf_id" json:"rpf_id,omitempty"`
-       Prefix     ip_types.Mprefix      `binapi:"mprefix,name=prefix" json:"prefix,omitempty"`
-       NPaths     uint8                 `binapi:"u8,name=n_paths" json:"-"`
-       Paths      []mfib_types.MfibPath `binapi:"mfib_path[n_paths],name=paths" json:"paths,omitempty"`
+       TableID    uint32                    `binapi:"u32,name=table_id" json:"table_id,omitempty"`
+       EntryFlags mfib_types.MfibEntryFlags `binapi:"mfib_entry_flags,name=entry_flags" json:"entry_flags,omitempty"`
+       RpfID      uint32                    `binapi:"u32,name=rpf_id" json:"rpf_id,omitempty"`
+       Prefix     ip_types.Mprefix          `binapi:"mprefix,name=prefix" json:"prefix,omitempty"`
+       NPaths     uint8                     `binapi:"u8,name=n_paths" json:"-"`
+       Paths      []mfib_types.MfibPath     `binapi:"mfib_path[n_paths],name=paths" json:"paths,omitempty"`
+}
+
+// IPPathMtu defines type 'ip_path_mtu'.
+type IPPathMtu struct {
+       ClientIndex uint32           `binapi:"u32,name=client_index" json:"client_index,omitempty"`
+       Context     uint32           `binapi:"u32,name=context" json:"context,omitempty"`
+       TableID     uint32           `binapi:"u32,name=table_id" json:"table_id,omitempty"`
+       Nh          ip_types.Address `binapi:"address,name=nh" json:"nh,omitempty"`
+       PathMtu     uint16           `binapi:"u16,name=path_mtu" json:"path_mtu,omitempty"`
 }
 
 // IPRoute defines type 'ip_route'.
@@ -83,6 +156,16 @@ type IPRoute struct {
        Paths      []fib_types.FibPath `binapi:"fib_path[n_paths],name=paths" json:"paths,omitempty"`
 }
 
+// IPRouteV2 defines type 'ip_route_v2'.
+type IPRouteV2 struct {
+       TableID    uint32              `binapi:"u32,name=table_id" json:"table_id,omitempty"`
+       StatsIndex uint32              `binapi:"u32,name=stats_index" json:"stats_index,omitempty"`
+       Prefix     ip_types.Prefix     `binapi:"prefix,name=prefix" json:"prefix,omitempty"`
+       NPaths     uint8               `binapi:"u8,name=n_paths" json:"-"`
+       Src        uint8               `binapi:"u8,name=src" json:"src,omitempty"`
+       Paths      []fib_types.FibPath `binapi:"fib_path[n_paths],name=paths" json:"paths,omitempty"`
+}
+
 // IPTable defines type 'ip_table'.
 type IPTable struct {
        TableID uint32 `binapi:"u32,name=table_id" json:"table_id,omitempty"`
@@ -257,7 +340,7 @@ type IPAddressDetails struct {
 
 func (m *IPAddressDetails) Reset()               { *m = IPAddressDetails{} }
 func (*IPAddressDetails) GetMessageName() string { return "ip_address_details" }
-func (*IPAddressDetails) GetCrcString() string   { return "b1199745" }
+func (*IPAddressDetails) GetCrcString() string   { return "ee29b797" }
 func (*IPAddressDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -338,7 +421,7 @@ type IPContainerProxyAddDel struct {
 
 func (m *IPContainerProxyAddDel) Reset()               { *m = IPContainerProxyAddDel{} }
 func (*IPContainerProxyAddDel) GetMessageName() string { return "ip_container_proxy_add_del" }
-func (*IPContainerProxyAddDel) GetCrcString() string   { return "91189f40" }
+func (*IPContainerProxyAddDel) GetCrcString() string   { return "7df1dff1" }
 func (*IPContainerProxyAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -419,7 +502,7 @@ type IPContainerProxyDetails struct {
 
 func (m *IPContainerProxyDetails) Reset()               { *m = IPContainerProxyDetails{} }
 func (*IPContainerProxyDetails) GetMessageName() string { return "ip_container_proxy_details" }
-func (*IPContainerProxyDetails) GetCrcString() string   { return "0ee460e8" }
+func (*IPContainerProxyDetails) GetCrcString() string   { return "a8085523" }
 func (*IPContainerProxyDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -560,7 +643,7 @@ type IPMrouteAddDel struct {
 
 func (m *IPMrouteAddDel) Reset()               { *m = IPMrouteAddDel{} }
 func (*IPMrouteAddDel) GetMessageName() string { return "ip_mroute_add_del" }
-func (*IPMrouteAddDel) GetCrcString() string   { return "f6627d17" }
+func (*IPMrouteAddDel) GetCrcString() string   { return "0dd7e790" }
 func (*IPMrouteAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -616,7 +699,7 @@ func (m *IPMrouteAddDel) Marshal(b []byte) ([]byte, error) {
        buf.EncodeBool(m.IsAdd)
        buf.EncodeBool(m.IsMultipath)
        buf.EncodeUint32(m.Route.TableID)
-       buf.EncodeUint32(m.Route.EntryFlags)
+       buf.EncodeUint32(uint32(m.Route.EntryFlags))
        buf.EncodeUint32(m.Route.RpfID)
        buf.EncodeUint8(uint8(m.Route.Prefix.Af))
        buf.EncodeUint16(m.Route.Prefix.GrpAddressLength)
@@ -656,7 +739,7 @@ func (m *IPMrouteAddDel) Unmarshal(b []byte) error {
        m.IsAdd = buf.DecodeBool()
        m.IsMultipath = buf.DecodeBool()
        m.Route.TableID = buf.DecodeUint32()
-       m.Route.EntryFlags = buf.DecodeUint32()
+       m.Route.EntryFlags = mfib_types.MfibEntryFlags(buf.DecodeUint32())
        m.Route.RpfID = buf.DecodeUint32()
        m.Route.Prefix.Af = ip_types.AddressFamily(buf.DecodeUint8())
        m.Route.Prefix.GrpAddressLength = buf.DecodeUint16()
@@ -733,7 +816,7 @@ type IPMrouteDetails struct {
 
 func (m *IPMrouteDetails) Reset()               { *m = IPMrouteDetails{} }
 func (*IPMrouteDetails) GetMessageName() string { return "ip_mroute_details" }
-func (*IPMrouteDetails) GetCrcString() string   { return "c1cb4b44" }
+func (*IPMrouteDetails) GetCrcString() string   { return "c5cb23fc" }
 func (*IPMrouteDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -785,7 +868,7 @@ func (m *IPMrouteDetails) Marshal(b []byte) ([]byte, error) {
        }
        buf := codec.NewBuffer(b)
        buf.EncodeUint32(m.Route.TableID)
-       buf.EncodeUint32(m.Route.EntryFlags)
+       buf.EncodeUint32(uint32(m.Route.EntryFlags))
        buf.EncodeUint32(m.Route.RpfID)
        buf.EncodeUint8(uint8(m.Route.Prefix.Af))
        buf.EncodeUint16(m.Route.Prefix.GrpAddressLength)
@@ -823,7 +906,7 @@ func (m *IPMrouteDetails) Marshal(b []byte) ([]byte, error) {
 func (m *IPMrouteDetails) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
        m.Route.TableID = buf.DecodeUint32()
-       m.Route.EntryFlags = buf.DecodeUint32()
+       m.Route.EntryFlags = mfib_types.MfibEntryFlags(buf.DecodeUint32())
        m.Route.RpfID = buf.DecodeUint32()
        m.Route.Prefix.Af = ip_types.AddressFamily(buf.DecodeUint8())
        m.Route.Prefix.GrpAddressLength = buf.DecodeUint16()
@@ -961,6 +1044,325 @@ func (m *IPMtableDump) Unmarshal(b []byte) error {
        return nil
 }
 
+// IPPathMtuDetails defines message 'ip_path_mtu_details'.
+type IPPathMtuDetails struct {
+       Pmtu IPPathMtu `binapi:"ip_path_mtu,name=pmtu" json:"pmtu,omitempty"`
+}
+
+func (m *IPPathMtuDetails) Reset()               { *m = IPPathMtuDetails{} }
+func (*IPPathMtuDetails) GetMessageName() string { return "ip_path_mtu_details" }
+func (*IPPathMtuDetails) GetCrcString() string   { return "ac9539a7" }
+func (*IPPathMtuDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *IPPathMtuDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4      // m.Pmtu.ClientIndex
+       size += 4      // m.Pmtu.Context
+       size += 4      // m.Pmtu.TableID
+       size += 1      // m.Pmtu.Nh.Af
+       size += 1 * 16 // m.Pmtu.Nh.Un
+       size += 2      // m.Pmtu.PathMtu
+       return size
+}
+func (m *IPPathMtuDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.Pmtu.ClientIndex)
+       buf.EncodeUint32(m.Pmtu.Context)
+       buf.EncodeUint32(m.Pmtu.TableID)
+       buf.EncodeUint8(uint8(m.Pmtu.Nh.Af))
+       buf.EncodeBytes(m.Pmtu.Nh.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint16(m.Pmtu.PathMtu)
+       return buf.Bytes(), nil
+}
+func (m *IPPathMtuDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Pmtu.ClientIndex = buf.DecodeUint32()
+       m.Pmtu.Context = buf.DecodeUint32()
+       m.Pmtu.TableID = buf.DecodeUint32()
+       m.Pmtu.Nh.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Pmtu.Nh.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Pmtu.PathMtu = buf.DecodeUint16()
+       return nil
+}
+
+// IPPathMtuGet defines message 'ip_path_mtu_get'.
+type IPPathMtuGet struct {
+       Cursor uint32 `binapi:"u32,name=cursor" json:"cursor,omitempty"`
+}
+
+func (m *IPPathMtuGet) Reset()               { *m = IPPathMtuGet{} }
+func (*IPPathMtuGet) GetMessageName() string { return "ip_path_mtu_get" }
+func (*IPPathMtuGet) GetCrcString() string   { return "f75ba505" }
+func (*IPPathMtuGet) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *IPPathMtuGet) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Cursor
+       return size
+}
+func (m *IPPathMtuGet) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.Cursor)
+       return buf.Bytes(), nil
+}
+func (m *IPPathMtuGet) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Cursor = buf.DecodeUint32()
+       return nil
+}
+
+// IPPathMtuGetReply defines message 'ip_path_mtu_get_reply'.
+type IPPathMtuGetReply struct {
+       Retval int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       Cursor uint32 `binapi:"u32,name=cursor" json:"cursor,omitempty"`
+}
+
+func (m *IPPathMtuGetReply) Reset()               { *m = IPPathMtuGetReply{} }
+func (*IPPathMtuGetReply) GetMessageName() string { return "ip_path_mtu_get_reply" }
+func (*IPPathMtuGetReply) GetCrcString() string   { return "53b48f5d" }
+func (*IPPathMtuGetReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *IPPathMtuGetReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.Cursor
+       return size
+}
+func (m *IPPathMtuGetReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.Cursor)
+       return buf.Bytes(), nil
+}
+func (m *IPPathMtuGetReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.Cursor = buf.DecodeUint32()
+       return nil
+}
+
+// IPPathMtuReplaceBegin defines message 'ip_path_mtu_replace_begin'.
+type IPPathMtuReplaceBegin struct{}
+
+func (m *IPPathMtuReplaceBegin) Reset()               { *m = IPPathMtuReplaceBegin{} }
+func (*IPPathMtuReplaceBegin) GetMessageName() string { return "ip_path_mtu_replace_begin" }
+func (*IPPathMtuReplaceBegin) GetCrcString() string   { return "51077d14" }
+func (*IPPathMtuReplaceBegin) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *IPPathMtuReplaceBegin) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *IPPathMtuReplaceBegin) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *IPPathMtuReplaceBegin) Unmarshal(b []byte) error {
+       return nil
+}
+
+// IPPathMtuReplaceBeginReply defines message 'ip_path_mtu_replace_begin_reply'.
+type IPPathMtuReplaceBeginReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *IPPathMtuReplaceBeginReply) Reset()               { *m = IPPathMtuReplaceBeginReply{} }
+func (*IPPathMtuReplaceBeginReply) GetMessageName() string { return "ip_path_mtu_replace_begin_reply" }
+func (*IPPathMtuReplaceBeginReply) GetCrcString() string   { return "e8d4e804" }
+func (*IPPathMtuReplaceBeginReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *IPPathMtuReplaceBeginReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *IPPathMtuReplaceBeginReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *IPPathMtuReplaceBeginReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// IPPathMtuReplaceEnd defines message 'ip_path_mtu_replace_end'.
+type IPPathMtuReplaceEnd struct{}
+
+func (m *IPPathMtuReplaceEnd) Reset()               { *m = IPPathMtuReplaceEnd{} }
+func (*IPPathMtuReplaceEnd) GetMessageName() string { return "ip_path_mtu_replace_end" }
+func (*IPPathMtuReplaceEnd) GetCrcString() string   { return "51077d14" }
+func (*IPPathMtuReplaceEnd) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *IPPathMtuReplaceEnd) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *IPPathMtuReplaceEnd) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *IPPathMtuReplaceEnd) Unmarshal(b []byte) error {
+       return nil
+}
+
+// IPPathMtuReplaceEndReply defines message 'ip_path_mtu_replace_end_reply'.
+type IPPathMtuReplaceEndReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *IPPathMtuReplaceEndReply) Reset()               { *m = IPPathMtuReplaceEndReply{} }
+func (*IPPathMtuReplaceEndReply) GetMessageName() string { return "ip_path_mtu_replace_end_reply" }
+func (*IPPathMtuReplaceEndReply) GetCrcString() string   { return "e8d4e804" }
+func (*IPPathMtuReplaceEndReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *IPPathMtuReplaceEndReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *IPPathMtuReplaceEndReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *IPPathMtuReplaceEndReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// IPPathMtuUpdate defines message 'ip_path_mtu_update'.
+type IPPathMtuUpdate struct {
+       Pmtu IPPathMtu `binapi:"ip_path_mtu,name=pmtu" json:"pmtu,omitempty"`
+}
+
+func (m *IPPathMtuUpdate) Reset()               { *m = IPPathMtuUpdate{} }
+func (*IPPathMtuUpdate) GetMessageName() string { return "ip_path_mtu_update" }
+func (*IPPathMtuUpdate) GetCrcString() string   { return "10bbe5cb" }
+func (*IPPathMtuUpdate) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *IPPathMtuUpdate) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4      // m.Pmtu.ClientIndex
+       size += 4      // m.Pmtu.Context
+       size += 4      // m.Pmtu.TableID
+       size += 1      // m.Pmtu.Nh.Af
+       size += 1 * 16 // m.Pmtu.Nh.Un
+       size += 2      // m.Pmtu.PathMtu
+       return size
+}
+func (m *IPPathMtuUpdate) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.Pmtu.ClientIndex)
+       buf.EncodeUint32(m.Pmtu.Context)
+       buf.EncodeUint32(m.Pmtu.TableID)
+       buf.EncodeUint8(uint8(m.Pmtu.Nh.Af))
+       buf.EncodeBytes(m.Pmtu.Nh.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint16(m.Pmtu.PathMtu)
+       return buf.Bytes(), nil
+}
+func (m *IPPathMtuUpdate) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Pmtu.ClientIndex = buf.DecodeUint32()
+       m.Pmtu.Context = buf.DecodeUint32()
+       m.Pmtu.TableID = buf.DecodeUint32()
+       m.Pmtu.Nh.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Pmtu.Nh.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Pmtu.PathMtu = buf.DecodeUint16()
+       return nil
+}
+
+// IPPathMtuUpdateReply defines message 'ip_path_mtu_update_reply'.
+type IPPathMtuUpdateReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *IPPathMtuUpdateReply) Reset()               { *m = IPPathMtuUpdateReply{} }
+func (*IPPathMtuUpdateReply) GetMessageName() string { return "ip_path_mtu_update_reply" }
+func (*IPPathMtuUpdateReply) GetCrcString() string   { return "e8d4e804" }
+func (*IPPathMtuUpdateReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *IPPathMtuUpdateReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *IPPathMtuUpdateReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *IPPathMtuUpdateReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
 // IPPuntPolice defines message 'ip_punt_police'.
 type IPPuntPolice struct {
        PolicerIndex uint32 `binapi:"u32,name=policer_index" json:"policer_index,omitempty"`
@@ -1043,7 +1445,7 @@ type IPPuntRedirect struct {
 
 func (m *IPPuntRedirect) Reset()               { *m = IPPuntRedirect{} }
 func (*IPPuntRedirect) GetMessageName() string { return "ip_punt_redirect" }
-func (*IPPuntRedirect) GetCrcString() string   { return "a9a5592c" }
+func (*IPPuntRedirect) GetCrcString() string   { return "6580f635" }
 func (*IPPuntRedirect) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1088,7 +1490,7 @@ type IPPuntRedirectDetails struct {
 
 func (m *IPPuntRedirectDetails) Reset()               { *m = IPPuntRedirectDetails{} }
 func (*IPPuntRedirectDetails) GetMessageName() string { return "ip_punt_redirect_details" }
-func (*IPPuntRedirectDetails) GetCrcString() string   { return "3924f5d3" }
+func (*IPPuntRedirectDetails) GetCrcString() string   { return "2cef63e7" }
 func (*IPPuntRedirectDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1203,7 +1605,7 @@ type IPReassemblyEnableDisable struct {
 
 func (m *IPReassemblyEnableDisable) Reset()               { *m = IPReassemblyEnableDisable{} }
 func (*IPReassemblyEnableDisable) GetMessageName() string { return "ip_reassembly_enable_disable" }
-func (*IPReassemblyEnableDisable) GetCrcString() string   { return "885c85a6" }
+func (*IPReassemblyEnableDisable) GetCrcString() string   { return "eb77968d" }
 func (*IPReassemblyEnableDisable) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1458,7 +1860,7 @@ type IPRouteAddDel struct {
 
 func (m *IPRouteAddDel) Reset()               { *m = IPRouteAddDel{} }
 func (*IPRouteAddDel) GetMessageName() string { return "ip_route_add_del" }
-func (*IPRouteAddDel) GetCrcString() string   { return "c1ff832d" }
+func (*IPRouteAddDel) GetCrcString() string   { return "b8ecfe0d" }
 func (*IPRouteAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1615,28 +2017,34 @@ func (m *IPRouteAddDelReply) Unmarshal(b []byte) error {
        return nil
 }
 
-// IPRouteDetails defines message 'ip_route_details'.
-type IPRouteDetails struct {
-       Route IPRoute `binapi:"ip_route,name=route" json:"route,omitempty"`
+// IPRouteAddDelV2 defines message 'ip_route_add_del_v2'.
+// InProgress: the message form may change in the future versions
+type IPRouteAddDelV2 struct {
+       IsAdd       bool      `binapi:"bool,name=is_add,default=true" json:"is_add,omitempty"`
+       IsMultipath bool      `binapi:"bool,name=is_multipath" json:"is_multipath,omitempty"`
+       Route       IPRouteV2 `binapi:"ip_route_v2,name=route" json:"route,omitempty"`
 }
 
-func (m *IPRouteDetails) Reset()               { *m = IPRouteDetails{} }
-func (*IPRouteDetails) GetMessageName() string { return "ip_route_details" }
-func (*IPRouteDetails) GetCrcString() string   { return "d1ffaae1" }
-func (*IPRouteDetails) GetMessageType() api.MessageType {
-       return api.ReplyMessage
+func (m *IPRouteAddDelV2) Reset()               { *m = IPRouteAddDelV2{} }
+func (*IPRouteAddDelV2) GetMessageName() string { return "ip_route_add_del_v2" }
+func (*IPRouteAddDelV2) GetCrcString() string   { return "521ef330" }
+func (*IPRouteAddDelV2) GetMessageType() api.MessageType {
+       return api.RequestMessage
 }
 
-func (m *IPRouteDetails) Size() (size int) {
+func (m *IPRouteAddDelV2) Size() (size int) {
        if m == nil {
                return 0
        }
+       size += 1      // m.IsAdd
+       size += 1      // m.IsMultipath
        size += 4      // m.Route.TableID
        size += 4      // m.Route.StatsIndex
        size += 1      // m.Route.Prefix.Address.Af
        size += 1 * 16 // m.Route.Prefix.Address.Un
        size += 1      // m.Route.Prefix.Len
        size += 1      // m.Route.NPaths
+       size += 1      // m.Route.Src
        for j2 := 0; j2 < len(m.Route.Paths); j2++ {
                var s2 fib_types.FibPath
                _ = s2
@@ -1665,17 +2073,20 @@ func (m *IPRouteDetails) Size() (size int) {
        }
        return size
 }
-func (m *IPRouteDetails) Marshal(b []byte) ([]byte, error) {
+func (m *IPRouteAddDelV2) Marshal(b []byte) ([]byte, error) {
        if b == nil {
                b = make([]byte, m.Size())
        }
        buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsAdd)
+       buf.EncodeBool(m.IsMultipath)
        buf.EncodeUint32(m.Route.TableID)
        buf.EncodeUint32(m.Route.StatsIndex)
        buf.EncodeUint8(uint8(m.Route.Prefix.Address.Af))
        buf.EncodeBytes(m.Route.Prefix.Address.Un.XXX_UnionData[:], 16)
        buf.EncodeUint8(m.Route.Prefix.Len)
        buf.EncodeUint8(uint8(len(m.Route.Paths)))
+       buf.EncodeUint8(m.Route.Src)
        for j1 := 0; j1 < len(m.Route.Paths); j1++ {
                var v1 fib_types.FibPath // Paths
                if j1 < len(m.Route.Paths) {
@@ -1703,14 +2114,17 @@ func (m *IPRouteDetails) Marshal(b []byte) ([]byte, error) {
        }
        return buf.Bytes(), nil
 }
-func (m *IPRouteDetails) Unmarshal(b []byte) error {
+func (m *IPRouteAddDelV2) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeBool()
+       m.IsMultipath = buf.DecodeBool()
        m.Route.TableID = buf.DecodeUint32()
        m.Route.StatsIndex = buf.DecodeUint32()
        m.Route.Prefix.Address.Af = ip_types.AddressFamily(buf.DecodeUint8())
        copy(m.Route.Prefix.Address.Un.XXX_UnionData[:], buf.DecodeBytes(16))
        m.Route.Prefix.Len = buf.DecodeUint8()
        m.Route.NPaths = buf.DecodeUint8()
+       m.Route.Src = buf.DecodeUint8()
        m.Route.Paths = make([]fib_types.FibPath, m.Route.NPaths)
        for j1 := 0; j1 < len(m.Route.Paths); j1++ {
                m.Route.Paths[j1].SwIfIndex = buf.DecodeUint32()
@@ -1736,36 +2150,195 @@ func (m *IPRouteDetails) Unmarshal(b []byte) error {
        return nil
 }
 
-// IPRouteDump defines message 'ip_route_dump'.
-type IPRouteDump struct {
-       Table IPTable `binapi:"ip_table,name=table" json:"table,omitempty"`
+// IPRouteAddDelV2Reply defines message 'ip_route_add_del_v2_reply'.
+// InProgress: the message form may change in the future versions
+type IPRouteAddDelV2Reply struct {
+       Retval     int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       StatsIndex uint32 `binapi:"u32,name=stats_index" json:"stats_index,omitempty"`
 }
 
-func (m *IPRouteDump) Reset()               { *m = IPRouteDump{} }
-func (*IPRouteDump) GetMessageName() string { return "ip_route_dump" }
-func (*IPRouteDump) GetCrcString() string   { return "b9d2e09e" }
-func (*IPRouteDump) GetMessageType() api.MessageType {
-       return api.RequestMessage
+func (m *IPRouteAddDelV2Reply) Reset()               { *m = IPRouteAddDelV2Reply{} }
+func (*IPRouteAddDelV2Reply) GetMessageName() string { return "ip_route_add_del_v2_reply" }
+func (*IPRouteAddDelV2Reply) GetCrcString() string   { return "1992deab" }
+func (*IPRouteAddDelV2Reply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
 }
 
-func (m *IPRouteDump) Size() (size int) {
+func (m *IPRouteAddDelV2Reply) Size() (size int) {
        if m == nil {
                return 0
        }
-       size += 4  // m.Table.TableID
-       size += 1  // m.Table.IsIP6
-       size += 64 // m.Table.Name
+       size += 4 // m.Retval
+       size += 4 // m.StatsIndex
        return size
 }
-func (m *IPRouteDump) Marshal(b []byte) ([]byte, error) {
+func (m *IPRouteAddDelV2Reply) Marshal(b []byte) ([]byte, error) {
        if b == nil {
                b = make([]byte, m.Size())
        }
        buf := codec.NewBuffer(b)
-       buf.EncodeUint32(m.Table.TableID)
-       buf.EncodeBool(m.Table.IsIP6)
-       buf.EncodeString(m.Table.Name, 64)
-       return buf.Bytes(), nil
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.StatsIndex)
+       return buf.Bytes(), nil
+}
+func (m *IPRouteAddDelV2Reply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.StatsIndex = buf.DecodeUint32()
+       return nil
+}
+
+// IPRouteDetails defines message 'ip_route_details'.
+type IPRouteDetails struct {
+       Route IPRoute `binapi:"ip_route,name=route" json:"route,omitempty"`
+}
+
+func (m *IPRouteDetails) Reset()               { *m = IPRouteDetails{} }
+func (*IPRouteDetails) GetMessageName() string { return "ip_route_details" }
+func (*IPRouteDetails) GetCrcString() string   { return "bda8f315" }
+func (*IPRouteDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *IPRouteDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4      // m.Route.TableID
+       size += 4      // m.Route.StatsIndex
+       size += 1      // m.Route.Prefix.Address.Af
+       size += 1 * 16 // m.Route.Prefix.Address.Un
+       size += 1      // m.Route.Prefix.Len
+       size += 1      // m.Route.NPaths
+       for j2 := 0; j2 < len(m.Route.Paths); j2++ {
+               var s2 fib_types.FibPath
+               _ = s2
+               if j2 < len(m.Route.Paths) {
+                       s2 = m.Route.Paths[j2]
+               }
+               size += 4      // s2.SwIfIndex
+               size += 4      // s2.TableID
+               size += 4      // s2.RpfID
+               size += 1      // s2.Weight
+               size += 1      // s2.Preference
+               size += 4      // s2.Type
+               size += 4      // s2.Flags
+               size += 4      // s2.Proto
+               size += 1 * 16 // s2.Nh.Address
+               size += 4      // s2.Nh.ViaLabel
+               size += 4      // s2.Nh.ObjID
+               size += 4      // s2.Nh.ClassifyTableIndex
+               size += 1      // s2.NLabels
+               for j3 := 0; j3 < 16; j3++ {
+                       size += 1 // s2.LabelStack[j3].IsUniform
+                       size += 4 // s2.LabelStack[j3].Label
+                       size += 1 // s2.LabelStack[j3].TTL
+                       size += 1 // s2.LabelStack[j3].Exp
+               }
+       }
+       return size
+}
+func (m *IPRouteDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.Route.TableID)
+       buf.EncodeUint32(m.Route.StatsIndex)
+       buf.EncodeUint8(uint8(m.Route.Prefix.Address.Af))
+       buf.EncodeBytes(m.Route.Prefix.Address.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(m.Route.Prefix.Len)
+       buf.EncodeUint8(uint8(len(m.Route.Paths)))
+       for j1 := 0; j1 < len(m.Route.Paths); j1++ {
+               var v1 fib_types.FibPath // Paths
+               if j1 < len(m.Route.Paths) {
+                       v1 = m.Route.Paths[j1]
+               }
+               buf.EncodeUint32(v1.SwIfIndex)
+               buf.EncodeUint32(v1.TableID)
+               buf.EncodeUint32(v1.RpfID)
+               buf.EncodeUint8(v1.Weight)
+               buf.EncodeUint8(v1.Preference)
+               buf.EncodeUint32(uint32(v1.Type))
+               buf.EncodeUint32(uint32(v1.Flags))
+               buf.EncodeUint32(uint32(v1.Proto))
+               buf.EncodeBytes(v1.Nh.Address.XXX_UnionData[:], 16)
+               buf.EncodeUint32(v1.Nh.ViaLabel)
+               buf.EncodeUint32(v1.Nh.ObjID)
+               buf.EncodeUint32(v1.Nh.ClassifyTableIndex)
+               buf.EncodeUint8(v1.NLabels)
+               for j2 := 0; j2 < 16; j2++ {
+                       buf.EncodeUint8(v1.LabelStack[j2].IsUniform)
+                       buf.EncodeUint32(v1.LabelStack[j2].Label)
+                       buf.EncodeUint8(v1.LabelStack[j2].TTL)
+                       buf.EncodeUint8(v1.LabelStack[j2].Exp)
+               }
+       }
+       return buf.Bytes(), nil
+}
+func (m *IPRouteDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Route.TableID = buf.DecodeUint32()
+       m.Route.StatsIndex = buf.DecodeUint32()
+       m.Route.Prefix.Address.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Route.Prefix.Address.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Route.Prefix.Len = buf.DecodeUint8()
+       m.Route.NPaths = buf.DecodeUint8()
+       m.Route.Paths = make([]fib_types.FibPath, m.Route.NPaths)
+       for j1 := 0; j1 < len(m.Route.Paths); j1++ {
+               m.Route.Paths[j1].SwIfIndex = buf.DecodeUint32()
+               m.Route.Paths[j1].TableID = buf.DecodeUint32()
+               m.Route.Paths[j1].RpfID = buf.DecodeUint32()
+               m.Route.Paths[j1].Weight = buf.DecodeUint8()
+               m.Route.Paths[j1].Preference = buf.DecodeUint8()
+               m.Route.Paths[j1].Type = fib_types.FibPathType(buf.DecodeUint32())
+               m.Route.Paths[j1].Flags = fib_types.FibPathFlags(buf.DecodeUint32())
+               m.Route.Paths[j1].Proto = fib_types.FibPathNhProto(buf.DecodeUint32())
+               copy(m.Route.Paths[j1].Nh.Address.XXX_UnionData[:], buf.DecodeBytes(16))
+               m.Route.Paths[j1].Nh.ViaLabel = buf.DecodeUint32()
+               m.Route.Paths[j1].Nh.ObjID = buf.DecodeUint32()
+               m.Route.Paths[j1].Nh.ClassifyTableIndex = buf.DecodeUint32()
+               m.Route.Paths[j1].NLabels = buf.DecodeUint8()
+               for j2 := 0; j2 < 16; j2++ {
+                       m.Route.Paths[j1].LabelStack[j2].IsUniform = buf.DecodeUint8()
+                       m.Route.Paths[j1].LabelStack[j2].Label = buf.DecodeUint32()
+                       m.Route.Paths[j1].LabelStack[j2].TTL = buf.DecodeUint8()
+                       m.Route.Paths[j1].LabelStack[j2].Exp = buf.DecodeUint8()
+               }
+       }
+       return nil
+}
+
+// IPRouteDump defines message 'ip_route_dump'.
+type IPRouteDump struct {
+       Table IPTable `binapi:"ip_table,name=table" json:"table,omitempty"`
+}
+
+func (m *IPRouteDump) Reset()               { *m = IPRouteDump{} }
+func (*IPRouteDump) GetMessageName() string { return "ip_route_dump" }
+func (*IPRouteDump) GetCrcString() string   { return "b9d2e09e" }
+func (*IPRouteDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *IPRouteDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4  // m.Table.TableID
+       size += 1  // m.Table.IsIP6
+       size += 64 // m.Table.Name
+       return size
+}
+func (m *IPRouteDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.Table.TableID)
+       buf.EncodeBool(m.Table.IsIP6)
+       buf.EncodeString(m.Table.Name, 64)
+       return buf.Bytes(), nil
 }
 func (m *IPRouteDump) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
@@ -1784,7 +2357,7 @@ type IPRouteLookup struct {
 
 func (m *IPRouteLookup) Reset()               { *m = IPRouteLookup{} }
 func (*IPRouteLookup) GetMessageName() string { return "ip_route_lookup" }
-func (*IPRouteLookup) GetCrcString() string   { return "e2986185" }
+func (*IPRouteLookup) GetCrcString() string   { return "710d6471" }
 func (*IPRouteLookup) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1804,48 +2377,350 @@ func (m *IPRouteLookup) Marshal(b []byte) ([]byte, error) {
        if b == nil {
                b = make([]byte, m.Size())
        }
-       buf := codec.NewBuffer(b)
-       buf.EncodeUint32(m.TableID)
-       buf.EncodeUint8(m.Exact)
-       buf.EncodeUint8(uint8(m.Prefix.Address.Af))
-       buf.EncodeBytes(m.Prefix.Address.Un.XXX_UnionData[:], 16)
-       buf.EncodeUint8(m.Prefix.Len)
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.TableID)
+       buf.EncodeUint8(m.Exact)
+       buf.EncodeUint8(uint8(m.Prefix.Address.Af))
+       buf.EncodeBytes(m.Prefix.Address.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(m.Prefix.Len)
+       return buf.Bytes(), nil
+}
+func (m *IPRouteLookup) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.TableID = buf.DecodeUint32()
+       m.Exact = buf.DecodeUint8()
+       m.Prefix.Address.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Prefix.Address.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Prefix.Len = buf.DecodeUint8()
+       return nil
+}
+
+// IPRouteLookupReply defines message 'ip_route_lookup_reply'.
+type IPRouteLookupReply struct {
+       Retval int32   `binapi:"i32,name=retval" json:"retval,omitempty"`
+       Route  IPRoute `binapi:"ip_route,name=route" json:"route,omitempty"`
+}
+
+func (m *IPRouteLookupReply) Reset()               { *m = IPRouteLookupReply{} }
+func (*IPRouteLookupReply) GetMessageName() string { return "ip_route_lookup_reply" }
+func (*IPRouteLookupReply) GetCrcString() string   { return "5d8febcb" }
+func (*IPRouteLookupReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *IPRouteLookupReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4      // m.Retval
+       size += 4      // m.Route.TableID
+       size += 4      // m.Route.StatsIndex
+       size += 1      // m.Route.Prefix.Address.Af
+       size += 1 * 16 // m.Route.Prefix.Address.Un
+       size += 1      // m.Route.Prefix.Len
+       size += 1      // m.Route.NPaths
+       for j2 := 0; j2 < len(m.Route.Paths); j2++ {
+               var s2 fib_types.FibPath
+               _ = s2
+               if j2 < len(m.Route.Paths) {
+                       s2 = m.Route.Paths[j2]
+               }
+               size += 4      // s2.SwIfIndex
+               size += 4      // s2.TableID
+               size += 4      // s2.RpfID
+               size += 1      // s2.Weight
+               size += 1      // s2.Preference
+               size += 4      // s2.Type
+               size += 4      // s2.Flags
+               size += 4      // s2.Proto
+               size += 1 * 16 // s2.Nh.Address
+               size += 4      // s2.Nh.ViaLabel
+               size += 4      // s2.Nh.ObjID
+               size += 4      // s2.Nh.ClassifyTableIndex
+               size += 1      // s2.NLabels
+               for j3 := 0; j3 < 16; j3++ {
+                       size += 1 // s2.LabelStack[j3].IsUniform
+                       size += 4 // s2.LabelStack[j3].Label
+                       size += 1 // s2.LabelStack[j3].TTL
+                       size += 1 // s2.LabelStack[j3].Exp
+               }
+       }
+       return size
+}
+func (m *IPRouteLookupReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.Route.TableID)
+       buf.EncodeUint32(m.Route.StatsIndex)
+       buf.EncodeUint8(uint8(m.Route.Prefix.Address.Af))
+       buf.EncodeBytes(m.Route.Prefix.Address.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(m.Route.Prefix.Len)
+       buf.EncodeUint8(uint8(len(m.Route.Paths)))
+       for j1 := 0; j1 < len(m.Route.Paths); j1++ {
+               var v1 fib_types.FibPath // Paths
+               if j1 < len(m.Route.Paths) {
+                       v1 = m.Route.Paths[j1]
+               }
+               buf.EncodeUint32(v1.SwIfIndex)
+               buf.EncodeUint32(v1.TableID)
+               buf.EncodeUint32(v1.RpfID)
+               buf.EncodeUint8(v1.Weight)
+               buf.EncodeUint8(v1.Preference)
+               buf.EncodeUint32(uint32(v1.Type))
+               buf.EncodeUint32(uint32(v1.Flags))
+               buf.EncodeUint32(uint32(v1.Proto))
+               buf.EncodeBytes(v1.Nh.Address.XXX_UnionData[:], 16)
+               buf.EncodeUint32(v1.Nh.ViaLabel)
+               buf.EncodeUint32(v1.Nh.ObjID)
+               buf.EncodeUint32(v1.Nh.ClassifyTableIndex)
+               buf.EncodeUint8(v1.NLabels)
+               for j2 := 0; j2 < 16; j2++ {
+                       buf.EncodeUint8(v1.LabelStack[j2].IsUniform)
+                       buf.EncodeUint32(v1.LabelStack[j2].Label)
+                       buf.EncodeUint8(v1.LabelStack[j2].TTL)
+                       buf.EncodeUint8(v1.LabelStack[j2].Exp)
+               }
+       }
+       return buf.Bytes(), nil
+}
+func (m *IPRouteLookupReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.Route.TableID = buf.DecodeUint32()
+       m.Route.StatsIndex = buf.DecodeUint32()
+       m.Route.Prefix.Address.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Route.Prefix.Address.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Route.Prefix.Len = buf.DecodeUint8()
+       m.Route.NPaths = buf.DecodeUint8()
+       m.Route.Paths = make([]fib_types.FibPath, m.Route.NPaths)
+       for j1 := 0; j1 < len(m.Route.Paths); j1++ {
+               m.Route.Paths[j1].SwIfIndex = buf.DecodeUint32()
+               m.Route.Paths[j1].TableID = buf.DecodeUint32()
+               m.Route.Paths[j1].RpfID = buf.DecodeUint32()
+               m.Route.Paths[j1].Weight = buf.DecodeUint8()
+               m.Route.Paths[j1].Preference = buf.DecodeUint8()
+               m.Route.Paths[j1].Type = fib_types.FibPathType(buf.DecodeUint32())
+               m.Route.Paths[j1].Flags = fib_types.FibPathFlags(buf.DecodeUint32())
+               m.Route.Paths[j1].Proto = fib_types.FibPathNhProto(buf.DecodeUint32())
+               copy(m.Route.Paths[j1].Nh.Address.XXX_UnionData[:], buf.DecodeBytes(16))
+               m.Route.Paths[j1].Nh.ViaLabel = buf.DecodeUint32()
+               m.Route.Paths[j1].Nh.ObjID = buf.DecodeUint32()
+               m.Route.Paths[j1].Nh.ClassifyTableIndex = buf.DecodeUint32()
+               m.Route.Paths[j1].NLabels = buf.DecodeUint8()
+               for j2 := 0; j2 < 16; j2++ {
+                       m.Route.Paths[j1].LabelStack[j2].IsUniform = buf.DecodeUint8()
+                       m.Route.Paths[j1].LabelStack[j2].Label = buf.DecodeUint32()
+                       m.Route.Paths[j1].LabelStack[j2].TTL = buf.DecodeUint8()
+                       m.Route.Paths[j1].LabelStack[j2].Exp = buf.DecodeUint8()
+               }
+       }
+       return nil
+}
+
+// IPRouteLookupV2 defines message 'ip_route_lookup_v2'.
+// InProgress: the message form may change in the future versions
+type IPRouteLookupV2 struct {
+       TableID uint32          `binapi:"u32,name=table_id" json:"table_id,omitempty"`
+       Exact   uint8           `binapi:"u8,name=exact" json:"exact,omitempty"`
+       Prefix  ip_types.Prefix `binapi:"prefix,name=prefix" json:"prefix,omitempty"`
+}
+
+func (m *IPRouteLookupV2) Reset()               { *m = IPRouteLookupV2{} }
+func (*IPRouteLookupV2) GetMessageName() string { return "ip_route_lookup_v2" }
+func (*IPRouteLookupV2) GetCrcString() string   { return "710d6471" }
+func (*IPRouteLookupV2) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *IPRouteLookupV2) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4      // m.TableID
+       size += 1      // m.Exact
+       size += 1      // m.Prefix.Address.Af
+       size += 1 * 16 // m.Prefix.Address.Un
+       size += 1      // m.Prefix.Len
+       return size
+}
+func (m *IPRouteLookupV2) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.TableID)
+       buf.EncodeUint8(m.Exact)
+       buf.EncodeUint8(uint8(m.Prefix.Address.Af))
+       buf.EncodeBytes(m.Prefix.Address.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(m.Prefix.Len)
+       return buf.Bytes(), nil
+}
+func (m *IPRouteLookupV2) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.TableID = buf.DecodeUint32()
+       m.Exact = buf.DecodeUint8()
+       m.Prefix.Address.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Prefix.Address.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Prefix.Len = buf.DecodeUint8()
+       return nil
+}
+
+// IPRouteLookupV2Reply defines message 'ip_route_lookup_v2_reply'.
+// InProgress: the message form may change in the future versions
+type IPRouteLookupV2Reply struct {
+       Retval int32     `binapi:"i32,name=retval" json:"retval,omitempty"`
+       Route  IPRouteV2 `binapi:"ip_route_v2,name=route" json:"route,omitempty"`
+}
+
+func (m *IPRouteLookupV2Reply) Reset()               { *m = IPRouteLookupV2Reply{} }
+func (*IPRouteLookupV2Reply) GetMessageName() string { return "ip_route_lookup_v2_reply" }
+func (*IPRouteLookupV2Reply) GetCrcString() string   { return "84cc9e03" }
+func (*IPRouteLookupV2Reply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *IPRouteLookupV2Reply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4      // m.Retval
+       size += 4      // m.Route.TableID
+       size += 4      // m.Route.StatsIndex
+       size += 1      // m.Route.Prefix.Address.Af
+       size += 1 * 16 // m.Route.Prefix.Address.Un
+       size += 1      // m.Route.Prefix.Len
+       size += 1      // m.Route.NPaths
+       size += 1      // m.Route.Src
+       for j2 := 0; j2 < len(m.Route.Paths); j2++ {
+               var s2 fib_types.FibPath
+               _ = s2
+               if j2 < len(m.Route.Paths) {
+                       s2 = m.Route.Paths[j2]
+               }
+               size += 4      // s2.SwIfIndex
+               size += 4      // s2.TableID
+               size += 4      // s2.RpfID
+               size += 1      // s2.Weight
+               size += 1      // s2.Preference
+               size += 4      // s2.Type
+               size += 4      // s2.Flags
+               size += 4      // s2.Proto
+               size += 1 * 16 // s2.Nh.Address
+               size += 4      // s2.Nh.ViaLabel
+               size += 4      // s2.Nh.ObjID
+               size += 4      // s2.Nh.ClassifyTableIndex
+               size += 1      // s2.NLabels
+               for j3 := 0; j3 < 16; j3++ {
+                       size += 1 // s2.LabelStack[j3].IsUniform
+                       size += 4 // s2.LabelStack[j3].Label
+                       size += 1 // s2.LabelStack[j3].TTL
+                       size += 1 // s2.LabelStack[j3].Exp
+               }
+       }
+       return size
+}
+func (m *IPRouteLookupV2Reply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.Route.TableID)
+       buf.EncodeUint32(m.Route.StatsIndex)
+       buf.EncodeUint8(uint8(m.Route.Prefix.Address.Af))
+       buf.EncodeBytes(m.Route.Prefix.Address.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(m.Route.Prefix.Len)
+       buf.EncodeUint8(uint8(len(m.Route.Paths)))
+       buf.EncodeUint8(m.Route.Src)
+       for j1 := 0; j1 < len(m.Route.Paths); j1++ {
+               var v1 fib_types.FibPath // Paths
+               if j1 < len(m.Route.Paths) {
+                       v1 = m.Route.Paths[j1]
+               }
+               buf.EncodeUint32(v1.SwIfIndex)
+               buf.EncodeUint32(v1.TableID)
+               buf.EncodeUint32(v1.RpfID)
+               buf.EncodeUint8(v1.Weight)
+               buf.EncodeUint8(v1.Preference)
+               buf.EncodeUint32(uint32(v1.Type))
+               buf.EncodeUint32(uint32(v1.Flags))
+               buf.EncodeUint32(uint32(v1.Proto))
+               buf.EncodeBytes(v1.Nh.Address.XXX_UnionData[:], 16)
+               buf.EncodeUint32(v1.Nh.ViaLabel)
+               buf.EncodeUint32(v1.Nh.ObjID)
+               buf.EncodeUint32(v1.Nh.ClassifyTableIndex)
+               buf.EncodeUint8(v1.NLabels)
+               for j2 := 0; j2 < 16; j2++ {
+                       buf.EncodeUint8(v1.LabelStack[j2].IsUniform)
+                       buf.EncodeUint32(v1.LabelStack[j2].Label)
+                       buf.EncodeUint8(v1.LabelStack[j2].TTL)
+                       buf.EncodeUint8(v1.LabelStack[j2].Exp)
+               }
+       }
        return buf.Bytes(), nil
 }
-func (m *IPRouteLookup) Unmarshal(b []byte) error {
+func (m *IPRouteLookupV2Reply) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
-       m.TableID = buf.DecodeUint32()
-       m.Exact = buf.DecodeUint8()
-       m.Prefix.Address.Af = ip_types.AddressFamily(buf.DecodeUint8())
-       copy(m.Prefix.Address.Un.XXX_UnionData[:], buf.DecodeBytes(16))
-       m.Prefix.Len = buf.DecodeUint8()
+       m.Retval = buf.DecodeInt32()
+       m.Route.TableID = buf.DecodeUint32()
+       m.Route.StatsIndex = buf.DecodeUint32()
+       m.Route.Prefix.Address.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Route.Prefix.Address.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Route.Prefix.Len = buf.DecodeUint8()
+       m.Route.NPaths = buf.DecodeUint8()
+       m.Route.Src = buf.DecodeUint8()
+       m.Route.Paths = make([]fib_types.FibPath, m.Route.NPaths)
+       for j1 := 0; j1 < len(m.Route.Paths); j1++ {
+               m.Route.Paths[j1].SwIfIndex = buf.DecodeUint32()
+               m.Route.Paths[j1].TableID = buf.DecodeUint32()
+               m.Route.Paths[j1].RpfID = buf.DecodeUint32()
+               m.Route.Paths[j1].Weight = buf.DecodeUint8()
+               m.Route.Paths[j1].Preference = buf.DecodeUint8()
+               m.Route.Paths[j1].Type = fib_types.FibPathType(buf.DecodeUint32())
+               m.Route.Paths[j1].Flags = fib_types.FibPathFlags(buf.DecodeUint32())
+               m.Route.Paths[j1].Proto = fib_types.FibPathNhProto(buf.DecodeUint32())
+               copy(m.Route.Paths[j1].Nh.Address.XXX_UnionData[:], buf.DecodeBytes(16))
+               m.Route.Paths[j1].Nh.ViaLabel = buf.DecodeUint32()
+               m.Route.Paths[j1].Nh.ObjID = buf.DecodeUint32()
+               m.Route.Paths[j1].Nh.ClassifyTableIndex = buf.DecodeUint32()
+               m.Route.Paths[j1].NLabels = buf.DecodeUint8()
+               for j2 := 0; j2 < 16; j2++ {
+                       m.Route.Paths[j1].LabelStack[j2].IsUniform = buf.DecodeUint8()
+                       m.Route.Paths[j1].LabelStack[j2].Label = buf.DecodeUint32()
+                       m.Route.Paths[j1].LabelStack[j2].TTL = buf.DecodeUint8()
+                       m.Route.Paths[j1].LabelStack[j2].Exp = buf.DecodeUint8()
+               }
+       }
        return nil
 }
 
-// IPRouteLookupReply defines message 'ip_route_lookup_reply'.
-type IPRouteLookupReply struct {
-       Retval int32   `binapi:"i32,name=retval" json:"retval,omitempty"`
-       Route  IPRoute `binapi:"ip_route,name=route" json:"route,omitempty"`
+// IPRouteV2Details defines message 'ip_route_v2_details'.
+// InProgress: the message form may change in the future versions
+type IPRouteV2Details struct {
+       Route IPRouteV2 `binapi:"ip_route_v2,name=route" json:"route,omitempty"`
 }
 
-func (m *IPRouteLookupReply) Reset()               { *m = IPRouteLookupReply{} }
-func (*IPRouteLookupReply) GetMessageName() string { return "ip_route_lookup_reply" }
-func (*IPRouteLookupReply) GetCrcString() string   { return "ae99de8e" }
-func (*IPRouteLookupReply) GetMessageType() api.MessageType {
+func (m *IPRouteV2Details) Reset()               { *m = IPRouteV2Details{} }
+func (*IPRouteV2Details) GetMessageName() string { return "ip_route_v2_details" }
+func (*IPRouteV2Details) GetCrcString() string   { return "b09aa6c0" }
+func (*IPRouteV2Details) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 
-func (m *IPRouteLookupReply) Size() (size int) {
+func (m *IPRouteV2Details) Size() (size int) {
        if m == nil {
                return 0
        }
-       size += 4      // m.Retval
        size += 4      // m.Route.TableID
        size += 4      // m.Route.StatsIndex
        size += 1      // m.Route.Prefix.Address.Af
        size += 1 * 16 // m.Route.Prefix.Address.Un
        size += 1      // m.Route.Prefix.Len
        size += 1      // m.Route.NPaths
+       size += 1      // m.Route.Src
        for j2 := 0; j2 < len(m.Route.Paths); j2++ {
                var s2 fib_types.FibPath
                _ = s2
@@ -1874,18 +2749,18 @@ func (m *IPRouteLookupReply) Size() (size int) {
        }
        return size
 }
-func (m *IPRouteLookupReply) Marshal(b []byte) ([]byte, error) {
+func (m *IPRouteV2Details) Marshal(b []byte) ([]byte, error) {
        if b == nil {
                b = make([]byte, m.Size())
        }
        buf := codec.NewBuffer(b)
-       buf.EncodeInt32(m.Retval)
        buf.EncodeUint32(m.Route.TableID)
        buf.EncodeUint32(m.Route.StatsIndex)
        buf.EncodeUint8(uint8(m.Route.Prefix.Address.Af))
        buf.EncodeBytes(m.Route.Prefix.Address.Un.XXX_UnionData[:], 16)
        buf.EncodeUint8(m.Route.Prefix.Len)
        buf.EncodeUint8(uint8(len(m.Route.Paths)))
+       buf.EncodeUint8(m.Route.Src)
        for j1 := 0; j1 < len(m.Route.Paths); j1++ {
                var v1 fib_types.FibPath // Paths
                if j1 < len(m.Route.Paths) {
@@ -1913,15 +2788,15 @@ func (m *IPRouteLookupReply) Marshal(b []byte) ([]byte, error) {
        }
        return buf.Bytes(), nil
 }
-func (m *IPRouteLookupReply) Unmarshal(b []byte) error {
+func (m *IPRouteV2Details) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
-       m.Retval = buf.DecodeInt32()
        m.Route.TableID = buf.DecodeUint32()
        m.Route.StatsIndex = buf.DecodeUint32()
        m.Route.Prefix.Address.Af = ip_types.AddressFamily(buf.DecodeUint8())
        copy(m.Route.Prefix.Address.Un.XXX_UnionData[:], buf.DecodeBytes(16))
        m.Route.Prefix.Len = buf.DecodeUint8()
        m.Route.NPaths = buf.DecodeUint8()
+       m.Route.Src = buf.DecodeUint8()
        m.Route.Paths = make([]fib_types.FibPath, m.Route.NPaths)
        for j1 := 0; j1 < len(m.Route.Paths); j1++ {
                m.Route.Paths[j1].SwIfIndex = buf.DecodeUint32()
@@ -1947,6 +2822,50 @@ func (m *IPRouteLookupReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// IPRouteV2Dump defines message 'ip_route_v2_dump'.
+// InProgress: the message form may change in the future versions
+type IPRouteV2Dump struct {
+       Src   uint8   `binapi:"u8,name=src" json:"src,omitempty"`
+       Table IPTable `binapi:"ip_table,name=table" json:"table,omitempty"`
+}
+
+func (m *IPRouteV2Dump) Reset()               { *m = IPRouteV2Dump{} }
+func (*IPRouteV2Dump) GetMessageName() string { return "ip_route_v2_dump" }
+func (*IPRouteV2Dump) GetCrcString() string   { return "d16f72e6" }
+func (*IPRouteV2Dump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *IPRouteV2Dump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1  // m.Src
+       size += 4  // m.Table.TableID
+       size += 1  // m.Table.IsIP6
+       size += 64 // m.Table.Name
+       return size
+}
+func (m *IPRouteV2Dump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(m.Src)
+       buf.EncodeUint32(m.Table.TableID)
+       buf.EncodeBool(m.Table.IsIP6)
+       buf.EncodeString(m.Table.Name, 64)
+       return buf.Bytes(), nil
+}
+func (m *IPRouteV2Dump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Src = buf.DecodeUint8()
+       m.Table.TableID = buf.DecodeUint32()
+       m.Table.IsIP6 = buf.DecodeBool()
+       m.Table.Name = buf.DecodeString(64)
+       return nil
+}
+
 // IPSourceAndPortRangeCheckAddDel defines message 'ip_source_and_port_range_check_add_del'.
 type IPSourceAndPortRangeCheckAddDel struct {
        IsAdd          bool            `binapi:"bool,name=is_add,default=true" json:"is_add,omitempty"`
@@ -1961,7 +2880,7 @@ func (m *IPSourceAndPortRangeCheckAddDel) Reset() { *m = IPSourceAndPortRangeChe
 func (*IPSourceAndPortRangeCheckAddDel) GetMessageName() string {
        return "ip_source_and_port_range_check_add_del"
 }
-func (*IPSourceAndPortRangeCheckAddDel) GetCrcString() string { return "8bfc76f2" }
+func (*IPSourceAndPortRangeCheckAddDel) GetCrcString() string { return "92a067e3" }
 func (*IPSourceAndPortRangeCheckAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -2521,7 +3440,7 @@ type IPUnnumberedDetails struct {
 
 func (m *IPUnnumberedDetails) Reset()               { *m = IPUnnumberedDetails{} }
 func (*IPUnnumberedDetails) GetMessageName() string { return "ip_unnumbered_details" }
-func (*IPUnnumberedDetails) GetCrcString() string   { return "aa12a483" }
+func (*IPUnnumberedDetails) GetCrcString() string   { return "cc59bd42" }
 func (*IPUnnumberedDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -2594,7 +3513,7 @@ type MfibSignalDetails struct {
 
 func (m *MfibSignalDetails) Reset()               { *m = MfibSignalDetails{} }
 func (*MfibSignalDetails) GetMessageName() string { return "mfib_signal_details" }
-func (*MfibSignalDetails) GetCrcString() string   { return "64398a9a" }
+func (*MfibSignalDetails) GetCrcString() string   { return "6f4a4cfb" }
 func (*MfibSignalDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -2670,6 +3589,7 @@ func (m *MfibSignalDump) Unmarshal(b []byte) error {
 }
 
 // SetIPFlowHash defines message 'set_ip_flow_hash'.
+// Deprecated: the message will be removed in the future versions
 type SetIPFlowHash struct {
        VrfID     uint32 `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
        IsIPv6    bool   `binapi:"bool,name=is_ipv6" json:"is_ipv6,omitempty"`
@@ -2735,6 +3655,7 @@ func (m *SetIPFlowHash) Unmarshal(b []byte) error {
 }
 
 // SetIPFlowHashReply defines message 'set_ip_flow_hash_reply'.
+// Deprecated: the message will be removed in the future versions
 type SetIPFlowHashReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -2767,6 +3688,146 @@ func (m *SetIPFlowHashReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// SetIPFlowHashRouterID defines message 'set_ip_flow_hash_router_id'.
+type SetIPFlowHashRouterID struct {
+       RouterID uint32 `binapi:"u32,name=router_id" json:"router_id,omitempty"`
+}
+
+func (m *SetIPFlowHashRouterID) Reset()               { *m = SetIPFlowHashRouterID{} }
+func (*SetIPFlowHashRouterID) GetMessageName() string { return "set_ip_flow_hash_router_id" }
+func (*SetIPFlowHashRouterID) GetCrcString() string   { return "03e4f48e" }
+func (*SetIPFlowHashRouterID) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *SetIPFlowHashRouterID) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.RouterID
+       return size
+}
+func (m *SetIPFlowHashRouterID) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.RouterID)
+       return buf.Bytes(), nil
+}
+func (m *SetIPFlowHashRouterID) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.RouterID = buf.DecodeUint32()
+       return nil
+}
+
+// SetIPFlowHashRouterIDReply defines message 'set_ip_flow_hash_router_id_reply'.
+type SetIPFlowHashRouterIDReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *SetIPFlowHashRouterIDReply) Reset()               { *m = SetIPFlowHashRouterIDReply{} }
+func (*SetIPFlowHashRouterIDReply) GetMessageName() string { return "set_ip_flow_hash_router_id_reply" }
+func (*SetIPFlowHashRouterIDReply) GetCrcString() string   { return "e8d4e804" }
+func (*SetIPFlowHashRouterIDReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *SetIPFlowHashRouterIDReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *SetIPFlowHashRouterIDReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *SetIPFlowHashRouterIDReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// SetIPFlowHashV2 defines message 'set_ip_flow_hash_v2'.
+type SetIPFlowHashV2 struct {
+       TableID        uint32                 `binapi:"u32,name=table_id" json:"table_id,omitempty"`
+       Af             ip_types.AddressFamily `binapi:"address_family,name=af" json:"af,omitempty"`
+       FlowHashConfig IPFlowHashConfig       `binapi:"ip_flow_hash_config,name=flow_hash_config" json:"flow_hash_config,omitempty"`
+}
+
+func (m *SetIPFlowHashV2) Reset()               { *m = SetIPFlowHashV2{} }
+func (*SetIPFlowHashV2) GetMessageName() string { return "set_ip_flow_hash_v2" }
+func (*SetIPFlowHashV2) GetCrcString() string   { return "6d132100" }
+func (*SetIPFlowHashV2) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *SetIPFlowHashV2) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.TableID
+       size += 1 // m.Af
+       size += 4 // m.FlowHashConfig
+       return size
+}
+func (m *SetIPFlowHashV2) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.TableID)
+       buf.EncodeUint8(uint8(m.Af))
+       buf.EncodeUint32(uint32(m.FlowHashConfig))
+       return buf.Bytes(), nil
+}
+func (m *SetIPFlowHashV2) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.TableID = buf.DecodeUint32()
+       m.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       m.FlowHashConfig = IPFlowHashConfig(buf.DecodeUint32())
+       return nil
+}
+
+// SetIPFlowHashV2Reply defines message 'set_ip_flow_hash_v2_reply'.
+type SetIPFlowHashV2Reply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *SetIPFlowHashV2Reply) Reset()               { *m = SetIPFlowHashV2Reply{} }
+func (*SetIPFlowHashV2Reply) GetMessageName() string { return "set_ip_flow_hash_v2_reply" }
+func (*SetIPFlowHashV2Reply) GetCrcString() string   { return "e8d4e804" }
+func (*SetIPFlowHashV2Reply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *SetIPFlowHashV2Reply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *SetIPFlowHashV2Reply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *SetIPFlowHashV2Reply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
 // SwInterfaceIP6EnableDisable defines message 'sw_interface_ip6_enable_disable'.
 type SwInterfaceIP6EnableDisable struct {
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
@@ -2839,6 +3900,82 @@ func (m *SwInterfaceIP6EnableDisableReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// SwInterfaceIP6GetLinkLocalAddress defines message 'sw_interface_ip6_get_link_local_address'.
+type SwInterfaceIP6GetLinkLocalAddress struct {
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *SwInterfaceIP6GetLinkLocalAddress) Reset() { *m = SwInterfaceIP6GetLinkLocalAddress{} }
+func (*SwInterfaceIP6GetLinkLocalAddress) GetMessageName() string {
+       return "sw_interface_ip6_get_link_local_address"
+}
+func (*SwInterfaceIP6GetLinkLocalAddress) GetCrcString() string { return "f9e6675e" }
+func (*SwInterfaceIP6GetLinkLocalAddress) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *SwInterfaceIP6GetLinkLocalAddress) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *SwInterfaceIP6GetLinkLocalAddress) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *SwInterfaceIP6GetLinkLocalAddress) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// SwInterfaceIP6GetLinkLocalAddressReply defines message 'sw_interface_ip6_get_link_local_address_reply'.
+type SwInterfaceIP6GetLinkLocalAddressReply struct {
+       Retval int32               `binapi:"i32,name=retval" json:"retval,omitempty"`
+       IP     ip_types.IP6Address `binapi:"ip6_address,name=ip" json:"ip,omitempty"`
+}
+
+func (m *SwInterfaceIP6GetLinkLocalAddressReply) Reset() {
+       *m = SwInterfaceIP6GetLinkLocalAddressReply{}
+}
+func (*SwInterfaceIP6GetLinkLocalAddressReply) GetMessageName() string {
+       return "sw_interface_ip6_get_link_local_address_reply"
+}
+func (*SwInterfaceIP6GetLinkLocalAddressReply) GetCrcString() string { return "d16b7130" }
+func (*SwInterfaceIP6GetLinkLocalAddressReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *SwInterfaceIP6GetLinkLocalAddressReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4      // m.Retval
+       size += 1 * 16 // m.IP
+       return size
+}
+func (m *SwInterfaceIP6GetLinkLocalAddressReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeBytes(m.IP[:], 16)
+       return buf.Bytes(), nil
+}
+func (m *SwInterfaceIP6GetLinkLocalAddressReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       copy(m.IP[:], buf.DecodeBytes(16))
+       return nil
+}
+
 // SwInterfaceIP6SetLinkLocalAddress defines message 'sw_interface_ip6_set_link_local_address'.
 type SwInterfaceIP6SetLinkLocalAddress struct {
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
@@ -2849,7 +3986,7 @@ func (m *SwInterfaceIP6SetLinkLocalAddress) Reset() { *m = SwInterfaceIP6SetLink
 func (*SwInterfaceIP6SetLinkLocalAddress) GetMessageName() string {
        return "sw_interface_ip6_set_link_local_address"
 }
-func (*SwInterfaceIP6SetLinkLocalAddress) GetCrcString() string { return "2931d9fa" }
+func (*SwInterfaceIP6SetLinkLocalAddress) GetCrcString() string { return "1c10f15f" }
 func (*SwInterfaceIP6SetLinkLocalAddress) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -2921,39 +4058,54 @@ func file_ip_binapi_init() {
        api.RegisterMessage((*IoamDisableReply)(nil), "ioam_disable_reply_e8d4e804")
        api.RegisterMessage((*IoamEnable)(nil), "ioam_enable_51ccd868")
        api.RegisterMessage((*IoamEnableReply)(nil), "ioam_enable_reply_e8d4e804")
-       api.RegisterMessage((*IPAddressDetails)(nil), "ip_address_details_b1199745")
+       api.RegisterMessage((*IPAddressDetails)(nil), "ip_address_details_ee29b797")
        api.RegisterMessage((*IPAddressDump)(nil), "ip_address_dump_2d033de4")
-       api.RegisterMessage((*IPContainerProxyAddDel)(nil), "ip_container_proxy_add_del_91189f40")
+       api.RegisterMessage((*IPContainerProxyAddDel)(nil), "ip_container_proxy_add_del_7df1dff1")
        api.RegisterMessage((*IPContainerProxyAddDelReply)(nil), "ip_container_proxy_add_del_reply_e8d4e804")
-       api.RegisterMessage((*IPContainerProxyDetails)(nil), "ip_container_proxy_details_0ee460e8")
+       api.RegisterMessage((*IPContainerProxyDetails)(nil), "ip_container_proxy_details_a8085523")
        api.RegisterMessage((*IPContainerProxyDump)(nil), "ip_container_proxy_dump_51077d14")
        api.RegisterMessage((*IPDetails)(nil), "ip_details_eb152d07")
        api.RegisterMessage((*IPDump)(nil), "ip_dump_98d231ca")
-       api.RegisterMessage((*IPMrouteAddDel)(nil), "ip_mroute_add_del_f6627d17")
+       api.RegisterMessage((*IPMrouteAddDel)(nil), "ip_mroute_add_del_0dd7e790")
        api.RegisterMessage((*IPMrouteAddDelReply)(nil), "ip_mroute_add_del_reply_1992deab")
-       api.RegisterMessage((*IPMrouteDetails)(nil), "ip_mroute_details_c1cb4b44")
+       api.RegisterMessage((*IPMrouteDetails)(nil), "ip_mroute_details_c5cb23fc")
        api.RegisterMessage((*IPMrouteDump)(nil), "ip_mroute_dump_b9d2e09e")
        api.RegisterMessage((*IPMtableDetails)(nil), "ip_mtable_details_b9d2e09e")
        api.RegisterMessage((*IPMtableDump)(nil), "ip_mtable_dump_51077d14")
+       api.RegisterMessage((*IPPathMtuDetails)(nil), "ip_path_mtu_details_ac9539a7")
+       api.RegisterMessage((*IPPathMtuGet)(nil), "ip_path_mtu_get_f75ba505")
+       api.RegisterMessage((*IPPathMtuGetReply)(nil), "ip_path_mtu_get_reply_53b48f5d")
+       api.RegisterMessage((*IPPathMtuReplaceBegin)(nil), "ip_path_mtu_replace_begin_51077d14")
+       api.RegisterMessage((*IPPathMtuReplaceBeginReply)(nil), "ip_path_mtu_replace_begin_reply_e8d4e804")
+       api.RegisterMessage((*IPPathMtuReplaceEnd)(nil), "ip_path_mtu_replace_end_51077d14")
+       api.RegisterMessage((*IPPathMtuReplaceEndReply)(nil), "ip_path_mtu_replace_end_reply_e8d4e804")
+       api.RegisterMessage((*IPPathMtuUpdate)(nil), "ip_path_mtu_update_10bbe5cb")
+       api.RegisterMessage((*IPPathMtuUpdateReply)(nil), "ip_path_mtu_update_reply_e8d4e804")
        api.RegisterMessage((*IPPuntPolice)(nil), "ip_punt_police_db867cea")
        api.RegisterMessage((*IPPuntPoliceReply)(nil), "ip_punt_police_reply_e8d4e804")
-       api.RegisterMessage((*IPPuntRedirect)(nil), "ip_punt_redirect_a9a5592c")
-       api.RegisterMessage((*IPPuntRedirectDetails)(nil), "ip_punt_redirect_details_3924f5d3")
+       api.RegisterMessage((*IPPuntRedirect)(nil), "ip_punt_redirect_6580f635")
+       api.RegisterMessage((*IPPuntRedirectDetails)(nil), "ip_punt_redirect_details_2cef63e7")
        api.RegisterMessage((*IPPuntRedirectDump)(nil), "ip_punt_redirect_dump_2d033de4")
        api.RegisterMessage((*IPPuntRedirectReply)(nil), "ip_punt_redirect_reply_e8d4e804")
-       api.RegisterMessage((*IPReassemblyEnableDisable)(nil), "ip_reassembly_enable_disable_885c85a6")
+       api.RegisterMessage((*IPReassemblyEnableDisable)(nil), "ip_reassembly_enable_disable_eb77968d")
        api.RegisterMessage((*IPReassemblyEnableDisableReply)(nil), "ip_reassembly_enable_disable_reply_e8d4e804")
        api.RegisterMessage((*IPReassemblyGet)(nil), "ip_reassembly_get_ea13ff63")
        api.RegisterMessage((*IPReassemblyGetReply)(nil), "ip_reassembly_get_reply_d5eb8d34")
        api.RegisterMessage((*IPReassemblySet)(nil), "ip_reassembly_set_16467d25")
        api.RegisterMessage((*IPReassemblySetReply)(nil), "ip_reassembly_set_reply_e8d4e804")
-       api.RegisterMessage((*IPRouteAddDel)(nil), "ip_route_add_del_c1ff832d")
+       api.RegisterMessage((*IPRouteAddDel)(nil), "ip_route_add_del_b8ecfe0d")
        api.RegisterMessage((*IPRouteAddDelReply)(nil), "ip_route_add_del_reply_1992deab")
-       api.RegisterMessage((*IPRouteDetails)(nil), "ip_route_details_d1ffaae1")
+       api.RegisterMessage((*IPRouteAddDelV2)(nil), "ip_route_add_del_v2_521ef330")
+       api.RegisterMessage((*IPRouteAddDelV2Reply)(nil), "ip_route_add_del_v2_reply_1992deab")
+       api.RegisterMessage((*IPRouteDetails)(nil), "ip_route_details_bda8f315")
        api.RegisterMessage((*IPRouteDump)(nil), "ip_route_dump_b9d2e09e")
-       api.RegisterMessage((*IPRouteLookup)(nil), "ip_route_lookup_e2986185")
-       api.RegisterMessage((*IPRouteLookupReply)(nil), "ip_route_lookup_reply_ae99de8e")
-       api.RegisterMessage((*IPSourceAndPortRangeCheckAddDel)(nil), "ip_source_and_port_range_check_add_del_8bfc76f2")
+       api.RegisterMessage((*IPRouteLookup)(nil), "ip_route_lookup_710d6471")
+       api.RegisterMessage((*IPRouteLookupReply)(nil), "ip_route_lookup_reply_5d8febcb")
+       api.RegisterMessage((*IPRouteLookupV2)(nil), "ip_route_lookup_v2_710d6471")
+       api.RegisterMessage((*IPRouteLookupV2Reply)(nil), "ip_route_lookup_v2_reply_84cc9e03")
+       api.RegisterMessage((*IPRouteV2Details)(nil), "ip_route_v2_details_b09aa6c0")
+       api.RegisterMessage((*IPRouteV2Dump)(nil), "ip_route_v2_dump_d16f72e6")
+       api.RegisterMessage((*IPSourceAndPortRangeCheckAddDel)(nil), "ip_source_and_port_range_check_add_del_92a067e3")
        api.RegisterMessage((*IPSourceAndPortRangeCheckAddDelReply)(nil), "ip_source_and_port_range_check_add_del_reply_e8d4e804")
        api.RegisterMessage((*IPSourceAndPortRangeCheckInterfaceAddDel)(nil), "ip_source_and_port_range_check_interface_add_del_e1ba8987")
        api.RegisterMessage((*IPSourceAndPortRangeCheckInterfaceAddDelReply)(nil), "ip_source_and_port_range_check_interface_add_del_reply_e8d4e804")
@@ -2967,15 +4119,21 @@ func file_ip_binapi_init() {
        api.RegisterMessage((*IPTableReplaceBeginReply)(nil), "ip_table_replace_begin_reply_e8d4e804")
        api.RegisterMessage((*IPTableReplaceEnd)(nil), "ip_table_replace_end_b9d2e09e")
        api.RegisterMessage((*IPTableReplaceEndReply)(nil), "ip_table_replace_end_reply_e8d4e804")
-       api.RegisterMessage((*IPUnnumberedDetails)(nil), "ip_unnumbered_details_aa12a483")
+       api.RegisterMessage((*IPUnnumberedDetails)(nil), "ip_unnumbered_details_cc59bd42")
        api.RegisterMessage((*IPUnnumberedDump)(nil), "ip_unnumbered_dump_f9e6675e")
-       api.RegisterMessage((*MfibSignalDetails)(nil), "mfib_signal_details_64398a9a")
+       api.RegisterMessage((*MfibSignalDetails)(nil), "mfib_signal_details_6f4a4cfb")
        api.RegisterMessage((*MfibSignalDump)(nil), "mfib_signal_dump_51077d14")
        api.RegisterMessage((*SetIPFlowHash)(nil), "set_ip_flow_hash_084ee09e")
        api.RegisterMessage((*SetIPFlowHashReply)(nil), "set_ip_flow_hash_reply_e8d4e804")
+       api.RegisterMessage((*SetIPFlowHashRouterID)(nil), "set_ip_flow_hash_router_id_03e4f48e")
+       api.RegisterMessage((*SetIPFlowHashRouterIDReply)(nil), "set_ip_flow_hash_router_id_reply_e8d4e804")
+       api.RegisterMessage((*SetIPFlowHashV2)(nil), "set_ip_flow_hash_v2_6d132100")
+       api.RegisterMessage((*SetIPFlowHashV2Reply)(nil), "set_ip_flow_hash_v2_reply_e8d4e804")
        api.RegisterMessage((*SwInterfaceIP6EnableDisable)(nil), "sw_interface_ip6_enable_disable_ae6cfcfb")
        api.RegisterMessage((*SwInterfaceIP6EnableDisableReply)(nil), "sw_interface_ip6_enable_disable_reply_e8d4e804")
-       api.RegisterMessage((*SwInterfaceIP6SetLinkLocalAddress)(nil), "sw_interface_ip6_set_link_local_address_2931d9fa")
+       api.RegisterMessage((*SwInterfaceIP6GetLinkLocalAddress)(nil), "sw_interface_ip6_get_link_local_address_f9e6675e")
+       api.RegisterMessage((*SwInterfaceIP6GetLinkLocalAddressReply)(nil), "sw_interface_ip6_get_link_local_address_reply_d16b7130")
+       api.RegisterMessage((*SwInterfaceIP6SetLinkLocalAddress)(nil), "sw_interface_ip6_set_link_local_address_1c10f15f")
        api.RegisterMessage((*SwInterfaceIP6SetLinkLocalAddressReply)(nil), "sw_interface_ip6_set_link_local_address_reply_e8d4e804")
 }
 
@@ -3000,6 +4158,15 @@ func AllMessages() []api.Message {
                (*IPMrouteDump)(nil),
                (*IPMtableDetails)(nil),
                (*IPMtableDump)(nil),
+               (*IPPathMtuDetails)(nil),
+               (*IPPathMtuGet)(nil),
+               (*IPPathMtuGetReply)(nil),
+               (*IPPathMtuReplaceBegin)(nil),
+               (*IPPathMtuReplaceBeginReply)(nil),
+               (*IPPathMtuReplaceEnd)(nil),
+               (*IPPathMtuReplaceEndReply)(nil),
+               (*IPPathMtuUpdate)(nil),
+               (*IPPathMtuUpdateReply)(nil),
                (*IPPuntPolice)(nil),
                (*IPPuntPoliceReply)(nil),
                (*IPPuntRedirect)(nil),
@@ -3014,10 +4181,16 @@ func AllMessages() []api.Message {
                (*IPReassemblySetReply)(nil),
                (*IPRouteAddDel)(nil),
                (*IPRouteAddDelReply)(nil),
+               (*IPRouteAddDelV2)(nil),
+               (*IPRouteAddDelV2Reply)(nil),
                (*IPRouteDetails)(nil),
                (*IPRouteDump)(nil),
                (*IPRouteLookup)(nil),
                (*IPRouteLookupReply)(nil),
+               (*IPRouteLookupV2)(nil),
+               (*IPRouteLookupV2Reply)(nil),
+               (*IPRouteV2Details)(nil),
+               (*IPRouteV2Dump)(nil),
                (*IPSourceAndPortRangeCheckAddDel)(nil),
                (*IPSourceAndPortRangeCheckAddDelReply)(nil),
                (*IPSourceAndPortRangeCheckInterfaceAddDel)(nil),
@@ -3038,8 +4211,14 @@ func AllMessages() []api.Message {
                (*MfibSignalDump)(nil),
                (*SetIPFlowHash)(nil),
                (*SetIPFlowHashReply)(nil),
+               (*SetIPFlowHashRouterID)(nil),
+               (*SetIPFlowHashRouterIDReply)(nil),
+               (*SetIPFlowHashV2)(nil),
+               (*SetIPFlowHashV2Reply)(nil),
                (*SwInterfaceIP6EnableDisable)(nil),
                (*SwInterfaceIP6EnableDisableReply)(nil),
+               (*SwInterfaceIP6GetLinkLocalAddress)(nil),
+               (*SwInterfaceIP6GetLinkLocalAddressReply)(nil),
                (*SwInterfaceIP6SetLinkLocalAddress)(nil),
                (*SwInterfaceIP6SetLinkLocalAddressReply)(nil),
        }
index 32ea1b5..6429f0c 100644 (file)
@@ -22,6 +22,10 @@ type RPCService interface {
        IPMrouteAddDel(ctx context.Context, in *IPMrouteAddDel) (*IPMrouteAddDelReply, error)
        IPMrouteDump(ctx context.Context, in *IPMrouteDump) (RPCService_IPMrouteDumpClient, error)
        IPMtableDump(ctx context.Context, in *IPMtableDump) (RPCService_IPMtableDumpClient, error)
+       IPPathMtuGet(ctx context.Context, in *IPPathMtuGet) (RPCService_IPPathMtuGetClient, error)
+       IPPathMtuReplaceBegin(ctx context.Context, in *IPPathMtuReplaceBegin) (*IPPathMtuReplaceBeginReply, error)
+       IPPathMtuReplaceEnd(ctx context.Context, in *IPPathMtuReplaceEnd) (*IPPathMtuReplaceEndReply, error)
+       IPPathMtuUpdate(ctx context.Context, in *IPPathMtuUpdate) (*IPPathMtuUpdateReply, error)
        IPPuntPolice(ctx context.Context, in *IPPuntPolice) (*IPPuntPoliceReply, error)
        IPPuntRedirect(ctx context.Context, in *IPPuntRedirect) (*IPPuntRedirectReply, error)
        IPPuntRedirectDump(ctx context.Context, in *IPPuntRedirectDump) (RPCService_IPPuntRedirectDumpClient, error)
@@ -29,8 +33,11 @@ type RPCService interface {
        IPReassemblyGet(ctx context.Context, in *IPReassemblyGet) (*IPReassemblyGetReply, error)
        IPReassemblySet(ctx context.Context, in *IPReassemblySet) (*IPReassemblySetReply, error)
        IPRouteAddDel(ctx context.Context, in *IPRouteAddDel) (*IPRouteAddDelReply, error)
+       IPRouteAddDelV2(ctx context.Context, in *IPRouteAddDelV2) (*IPRouteAddDelV2Reply, error)
        IPRouteDump(ctx context.Context, in *IPRouteDump) (RPCService_IPRouteDumpClient, error)
        IPRouteLookup(ctx context.Context, in *IPRouteLookup) (*IPRouteLookupReply, error)
+       IPRouteLookupV2(ctx context.Context, in *IPRouteLookupV2) (*IPRouteLookupV2Reply, error)
+       IPRouteV2Dump(ctx context.Context, in *IPRouteV2Dump) (RPCService_IPRouteV2DumpClient, error)
        IPSourceAndPortRangeCheckAddDel(ctx context.Context, in *IPSourceAndPortRangeCheckAddDel) (*IPSourceAndPortRangeCheckAddDelReply, error)
        IPSourceAndPortRangeCheckInterfaceAddDel(ctx context.Context, in *IPSourceAndPortRangeCheckInterfaceAddDel) (*IPSourceAndPortRangeCheckInterfaceAddDelReply, error)
        IPTableAddDel(ctx context.Context, in *IPTableAddDel) (*IPTableAddDelReply, error)
@@ -41,7 +48,10 @@ type RPCService interface {
        IPUnnumberedDump(ctx context.Context, in *IPUnnumberedDump) (RPCService_IPUnnumberedDumpClient, error)
        MfibSignalDump(ctx context.Context, in *MfibSignalDump) (RPCService_MfibSignalDumpClient, error)
        SetIPFlowHash(ctx context.Context, in *SetIPFlowHash) (*SetIPFlowHashReply, error)
+       SetIPFlowHashRouterID(ctx context.Context, in *SetIPFlowHashRouterID) (*SetIPFlowHashRouterIDReply, error)
+       SetIPFlowHashV2(ctx context.Context, in *SetIPFlowHashV2) (*SetIPFlowHashV2Reply, error)
        SwInterfaceIP6EnableDisable(ctx context.Context, in *SwInterfaceIP6EnableDisable) (*SwInterfaceIP6EnableDisableReply, error)
+       SwInterfaceIP6GetLinkLocalAddress(ctx context.Context, in *SwInterfaceIP6GetLinkLocalAddress) (*SwInterfaceIP6GetLinkLocalAddressReply, error)
        SwInterfaceIP6SetLinkLocalAddress(ctx context.Context, in *SwInterfaceIP6SetLinkLocalAddress) (*SwInterfaceIP6SetLinkLocalAddressReply, error)
 }
 
@@ -284,6 +294,69 @@ func (c *serviceClient_IPMtableDumpClient) Recv() (*IPMtableDetails, error) {
        }
 }
 
+func (c *serviceClient) IPPathMtuGet(ctx context.Context, in *IPPathMtuGet) (RPCService_IPPathMtuGetClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_IPPathMtuGetClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_IPPathMtuGetClient interface {
+       Recv() (*IPPathMtuDetails, error)
+       api.Stream
+}
+
+type serviceClient_IPPathMtuGetClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_IPPathMtuGetClient) Recv() (*IPPathMtuDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *IPPathMtuDetails:
+               return m, nil
+       case *IPPathMtuGetReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) IPPathMtuReplaceBegin(ctx context.Context, in *IPPathMtuReplaceBegin) (*IPPathMtuReplaceBeginReply, error) {
+       out := new(IPPathMtuReplaceBeginReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) IPPathMtuReplaceEnd(ctx context.Context, in *IPPathMtuReplaceEnd) (*IPPathMtuReplaceEndReply, error) {
+       out := new(IPPathMtuReplaceEndReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) IPPathMtuUpdate(ctx context.Context, in *IPPathMtuUpdate) (*IPPathMtuUpdateReply, error) {
+       out := new(IPPathMtuUpdateReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) IPPuntPolice(ctx context.Context, in *IPPuntPolice) (*IPPuntPoliceReply, error) {
        out := new(IPPuntPoliceReply)
        err := c.conn.Invoke(ctx, in, out)
@@ -377,6 +450,15 @@ func (c *serviceClient) IPRouteAddDel(ctx context.Context, in *IPRouteAddDel) (*
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) IPRouteAddDelV2(ctx context.Context, in *IPRouteAddDelV2) (*IPRouteAddDelV2Reply, error) {
+       out := new(IPRouteAddDelV2Reply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) IPRouteDump(ctx context.Context, in *IPRouteDump) (RPCService_IPRouteDumpClient, error) {
        stream, err := c.conn.NewStream(ctx)
        if err != nil {
@@ -425,6 +507,54 @@ func (c *serviceClient) IPRouteLookup(ctx context.Context, in *IPRouteLookup) (*
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) IPRouteLookupV2(ctx context.Context, in *IPRouteLookupV2) (*IPRouteLookupV2Reply, error) {
+       out := new(IPRouteLookupV2Reply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) IPRouteV2Dump(ctx context.Context, in *IPRouteV2Dump) (RPCService_IPRouteV2DumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_IPRouteV2DumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_IPRouteV2DumpClient interface {
+       Recv() (*IPRouteV2Details, error)
+       api.Stream
+}
+
+type serviceClient_IPRouteV2DumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_IPRouteV2DumpClient) Recv() (*IPRouteV2Details, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *IPRouteV2Details:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
 func (c *serviceClient) IPSourceAndPortRangeCheckAddDel(ctx context.Context, in *IPSourceAndPortRangeCheckAddDel) (*IPSourceAndPortRangeCheckAddDelReply, error) {
        out := new(IPSourceAndPortRangeCheckAddDelReply)
        err := c.conn.Invoke(ctx, in, out)
@@ -605,6 +735,24 @@ func (c *serviceClient) SetIPFlowHash(ctx context.Context, in *SetIPFlowHash) (*
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) SetIPFlowHashRouterID(ctx context.Context, in *SetIPFlowHashRouterID) (*SetIPFlowHashRouterIDReply, error) {
+       out := new(SetIPFlowHashRouterIDReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) SetIPFlowHashV2(ctx context.Context, in *SetIPFlowHashV2) (*SetIPFlowHashV2Reply, error) {
+       out := new(SetIPFlowHashV2Reply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) SwInterfaceIP6EnableDisable(ctx context.Context, in *SwInterfaceIP6EnableDisable) (*SwInterfaceIP6EnableDisableReply, error) {
        out := new(SwInterfaceIP6EnableDisableReply)
        err := c.conn.Invoke(ctx, in, out)
@@ -614,6 +762,15 @@ func (c *serviceClient) SwInterfaceIP6EnableDisable(ctx context.Context, in *SwI
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) SwInterfaceIP6GetLinkLocalAddress(ctx context.Context, in *SwInterfaceIP6GetLinkLocalAddress) (*SwInterfaceIP6GetLinkLocalAddressReply, error) {
+       out := new(SwInterfaceIP6GetLinkLocalAddressReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) SwInterfaceIP6SetLinkLocalAddress(ctx context.Context, in *SwInterfaceIP6SetLinkLocalAddress) (*SwInterfaceIP6SetLinkLocalAddressReply, error) {
        out := new(SwInterfaceIP6SetLinkLocalAddressReply)
        err := c.conn.Invoke(ctx, in, out)
index 9149861..0f1f660 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/ip6_nd.api.json
 
 // Package ip6_nd contains generated bindings for API file ip6_nd.api.
@@ -28,7 +28,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "ip6_nd"
        APIVersion = "1.0.0"
-       VersionCrc = 0x877c10de
+       VersionCrc = 0x90f5895b
 )
 
 // IP6RaPrefixInfo defines type 'ip6_ra_prefix_info'.
@@ -55,7 +55,7 @@ type IP6RaEvent struct {
 
 func (m *IP6RaEvent) Reset()               { *m = IP6RaEvent{} }
 func (*IP6RaEvent) GetMessageName() string { return "ip6_ra_event" }
-func (*IP6RaEvent) GetCrcString() string   { return "47e8cfbe" }
+func (*IP6RaEvent) GetCrcString() string   { return "0364c1c5" }
 func (*IP6RaEvent) GetMessageType() api.MessageType {
        return api.EventMessage
 }
@@ -148,7 +148,7 @@ type IP6ndProxyAddDel struct {
 
 func (m *IP6ndProxyAddDel) Reset()               { *m = IP6ndProxyAddDel{} }
 func (*IP6ndProxyAddDel) GetMessageName() string { return "ip6nd_proxy_add_del" }
-func (*IP6ndProxyAddDel) GetCrcString() string   { return "3fdf6659" }
+func (*IP6ndProxyAddDel) GetCrcString() string   { return "c2e4a686" }
 func (*IP6ndProxyAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -221,7 +221,7 @@ type IP6ndProxyDetails struct {
 
 func (m *IP6ndProxyDetails) Reset()               { *m = IP6ndProxyDetails{} }
 func (*IP6ndProxyDetails) GetMessageName() string { return "ip6nd_proxy_details" }
-func (*IP6ndProxyDetails) GetCrcString() string   { return "d35be8ff" }
+func (*IP6ndProxyDetails) GetCrcString() string   { return "30b9ff4a" }
 func (*IP6ndProxyDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -501,7 +501,7 @@ type SwInterfaceIP6ndRaPrefix struct {
 
 func (m *SwInterfaceIP6ndRaPrefix) Reset()               { *m = SwInterfaceIP6ndRaPrefix{} }
 func (*SwInterfaceIP6ndRaPrefix) GetMessageName() string { return "sw_interface_ip6nd_ra_prefix" }
-func (*SwInterfaceIP6ndRaPrefix) GetCrcString() string   { return "e098785f" }
+func (*SwInterfaceIP6ndRaPrefix) GetCrcString() string   { return "82cc1b28" }
 func (*SwInterfaceIP6ndRaPrefix) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -667,16 +667,16 @@ func (m *WantIP6RaEventsReply) Unmarshal(b []byte) error {
 
 func init() { file_ip6_nd_binapi_init() }
 func file_ip6_nd_binapi_init() {
-       api.RegisterMessage((*IP6RaEvent)(nil), "ip6_ra_event_47e8cfbe")
-       api.RegisterMessage((*IP6ndProxyAddDel)(nil), "ip6nd_proxy_add_del_3fdf6659")
+       api.RegisterMessage((*IP6RaEvent)(nil), "ip6_ra_event_0364c1c5")
+       api.RegisterMessage((*IP6ndProxyAddDel)(nil), "ip6nd_proxy_add_del_c2e4a686")
        api.RegisterMessage((*IP6ndProxyAddDelReply)(nil), "ip6nd_proxy_add_del_reply_e8d4e804")
-       api.RegisterMessage((*IP6ndProxyDetails)(nil), "ip6nd_proxy_details_d35be8ff")
+       api.RegisterMessage((*IP6ndProxyDetails)(nil), "ip6nd_proxy_details_30b9ff4a")
        api.RegisterMessage((*IP6ndProxyDump)(nil), "ip6nd_proxy_dump_51077d14")
        api.RegisterMessage((*IP6ndSendRouterSolicitation)(nil), "ip6nd_send_router_solicitation_e5de609c")
        api.RegisterMessage((*IP6ndSendRouterSolicitationReply)(nil), "ip6nd_send_router_solicitation_reply_e8d4e804")
        api.RegisterMessage((*SwInterfaceIP6ndRaConfig)(nil), "sw_interface_ip6nd_ra_config_3eb00b1c")
        api.RegisterMessage((*SwInterfaceIP6ndRaConfigReply)(nil), "sw_interface_ip6nd_ra_config_reply_e8d4e804")
-       api.RegisterMessage((*SwInterfaceIP6ndRaPrefix)(nil), "sw_interface_ip6nd_ra_prefix_e098785f")
+       api.RegisterMessage((*SwInterfaceIP6ndRaPrefix)(nil), "sw_interface_ip6nd_ra_prefix_82cc1b28")
        api.RegisterMessage((*SwInterfaceIP6ndRaPrefixReply)(nil), "sw_interface_ip6nd_ra_prefix_reply_e8d4e804")
        api.RegisterMessage((*WantIP6RaEvents)(nil), "want_ip6_ra_events_3ec6d6c2")
        api.RegisterMessage((*WantIP6RaEventsReply)(nil), "want_ip6_ra_events_reply_e8d4e804")
index ec5b5ed..b06cb7e 100644 (file)
@@ -1,15 +1,15 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/ip_neighbor.api.json
 
 // Package ip_neighbor contains generated bindings for API file ip_neighbor.api.
 //
 // Contents:
-//   1 enum
+//   2 enums
 //   1 struct
-//  15 messages
+//  18 messages
 //
 package ip_neighbor
 
@@ -32,9 +32,55 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "ip_neighbor"
        APIVersion = "1.0.0"
-       VersionCrc = 0xe6512b94
+       VersionCrc = 0xfde4a69a
 )
 
+// IPNeighborEventFlags defines enum 'ip_neighbor_event_flags'.
+type IPNeighborEventFlags uint32
+
+const (
+       IP_NEIGHBOR_API_EVENT_FLAG_ADDED   IPNeighborEventFlags = 1
+       IP_NEIGHBOR_API_EVENT_FLAG_REMOVED IPNeighborEventFlags = 2
+)
+
+var (
+       IPNeighborEventFlags_name = map[uint32]string{
+               1: "IP_NEIGHBOR_API_EVENT_FLAG_ADDED",
+               2: "IP_NEIGHBOR_API_EVENT_FLAG_REMOVED",
+       }
+       IPNeighborEventFlags_value = map[string]uint32{
+               "IP_NEIGHBOR_API_EVENT_FLAG_ADDED":   1,
+               "IP_NEIGHBOR_API_EVENT_FLAG_REMOVED": 2,
+       }
+)
+
+func (x IPNeighborEventFlags) String() string {
+       s, ok := IPNeighborEventFlags_name[uint32(x)]
+       if ok {
+               return s
+       }
+       str := func(n uint32) string {
+               s, ok := IPNeighborEventFlags_name[uint32(n)]
+               if ok {
+                       return s
+               }
+               return "IPNeighborEventFlags(" + strconv.Itoa(int(n)) + ")"
+       }
+       for i := uint32(0); i <= 32; i++ {
+               val := uint32(x)
+               if val&(1<<i) != 0 {
+                       if s != "" {
+                               s += "|"
+                       }
+                       s += str(1 << i)
+               }
+       }
+       if s == "" {
+               return str(uint32(x))
+       }
+       return s
+}
+
 // IPNeighborFlags defines enum 'ip_neighbor_flags'.
 type IPNeighborFlags uint8
 
@@ -100,7 +146,7 @@ type IPNeighborAddDel struct {
 
 func (m *IPNeighborAddDel) Reset()               { *m = IPNeighborAddDel{} }
 func (*IPNeighborAddDel) GetMessageName() string { return "ip_neighbor_add_del" }
-func (*IPNeighborAddDel) GetCrcString() string   { return "105518b6" }
+func (*IPNeighborAddDel) GetCrcString() string   { return "0607c257" }
 func (*IPNeighborAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -264,7 +310,7 @@ type IPNeighborDetails struct {
 
 func (m *IPNeighborDetails) Reset()               { *m = IPNeighborDetails{} }
 func (*IPNeighborDetails) GetMessageName() string { return "ip_neighbor_details" }
-func (*IPNeighborDetails) GetCrcString() string   { return "870e80b9" }
+func (*IPNeighborDetails) GetCrcString() string   { return "e29d79f0" }
 func (*IPNeighborDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -313,7 +359,7 @@ type IPNeighborDump struct {
 
 func (m *IPNeighborDump) Reset()               { *m = IPNeighborDump{} }
 func (*IPNeighborDump) GetMessageName() string { return "ip_neighbor_dump" }
-func (*IPNeighborDump) GetCrcString() string   { return "cd831298" }
+func (*IPNeighborDump) GetCrcString() string   { return "d817a484" }
 func (*IPNeighborDump) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -343,6 +389,7 @@ func (m *IPNeighborDump) Unmarshal(b []byte) error {
 }
 
 // IPNeighborEvent defines message 'ip_neighbor_event'.
+// Deprecated: the message will be removed in the future versions
 type IPNeighborEvent struct {
        PID      uint32     `binapi:"u32,name=pid" json:"pid,omitempty"`
        Neighbor IPNeighbor `binapi:"ip_neighbor,name=neighbor" json:"neighbor,omitempty"`
@@ -350,7 +397,7 @@ type IPNeighborEvent struct {
 
 func (m *IPNeighborEvent) Reset()               { *m = IPNeighborEvent{} }
 func (*IPNeighborEvent) GetMessageName() string { return "ip_neighbor_event" }
-func (*IPNeighborEvent) GetCrcString() string   { return "83933131" }
+func (*IPNeighborEvent) GetCrcString() string   { return "bdb092b2" }
 func (*IPNeighborEvent) GetMessageType() api.MessageType {
        return api.EventMessage
 }
@@ -391,6 +438,59 @@ func (m *IPNeighborEvent) Unmarshal(b []byte) error {
        return nil
 }
 
+// IPNeighborEventV2 defines message 'ip_neighbor_event_v2'.
+type IPNeighborEventV2 struct {
+       PID      uint32               `binapi:"u32,name=pid" json:"pid,omitempty"`
+       Flags    IPNeighborEventFlags `binapi:"ip_neighbor_event_flags,name=flags" json:"flags,omitempty"`
+       Neighbor IPNeighbor           `binapi:"ip_neighbor,name=neighbor" json:"neighbor,omitempty"`
+}
+
+func (m *IPNeighborEventV2) Reset()               { *m = IPNeighborEventV2{} }
+func (*IPNeighborEventV2) GetMessageName() string { return "ip_neighbor_event_v2" }
+func (*IPNeighborEventV2) GetCrcString() string   { return "c1d53dc0" }
+func (*IPNeighborEventV2) GetMessageType() api.MessageType {
+       return api.EventMessage
+}
+
+func (m *IPNeighborEventV2) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4      // m.PID
+       size += 4      // m.Flags
+       size += 4      // m.Neighbor.SwIfIndex
+       size += 1      // m.Neighbor.Flags
+       size += 1 * 6  // m.Neighbor.MacAddress
+       size += 1      // m.Neighbor.IPAddress.Af
+       size += 1 * 16 // m.Neighbor.IPAddress.Un
+       return size
+}
+func (m *IPNeighborEventV2) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.PID)
+       buf.EncodeUint32(uint32(m.Flags))
+       buf.EncodeUint32(uint32(m.Neighbor.SwIfIndex))
+       buf.EncodeUint8(uint8(m.Neighbor.Flags))
+       buf.EncodeBytes(m.Neighbor.MacAddress[:], 6)
+       buf.EncodeUint8(uint8(m.Neighbor.IPAddress.Af))
+       buf.EncodeBytes(m.Neighbor.IPAddress.Un.XXX_UnionData[:], 16)
+       return buf.Bytes(), nil
+}
+func (m *IPNeighborEventV2) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.PID = buf.DecodeUint32()
+       m.Flags = IPNeighborEventFlags(buf.DecodeUint32())
+       m.Neighbor.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Neighbor.Flags = IPNeighborFlags(buf.DecodeUint8())
+       copy(m.Neighbor.MacAddress[:], buf.DecodeBytes(6))
+       m.Neighbor.IPAddress.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Neighbor.IPAddress.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       return nil
+}
+
 // IPNeighborFlush defines message 'ip_neighbor_flush'.
 type IPNeighborFlush struct {
        Af        ip_types.AddressFamily         `binapi:"address_family,name=af" json:"af,omitempty"`
@@ -582,6 +682,7 @@ func (m *IPNeighborReplaceEndReply) Unmarshal(b []byte) error {
 }
 
 // WantIPNeighborEvents defines message 'want_ip_neighbor_events'.
+// Deprecated: the message will be removed in the future versions
 type WantIPNeighborEvents struct {
        Enable    bool                           `binapi:"bool,name=enable" json:"enable,omitempty"`
        PID       uint32                         `binapi:"u32,name=pid" json:"pid,omitempty"`
@@ -591,7 +692,7 @@ type WantIPNeighborEvents struct {
 
 func (m *WantIPNeighborEvents) Reset()               { *m = WantIPNeighborEvents{} }
 func (*WantIPNeighborEvents) GetMessageName() string { return "want_ip_neighbor_events" }
-func (*WantIPNeighborEvents) GetCrcString() string   { return "1a312870" }
+func (*WantIPNeighborEvents) GetCrcString() string   { return "73e70a86" }
 func (*WantIPNeighborEvents) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -630,6 +731,7 @@ func (m *WantIPNeighborEvents) Unmarshal(b []byte) error {
 }
 
 // WantIPNeighborEventsReply defines message 'want_ip_neighbor_events_reply'.
+// Deprecated: the message will be removed in the future versions
 type WantIPNeighborEventsReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -662,23 +764,109 @@ func (m *WantIPNeighborEventsReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// WantIPNeighborEventsV2 defines message 'want_ip_neighbor_events_v2'.
+type WantIPNeighborEventsV2 struct {
+       Enable    bool                           `binapi:"bool,name=enable" json:"enable,omitempty"`
+       PID       uint32                         `binapi:"u32,name=pid" json:"pid,omitempty"`
+       IP        ip_types.Address               `binapi:"address,name=ip" json:"ip,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index,default=4294967295" json:"sw_if_index,omitempty"`
+}
+
+func (m *WantIPNeighborEventsV2) Reset()               { *m = WantIPNeighborEventsV2{} }
+func (*WantIPNeighborEventsV2) GetMessageName() string { return "want_ip_neighbor_events_v2" }
+func (*WantIPNeighborEventsV2) GetCrcString() string   { return "73e70a86" }
+func (*WantIPNeighborEventsV2) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *WantIPNeighborEventsV2) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1      // m.Enable
+       size += 4      // m.PID
+       size += 1      // m.IP.Af
+       size += 1 * 16 // m.IP.Un
+       size += 4      // m.SwIfIndex
+       return size
+}
+func (m *WantIPNeighborEventsV2) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.Enable)
+       buf.EncodeUint32(m.PID)
+       buf.EncodeUint8(uint8(m.IP.Af))
+       buf.EncodeBytes(m.IP.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *WantIPNeighborEventsV2) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Enable = buf.DecodeBool()
+       m.PID = buf.DecodeUint32()
+       m.IP.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.IP.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// WantIPNeighborEventsV2Reply defines message 'want_ip_neighbor_events_v2_reply'.
+type WantIPNeighborEventsV2Reply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *WantIPNeighborEventsV2Reply) Reset() { *m = WantIPNeighborEventsV2Reply{} }
+func (*WantIPNeighborEventsV2Reply) GetMessageName() string {
+       return "want_ip_neighbor_events_v2_reply"
+}
+func (*WantIPNeighborEventsV2Reply) GetCrcString() string { return "e8d4e804" }
+func (*WantIPNeighborEventsV2Reply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *WantIPNeighborEventsV2Reply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *WantIPNeighborEventsV2Reply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *WantIPNeighborEventsV2Reply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
 func init() { file_ip_neighbor_binapi_init() }
 func file_ip_neighbor_binapi_init() {
-       api.RegisterMessage((*IPNeighborAddDel)(nil), "ip_neighbor_add_del_105518b6")
+       api.RegisterMessage((*IPNeighborAddDel)(nil), "ip_neighbor_add_del_0607c257")
        api.RegisterMessage((*IPNeighborAddDelReply)(nil), "ip_neighbor_add_del_reply_1992deab")
        api.RegisterMessage((*IPNeighborConfig)(nil), "ip_neighbor_config_f4a5cf44")
        api.RegisterMessage((*IPNeighborConfigReply)(nil), "ip_neighbor_config_reply_e8d4e804")
-       api.RegisterMessage((*IPNeighborDetails)(nil), "ip_neighbor_details_870e80b9")
-       api.RegisterMessage((*IPNeighborDump)(nil), "ip_neighbor_dump_cd831298")
-       api.RegisterMessage((*IPNeighborEvent)(nil), "ip_neighbor_event_83933131")
+       api.RegisterMessage((*IPNeighborDetails)(nil), "ip_neighbor_details_e29d79f0")
+       api.RegisterMessage((*IPNeighborDump)(nil), "ip_neighbor_dump_d817a484")
+       api.RegisterMessage((*IPNeighborEvent)(nil), "ip_neighbor_event_bdb092b2")
+       api.RegisterMessage((*IPNeighborEventV2)(nil), "ip_neighbor_event_v2_c1d53dc0")
        api.RegisterMessage((*IPNeighborFlush)(nil), "ip_neighbor_flush_16aa35d2")
        api.RegisterMessage((*IPNeighborFlushReply)(nil), "ip_neighbor_flush_reply_e8d4e804")
        api.RegisterMessage((*IPNeighborReplaceBegin)(nil), "ip_neighbor_replace_begin_51077d14")
        api.RegisterMessage((*IPNeighborReplaceBeginReply)(nil), "ip_neighbor_replace_begin_reply_e8d4e804")
        api.RegisterMessage((*IPNeighborReplaceEnd)(nil), "ip_neighbor_replace_end_51077d14")
        api.RegisterMessage((*IPNeighborReplaceEndReply)(nil), "ip_neighbor_replace_end_reply_e8d4e804")
-       api.RegisterMessage((*WantIPNeighborEvents)(nil), "want_ip_neighbor_events_1a312870")
+       api.RegisterMessage((*WantIPNeighborEvents)(nil), "want_ip_neighbor_events_73e70a86")
        api.RegisterMessage((*WantIPNeighborEventsReply)(nil), "want_ip_neighbor_events_reply_e8d4e804")
+       api.RegisterMessage((*WantIPNeighborEventsV2)(nil), "want_ip_neighbor_events_v2_73e70a86")
+       api.RegisterMessage((*WantIPNeighborEventsV2Reply)(nil), "want_ip_neighbor_events_v2_reply_e8d4e804")
 }
 
 // Messages returns list of all messages in this module.
@@ -691,6 +879,7 @@ func AllMessages() []api.Message {
                (*IPNeighborDetails)(nil),
                (*IPNeighborDump)(nil),
                (*IPNeighborEvent)(nil),
+               (*IPNeighborEventV2)(nil),
                (*IPNeighborFlush)(nil),
                (*IPNeighborFlushReply)(nil),
                (*IPNeighborReplaceBegin)(nil),
@@ -699,5 +888,7 @@ func AllMessages() []api.Message {
                (*IPNeighborReplaceEndReply)(nil),
                (*WantIPNeighborEvents)(nil),
                (*WantIPNeighborEventsReply)(nil),
+               (*WantIPNeighborEventsV2)(nil),
+               (*WantIPNeighborEventsV2Reply)(nil),
        }
 }
index 94b2060..2ecde5e 100644 (file)
@@ -20,6 +20,7 @@ type RPCService interface {
        IPNeighborReplaceBegin(ctx context.Context, in *IPNeighborReplaceBegin) (*IPNeighborReplaceBeginReply, error)
        IPNeighborReplaceEnd(ctx context.Context, in *IPNeighborReplaceEnd) (*IPNeighborReplaceEndReply, error)
        WantIPNeighborEvents(ctx context.Context, in *WantIPNeighborEvents) (*WantIPNeighborEventsReply, error)
+       WantIPNeighborEventsV2(ctx context.Context, in *WantIPNeighborEventsV2) (*WantIPNeighborEventsV2Reply, error)
 }
 
 type serviceClient struct {
@@ -122,3 +123,12 @@ func (c *serviceClient) WantIPNeighborEvents(ctx context.Context, in *WantIPNeig
        }
        return out, api.RetvalToVPPApiError(out.Retval)
 }
+
+func (c *serviceClient) WantIPNeighborEventsV2(ctx context.Context, in *WantIPNeighborEventsV2) (*WantIPNeighborEventsV2Reply, error) {
+       out := new(WantIPNeighborEventsV2Reply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
index 3350fab..d03b0db 100644 (file)
@@ -1,15 +1,15 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/ip_types.api.json
 
 // Package ip_types contains generated bindings for API file ip_types.api.
 //
 // Contents:
 //   5 aliases
-//   4 enums
-//   6 structs
+//   5 enums
+//   8 structs
 //   1 union
 //
 package ip_types
@@ -174,6 +174,42 @@ func (x IPEcn) String() string {
        return "IPEcn(" + strconv.Itoa(int(x)) + ")"
 }
 
+// IPFeatureLocation defines enum 'ip_feature_location'.
+type IPFeatureLocation uint8
+
+const (
+       IP_API_FEATURE_INPUT  IPFeatureLocation = 0
+       IP_API_FEATURE_OUTPUT IPFeatureLocation = 1
+       IP_API_FEATURE_LOCAL  IPFeatureLocation = 2
+       IP_API_FEATURE_PUNT   IPFeatureLocation = 3
+       IP_API_FEATURE_DROP   IPFeatureLocation = 4
+)
+
+var (
+       IPFeatureLocation_name = map[uint8]string{
+               0: "IP_API_FEATURE_INPUT",
+               1: "IP_API_FEATURE_OUTPUT",
+               2: "IP_API_FEATURE_LOCAL",
+               3: "IP_API_FEATURE_PUNT",
+               4: "IP_API_FEATURE_DROP",
+       }
+       IPFeatureLocation_value = map[string]uint8{
+               "IP_API_FEATURE_INPUT":  0,
+               "IP_API_FEATURE_OUTPUT": 1,
+               "IP_API_FEATURE_LOCAL":  2,
+               "IP_API_FEATURE_PUNT":   3,
+               "IP_API_FEATURE_DROP":   4,
+       }
+)
+
+func (x IPFeatureLocation) String() string {
+       s, ok := IPFeatureLocation_name[uint8(x)]
+       if ok {
+               return s
+       }
+       return "IPFeatureLocation(" + strconv.Itoa(int(x)) + ")"
+}
+
 // IPProto defines enum 'ip_proto'.
 type IPProto uint8
 
@@ -376,6 +412,12 @@ func (x *Address) UnmarshalText(text []byte) error {
        return nil
 }
 
+// IP4AddressAndMask defines type 'ip4_address_and_mask'.
+type IP4AddressAndMask struct {
+       Addr IP4Address `binapi:"ip4_address,name=addr" json:"addr,omitempty"`
+       Mask IP4Address `binapi:"ip4_address,name=mask" json:"mask,omitempty"`
+}
+
 // IP4Prefix defines type 'ip4_prefix'.
 type IP4Prefix struct {
        Address IP4Address `binapi:"ip4_address,name=address" json:"address,omitempty"`
@@ -430,6 +472,12 @@ func (x *IP4Prefix) UnmarshalText(text []byte) error {
        return nil
 }
 
+// IP6AddressAndMask defines type 'ip6_address_and_mask'.
+type IP6AddressAndMask struct {
+       Addr IP6Address `binapi:"ip6_address,name=addr" json:"addr,omitempty"`
+       Mask IP6Address `binapi:"ip6_address,name=mask" json:"mask,omitempty"`
+}
+
 // IP6Prefix defines type 'ip6_prefix'.
 type IP6Prefix struct {
        Address IP6Address `binapi:"ip6_address,name=address" json:"address,omitempty"`
index e74441c..19a818d 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/ipfix_export.api.json
 
 // Package ipfix_export contains generated bindings for API file ipfix_export.api.
@@ -25,8 +25,8 @@ const _ = api.GoVppAPIPackageIsVersion2
 
 const (
        APIFile    = "ipfix_export"
-       APIVersion = "2.0.1"
-       VersionCrc = 0xb7e9cad2
+       APIVersion = "2.0.3"
+       VersionCrc = 0x6ae99522
 )
 
 // IpfixClassifyStreamDetails defines message 'ipfix_classify_stream_details'.
@@ -254,7 +254,7 @@ type IpfixExporterDetails struct {
 
 func (m *IpfixExporterDetails) Reset()               { *m = IpfixExporterDetails{} }
 func (*IpfixExporterDetails) GetMessageName() string { return "ipfix_exporter_details" }
-func (*IpfixExporterDetails) GetCrcString() string   { return "11e07413" }
+func (*IpfixExporterDetails) GetCrcString() string   { return "0dedbfe4" }
 func (*IpfixExporterDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -474,7 +474,7 @@ type SetIpfixExporter struct {
 
 func (m *SetIpfixExporter) Reset()               { *m = SetIpfixExporter{} }
 func (*SetIpfixExporter) GetMessageName() string { return "set_ipfix_exporter" }
-func (*SetIpfixExporter) GetCrcString() string   { return "69284e07" }
+func (*SetIpfixExporter) GetCrcString() string   { return "5530c8a0" }
 func (*SetIpfixExporter) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -565,13 +565,13 @@ func file_ipfix_export_binapi_init() {
        api.RegisterMessage((*IpfixClassifyTableAddDelReply)(nil), "ipfix_classify_table_add_del_reply_e8d4e804")
        api.RegisterMessage((*IpfixClassifyTableDetails)(nil), "ipfix_classify_table_details_1af8c28c")
        api.RegisterMessage((*IpfixClassifyTableDump)(nil), "ipfix_classify_table_dump_51077d14")
-       api.RegisterMessage((*IpfixExporterDetails)(nil), "ipfix_exporter_details_11e07413")
+       api.RegisterMessage((*IpfixExporterDetails)(nil), "ipfix_exporter_details_0dedbfe4")
        api.RegisterMessage((*IpfixExporterDump)(nil), "ipfix_exporter_dump_51077d14")
        api.RegisterMessage((*IpfixFlush)(nil), "ipfix_flush_51077d14")
        api.RegisterMessage((*IpfixFlushReply)(nil), "ipfix_flush_reply_e8d4e804")
        api.RegisterMessage((*SetIpfixClassifyStream)(nil), "set_ipfix_classify_stream_c9cbe053")
        api.RegisterMessage((*SetIpfixClassifyStreamReply)(nil), "set_ipfix_classify_stream_reply_e8d4e804")
-       api.RegisterMessage((*SetIpfixExporter)(nil), "set_ipfix_exporter_69284e07")
+       api.RegisterMessage((*SetIpfixExporter)(nil), "set_ipfix_exporter_5530c8a0")
        api.RegisterMessage((*SetIpfixExporterReply)(nil), "set_ipfix_exporter_reply_e8d4e804")
 }
 
index 48f9df2..3b54e95 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/ipip.api.json
 
 // Package ipip contains generated bindings for API file ipip.api.
@@ -28,8 +28,8 @@ const _ = api.GoVppAPIPackageIsVersion2
 
 const (
        APIFile    = "ipip"
-       APIVersion = "2.0.1"
-       VersionCrc = 0xa095e728
+       APIVersion = "2.0.2"
+       VersionCrc = 0x4609caba
 )
 
 // IpipTunnel defines type 'ipip_tunnel'.
@@ -57,7 +57,7 @@ type Ipip6rdAddTunnel struct {
 
 func (m *Ipip6rdAddTunnel) Reset()               { *m = Ipip6rdAddTunnel{} }
 func (*Ipip6rdAddTunnel) GetMessageName() string { return "ipip_6rd_add_tunnel" }
-func (*Ipip6rdAddTunnel) GetCrcString() string   { return "56e93cc0" }
+func (*Ipip6rdAddTunnel) GetCrcString() string   { return "b9ec1863" }
 func (*Ipip6rdAddTunnel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -217,7 +217,7 @@ type IpipAddTunnel struct {
 
 func (m *IpipAddTunnel) Reset()               { *m = IpipAddTunnel{} }
 func (*IpipAddTunnel) GetMessageName() string { return "ipip_add_tunnel" }
-func (*IpipAddTunnel) GetCrcString() string   { return "a9decfcd" }
+func (*IpipAddTunnel) GetCrcString() string   { return "2ac399f5" }
 func (*IpipAddTunnel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -380,7 +380,7 @@ type IpipTunnelDetails struct {
 
 func (m *IpipTunnelDetails) Reset()               { *m = IpipTunnelDetails{} }
 func (*IpipTunnelDetails) GetMessageName() string { return "ipip_tunnel_details" }
-func (*IpipTunnelDetails) GetCrcString() string   { return "53236d75" }
+func (*IpipTunnelDetails) GetCrcString() string   { return "d31cb34e" }
 func (*IpipTunnelDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -468,15 +468,15 @@ func (m *IpipTunnelDump) Unmarshal(b []byte) error {
 
 func init() { file_ipip_binapi_init() }
 func file_ipip_binapi_init() {
-       api.RegisterMessage((*Ipip6rdAddTunnel)(nil), "ipip_6rd_add_tunnel_56e93cc0")
+       api.RegisterMessage((*Ipip6rdAddTunnel)(nil), "ipip_6rd_add_tunnel_b9ec1863")
        api.RegisterMessage((*Ipip6rdAddTunnelReply)(nil), "ipip_6rd_add_tunnel_reply_5383d31f")
        api.RegisterMessage((*Ipip6rdDelTunnel)(nil), "ipip_6rd_del_tunnel_f9e6675e")
        api.RegisterMessage((*Ipip6rdDelTunnelReply)(nil), "ipip_6rd_del_tunnel_reply_e8d4e804")
-       api.RegisterMessage((*IpipAddTunnel)(nil), "ipip_add_tunnel_a9decfcd")
+       api.RegisterMessage((*IpipAddTunnel)(nil), "ipip_add_tunnel_2ac399f5")
        api.RegisterMessage((*IpipAddTunnelReply)(nil), "ipip_add_tunnel_reply_5383d31f")
        api.RegisterMessage((*IpipDelTunnel)(nil), "ipip_del_tunnel_f9e6675e")
        api.RegisterMessage((*IpipDelTunnelReply)(nil), "ipip_del_tunnel_reply_e8d4e804")
-       api.RegisterMessage((*IpipTunnelDetails)(nil), "ipip_tunnel_details_53236d75")
+       api.RegisterMessage((*IpipTunnelDetails)(nil), "ipip_tunnel_details_d31cb34e")
        api.RegisterMessage((*IpipTunnelDump)(nil), "ipip_tunnel_dump_f9e6675e")
 }
 
index 0ed6714..6479df4 100644 (file)
@@ -1,15 +1,15 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/ipsec.api.json
 
 // Package ipsec contains generated bindings for API file ipsec.api.
 //
 // Contents:
 //   1 enum
-//   2 structs
-//  30 messages
+//   3 structs
+//  42 messages
 //
 package ipsec
 
@@ -20,6 +20,7 @@ import (
        interface_types "git.fd.io/govpp.git/binapi/interface_types"
        ip_types "git.fd.io/govpp.git/binapi/ip_types"
        ipsec_types "git.fd.io/govpp.git/binapi/ipsec_types"
+       tunnel_types "git.fd.io/govpp.git/binapi/tunnel_types"
        codec "git.fd.io/govpp.git/codec"
 )
 
@@ -31,8 +32,8 @@ const _ = api.GoVppAPIPackageIsVersion2
 
 const (
        APIFile    = "ipsec"
-       APIVersion = "3.0.2"
-       VersionCrc = 0x6a839805
+       APIVersion = "5.0.1"
+       VersionCrc = 0x196d64b0
 )
 
 // IpsecSpdAction defines enum 'ipsec_spd_action'.
@@ -68,6 +69,13 @@ func (x IpsecSpdAction) String() string {
        return "IpsecSpdAction(" + strconv.Itoa(int(x)) + ")"
 }
 
+// IpsecItf defines type 'ipsec_itf'.
+type IpsecItf struct {
+       UserInstance uint32                         `binapi:"u32,name=user_instance,default=4294967295" json:"user_instance,omitempty"`
+       Mode         tunnel_types.TunnelMode        `binapi:"tunnel_mode,name=mode" json:"mode,omitempty"`
+       SwIfIndex    interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
 // IpsecSpdEntry defines type 'ipsec_spd_entry'.
 type IpsecSpdEntry struct {
        SpdID              uint32           `binapi:"u32,name=spd_id" json:"spd_id,omitempty"`
@@ -222,49 +230,842 @@ func (*IpsecInterfaceAddDelSpdReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 
-func (m *IpsecInterfaceAddDelSpdReply) Size() (size int) {
+func (m *IpsecInterfaceAddDelSpdReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *IpsecInterfaceAddDelSpdReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *IpsecInterfaceAddDelSpdReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// IpsecItfCreate defines message 'ipsec_itf_create'.
+type IpsecItfCreate struct {
+       Itf IpsecItf `binapi:"ipsec_itf,name=itf" json:"itf,omitempty"`
+}
+
+func (m *IpsecItfCreate) Reset()               { *m = IpsecItfCreate{} }
+func (*IpsecItfCreate) GetMessageName() string { return "ipsec_itf_create" }
+func (*IpsecItfCreate) GetCrcString() string   { return "6f50b3bc" }
+func (*IpsecItfCreate) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *IpsecItfCreate) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Itf.UserInstance
+       size += 1 // m.Itf.Mode
+       size += 4 // m.Itf.SwIfIndex
+       return size
+}
+func (m *IpsecItfCreate) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.Itf.UserInstance)
+       buf.EncodeUint8(uint8(m.Itf.Mode))
+       buf.EncodeUint32(uint32(m.Itf.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *IpsecItfCreate) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Itf.UserInstance = buf.DecodeUint32()
+       m.Itf.Mode = tunnel_types.TunnelMode(buf.DecodeUint8())
+       m.Itf.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// IpsecItfCreateReply defines message 'ipsec_itf_create_reply'.
+type IpsecItfCreateReply struct {
+       Retval    int32                          `binapi:"i32,name=retval" json:"retval,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *IpsecItfCreateReply) Reset()               { *m = IpsecItfCreateReply{} }
+func (*IpsecItfCreateReply) GetMessageName() string { return "ipsec_itf_create_reply" }
+func (*IpsecItfCreateReply) GetCrcString() string   { return "5383d31f" }
+func (*IpsecItfCreateReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *IpsecItfCreateReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *IpsecItfCreateReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *IpsecItfCreateReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// IpsecItfDelete defines message 'ipsec_itf_delete'.
+type IpsecItfDelete struct {
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *IpsecItfDelete) Reset()               { *m = IpsecItfDelete{} }
+func (*IpsecItfDelete) GetMessageName() string { return "ipsec_itf_delete" }
+func (*IpsecItfDelete) GetCrcString() string   { return "f9e6675e" }
+func (*IpsecItfDelete) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *IpsecItfDelete) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *IpsecItfDelete) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *IpsecItfDelete) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// IpsecItfDeleteReply defines message 'ipsec_itf_delete_reply'.
+type IpsecItfDeleteReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *IpsecItfDeleteReply) Reset()               { *m = IpsecItfDeleteReply{} }
+func (*IpsecItfDeleteReply) GetMessageName() string { return "ipsec_itf_delete_reply" }
+func (*IpsecItfDeleteReply) GetCrcString() string   { return "e8d4e804" }
+func (*IpsecItfDeleteReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *IpsecItfDeleteReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *IpsecItfDeleteReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *IpsecItfDeleteReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// IpsecItfDetails defines message 'ipsec_itf_details'.
+type IpsecItfDetails struct {
+       Itf IpsecItf `binapi:"ipsec_itf,name=itf" json:"itf,omitempty"`
+}
+
+func (m *IpsecItfDetails) Reset()               { *m = IpsecItfDetails{} }
+func (*IpsecItfDetails) GetMessageName() string { return "ipsec_itf_details" }
+func (*IpsecItfDetails) GetCrcString() string   { return "548a73b8" }
+func (*IpsecItfDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *IpsecItfDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Itf.UserInstance
+       size += 1 // m.Itf.Mode
+       size += 4 // m.Itf.SwIfIndex
+       return size
+}
+func (m *IpsecItfDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.Itf.UserInstance)
+       buf.EncodeUint8(uint8(m.Itf.Mode))
+       buf.EncodeUint32(uint32(m.Itf.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *IpsecItfDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Itf.UserInstance = buf.DecodeUint32()
+       m.Itf.Mode = tunnel_types.TunnelMode(buf.DecodeUint8())
+       m.Itf.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// IpsecItfDump defines message 'ipsec_itf_dump'.
+type IpsecItfDump struct {
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *IpsecItfDump) Reset()               { *m = IpsecItfDump{} }
+func (*IpsecItfDump) GetMessageName() string { return "ipsec_itf_dump" }
+func (*IpsecItfDump) GetCrcString() string   { return "f9e6675e" }
+func (*IpsecItfDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *IpsecItfDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *IpsecItfDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *IpsecItfDump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// IpsecSaDetails defines message 'ipsec_sa_details'.
+// Deprecated: the message will be removed in the future versions
+type IpsecSaDetails struct {
+       Entry          ipsec_types.IpsecSadEntry      `binapi:"ipsec_sad_entry,name=entry" json:"entry,omitempty"`
+       SwIfIndex      interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       Salt           uint32                         `binapi:"u32,name=salt" json:"salt,omitempty"`
+       SeqOutbound    uint64                         `binapi:"u64,name=seq_outbound" json:"seq_outbound,omitempty"`
+       LastSeqInbound uint64                         `binapi:"u64,name=last_seq_inbound" json:"last_seq_inbound,omitempty"`
+       ReplayWindow   uint64                         `binapi:"u64,name=replay_window" json:"replay_window,omitempty"`
+       StatIndex      uint32                         `binapi:"u32,name=stat_index" json:"stat_index,omitempty"`
+}
+
+func (m *IpsecSaDetails) Reset()               { *m = IpsecSaDetails{} }
+func (*IpsecSaDetails) GetMessageName() string { return "ipsec_sa_details" }
+func (*IpsecSaDetails) GetCrcString() string   { return "345d14a7" }
+func (*IpsecSaDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *IpsecSaDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4       // m.Entry.SadID
+       size += 4       // m.Entry.Spi
+       size += 4       // m.Entry.Protocol
+       size += 4       // m.Entry.CryptoAlgorithm
+       size += 1       // m.Entry.CryptoKey.Length
+       size += 1 * 128 // m.Entry.CryptoKey.Data
+       size += 4       // m.Entry.IntegrityAlgorithm
+       size += 1       // m.Entry.IntegrityKey.Length
+       size += 1 * 128 // m.Entry.IntegrityKey.Data
+       size += 4       // m.Entry.Flags
+       size += 1       // m.Entry.TunnelSrc.Af
+       size += 1 * 16  // m.Entry.TunnelSrc.Un
+       size += 1       // m.Entry.TunnelDst.Af
+       size += 1 * 16  // m.Entry.TunnelDst.Un
+       size += 4       // m.Entry.TxTableID
+       size += 4       // m.Entry.Salt
+       size += 2       // m.Entry.UDPSrcPort
+       size += 2       // m.Entry.UDPDstPort
+       size += 4       // m.SwIfIndex
+       size += 4       // m.Salt
+       size += 8       // m.SeqOutbound
+       size += 8       // m.LastSeqInbound
+       size += 8       // m.ReplayWindow
+       size += 4       // m.StatIndex
+       return size
+}
+func (m *IpsecSaDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.Entry.SadID)
+       buf.EncodeUint32(m.Entry.Spi)
+       buf.EncodeUint32(uint32(m.Entry.Protocol))
+       buf.EncodeUint32(uint32(m.Entry.CryptoAlgorithm))
+       buf.EncodeUint8(m.Entry.CryptoKey.Length)
+       buf.EncodeBytes(m.Entry.CryptoKey.Data, 128)
+       buf.EncodeUint32(uint32(m.Entry.IntegrityAlgorithm))
+       buf.EncodeUint8(m.Entry.IntegrityKey.Length)
+       buf.EncodeBytes(m.Entry.IntegrityKey.Data, 128)
+       buf.EncodeUint32(uint32(m.Entry.Flags))
+       buf.EncodeUint8(uint8(m.Entry.TunnelSrc.Af))
+       buf.EncodeBytes(m.Entry.TunnelSrc.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(uint8(m.Entry.TunnelDst.Af))
+       buf.EncodeBytes(m.Entry.TunnelDst.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint32(m.Entry.TxTableID)
+       buf.EncodeUint32(m.Entry.Salt)
+       buf.EncodeUint16(m.Entry.UDPSrcPort)
+       buf.EncodeUint16(m.Entry.UDPDstPort)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint32(m.Salt)
+       buf.EncodeUint64(m.SeqOutbound)
+       buf.EncodeUint64(m.LastSeqInbound)
+       buf.EncodeUint64(m.ReplayWindow)
+       buf.EncodeUint32(m.StatIndex)
+       return buf.Bytes(), nil
+}
+func (m *IpsecSaDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Entry.SadID = buf.DecodeUint32()
+       m.Entry.Spi = buf.DecodeUint32()
+       m.Entry.Protocol = ipsec_types.IpsecProto(buf.DecodeUint32())
+       m.Entry.CryptoAlgorithm = ipsec_types.IpsecCryptoAlg(buf.DecodeUint32())
+       m.Entry.CryptoKey.Length = buf.DecodeUint8()
+       m.Entry.CryptoKey.Data = make([]byte, 128)
+       copy(m.Entry.CryptoKey.Data, buf.DecodeBytes(len(m.Entry.CryptoKey.Data)))
+       m.Entry.IntegrityAlgorithm = ipsec_types.IpsecIntegAlg(buf.DecodeUint32())
+       m.Entry.IntegrityKey.Length = buf.DecodeUint8()
+       m.Entry.IntegrityKey.Data = make([]byte, 128)
+       copy(m.Entry.IntegrityKey.Data, buf.DecodeBytes(len(m.Entry.IntegrityKey.Data)))
+       m.Entry.Flags = ipsec_types.IpsecSadFlags(buf.DecodeUint32())
+       m.Entry.TunnelSrc.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Entry.TunnelSrc.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Entry.TunnelDst.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Entry.TunnelDst.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Entry.TxTableID = buf.DecodeUint32()
+       m.Entry.Salt = buf.DecodeUint32()
+       m.Entry.UDPSrcPort = buf.DecodeUint16()
+       m.Entry.UDPDstPort = buf.DecodeUint16()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Salt = buf.DecodeUint32()
+       m.SeqOutbound = buf.DecodeUint64()
+       m.LastSeqInbound = buf.DecodeUint64()
+       m.ReplayWindow = buf.DecodeUint64()
+       m.StatIndex = buf.DecodeUint32()
+       return nil
+}
+
+// IpsecSaDump defines message 'ipsec_sa_dump'.
+// Deprecated: the message will be removed in the future versions
+type IpsecSaDump struct {
+       SaID uint32 `binapi:"u32,name=sa_id" json:"sa_id,omitempty"`
+}
+
+func (m *IpsecSaDump) Reset()               { *m = IpsecSaDump{} }
+func (*IpsecSaDump) GetMessageName() string { return "ipsec_sa_dump" }
+func (*IpsecSaDump) GetCrcString() string   { return "2076c2f4" }
+func (*IpsecSaDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *IpsecSaDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SaID
+       return size
+}
+func (m *IpsecSaDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.SaID)
+       return buf.Bytes(), nil
+}
+func (m *IpsecSaDump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SaID = buf.DecodeUint32()
+       return nil
+}
+
+// IpsecSaV2Details defines message 'ipsec_sa_v2_details'.
+type IpsecSaV2Details struct {
+       Entry          ipsec_types.IpsecSadEntryV2    `binapi:"ipsec_sad_entry_v2,name=entry" json:"entry,omitempty"`
+       SwIfIndex      interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       Salt           uint32                         `binapi:"u32,name=salt" json:"salt,omitempty"`
+       SeqOutbound    uint64                         `binapi:"u64,name=seq_outbound" json:"seq_outbound,omitempty"`
+       LastSeqInbound uint64                         `binapi:"u64,name=last_seq_inbound" json:"last_seq_inbound,omitempty"`
+       ReplayWindow   uint64                         `binapi:"u64,name=replay_window" json:"replay_window,omitempty"`
+       StatIndex      uint32                         `binapi:"u32,name=stat_index" json:"stat_index,omitempty"`
+}
+
+func (m *IpsecSaV2Details) Reset()               { *m = IpsecSaV2Details{} }
+func (*IpsecSaV2Details) GetMessageName() string { return "ipsec_sa_v2_details" }
+func (*IpsecSaV2Details) GetCrcString() string   { return "e2130051" }
+func (*IpsecSaV2Details) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *IpsecSaV2Details) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4       // m.Entry.SadID
+       size += 4       // m.Entry.Spi
+       size += 4       // m.Entry.Protocol
+       size += 4       // m.Entry.CryptoAlgorithm
+       size += 1       // m.Entry.CryptoKey.Length
+       size += 1 * 128 // m.Entry.CryptoKey.Data
+       size += 4       // m.Entry.IntegrityAlgorithm
+       size += 1       // m.Entry.IntegrityKey.Length
+       size += 1 * 128 // m.Entry.IntegrityKey.Data
+       size += 4       // m.Entry.Flags
+       size += 1       // m.Entry.TunnelSrc.Af
+       size += 1 * 16  // m.Entry.TunnelSrc.Un
+       size += 1       // m.Entry.TunnelDst.Af
+       size += 1 * 16  // m.Entry.TunnelDst.Un
+       size += 1       // m.Entry.TunnelFlags
+       size += 1       // m.Entry.Dscp
+       size += 4       // m.Entry.TxTableID
+       size += 4       // m.Entry.Salt
+       size += 2       // m.Entry.UDPSrcPort
+       size += 2       // m.Entry.UDPDstPort
+       size += 4       // m.SwIfIndex
+       size += 4       // m.Salt
+       size += 8       // m.SeqOutbound
+       size += 8       // m.LastSeqInbound
+       size += 8       // m.ReplayWindow
+       size += 4       // m.StatIndex
+       return size
+}
+func (m *IpsecSaV2Details) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.Entry.SadID)
+       buf.EncodeUint32(m.Entry.Spi)
+       buf.EncodeUint32(uint32(m.Entry.Protocol))
+       buf.EncodeUint32(uint32(m.Entry.CryptoAlgorithm))
+       buf.EncodeUint8(m.Entry.CryptoKey.Length)
+       buf.EncodeBytes(m.Entry.CryptoKey.Data, 128)
+       buf.EncodeUint32(uint32(m.Entry.IntegrityAlgorithm))
+       buf.EncodeUint8(m.Entry.IntegrityKey.Length)
+       buf.EncodeBytes(m.Entry.IntegrityKey.Data, 128)
+       buf.EncodeUint32(uint32(m.Entry.Flags))
+       buf.EncodeUint8(uint8(m.Entry.TunnelSrc.Af))
+       buf.EncodeBytes(m.Entry.TunnelSrc.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(uint8(m.Entry.TunnelDst.Af))
+       buf.EncodeBytes(m.Entry.TunnelDst.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(uint8(m.Entry.TunnelFlags))
+       buf.EncodeUint8(uint8(m.Entry.Dscp))
+       buf.EncodeUint32(m.Entry.TxTableID)
+       buf.EncodeUint32(m.Entry.Salt)
+       buf.EncodeUint16(m.Entry.UDPSrcPort)
+       buf.EncodeUint16(m.Entry.UDPDstPort)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint32(m.Salt)
+       buf.EncodeUint64(m.SeqOutbound)
+       buf.EncodeUint64(m.LastSeqInbound)
+       buf.EncodeUint64(m.ReplayWindow)
+       buf.EncodeUint32(m.StatIndex)
+       return buf.Bytes(), nil
+}
+func (m *IpsecSaV2Details) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Entry.SadID = buf.DecodeUint32()
+       m.Entry.Spi = buf.DecodeUint32()
+       m.Entry.Protocol = ipsec_types.IpsecProto(buf.DecodeUint32())
+       m.Entry.CryptoAlgorithm = ipsec_types.IpsecCryptoAlg(buf.DecodeUint32())
+       m.Entry.CryptoKey.Length = buf.DecodeUint8()
+       m.Entry.CryptoKey.Data = make([]byte, 128)
+       copy(m.Entry.CryptoKey.Data, buf.DecodeBytes(len(m.Entry.CryptoKey.Data)))
+       m.Entry.IntegrityAlgorithm = ipsec_types.IpsecIntegAlg(buf.DecodeUint32())
+       m.Entry.IntegrityKey.Length = buf.DecodeUint8()
+       m.Entry.IntegrityKey.Data = make([]byte, 128)
+       copy(m.Entry.IntegrityKey.Data, buf.DecodeBytes(len(m.Entry.IntegrityKey.Data)))
+       m.Entry.Flags = ipsec_types.IpsecSadFlags(buf.DecodeUint32())
+       m.Entry.TunnelSrc.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Entry.TunnelSrc.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Entry.TunnelDst.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Entry.TunnelDst.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Entry.TunnelFlags = tunnel_types.TunnelEncapDecapFlags(buf.DecodeUint8())
+       m.Entry.Dscp = ip_types.IPDscp(buf.DecodeUint8())
+       m.Entry.TxTableID = buf.DecodeUint32()
+       m.Entry.Salt = buf.DecodeUint32()
+       m.Entry.UDPSrcPort = buf.DecodeUint16()
+       m.Entry.UDPDstPort = buf.DecodeUint16()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Salt = buf.DecodeUint32()
+       m.SeqOutbound = buf.DecodeUint64()
+       m.LastSeqInbound = buf.DecodeUint64()
+       m.ReplayWindow = buf.DecodeUint64()
+       m.StatIndex = buf.DecodeUint32()
+       return nil
+}
+
+// IpsecSaV2Dump defines message 'ipsec_sa_v2_dump'.
+type IpsecSaV2Dump struct {
+       SaID uint32 `binapi:"u32,name=sa_id" json:"sa_id,omitempty"`
+}
+
+func (m *IpsecSaV2Dump) Reset()               { *m = IpsecSaV2Dump{} }
+func (*IpsecSaV2Dump) GetMessageName() string { return "ipsec_sa_v2_dump" }
+func (*IpsecSaV2Dump) GetCrcString() string   { return "2076c2f4" }
+func (*IpsecSaV2Dump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *IpsecSaV2Dump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SaID
+       return size
+}
+func (m *IpsecSaV2Dump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.SaID)
+       return buf.Bytes(), nil
+}
+func (m *IpsecSaV2Dump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SaID = buf.DecodeUint32()
+       return nil
+}
+
+// IpsecSaV3Details defines message 'ipsec_sa_v3_details'.
+type IpsecSaV3Details struct {
+       Entry          ipsec_types.IpsecSadEntryV3    `binapi:"ipsec_sad_entry_v3,name=entry" json:"entry,omitempty"`
+       SwIfIndex      interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       SeqOutbound    uint64                         `binapi:"u64,name=seq_outbound" json:"seq_outbound,omitempty"`
+       LastSeqInbound uint64                         `binapi:"u64,name=last_seq_inbound" json:"last_seq_inbound,omitempty"`
+       ReplayWindow   uint64                         `binapi:"u64,name=replay_window" json:"replay_window,omitempty"`
+       StatIndex      uint32                         `binapi:"u32,name=stat_index" json:"stat_index,omitempty"`
+}
+
+func (m *IpsecSaV3Details) Reset()               { *m = IpsecSaV3Details{} }
+func (*IpsecSaV3Details) GetMessageName() string { return "ipsec_sa_v3_details" }
+func (*IpsecSaV3Details) GetCrcString() string   { return "2fc991ee" }
+func (*IpsecSaV3Details) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *IpsecSaV3Details) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4       // m.Entry.SadID
+       size += 4       // m.Entry.Spi
+       size += 4       // m.Entry.Protocol
+       size += 4       // m.Entry.CryptoAlgorithm
+       size += 1       // m.Entry.CryptoKey.Length
+       size += 1 * 128 // m.Entry.CryptoKey.Data
+       size += 4       // m.Entry.IntegrityAlgorithm
+       size += 1       // m.Entry.IntegrityKey.Length
+       size += 1 * 128 // m.Entry.IntegrityKey.Data
+       size += 4       // m.Entry.Flags
+       size += 4       // m.Entry.Tunnel.Instance
+       size += 1       // m.Entry.Tunnel.Src.Af
+       size += 1 * 16  // m.Entry.Tunnel.Src.Un
+       size += 1       // m.Entry.Tunnel.Dst.Af
+       size += 1 * 16  // m.Entry.Tunnel.Dst.Un
+       size += 4       // m.Entry.Tunnel.SwIfIndex
+       size += 4       // m.Entry.Tunnel.TableID
+       size += 1       // m.Entry.Tunnel.EncapDecapFlags
+       size += 1       // m.Entry.Tunnel.Mode
+       size += 1       // m.Entry.Tunnel.Flags
+       size += 1       // m.Entry.Tunnel.Dscp
+       size += 1       // m.Entry.Tunnel.HopLimit
+       size += 4       // m.Entry.Salt
+       size += 2       // m.Entry.UDPSrcPort
+       size += 2       // m.Entry.UDPDstPort
+       size += 4       // m.SwIfIndex
+       size += 8       // m.SeqOutbound
+       size += 8       // m.LastSeqInbound
+       size += 8       // m.ReplayWindow
+       size += 4       // m.StatIndex
+       return size
+}
+func (m *IpsecSaV3Details) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.Entry.SadID)
+       buf.EncodeUint32(m.Entry.Spi)
+       buf.EncodeUint32(uint32(m.Entry.Protocol))
+       buf.EncodeUint32(uint32(m.Entry.CryptoAlgorithm))
+       buf.EncodeUint8(m.Entry.CryptoKey.Length)
+       buf.EncodeBytes(m.Entry.CryptoKey.Data, 128)
+       buf.EncodeUint32(uint32(m.Entry.IntegrityAlgorithm))
+       buf.EncodeUint8(m.Entry.IntegrityKey.Length)
+       buf.EncodeBytes(m.Entry.IntegrityKey.Data, 128)
+       buf.EncodeUint32(uint32(m.Entry.Flags))
+       buf.EncodeUint32(m.Entry.Tunnel.Instance)
+       buf.EncodeUint8(uint8(m.Entry.Tunnel.Src.Af))
+       buf.EncodeBytes(m.Entry.Tunnel.Src.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(uint8(m.Entry.Tunnel.Dst.Af))
+       buf.EncodeBytes(m.Entry.Tunnel.Dst.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint32(uint32(m.Entry.Tunnel.SwIfIndex))
+       buf.EncodeUint32(m.Entry.Tunnel.TableID)
+       buf.EncodeUint8(uint8(m.Entry.Tunnel.EncapDecapFlags))
+       buf.EncodeUint8(uint8(m.Entry.Tunnel.Mode))
+       buf.EncodeUint8(uint8(m.Entry.Tunnel.Flags))
+       buf.EncodeUint8(uint8(m.Entry.Tunnel.Dscp))
+       buf.EncodeUint8(m.Entry.Tunnel.HopLimit)
+       buf.EncodeUint32(m.Entry.Salt)
+       buf.EncodeUint16(m.Entry.UDPSrcPort)
+       buf.EncodeUint16(m.Entry.UDPDstPort)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint64(m.SeqOutbound)
+       buf.EncodeUint64(m.LastSeqInbound)
+       buf.EncodeUint64(m.ReplayWindow)
+       buf.EncodeUint32(m.StatIndex)
+       return buf.Bytes(), nil
+}
+func (m *IpsecSaV3Details) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Entry.SadID = buf.DecodeUint32()
+       m.Entry.Spi = buf.DecodeUint32()
+       m.Entry.Protocol = ipsec_types.IpsecProto(buf.DecodeUint32())
+       m.Entry.CryptoAlgorithm = ipsec_types.IpsecCryptoAlg(buf.DecodeUint32())
+       m.Entry.CryptoKey.Length = buf.DecodeUint8()
+       m.Entry.CryptoKey.Data = make([]byte, 128)
+       copy(m.Entry.CryptoKey.Data, buf.DecodeBytes(len(m.Entry.CryptoKey.Data)))
+       m.Entry.IntegrityAlgorithm = ipsec_types.IpsecIntegAlg(buf.DecodeUint32())
+       m.Entry.IntegrityKey.Length = buf.DecodeUint8()
+       m.Entry.IntegrityKey.Data = make([]byte, 128)
+       copy(m.Entry.IntegrityKey.Data, buf.DecodeBytes(len(m.Entry.IntegrityKey.Data)))
+       m.Entry.Flags = ipsec_types.IpsecSadFlags(buf.DecodeUint32())
+       m.Entry.Tunnel.Instance = buf.DecodeUint32()
+       m.Entry.Tunnel.Src.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Entry.Tunnel.Src.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Entry.Tunnel.Dst.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Entry.Tunnel.Dst.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Entry.Tunnel.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Entry.Tunnel.TableID = buf.DecodeUint32()
+       m.Entry.Tunnel.EncapDecapFlags = tunnel_types.TunnelEncapDecapFlags(buf.DecodeUint8())
+       m.Entry.Tunnel.Mode = tunnel_types.TunnelMode(buf.DecodeUint8())
+       m.Entry.Tunnel.Flags = tunnel_types.TunnelFlags(buf.DecodeUint8())
+       m.Entry.Tunnel.Dscp = ip_types.IPDscp(buf.DecodeUint8())
+       m.Entry.Tunnel.HopLimit = buf.DecodeUint8()
+       m.Entry.Salt = buf.DecodeUint32()
+       m.Entry.UDPSrcPort = buf.DecodeUint16()
+       m.Entry.UDPDstPort = buf.DecodeUint16()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.SeqOutbound = buf.DecodeUint64()
+       m.LastSeqInbound = buf.DecodeUint64()
+       m.ReplayWindow = buf.DecodeUint64()
+       m.StatIndex = buf.DecodeUint32()
+       return nil
+}
+
+// IpsecSaV3Dump defines message 'ipsec_sa_v3_dump'.
+type IpsecSaV3Dump struct {
+       SaID uint32 `binapi:"u32,name=sa_id" json:"sa_id,omitempty"`
+}
+
+func (m *IpsecSaV3Dump) Reset()               { *m = IpsecSaV3Dump{} }
+func (*IpsecSaV3Dump) GetMessageName() string { return "ipsec_sa_v3_dump" }
+func (*IpsecSaV3Dump) GetCrcString() string   { return "2076c2f4" }
+func (*IpsecSaV3Dump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *IpsecSaV3Dump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SaID
+       return size
+}
+func (m *IpsecSaV3Dump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.SaID)
+       return buf.Bytes(), nil
+}
+func (m *IpsecSaV3Dump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SaID = buf.DecodeUint32()
+       return nil
+}
+
+// IpsecSadEntryAddDel defines message 'ipsec_sad_entry_add_del'.
+// Deprecated: the message will be removed in the future versions
+type IpsecSadEntryAddDel struct {
+       IsAdd bool                      `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       Entry ipsec_types.IpsecSadEntry `binapi:"ipsec_sad_entry,name=entry" json:"entry,omitempty"`
+}
+
+func (m *IpsecSadEntryAddDel) Reset()               { *m = IpsecSadEntryAddDel{} }
+func (*IpsecSadEntryAddDel) GetMessageName() string { return "ipsec_sad_entry_add_del" }
+func (*IpsecSadEntryAddDel) GetCrcString() string   { return "ab64b5c6" }
+func (*IpsecSadEntryAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *IpsecSadEntryAddDel) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1       // m.IsAdd
+       size += 4       // m.Entry.SadID
+       size += 4       // m.Entry.Spi
+       size += 4       // m.Entry.Protocol
+       size += 4       // m.Entry.CryptoAlgorithm
+       size += 1       // m.Entry.CryptoKey.Length
+       size += 1 * 128 // m.Entry.CryptoKey.Data
+       size += 4       // m.Entry.IntegrityAlgorithm
+       size += 1       // m.Entry.IntegrityKey.Length
+       size += 1 * 128 // m.Entry.IntegrityKey.Data
+       size += 4       // m.Entry.Flags
+       size += 1       // m.Entry.TunnelSrc.Af
+       size += 1 * 16  // m.Entry.TunnelSrc.Un
+       size += 1       // m.Entry.TunnelDst.Af
+       size += 1 * 16  // m.Entry.TunnelDst.Un
+       size += 4       // m.Entry.TxTableID
+       size += 4       // m.Entry.Salt
+       size += 2       // m.Entry.UDPSrcPort
+       size += 2       // m.Entry.UDPDstPort
+       return size
+}
+func (m *IpsecSadEntryAddDel) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsAdd)
+       buf.EncodeUint32(m.Entry.SadID)
+       buf.EncodeUint32(m.Entry.Spi)
+       buf.EncodeUint32(uint32(m.Entry.Protocol))
+       buf.EncodeUint32(uint32(m.Entry.CryptoAlgorithm))
+       buf.EncodeUint8(m.Entry.CryptoKey.Length)
+       buf.EncodeBytes(m.Entry.CryptoKey.Data, 128)
+       buf.EncodeUint32(uint32(m.Entry.IntegrityAlgorithm))
+       buf.EncodeUint8(m.Entry.IntegrityKey.Length)
+       buf.EncodeBytes(m.Entry.IntegrityKey.Data, 128)
+       buf.EncodeUint32(uint32(m.Entry.Flags))
+       buf.EncodeUint8(uint8(m.Entry.TunnelSrc.Af))
+       buf.EncodeBytes(m.Entry.TunnelSrc.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(uint8(m.Entry.TunnelDst.Af))
+       buf.EncodeBytes(m.Entry.TunnelDst.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint32(m.Entry.TxTableID)
+       buf.EncodeUint32(m.Entry.Salt)
+       buf.EncodeUint16(m.Entry.UDPSrcPort)
+       buf.EncodeUint16(m.Entry.UDPDstPort)
+       return buf.Bytes(), nil
+}
+func (m *IpsecSadEntryAddDel) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeBool()
+       m.Entry.SadID = buf.DecodeUint32()
+       m.Entry.Spi = buf.DecodeUint32()
+       m.Entry.Protocol = ipsec_types.IpsecProto(buf.DecodeUint32())
+       m.Entry.CryptoAlgorithm = ipsec_types.IpsecCryptoAlg(buf.DecodeUint32())
+       m.Entry.CryptoKey.Length = buf.DecodeUint8()
+       m.Entry.CryptoKey.Data = make([]byte, 128)
+       copy(m.Entry.CryptoKey.Data, buf.DecodeBytes(len(m.Entry.CryptoKey.Data)))
+       m.Entry.IntegrityAlgorithm = ipsec_types.IpsecIntegAlg(buf.DecodeUint32())
+       m.Entry.IntegrityKey.Length = buf.DecodeUint8()
+       m.Entry.IntegrityKey.Data = make([]byte, 128)
+       copy(m.Entry.IntegrityKey.Data, buf.DecodeBytes(len(m.Entry.IntegrityKey.Data)))
+       m.Entry.Flags = ipsec_types.IpsecSadFlags(buf.DecodeUint32())
+       m.Entry.TunnelSrc.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Entry.TunnelSrc.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Entry.TunnelDst.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Entry.TunnelDst.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Entry.TxTableID = buf.DecodeUint32()
+       m.Entry.Salt = buf.DecodeUint32()
+       m.Entry.UDPSrcPort = buf.DecodeUint16()
+       m.Entry.UDPDstPort = buf.DecodeUint16()
+       return nil
+}
+
+// IpsecSadEntryAddDelReply defines message 'ipsec_sad_entry_add_del_reply'.
+// Deprecated: the message will be removed in the future versions
+type IpsecSadEntryAddDelReply struct {
+       Retval    int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       StatIndex uint32 `binapi:"u32,name=stat_index" json:"stat_index,omitempty"`
+}
+
+func (m *IpsecSadEntryAddDelReply) Reset()               { *m = IpsecSadEntryAddDelReply{} }
+func (*IpsecSadEntryAddDelReply) GetMessageName() string { return "ipsec_sad_entry_add_del_reply" }
+func (*IpsecSadEntryAddDelReply) GetCrcString() string   { return "9ffac24b" }
+func (*IpsecSadEntryAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *IpsecSadEntryAddDelReply) Size() (size int) {
        if m == nil {
                return 0
        }
        size += 4 // m.Retval
+       size += 4 // m.StatIndex
        return size
 }
-func (m *IpsecInterfaceAddDelSpdReply) Marshal(b []byte) ([]byte, error) {
+func (m *IpsecSadEntryAddDelReply) Marshal(b []byte) ([]byte, error) {
        if b == nil {
                b = make([]byte, m.Size())
        }
        buf := codec.NewBuffer(b)
        buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.StatIndex)
        return buf.Bytes(), nil
 }
-func (m *IpsecInterfaceAddDelSpdReply) Unmarshal(b []byte) error {
+func (m *IpsecSadEntryAddDelReply) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
        m.Retval = buf.DecodeInt32()
+       m.StatIndex = buf.DecodeUint32()
        return nil
 }
 
-// IpsecSaDetails defines message 'ipsec_sa_details'.
-type IpsecSaDetails struct {
-       Entry          ipsec_types.IpsecSadEntry      `binapi:"ipsec_sad_entry,name=entry" json:"entry,omitempty"`
-       SwIfIndex      interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
-       Salt           uint32                         `binapi:"u32,name=salt" json:"salt,omitempty"`
-       SeqOutbound    uint64                         `binapi:"u64,name=seq_outbound" json:"seq_outbound,omitempty"`
-       LastSeqInbound uint64                         `binapi:"u64,name=last_seq_inbound" json:"last_seq_inbound,omitempty"`
-       ReplayWindow   uint64                         `binapi:"u64,name=replay_window" json:"replay_window,omitempty"`
-       StatIndex      uint32                         `binapi:"u32,name=stat_index" json:"stat_index,omitempty"`
+// IpsecSadEntryAddDelV2 defines message 'ipsec_sad_entry_add_del_v2'.
+type IpsecSadEntryAddDelV2 struct {
+       IsAdd bool                        `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       Entry ipsec_types.IpsecSadEntryV2 `binapi:"ipsec_sad_entry_v2,name=entry" json:"entry,omitempty"`
 }
 
-func (m *IpsecSaDetails) Reset()               { *m = IpsecSaDetails{} }
-func (*IpsecSaDetails) GetMessageName() string { return "ipsec_sa_details" }
-func (*IpsecSaDetails) GetCrcString() string   { return "b30c7f41" }
-func (*IpsecSaDetails) GetMessageType() api.MessageType {
-       return api.ReplyMessage
+func (m *IpsecSadEntryAddDelV2) Reset()               { *m = IpsecSadEntryAddDelV2{} }
+func (*IpsecSadEntryAddDelV2) GetMessageName() string { return "ipsec_sad_entry_add_del_v2" }
+func (*IpsecSadEntryAddDelV2) GetCrcString() string   { return "aca78b27" }
+func (*IpsecSadEntryAddDelV2) GetMessageType() api.MessageType {
+       return api.RequestMessage
 }
 
-func (m *IpsecSaDetails) Size() (size int) {
+func (m *IpsecSadEntryAddDelV2) Size() (size int) {
        if m == nil {
                return 0
        }
+       size += 1       // m.IsAdd
        size += 4       // m.Entry.SadID
        size += 4       // m.Entry.Spi
        size += 4       // m.Entry.Protocol
@@ -279,23 +1080,20 @@ func (m *IpsecSaDetails) Size() (size int) {
        size += 1 * 16  // m.Entry.TunnelSrc.Un
        size += 1       // m.Entry.TunnelDst.Af
        size += 1 * 16  // m.Entry.TunnelDst.Un
+       size += 1       // m.Entry.TunnelFlags
+       size += 1       // m.Entry.Dscp
        size += 4       // m.Entry.TxTableID
        size += 4       // m.Entry.Salt
        size += 2       // m.Entry.UDPSrcPort
        size += 2       // m.Entry.UDPDstPort
-       size += 4       // m.SwIfIndex
-       size += 4       // m.Salt
-       size += 8       // m.SeqOutbound
-       size += 8       // m.LastSeqInbound
-       size += 8       // m.ReplayWindow
-       size += 4       // m.StatIndex
        return size
 }
-func (m *IpsecSaDetails) Marshal(b []byte) ([]byte, error) {
+func (m *IpsecSadEntryAddDelV2) Marshal(b []byte) ([]byte, error) {
        if b == nil {
                b = make([]byte, m.Size())
        }
        buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsAdd)
        buf.EncodeUint32(m.Entry.SadID)
        buf.EncodeUint32(m.Entry.Spi)
        buf.EncodeUint32(uint32(m.Entry.Protocol))
@@ -310,20 +1108,17 @@ func (m *IpsecSaDetails) Marshal(b []byte) ([]byte, error) {
        buf.EncodeBytes(m.Entry.TunnelSrc.Un.XXX_UnionData[:], 16)
        buf.EncodeUint8(uint8(m.Entry.TunnelDst.Af))
        buf.EncodeBytes(m.Entry.TunnelDst.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(uint8(m.Entry.TunnelFlags))
+       buf.EncodeUint8(uint8(m.Entry.Dscp))
        buf.EncodeUint32(m.Entry.TxTableID)
        buf.EncodeUint32(m.Entry.Salt)
        buf.EncodeUint16(m.Entry.UDPSrcPort)
        buf.EncodeUint16(m.Entry.UDPDstPort)
-       buf.EncodeUint32(uint32(m.SwIfIndex))
-       buf.EncodeUint32(m.Salt)
-       buf.EncodeUint64(m.SeqOutbound)
-       buf.EncodeUint64(m.LastSeqInbound)
-       buf.EncodeUint64(m.ReplayWindow)
-       buf.EncodeUint32(m.StatIndex)
        return buf.Bytes(), nil
 }
-func (m *IpsecSaDetails) Unmarshal(b []byte) error {
+func (m *IpsecSadEntryAddDelV2) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeBool()
        m.Entry.SadID = buf.DecodeUint32()
        m.Entry.Spi = buf.DecodeUint32()
        m.Entry.Protocol = ipsec_types.IpsecProto(buf.DecodeUint32())
@@ -340,66 +1135,66 @@ func (m *IpsecSaDetails) Unmarshal(b []byte) error {
        copy(m.Entry.TunnelSrc.Un.XXX_UnionData[:], buf.DecodeBytes(16))
        m.Entry.TunnelDst.Af = ip_types.AddressFamily(buf.DecodeUint8())
        copy(m.Entry.TunnelDst.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Entry.TunnelFlags = tunnel_types.TunnelEncapDecapFlags(buf.DecodeUint8())
+       m.Entry.Dscp = ip_types.IPDscp(buf.DecodeUint8())
        m.Entry.TxTableID = buf.DecodeUint32()
        m.Entry.Salt = buf.DecodeUint32()
        m.Entry.UDPSrcPort = buf.DecodeUint16()
        m.Entry.UDPDstPort = buf.DecodeUint16()
-       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
-       m.Salt = buf.DecodeUint32()
-       m.SeqOutbound = buf.DecodeUint64()
-       m.LastSeqInbound = buf.DecodeUint64()
-       m.ReplayWindow = buf.DecodeUint64()
-       m.StatIndex = buf.DecodeUint32()
        return nil
 }
 
-// IpsecSaDump defines message 'ipsec_sa_dump'.
-type IpsecSaDump struct {
-       SaID uint32 `binapi:"u32,name=sa_id" json:"sa_id,omitempty"`
+// IpsecSadEntryAddDelV2Reply defines message 'ipsec_sad_entry_add_del_v2_reply'.
+type IpsecSadEntryAddDelV2Reply struct {
+       Retval    int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       StatIndex uint32 `binapi:"u32,name=stat_index" json:"stat_index,omitempty"`
 }
 
-func (m *IpsecSaDump) Reset()               { *m = IpsecSaDump{} }
-func (*IpsecSaDump) GetMessageName() string { return "ipsec_sa_dump" }
-func (*IpsecSaDump) GetCrcString() string   { return "2076c2f4" }
-func (*IpsecSaDump) GetMessageType() api.MessageType {
-       return api.RequestMessage
+func (m *IpsecSadEntryAddDelV2Reply) Reset()               { *m = IpsecSadEntryAddDelV2Reply{} }
+func (*IpsecSadEntryAddDelV2Reply) GetMessageName() string { return "ipsec_sad_entry_add_del_v2_reply" }
+func (*IpsecSadEntryAddDelV2Reply) GetCrcString() string   { return "9ffac24b" }
+func (*IpsecSadEntryAddDelV2Reply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
 }
 
-func (m *IpsecSaDump) Size() (size int) {
+func (m *IpsecSadEntryAddDelV2Reply) Size() (size int) {
        if m == nil {
                return 0
        }
-       size += 4 // m.SaID
+       size += 4 // m.Retval
+       size += 4 // m.StatIndex
        return size
 }
-func (m *IpsecSaDump) Marshal(b []byte) ([]byte, error) {
+func (m *IpsecSadEntryAddDelV2Reply) Marshal(b []byte) ([]byte, error) {
        if b == nil {
                b = make([]byte, m.Size())
        }
        buf := codec.NewBuffer(b)
-       buf.EncodeUint32(m.SaID)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.StatIndex)
        return buf.Bytes(), nil
 }
-func (m *IpsecSaDump) Unmarshal(b []byte) error {
+func (m *IpsecSadEntryAddDelV2Reply) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
-       m.SaID = buf.DecodeUint32()
+       m.Retval = buf.DecodeInt32()
+       m.StatIndex = buf.DecodeUint32()
        return nil
 }
 
-// IpsecSadEntryAddDel defines message 'ipsec_sad_entry_add_del'.
-type IpsecSadEntryAddDel struct {
-       IsAdd bool                      `binapi:"bool,name=is_add" json:"is_add,omitempty"`
-       Entry ipsec_types.IpsecSadEntry `binapi:"ipsec_sad_entry,name=entry" json:"entry,omitempty"`
+// IpsecSadEntryAddDelV3 defines message 'ipsec_sad_entry_add_del_v3'.
+type IpsecSadEntryAddDelV3 struct {
+       IsAdd bool                        `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       Entry ipsec_types.IpsecSadEntryV3 `binapi:"ipsec_sad_entry_v3,name=entry" json:"entry,omitempty"`
 }
 
-func (m *IpsecSadEntryAddDel) Reset()               { *m = IpsecSadEntryAddDel{} }
-func (*IpsecSadEntryAddDel) GetMessageName() string { return "ipsec_sad_entry_add_del" }
-func (*IpsecSadEntryAddDel) GetCrcString() string   { return "b8def364" }
-func (*IpsecSadEntryAddDel) GetMessageType() api.MessageType {
+func (m *IpsecSadEntryAddDelV3) Reset()               { *m = IpsecSadEntryAddDelV3{} }
+func (*IpsecSadEntryAddDelV3) GetMessageName() string { return "ipsec_sad_entry_add_del_v3" }
+func (*IpsecSadEntryAddDelV3) GetCrcString() string   { return "c77ebd92" }
+func (*IpsecSadEntryAddDelV3) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 
-func (m *IpsecSadEntryAddDel) Size() (size int) {
+func (m *IpsecSadEntryAddDelV3) Size() (size int) {
        if m == nil {
                return 0
        }
@@ -414,17 +1209,24 @@ func (m *IpsecSadEntryAddDel) Size() (size int) {
        size += 1       // m.Entry.IntegrityKey.Length
        size += 1 * 128 // m.Entry.IntegrityKey.Data
        size += 4       // m.Entry.Flags
-       size += 1       // m.Entry.TunnelSrc.Af
-       size += 1 * 16  // m.Entry.TunnelSrc.Un
-       size += 1       // m.Entry.TunnelDst.Af
-       size += 1 * 16  // m.Entry.TunnelDst.Un
-       size += 4       // m.Entry.TxTableID
+       size += 4       // m.Entry.Tunnel.Instance
+       size += 1       // m.Entry.Tunnel.Src.Af
+       size += 1 * 16  // m.Entry.Tunnel.Src.Un
+       size += 1       // m.Entry.Tunnel.Dst.Af
+       size += 1 * 16  // m.Entry.Tunnel.Dst.Un
+       size += 4       // m.Entry.Tunnel.SwIfIndex
+       size += 4       // m.Entry.Tunnel.TableID
+       size += 1       // m.Entry.Tunnel.EncapDecapFlags
+       size += 1       // m.Entry.Tunnel.Mode
+       size += 1       // m.Entry.Tunnel.Flags
+       size += 1       // m.Entry.Tunnel.Dscp
+       size += 1       // m.Entry.Tunnel.HopLimit
        size += 4       // m.Entry.Salt
        size += 2       // m.Entry.UDPSrcPort
        size += 2       // m.Entry.UDPDstPort
        return size
 }
-func (m *IpsecSadEntryAddDel) Marshal(b []byte) ([]byte, error) {
+func (m *IpsecSadEntryAddDelV3) Marshal(b []byte) ([]byte, error) {
        if b == nil {
                b = make([]byte, m.Size())
        }
@@ -440,17 +1242,24 @@ func (m *IpsecSadEntryAddDel) Marshal(b []byte) ([]byte, error) {
        buf.EncodeUint8(m.Entry.IntegrityKey.Length)
        buf.EncodeBytes(m.Entry.IntegrityKey.Data, 128)
        buf.EncodeUint32(uint32(m.Entry.Flags))
-       buf.EncodeUint8(uint8(m.Entry.TunnelSrc.Af))
-       buf.EncodeBytes(m.Entry.TunnelSrc.Un.XXX_UnionData[:], 16)
-       buf.EncodeUint8(uint8(m.Entry.TunnelDst.Af))
-       buf.EncodeBytes(m.Entry.TunnelDst.Un.XXX_UnionData[:], 16)
-       buf.EncodeUint32(m.Entry.TxTableID)
+       buf.EncodeUint32(m.Entry.Tunnel.Instance)
+       buf.EncodeUint8(uint8(m.Entry.Tunnel.Src.Af))
+       buf.EncodeBytes(m.Entry.Tunnel.Src.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(uint8(m.Entry.Tunnel.Dst.Af))
+       buf.EncodeBytes(m.Entry.Tunnel.Dst.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint32(uint32(m.Entry.Tunnel.SwIfIndex))
+       buf.EncodeUint32(m.Entry.Tunnel.TableID)
+       buf.EncodeUint8(uint8(m.Entry.Tunnel.EncapDecapFlags))
+       buf.EncodeUint8(uint8(m.Entry.Tunnel.Mode))
+       buf.EncodeUint8(uint8(m.Entry.Tunnel.Flags))
+       buf.EncodeUint8(uint8(m.Entry.Tunnel.Dscp))
+       buf.EncodeUint8(m.Entry.Tunnel.HopLimit)
        buf.EncodeUint32(m.Entry.Salt)
        buf.EncodeUint16(m.Entry.UDPSrcPort)
        buf.EncodeUint16(m.Entry.UDPDstPort)
        return buf.Bytes(), nil
 }
-func (m *IpsecSadEntryAddDel) Unmarshal(b []byte) error {
+func (m *IpsecSadEntryAddDelV3) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
        m.IsAdd = buf.DecodeBool()
        m.Entry.SadID = buf.DecodeUint32()
@@ -465,31 +1274,38 @@ func (m *IpsecSadEntryAddDel) Unmarshal(b []byte) error {
        m.Entry.IntegrityKey.Data = make([]byte, 128)
        copy(m.Entry.IntegrityKey.Data, buf.DecodeBytes(len(m.Entry.IntegrityKey.Data)))
        m.Entry.Flags = ipsec_types.IpsecSadFlags(buf.DecodeUint32())
-       m.Entry.TunnelSrc.Af = ip_types.AddressFamily(buf.DecodeUint8())
-       copy(m.Entry.TunnelSrc.Un.XXX_UnionData[:], buf.DecodeBytes(16))
-       m.Entry.TunnelDst.Af = ip_types.AddressFamily(buf.DecodeUint8())
-       copy(m.Entry.TunnelDst.Un.XXX_UnionData[:], buf.DecodeBytes(16))
-       m.Entry.TxTableID = buf.DecodeUint32()
+       m.Entry.Tunnel.Instance = buf.DecodeUint32()
+       m.Entry.Tunnel.Src.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Entry.Tunnel.Src.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Entry.Tunnel.Dst.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Entry.Tunnel.Dst.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Entry.Tunnel.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Entry.Tunnel.TableID = buf.DecodeUint32()
+       m.Entry.Tunnel.EncapDecapFlags = tunnel_types.TunnelEncapDecapFlags(buf.DecodeUint8())
+       m.Entry.Tunnel.Mode = tunnel_types.TunnelMode(buf.DecodeUint8())
+       m.Entry.Tunnel.Flags = tunnel_types.TunnelFlags(buf.DecodeUint8())
+       m.Entry.Tunnel.Dscp = ip_types.IPDscp(buf.DecodeUint8())
+       m.Entry.Tunnel.HopLimit = buf.DecodeUint8()
        m.Entry.Salt = buf.DecodeUint32()
        m.Entry.UDPSrcPort = buf.DecodeUint16()
        m.Entry.UDPDstPort = buf.DecodeUint16()
        return nil
 }
 
-// IpsecSadEntryAddDelReply defines message 'ipsec_sad_entry_add_del_reply'.
-type IpsecSadEntryAddDelReply struct {
+// IpsecSadEntryAddDelV3Reply defines message 'ipsec_sad_entry_add_del_v3_reply'.
+type IpsecSadEntryAddDelV3Reply struct {
        Retval    int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
        StatIndex uint32 `binapi:"u32,name=stat_index" json:"stat_index,omitempty"`
 }
 
-func (m *IpsecSadEntryAddDelReply) Reset()               { *m = IpsecSadEntryAddDelReply{} }
-func (*IpsecSadEntryAddDelReply) GetMessageName() string { return "ipsec_sad_entry_add_del_reply" }
-func (*IpsecSadEntryAddDelReply) GetCrcString() string   { return "9ffac24b" }
-func (*IpsecSadEntryAddDelReply) GetMessageType() api.MessageType {
+func (m *IpsecSadEntryAddDelV3Reply) Reset()               { *m = IpsecSadEntryAddDelV3Reply{} }
+func (*IpsecSadEntryAddDelV3Reply) GetMessageName() string { return "ipsec_sad_entry_add_del_v3_reply" }
+func (*IpsecSadEntryAddDelV3Reply) GetCrcString() string   { return "9ffac24b" }
+func (*IpsecSadEntryAddDelV3Reply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 
-func (m *IpsecSadEntryAddDelReply) Size() (size int) {
+func (m *IpsecSadEntryAddDelV3Reply) Size() (size int) {
        if m == nil {
                return 0
        }
@@ -497,7 +1313,7 @@ func (m *IpsecSadEntryAddDelReply) Size() (size int) {
        size += 4 // m.StatIndex
        return size
 }
-func (m *IpsecSadEntryAddDelReply) Marshal(b []byte) ([]byte, error) {
+func (m *IpsecSadEntryAddDelV3Reply) Marshal(b []byte) ([]byte, error) {
        if b == nil {
                b = make([]byte, m.Size())
        }
@@ -506,7 +1322,7 @@ func (m *IpsecSadEntryAddDelReply) Marshal(b []byte) ([]byte, error) {
        buf.EncodeUint32(m.StatIndex)
        return buf.Bytes(), nil
 }
-func (m *IpsecSadEntryAddDelReply) Unmarshal(b []byte) error {
+func (m *IpsecSadEntryAddDelV3Reply) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
        m.Retval = buf.DecodeInt32()
        m.StatIndex = buf.DecodeUint32()
@@ -583,6 +1399,72 @@ func (m *IpsecSelectBackendReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// IpsecSetAsyncMode defines message 'ipsec_set_async_mode'.
+type IpsecSetAsyncMode struct {
+       AsyncEnable bool `binapi:"bool,name=async_enable" json:"async_enable,omitempty"`
+}
+
+func (m *IpsecSetAsyncMode) Reset()               { *m = IpsecSetAsyncMode{} }
+func (*IpsecSetAsyncMode) GetMessageName() string { return "ipsec_set_async_mode" }
+func (*IpsecSetAsyncMode) GetCrcString() string   { return "a6465f7c" }
+func (*IpsecSetAsyncMode) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *IpsecSetAsyncMode) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.AsyncEnable
+       return size
+}
+func (m *IpsecSetAsyncMode) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.AsyncEnable)
+       return buf.Bytes(), nil
+}
+func (m *IpsecSetAsyncMode) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.AsyncEnable = buf.DecodeBool()
+       return nil
+}
+
+// IpsecSetAsyncModeReply defines message 'ipsec_set_async_mode_reply'.
+type IpsecSetAsyncModeReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *IpsecSetAsyncModeReply) Reset()               { *m = IpsecSetAsyncModeReply{} }
+func (*IpsecSetAsyncModeReply) GetMessageName() string { return "ipsec_set_async_mode_reply" }
+func (*IpsecSetAsyncModeReply) GetCrcString() string   { return "e8d4e804" }
+func (*IpsecSetAsyncModeReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *IpsecSetAsyncModeReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *IpsecSetAsyncModeReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *IpsecSetAsyncModeReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
 // IpsecSpdAddDel defines message 'ipsec_spd_add_del'.
 type IpsecSpdAddDel struct {
        IsAdd bool   `binapi:"bool,name=is_add" json:"is_add,omitempty"`
@@ -660,7 +1542,7 @@ type IpsecSpdDetails struct {
 
 func (m *IpsecSpdDetails) Reset()               { *m = IpsecSpdDetails{} }
 func (*IpsecSpdDetails) GetMessageName() string { return "ipsec_spd_details" }
-func (*IpsecSpdDetails) GetCrcString() string   { return "f2222790" }
+func (*IpsecSpdDetails) GetCrcString() string   { return "5813d7a2" }
 func (*IpsecSpdDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -782,7 +1664,7 @@ type IpsecSpdEntryAddDel struct {
 
 func (m *IpsecSpdEntryAddDel) Reset()               { *m = IpsecSpdEntryAddDel{} }
 func (*IpsecSpdEntryAddDel) GetMessageName() string { return "ipsec_spd_entry_add_del" }
-func (*IpsecSpdEntryAddDel) GetCrcString() string   { return "9f384b8d" }
+func (*IpsecSpdEntryAddDel) GetCrcString() string   { return "338b7411" }
 func (*IpsecSpdEntryAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1037,244 +1919,6 @@ func (m *IpsecSpdsDump) Unmarshal(b []byte) error {
        return nil
 }
 
-// IpsecTunnelIfAddDel defines message 'ipsec_tunnel_if_add_del'.
-type IpsecTunnelIfAddDel struct {
-       IsAdd              bool             `binapi:"bool,name=is_add" json:"is_add,omitempty"`
-       Esn                bool             `binapi:"bool,name=esn" json:"esn,omitempty"`
-       AntiReplay         bool             `binapi:"bool,name=anti_replay" json:"anti_replay,omitempty"`
-       LocalIP            ip_types.Address `binapi:"address,name=local_ip" json:"local_ip,omitempty"`
-       RemoteIP           ip_types.Address `binapi:"address,name=remote_ip" json:"remote_ip,omitempty"`
-       LocalSpi           uint32           `binapi:"u32,name=local_spi" json:"local_spi,omitempty"`
-       RemoteSpi          uint32           `binapi:"u32,name=remote_spi" json:"remote_spi,omitempty"`
-       CryptoAlg          uint8            `binapi:"u8,name=crypto_alg" json:"crypto_alg,omitempty"`
-       LocalCryptoKeyLen  uint8            `binapi:"u8,name=local_crypto_key_len" json:"local_crypto_key_len,omitempty"`
-       LocalCryptoKey     []byte           `binapi:"u8[128],name=local_crypto_key" json:"local_crypto_key,omitempty"`
-       RemoteCryptoKeyLen uint8            `binapi:"u8,name=remote_crypto_key_len" json:"remote_crypto_key_len,omitempty"`
-       RemoteCryptoKey    []byte           `binapi:"u8[128],name=remote_crypto_key" json:"remote_crypto_key,omitempty"`
-       IntegAlg           uint8            `binapi:"u8,name=integ_alg" json:"integ_alg,omitempty"`
-       LocalIntegKeyLen   uint8            `binapi:"u8,name=local_integ_key_len" json:"local_integ_key_len,omitempty"`
-       LocalIntegKey      []byte           `binapi:"u8[128],name=local_integ_key" json:"local_integ_key,omitempty"`
-       RemoteIntegKeyLen  uint8            `binapi:"u8,name=remote_integ_key_len" json:"remote_integ_key_len,omitempty"`
-       RemoteIntegKey     []byte           `binapi:"u8[128],name=remote_integ_key" json:"remote_integ_key,omitempty"`
-       Renumber           bool             `binapi:"bool,name=renumber" json:"renumber,omitempty"`
-       ShowInstance       uint32           `binapi:"u32,name=show_instance" json:"show_instance,omitempty"`
-       UDPEncap           bool             `binapi:"bool,name=udp_encap" json:"udp_encap,omitempty"`
-       TxTableID          uint32           `binapi:"u32,name=tx_table_id" json:"tx_table_id,omitempty"`
-       Salt               uint32           `binapi:"u32,name=salt" json:"salt,omitempty"`
-}
-
-func (m *IpsecTunnelIfAddDel) Reset()               { *m = IpsecTunnelIfAddDel{} }
-func (*IpsecTunnelIfAddDel) GetMessageName() string { return "ipsec_tunnel_if_add_del" }
-func (*IpsecTunnelIfAddDel) GetCrcString() string   { return "2b135e68" }
-func (*IpsecTunnelIfAddDel) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *IpsecTunnelIfAddDel) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1       // m.IsAdd
-       size += 1       // m.Esn
-       size += 1       // m.AntiReplay
-       size += 1       // m.LocalIP.Af
-       size += 1 * 16  // m.LocalIP.Un
-       size += 1       // m.RemoteIP.Af
-       size += 1 * 16  // m.RemoteIP.Un
-       size += 4       // m.LocalSpi
-       size += 4       // m.RemoteSpi
-       size += 1       // m.CryptoAlg
-       size += 1       // m.LocalCryptoKeyLen
-       size += 1 * 128 // m.LocalCryptoKey
-       size += 1       // m.RemoteCryptoKeyLen
-       size += 1 * 128 // m.RemoteCryptoKey
-       size += 1       // m.IntegAlg
-       size += 1       // m.LocalIntegKeyLen
-       size += 1 * 128 // m.LocalIntegKey
-       size += 1       // m.RemoteIntegKeyLen
-       size += 1 * 128 // m.RemoteIntegKey
-       size += 1       // m.Renumber
-       size += 4       // m.ShowInstance
-       size += 1       // m.UDPEncap
-       size += 4       // m.TxTableID
-       size += 4       // m.Salt
-       return size
-}
-func (m *IpsecTunnelIfAddDel) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeBool(m.IsAdd)
-       buf.EncodeBool(m.Esn)
-       buf.EncodeBool(m.AntiReplay)
-       buf.EncodeUint8(uint8(m.LocalIP.Af))
-       buf.EncodeBytes(m.LocalIP.Un.XXX_UnionData[:], 16)
-       buf.EncodeUint8(uint8(m.RemoteIP.Af))
-       buf.EncodeBytes(m.RemoteIP.Un.XXX_UnionData[:], 16)
-       buf.EncodeUint32(m.LocalSpi)
-       buf.EncodeUint32(m.RemoteSpi)
-       buf.EncodeUint8(m.CryptoAlg)
-       buf.EncodeUint8(m.LocalCryptoKeyLen)
-       buf.EncodeBytes(m.LocalCryptoKey, 128)
-       buf.EncodeUint8(m.RemoteCryptoKeyLen)
-       buf.EncodeBytes(m.RemoteCryptoKey, 128)
-       buf.EncodeUint8(m.IntegAlg)
-       buf.EncodeUint8(m.LocalIntegKeyLen)
-       buf.EncodeBytes(m.LocalIntegKey, 128)
-       buf.EncodeUint8(m.RemoteIntegKeyLen)
-       buf.EncodeBytes(m.RemoteIntegKey, 128)
-       buf.EncodeBool(m.Renumber)
-       buf.EncodeUint32(m.ShowInstance)
-       buf.EncodeBool(m.UDPEncap)
-       buf.EncodeUint32(m.TxTableID)
-       buf.EncodeUint32(m.Salt)
-       return buf.Bytes(), nil
-}
-func (m *IpsecTunnelIfAddDel) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.IsAdd = buf.DecodeBool()
-       m.Esn = buf.DecodeBool()
-       m.AntiReplay = buf.DecodeBool()
-       m.LocalIP.Af = ip_types.AddressFamily(buf.DecodeUint8())
-       copy(m.LocalIP.Un.XXX_UnionData[:], buf.DecodeBytes(16))
-       m.RemoteIP.Af = ip_types.AddressFamily(buf.DecodeUint8())
-       copy(m.RemoteIP.Un.XXX_UnionData[:], buf.DecodeBytes(16))
-       m.LocalSpi = buf.DecodeUint32()
-       m.RemoteSpi = buf.DecodeUint32()
-       m.CryptoAlg = buf.DecodeUint8()
-       m.LocalCryptoKeyLen = buf.DecodeUint8()
-       m.LocalCryptoKey = make([]byte, 128)
-       copy(m.LocalCryptoKey, buf.DecodeBytes(len(m.LocalCryptoKey)))
-       m.RemoteCryptoKeyLen = buf.DecodeUint8()
-       m.RemoteCryptoKey = make([]byte, 128)
-       copy(m.RemoteCryptoKey, buf.DecodeBytes(len(m.RemoteCryptoKey)))
-       m.IntegAlg = buf.DecodeUint8()
-       m.LocalIntegKeyLen = buf.DecodeUint8()
-       m.LocalIntegKey = make([]byte, 128)
-       copy(m.LocalIntegKey, buf.DecodeBytes(len(m.LocalIntegKey)))
-       m.RemoteIntegKeyLen = buf.DecodeUint8()
-       m.RemoteIntegKey = make([]byte, 128)
-       copy(m.RemoteIntegKey, buf.DecodeBytes(len(m.RemoteIntegKey)))
-       m.Renumber = buf.DecodeBool()
-       m.ShowInstance = buf.DecodeUint32()
-       m.UDPEncap = buf.DecodeBool()
-       m.TxTableID = buf.DecodeUint32()
-       m.Salt = buf.DecodeUint32()
-       return nil
-}
-
-// IpsecTunnelIfAddDelReply defines message 'ipsec_tunnel_if_add_del_reply'.
-type IpsecTunnelIfAddDelReply struct {
-       Retval    int32                          `binapi:"i32,name=retval" json:"retval,omitempty"`
-       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
-}
-
-func (m *IpsecTunnelIfAddDelReply) Reset()               { *m = IpsecTunnelIfAddDelReply{} }
-func (*IpsecTunnelIfAddDelReply) GetMessageName() string { return "ipsec_tunnel_if_add_del_reply" }
-func (*IpsecTunnelIfAddDelReply) GetCrcString() string   { return "5383d31f" }
-func (*IpsecTunnelIfAddDelReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *IpsecTunnelIfAddDelReply) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 4 // m.Retval
-       size += 4 // m.SwIfIndex
-       return size
-}
-func (m *IpsecTunnelIfAddDelReply) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeInt32(m.Retval)
-       buf.EncodeUint32(uint32(m.SwIfIndex))
-       return buf.Bytes(), nil
-}
-func (m *IpsecTunnelIfAddDelReply) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.Retval = buf.DecodeInt32()
-       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
-       return nil
-}
-
-// IpsecTunnelIfSetSa defines message 'ipsec_tunnel_if_set_sa'.
-type IpsecTunnelIfSetSa struct {
-       SwIfIndex  interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
-       SaID       uint32                         `binapi:"u32,name=sa_id" json:"sa_id,omitempty"`
-       IsOutbound uint8                          `binapi:"u8,name=is_outbound" json:"is_outbound,omitempty"`
-}
-
-func (m *IpsecTunnelIfSetSa) Reset()               { *m = IpsecTunnelIfSetSa{} }
-func (*IpsecTunnelIfSetSa) GetMessageName() string { return "ipsec_tunnel_if_set_sa" }
-func (*IpsecTunnelIfSetSa) GetCrcString() string   { return "f2f87112" }
-func (*IpsecTunnelIfSetSa) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *IpsecTunnelIfSetSa) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 4 // m.SwIfIndex
-       size += 4 // m.SaID
-       size += 1 // m.IsOutbound
-       return size
-}
-func (m *IpsecTunnelIfSetSa) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeUint32(uint32(m.SwIfIndex))
-       buf.EncodeUint32(m.SaID)
-       buf.EncodeUint8(m.IsOutbound)
-       return buf.Bytes(), nil
-}
-func (m *IpsecTunnelIfSetSa) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
-       m.SaID = buf.DecodeUint32()
-       m.IsOutbound = buf.DecodeUint8()
-       return nil
-}
-
-// IpsecTunnelIfSetSaReply defines message 'ipsec_tunnel_if_set_sa_reply'.
-type IpsecTunnelIfSetSaReply struct {
-       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
-}
-
-func (m *IpsecTunnelIfSetSaReply) Reset()               { *m = IpsecTunnelIfSetSaReply{} }
-func (*IpsecTunnelIfSetSaReply) GetMessageName() string { return "ipsec_tunnel_if_set_sa_reply" }
-func (*IpsecTunnelIfSetSaReply) GetCrcString() string   { return "e8d4e804" }
-func (*IpsecTunnelIfSetSaReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *IpsecTunnelIfSetSaReply) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 4 // m.Retval
-       return size
-}
-func (m *IpsecTunnelIfSetSaReply) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeInt32(m.Retval)
-       return buf.Bytes(), nil
-}
-func (m *IpsecTunnelIfSetSaReply) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.Retval = buf.DecodeInt32()
-       return nil
-}
-
 // IpsecTunnelProtectDel defines message 'ipsec_tunnel_protect_del'.
 type IpsecTunnelProtectDel struct {
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
@@ -1283,7 +1927,7 @@ type IpsecTunnelProtectDel struct {
 
 func (m *IpsecTunnelProtectDel) Reset()               { *m = IpsecTunnelProtectDel{} }
 func (*IpsecTunnelProtectDel) GetMessageName() string { return "ipsec_tunnel_protect_del" }
-func (*IpsecTunnelProtectDel) GetCrcString() string   { return "ddd2ba36" }
+func (*IpsecTunnelProtectDel) GetCrcString() string   { return "cd239930" }
 func (*IpsecTunnelProtectDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1355,7 +1999,7 @@ type IpsecTunnelProtectDetails struct {
 
 func (m *IpsecTunnelProtectDetails) Reset()               { *m = IpsecTunnelProtectDetails{} }
 func (*IpsecTunnelProtectDetails) GetMessageName() string { return "ipsec_tunnel_protect_details" }
-func (*IpsecTunnelProtectDetails) GetCrcString() string   { return "ac6c823b" }
+func (*IpsecTunnelProtectDetails) GetCrcString() string   { return "21663a50" }
 func (*IpsecTunnelProtectDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1445,7 +2089,7 @@ type IpsecTunnelProtectUpdate struct {
 
 func (m *IpsecTunnelProtectUpdate) Reset()               { *m = IpsecTunnelProtectUpdate{} }
 func (*IpsecTunnelProtectUpdate) GetMessageName() string { return "ipsec_tunnel_protect_update" }
-func (*IpsecTunnelProtectUpdate) GetCrcString() string   { return "143f155d" }
+func (*IpsecTunnelProtectUpdate) GetCrcString() string   { return "30d5f133" }
 func (*IpsecTunnelProtectUpdate) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1536,31 +2180,43 @@ func file_ipsec_binapi_init() {
        api.RegisterMessage((*IpsecBackendDump)(nil), "ipsec_backend_dump_51077d14")
        api.RegisterMessage((*IpsecInterfaceAddDelSpd)(nil), "ipsec_interface_add_del_spd_80f80cbb")
        api.RegisterMessage((*IpsecInterfaceAddDelSpdReply)(nil), "ipsec_interface_add_del_spd_reply_e8d4e804")
-       api.RegisterMessage((*IpsecSaDetails)(nil), "ipsec_sa_details_b30c7f41")
+       api.RegisterMessage((*IpsecItfCreate)(nil), "ipsec_itf_create_6f50b3bc")
+       api.RegisterMessage((*IpsecItfCreateReply)(nil), "ipsec_itf_create_reply_5383d31f")
+       api.RegisterMessage((*IpsecItfDelete)(nil), "ipsec_itf_delete_f9e6675e")
+       api.RegisterMessage((*IpsecItfDeleteReply)(nil), "ipsec_itf_delete_reply_e8d4e804")
+       api.RegisterMessage((*IpsecItfDetails)(nil), "ipsec_itf_details_548a73b8")
+       api.RegisterMessage((*IpsecItfDump)(nil), "ipsec_itf_dump_f9e6675e")
+       api.RegisterMessage((*IpsecSaDetails)(nil), "ipsec_sa_details_345d14a7")
        api.RegisterMessage((*IpsecSaDump)(nil), "ipsec_sa_dump_2076c2f4")
-       api.RegisterMessage((*IpsecSadEntryAddDel)(nil), "ipsec_sad_entry_add_del_b8def364")
+       api.RegisterMessage((*IpsecSaV2Details)(nil), "ipsec_sa_v2_details_e2130051")
+       api.RegisterMessage((*IpsecSaV2Dump)(nil), "ipsec_sa_v2_dump_2076c2f4")
+       api.RegisterMessage((*IpsecSaV3Details)(nil), "ipsec_sa_v3_details_2fc991ee")
+       api.RegisterMessage((*IpsecSaV3Dump)(nil), "ipsec_sa_v3_dump_2076c2f4")
+       api.RegisterMessage((*IpsecSadEntryAddDel)(nil), "ipsec_sad_entry_add_del_ab64b5c6")
        api.RegisterMessage((*IpsecSadEntryAddDelReply)(nil), "ipsec_sad_entry_add_del_reply_9ffac24b")
+       api.RegisterMessage((*IpsecSadEntryAddDelV2)(nil), "ipsec_sad_entry_add_del_v2_aca78b27")
+       api.RegisterMessage((*IpsecSadEntryAddDelV2Reply)(nil), "ipsec_sad_entry_add_del_v2_reply_9ffac24b")
+       api.RegisterMessage((*IpsecSadEntryAddDelV3)(nil), "ipsec_sad_entry_add_del_v3_c77ebd92")
+       api.RegisterMessage((*IpsecSadEntryAddDelV3Reply)(nil), "ipsec_sad_entry_add_del_v3_reply_9ffac24b")
        api.RegisterMessage((*IpsecSelectBackend)(nil), "ipsec_select_backend_5bcfd3b7")
        api.RegisterMessage((*IpsecSelectBackendReply)(nil), "ipsec_select_backend_reply_e8d4e804")
+       api.RegisterMessage((*IpsecSetAsyncMode)(nil), "ipsec_set_async_mode_a6465f7c")
+       api.RegisterMessage((*IpsecSetAsyncModeReply)(nil), "ipsec_set_async_mode_reply_e8d4e804")
        api.RegisterMessage((*IpsecSpdAddDel)(nil), "ipsec_spd_add_del_20e89a95")
        api.RegisterMessage((*IpsecSpdAddDelReply)(nil), "ipsec_spd_add_del_reply_e8d4e804")
-       api.RegisterMessage((*IpsecSpdDetails)(nil), "ipsec_spd_details_f2222790")
+       api.RegisterMessage((*IpsecSpdDetails)(nil), "ipsec_spd_details_5813d7a2")
        api.RegisterMessage((*IpsecSpdDump)(nil), "ipsec_spd_dump_afefbf7d")
-       api.RegisterMessage((*IpsecSpdEntryAddDel)(nil), "ipsec_spd_entry_add_del_9f384b8d")
+       api.RegisterMessage((*IpsecSpdEntryAddDel)(nil), "ipsec_spd_entry_add_del_338b7411")
        api.RegisterMessage((*IpsecSpdEntryAddDelReply)(nil), "ipsec_spd_entry_add_del_reply_9ffac24b")
        api.RegisterMessage((*IpsecSpdInterfaceDetails)(nil), "ipsec_spd_interface_details_7a0bcf3e")
        api.RegisterMessage((*IpsecSpdInterfaceDump)(nil), "ipsec_spd_interface_dump_8971de19")
        api.RegisterMessage((*IpsecSpdsDetails)(nil), "ipsec_spds_details_a04bb254")
        api.RegisterMessage((*IpsecSpdsDump)(nil), "ipsec_spds_dump_51077d14")
-       api.RegisterMessage((*IpsecTunnelIfAddDel)(nil), "ipsec_tunnel_if_add_del_2b135e68")
-       api.RegisterMessage((*IpsecTunnelIfAddDelReply)(nil), "ipsec_tunnel_if_add_del_reply_5383d31f")
-       api.RegisterMessage((*IpsecTunnelIfSetSa)(nil), "ipsec_tunnel_if_set_sa_f2f87112")
-       api.RegisterMessage((*IpsecTunnelIfSetSaReply)(nil), "ipsec_tunnel_if_set_sa_reply_e8d4e804")
-       api.RegisterMessage((*IpsecTunnelProtectDel)(nil), "ipsec_tunnel_protect_del_ddd2ba36")
+       api.RegisterMessage((*IpsecTunnelProtectDel)(nil), "ipsec_tunnel_protect_del_cd239930")
        api.RegisterMessage((*IpsecTunnelProtectDelReply)(nil), "ipsec_tunnel_protect_del_reply_e8d4e804")
-       api.RegisterMessage((*IpsecTunnelProtectDetails)(nil), "ipsec_tunnel_protect_details_ac6c823b")
+       api.RegisterMessage((*IpsecTunnelProtectDetails)(nil), "ipsec_tunnel_protect_details_21663a50")
        api.RegisterMessage((*IpsecTunnelProtectDump)(nil), "ipsec_tunnel_protect_dump_f9e6675e")
-       api.RegisterMessage((*IpsecTunnelProtectUpdate)(nil), "ipsec_tunnel_protect_update_143f155d")
+       api.RegisterMessage((*IpsecTunnelProtectUpdate)(nil), "ipsec_tunnel_protect_update_30d5f133")
        api.RegisterMessage((*IpsecTunnelProtectUpdateReply)(nil), "ipsec_tunnel_protect_update_reply_e8d4e804")
 }
 
@@ -1571,12 +2227,28 @@ func AllMessages() []api.Message {
                (*IpsecBackendDump)(nil),
                (*IpsecInterfaceAddDelSpd)(nil),
                (*IpsecInterfaceAddDelSpdReply)(nil),
+               (*IpsecItfCreate)(nil),
+               (*IpsecItfCreateReply)(nil),
+               (*IpsecItfDelete)(nil),
+               (*IpsecItfDeleteReply)(nil),
+               (*IpsecItfDetails)(nil),
+               (*IpsecItfDump)(nil),
                (*IpsecSaDetails)(nil),
                (*IpsecSaDump)(nil),
+               (*IpsecSaV2Details)(nil),
+               (*IpsecSaV2Dump)(nil),
+               (*IpsecSaV3Details)(nil),
+               (*IpsecSaV3Dump)(nil),
                (*IpsecSadEntryAddDel)(nil),
                (*IpsecSadEntryAddDelReply)(nil),
+               (*IpsecSadEntryAddDelV2)(nil),
+               (*IpsecSadEntryAddDelV2Reply)(nil),
+               (*IpsecSadEntryAddDelV3)(nil),
+               (*IpsecSadEntryAddDelV3Reply)(nil),
                (*IpsecSelectBackend)(nil),
                (*IpsecSelectBackendReply)(nil),
+               (*IpsecSetAsyncMode)(nil),
+               (*IpsecSetAsyncModeReply)(nil),
                (*IpsecSpdAddDel)(nil),
                (*IpsecSpdAddDelReply)(nil),
                (*IpsecSpdDetails)(nil),
@@ -1587,10 +2259,6 @@ func AllMessages() []api.Message {
                (*IpsecSpdInterfaceDump)(nil),
                (*IpsecSpdsDetails)(nil),
                (*IpsecSpdsDump)(nil),
-               (*IpsecTunnelIfAddDel)(nil),
-               (*IpsecTunnelIfAddDelReply)(nil),
-               (*IpsecTunnelIfSetSa)(nil),
-               (*IpsecTunnelIfSetSaReply)(nil),
                (*IpsecTunnelProtectDel)(nil),
                (*IpsecTunnelProtectDelReply)(nil),
                (*IpsecTunnelProtectDetails)(nil),
index 1e6b81d..2779873 100644 (file)
@@ -15,16 +15,22 @@ import (
 type RPCService interface {
        IpsecBackendDump(ctx context.Context, in *IpsecBackendDump) (RPCService_IpsecBackendDumpClient, error)
        IpsecInterfaceAddDelSpd(ctx context.Context, in *IpsecInterfaceAddDelSpd) (*IpsecInterfaceAddDelSpdReply, error)
+       IpsecItfCreate(ctx context.Context, in *IpsecItfCreate) (*IpsecItfCreateReply, error)
+       IpsecItfDelete(ctx context.Context, in *IpsecItfDelete) (*IpsecItfDeleteReply, error)
+       IpsecItfDump(ctx context.Context, in *IpsecItfDump) (RPCService_IpsecItfDumpClient, error)
        IpsecSaDump(ctx context.Context, in *IpsecSaDump) (RPCService_IpsecSaDumpClient, error)
+       IpsecSaV2Dump(ctx context.Context, in *IpsecSaV2Dump) (RPCService_IpsecSaV2DumpClient, error)
+       IpsecSaV3Dump(ctx context.Context, in *IpsecSaV3Dump) (RPCService_IpsecSaV3DumpClient, error)
        IpsecSadEntryAddDel(ctx context.Context, in *IpsecSadEntryAddDel) (*IpsecSadEntryAddDelReply, error)
+       IpsecSadEntryAddDelV2(ctx context.Context, in *IpsecSadEntryAddDelV2) (*IpsecSadEntryAddDelV2Reply, error)
+       IpsecSadEntryAddDelV3(ctx context.Context, in *IpsecSadEntryAddDelV3) (*IpsecSadEntryAddDelV3Reply, error)
        IpsecSelectBackend(ctx context.Context, in *IpsecSelectBackend) (*IpsecSelectBackendReply, error)
+       IpsecSetAsyncMode(ctx context.Context, in *IpsecSetAsyncMode) (*IpsecSetAsyncModeReply, error)
        IpsecSpdAddDel(ctx context.Context, in *IpsecSpdAddDel) (*IpsecSpdAddDelReply, error)
        IpsecSpdDump(ctx context.Context, in *IpsecSpdDump) (RPCService_IpsecSpdDumpClient, error)
        IpsecSpdEntryAddDel(ctx context.Context, in *IpsecSpdEntryAddDel) (*IpsecSpdEntryAddDelReply, error)
        IpsecSpdInterfaceDump(ctx context.Context, in *IpsecSpdInterfaceDump) (RPCService_IpsecSpdInterfaceDumpClient, error)
        IpsecSpdsDump(ctx context.Context, in *IpsecSpdsDump) (RPCService_IpsecSpdsDumpClient, error)
-       IpsecTunnelIfAddDel(ctx context.Context, in *IpsecTunnelIfAddDel) (*IpsecTunnelIfAddDelReply, error)
-       IpsecTunnelIfSetSa(ctx context.Context, in *IpsecTunnelIfSetSa) (*IpsecTunnelIfSetSaReply, error)
        IpsecTunnelProtectDel(ctx context.Context, in *IpsecTunnelProtectDel) (*IpsecTunnelProtectDelReply, error)
        IpsecTunnelProtectDump(ctx context.Context, in *IpsecTunnelProtectDump) (RPCService_IpsecTunnelProtectDumpClient, error)
        IpsecTunnelProtectUpdate(ctx context.Context, in *IpsecTunnelProtectUpdate) (*IpsecTunnelProtectUpdateReply, error)
@@ -86,6 +92,63 @@ func (c *serviceClient) IpsecInterfaceAddDelSpd(ctx context.Context, in *IpsecIn
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) IpsecItfCreate(ctx context.Context, in *IpsecItfCreate) (*IpsecItfCreateReply, error) {
+       out := new(IpsecItfCreateReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) IpsecItfDelete(ctx context.Context, in *IpsecItfDelete) (*IpsecItfDeleteReply, error) {
+       out := new(IpsecItfDeleteReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) IpsecItfDump(ctx context.Context, in *IpsecItfDump) (RPCService_IpsecItfDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_IpsecItfDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_IpsecItfDumpClient interface {
+       Recv() (*IpsecItfDetails, error)
+       api.Stream
+}
+
+type serviceClient_IpsecItfDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_IpsecItfDumpClient) Recv() (*IpsecItfDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *IpsecItfDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
 func (c *serviceClient) IpsecSaDump(ctx context.Context, in *IpsecSaDump) (RPCService_IpsecSaDumpClient, error) {
        stream, err := c.conn.NewStream(ctx)
        if err != nil {
@@ -125,6 +188,84 @@ func (c *serviceClient_IpsecSaDumpClient) Recv() (*IpsecSaDetails, error) {
        }
 }
 
+func (c *serviceClient) IpsecSaV2Dump(ctx context.Context, in *IpsecSaV2Dump) (RPCService_IpsecSaV2DumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_IpsecSaV2DumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_IpsecSaV2DumpClient interface {
+       Recv() (*IpsecSaV2Details, error)
+       api.Stream
+}
+
+type serviceClient_IpsecSaV2DumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_IpsecSaV2DumpClient) Recv() (*IpsecSaV2Details, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *IpsecSaV2Details:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) IpsecSaV3Dump(ctx context.Context, in *IpsecSaV3Dump) (RPCService_IpsecSaV3DumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_IpsecSaV3DumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_IpsecSaV3DumpClient interface {
+       Recv() (*IpsecSaV3Details, error)
+       api.Stream
+}
+
+type serviceClient_IpsecSaV3DumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_IpsecSaV3DumpClient) Recv() (*IpsecSaV3Details, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *IpsecSaV3Details:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
 func (c *serviceClient) IpsecSadEntryAddDel(ctx context.Context, in *IpsecSadEntryAddDel) (*IpsecSadEntryAddDelReply, error) {
        out := new(IpsecSadEntryAddDelReply)
        err := c.conn.Invoke(ctx, in, out)
@@ -134,6 +275,24 @@ func (c *serviceClient) IpsecSadEntryAddDel(ctx context.Context, in *IpsecSadEnt
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) IpsecSadEntryAddDelV2(ctx context.Context, in *IpsecSadEntryAddDelV2) (*IpsecSadEntryAddDelV2Reply, error) {
+       out := new(IpsecSadEntryAddDelV2Reply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) IpsecSadEntryAddDelV3(ctx context.Context, in *IpsecSadEntryAddDelV3) (*IpsecSadEntryAddDelV3Reply, error) {
+       out := new(IpsecSadEntryAddDelV3Reply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) IpsecSelectBackend(ctx context.Context, in *IpsecSelectBackend) (*IpsecSelectBackendReply, error) {
        out := new(IpsecSelectBackendReply)
        err := c.conn.Invoke(ctx, in, out)
@@ -143,6 +302,15 @@ func (c *serviceClient) IpsecSelectBackend(ctx context.Context, in *IpsecSelectB
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) IpsecSetAsyncMode(ctx context.Context, in *IpsecSetAsyncMode) (*IpsecSetAsyncModeReply, error) {
+       out := new(IpsecSetAsyncModeReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) IpsecSpdAddDel(ctx context.Context, in *IpsecSpdAddDel) (*IpsecSpdAddDelReply, error) {
        out := new(IpsecSpdAddDelReply)
        err := c.conn.Invoke(ctx, in, out)
@@ -278,24 +446,6 @@ func (c *serviceClient_IpsecSpdsDumpClient) Recv() (*IpsecSpdsDetails, error) {
        }
 }
 
-func (c *serviceClient) IpsecTunnelIfAddDel(ctx context.Context, in *IpsecTunnelIfAddDel) (*IpsecTunnelIfAddDelReply, error) {
-       out := new(IpsecTunnelIfAddDelReply)
-       err := c.conn.Invoke(ctx, in, out)
-       if err != nil {
-               return nil, err
-       }
-       return out, api.RetvalToVPPApiError(out.Retval)
-}
-
-func (c *serviceClient) IpsecTunnelIfSetSa(ctx context.Context, in *IpsecTunnelIfSetSa) (*IpsecTunnelIfSetSaReply, error) {
-       out := new(IpsecTunnelIfSetSaReply)
-       err := c.conn.Invoke(ctx, in, out)
-       if err != nil {
-               return nil, err
-       }
-       return out, api.RetvalToVPPApiError(out.Retval)
-}
-
 func (c *serviceClient) IpsecTunnelProtectDel(ctx context.Context, in *IpsecTunnelProtectDel) (*IpsecTunnelProtectDelReply, error) {
        out := new(IpsecTunnelProtectDelReply)
        err := c.conn.Invoke(ctx, in, out)
index aa83d09..5dd5e1d 100644 (file)
@@ -1,14 +1,14 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/ipsec_types.api.json
 
 // Package ipsec_types contains generated bindings for API file ipsec_types.api.
 //
 // Contents:
 //   4 enums
-//   2 structs
+//   4 structs
 //
 package ipsec_types
 
@@ -16,7 +16,9 @@ import (
        "strconv"
 
        api "git.fd.io/govpp.git/api"
+       _ "git.fd.io/govpp.git/binapi/interface_types"
        ip_types "git.fd.io/govpp.git/binapi/ip_types"
+       tunnel_types "git.fd.io/govpp.git/binapi/tunnel_types"
 )
 
 // This is a compile-time assertion to ensure that this generated file
@@ -162,17 +164,19 @@ const (
        IPSEC_API_SAD_FLAG_IS_TUNNEL_V6    IpsecSadFlags = 8
        IPSEC_API_SAD_FLAG_UDP_ENCAP       IpsecSadFlags = 16
        IPSEC_API_SAD_FLAG_IS_INBOUND      IpsecSadFlags = 64
+       IPSEC_API_SAD_FLAG_ASYNC           IpsecSadFlags = 128
 )
 
 var (
        IpsecSadFlags_name = map[uint32]string{
-               0:  "IPSEC_API_SAD_FLAG_NONE",
-               1:  "IPSEC_API_SAD_FLAG_USE_ESN",
-               2:  "IPSEC_API_SAD_FLAG_USE_ANTI_REPLAY",
-               4:  "IPSEC_API_SAD_FLAG_IS_TUNNEL",
-               8:  "IPSEC_API_SAD_FLAG_IS_TUNNEL_V6",
-               16: "IPSEC_API_SAD_FLAG_UDP_ENCAP",
-               64: "IPSEC_API_SAD_FLAG_IS_INBOUND",
+               0:   "IPSEC_API_SAD_FLAG_NONE",
+               1:   "IPSEC_API_SAD_FLAG_USE_ESN",
+               2:   "IPSEC_API_SAD_FLAG_USE_ANTI_REPLAY",
+               4:   "IPSEC_API_SAD_FLAG_IS_TUNNEL",
+               8:   "IPSEC_API_SAD_FLAG_IS_TUNNEL_V6",
+               16:  "IPSEC_API_SAD_FLAG_UDP_ENCAP",
+               64:  "IPSEC_API_SAD_FLAG_IS_INBOUND",
+               128: "IPSEC_API_SAD_FLAG_ASYNC",
        }
        IpsecSadFlags_value = map[string]uint32{
                "IPSEC_API_SAD_FLAG_NONE":            0,
@@ -182,6 +186,7 @@ var (
                "IPSEC_API_SAD_FLAG_IS_TUNNEL_V6":    8,
                "IPSEC_API_SAD_FLAG_UDP_ENCAP":       16,
                "IPSEC_API_SAD_FLAG_IS_INBOUND":      64,
+               "IPSEC_API_SAD_FLAG_ASYNC":           128,
        }
 )
 
@@ -230,6 +235,42 @@ type IpsecSadEntry struct {
        UDPDstPort         uint16           `binapi:"u16,name=udp_dst_port,default=4500" json:"udp_dst_port,omitempty"`
 }
 
+// IpsecSadEntryV2 defines type 'ipsec_sad_entry_v2'.
+type IpsecSadEntryV2 struct {
+       SadID              uint32                             `binapi:"u32,name=sad_id" json:"sad_id,omitempty"`
+       Spi                uint32                             `binapi:"u32,name=spi" json:"spi,omitempty"`
+       Protocol           IpsecProto                         `binapi:"ipsec_proto,name=protocol" json:"protocol,omitempty"`
+       CryptoAlgorithm    IpsecCryptoAlg                     `binapi:"ipsec_crypto_alg,name=crypto_algorithm" json:"crypto_algorithm,omitempty"`
+       CryptoKey          Key                                `binapi:"key,name=crypto_key" json:"crypto_key,omitempty"`
+       IntegrityAlgorithm IpsecIntegAlg                      `binapi:"ipsec_integ_alg,name=integrity_algorithm" json:"integrity_algorithm,omitempty"`
+       IntegrityKey       Key                                `binapi:"key,name=integrity_key" json:"integrity_key,omitempty"`
+       Flags              IpsecSadFlags                      `binapi:"ipsec_sad_flags,name=flags" json:"flags,omitempty"`
+       TunnelSrc          ip_types.Address                   `binapi:"address,name=tunnel_src" json:"tunnel_src,omitempty"`
+       TunnelDst          ip_types.Address                   `binapi:"address,name=tunnel_dst" json:"tunnel_dst,omitempty"`
+       TunnelFlags        tunnel_types.TunnelEncapDecapFlags `binapi:"tunnel_encap_decap_flags,name=tunnel_flags" json:"tunnel_flags,omitempty"`
+       Dscp               ip_types.IPDscp                    `binapi:"ip_dscp,name=dscp" json:"dscp,omitempty"`
+       TxTableID          uint32                             `binapi:"u32,name=tx_table_id" json:"tx_table_id,omitempty"`
+       Salt               uint32                             `binapi:"u32,name=salt" json:"salt,omitempty"`
+       UDPSrcPort         uint16                             `binapi:"u16,name=udp_src_port,default=4500" json:"udp_src_port,omitempty"`
+       UDPDstPort         uint16                             `binapi:"u16,name=udp_dst_port,default=4500" json:"udp_dst_port,omitempty"`
+}
+
+// IpsecSadEntryV3 defines type 'ipsec_sad_entry_v3'.
+type IpsecSadEntryV3 struct {
+       SadID              uint32              `binapi:"u32,name=sad_id" json:"sad_id,omitempty"`
+       Spi                uint32              `binapi:"u32,name=spi" json:"spi,omitempty"`
+       Protocol           IpsecProto          `binapi:"ipsec_proto,name=protocol" json:"protocol,omitempty"`
+       CryptoAlgorithm    IpsecCryptoAlg      `binapi:"ipsec_crypto_alg,name=crypto_algorithm" json:"crypto_algorithm,omitempty"`
+       CryptoKey          Key                 `binapi:"key,name=crypto_key" json:"crypto_key,omitempty"`
+       IntegrityAlgorithm IpsecIntegAlg       `binapi:"ipsec_integ_alg,name=integrity_algorithm" json:"integrity_algorithm,omitempty"`
+       IntegrityKey       Key                 `binapi:"key,name=integrity_key" json:"integrity_key,omitempty"`
+       Flags              IpsecSadFlags       `binapi:"ipsec_sad_flags,name=flags" json:"flags,omitempty"`
+       Tunnel             tunnel_types.Tunnel `binapi:"tunnel,name=tunnel" json:"tunnel,omitempty"`
+       Salt               uint32              `binapi:"u32,name=salt" json:"salt,omitempty"`
+       UDPSrcPort         uint16              `binapi:"u16,name=udp_src_port,default=4500" json:"udp_src_port,omitempty"`
+       UDPDstPort         uint16              `binapi:"u16,name=udp_dst_port,default=4500" json:"udp_dst_port,omitempty"`
+}
+
 // Key defines type 'key'.
 type Key struct {
        Length uint8  `binapi:"u8,name=length" json:"length,omitempty"`
index 745157e..0977911 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/l2.api.json
 
 // Package l2 contains generated bindings for API file l2.api.
@@ -9,7 +9,7 @@
 // Contents:
 //   3 enums
 //   3 structs
-//  54 messages
+//  62 messages
 //
 package l2
 
@@ -31,8 +31,8 @@ const _ = api.GoVppAPIPackageIsVersion2
 
 const (
        APIFile    = "l2"
-       APIVersion = "3.0.0"
-       VersionCrc = 0x58ce8a6b
+       APIVersion = "3.1.0"
+       VersionCrc = 0xfc6b8fd2
 )
 
 // BdFlags defines enum 'bd_flags'.
@@ -186,7 +186,7 @@ type BdIPMacAddDel struct {
 
 func (m *BdIPMacAddDel) Reset()               { *m = BdIPMacAddDel{} }
 func (*BdIPMacAddDel) GetMessageName() string { return "bd_ip_mac_add_del" }
-func (*BdIPMacAddDel) GetCrcString() string   { return "5f2b84e2" }
+func (*BdIPMacAddDel) GetCrcString() string   { return "0257c869" }
 func (*BdIPMacAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -264,7 +264,7 @@ type BdIPMacDetails struct {
 
 func (m *BdIPMacDetails) Reset()               { *m = BdIPMacDetails{} }
 func (*BdIPMacDetails) GetMessageName() string { return "bd_ip_mac_details" }
-func (*BdIPMacDetails) GetCrcString() string   { return "a52f8044" }
+func (*BdIPMacDetails) GetCrcString() string   { return "545af86a" }
 func (*BdIPMacDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -519,7 +519,7 @@ type BridgeDomainDetails struct {
 
 func (m *BridgeDomainDetails) Reset()               { *m = BridgeDomainDetails{} }
 func (*BridgeDomainDetails) GetMessageName() string { return "bridge_domain_details" }
-func (*BridgeDomainDetails) GetCrcString() string   { return "979f549d" }
+func (*BridgeDomainDetails) GetCrcString() string   { return "0fa506fd" }
 func (*BridgeDomainDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -640,6 +640,148 @@ func (m *BridgeDomainDump) Unmarshal(b []byte) error {
        return nil
 }
 
+// BridgeDomainSetDefaultLearnLimit defines message 'bridge_domain_set_default_learn_limit'.
+type BridgeDomainSetDefaultLearnLimit struct {
+       LearnLimit uint32 `binapi:"u32,name=learn_limit" json:"learn_limit,omitempty"`
+}
+
+func (m *BridgeDomainSetDefaultLearnLimit) Reset() { *m = BridgeDomainSetDefaultLearnLimit{} }
+func (*BridgeDomainSetDefaultLearnLimit) GetMessageName() string {
+       return "bridge_domain_set_default_learn_limit"
+}
+func (*BridgeDomainSetDefaultLearnLimit) GetCrcString() string { return "f097ffce" }
+func (*BridgeDomainSetDefaultLearnLimit) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *BridgeDomainSetDefaultLearnLimit) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.LearnLimit
+       return size
+}
+func (m *BridgeDomainSetDefaultLearnLimit) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.LearnLimit)
+       return buf.Bytes(), nil
+}
+func (m *BridgeDomainSetDefaultLearnLimit) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.LearnLimit = buf.DecodeUint32()
+       return nil
+}
+
+// BridgeDomainSetDefaultLearnLimitReply defines message 'bridge_domain_set_default_learn_limit_reply'.
+type BridgeDomainSetDefaultLearnLimitReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *BridgeDomainSetDefaultLearnLimitReply) Reset() { *m = BridgeDomainSetDefaultLearnLimitReply{} }
+func (*BridgeDomainSetDefaultLearnLimitReply) GetMessageName() string {
+       return "bridge_domain_set_default_learn_limit_reply"
+}
+func (*BridgeDomainSetDefaultLearnLimitReply) GetCrcString() string { return "e8d4e804" }
+func (*BridgeDomainSetDefaultLearnLimitReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *BridgeDomainSetDefaultLearnLimitReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *BridgeDomainSetDefaultLearnLimitReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *BridgeDomainSetDefaultLearnLimitReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// BridgeDomainSetLearnLimit defines message 'bridge_domain_set_learn_limit'.
+type BridgeDomainSetLearnLimit struct {
+       BdID       uint32 `binapi:"u32,name=bd_id" json:"bd_id,omitempty"`
+       LearnLimit uint32 `binapi:"u32,name=learn_limit" json:"learn_limit,omitempty"`
+}
+
+func (m *BridgeDomainSetLearnLimit) Reset()               { *m = BridgeDomainSetLearnLimit{} }
+func (*BridgeDomainSetLearnLimit) GetMessageName() string { return "bridge_domain_set_learn_limit" }
+func (*BridgeDomainSetLearnLimit) GetCrcString() string   { return "89c52b5f" }
+func (*BridgeDomainSetLearnLimit) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *BridgeDomainSetLearnLimit) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.BdID
+       size += 4 // m.LearnLimit
+       return size
+}
+func (m *BridgeDomainSetLearnLimit) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.BdID)
+       buf.EncodeUint32(m.LearnLimit)
+       return buf.Bytes(), nil
+}
+func (m *BridgeDomainSetLearnLimit) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.BdID = buf.DecodeUint32()
+       m.LearnLimit = buf.DecodeUint32()
+       return nil
+}
+
+// BridgeDomainSetLearnLimitReply defines message 'bridge_domain_set_learn_limit_reply'.
+type BridgeDomainSetLearnLimitReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *BridgeDomainSetLearnLimitReply) Reset() { *m = BridgeDomainSetLearnLimitReply{} }
+func (*BridgeDomainSetLearnLimitReply) GetMessageName() string {
+       return "bridge_domain_set_learn_limit_reply"
+}
+func (*BridgeDomainSetLearnLimitReply) GetCrcString() string { return "e8d4e804" }
+func (*BridgeDomainSetLearnLimitReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *BridgeDomainSetLearnLimitReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *BridgeDomainSetLearnLimitReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *BridgeDomainSetLearnLimitReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
 // BridgeDomainSetMacAge defines message 'bridge_domain_set_mac_age'.
 type BridgeDomainSetMacAge struct {
        BdID   uint32 `binapi:"u32,name=bd_id" json:"bd_id,omitempty"`
@@ -938,7 +1080,7 @@ type L2ArpTermEvent struct {
 
 func (m *L2ArpTermEvent) Reset()               { *m = L2ArpTermEvent{} }
 func (*L2ArpTermEvent) GetMessageName() string { return "l2_arp_term_event" }
-func (*L2ArpTermEvent) GetCrcString() string   { return "85ff71ea" }
+func (*L2ArpTermEvent) GetCrcString() string   { return "6963e07a" }
 func (*L2ArpTermEvent) GetMessageType() api.MessageType {
        return api.EventMessage
 }
@@ -1048,7 +1190,7 @@ type L2FibTableDetails struct {
 
 func (m *L2FibTableDetails) Reset()               { *m = L2FibTableDetails{} }
 func (*L2FibTableDetails) GetMessageName() string { return "l2_fib_table_details" }
-func (*L2FibTableDetails) GetCrcString() string   { return "e8d2fc72" }
+func (*L2FibTableDetails) GetCrcString() string   { return "a44ef6b8" }
 func (*L2FibTableDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1283,7 +1425,7 @@ type L2InterfacePbbTagRewrite struct {
 
 func (m *L2InterfacePbbTagRewrite) Reset()               { *m = L2InterfacePbbTagRewrite{} }
 func (*L2InterfacePbbTagRewrite) GetMessageName() string { return "l2_interface_pbb_tag_rewrite" }
-func (*L2InterfacePbbTagRewrite) GetCrcString() string   { return "612efa5a" }
+func (*L2InterfacePbbTagRewrite) GetCrcString() string   { return "38e802a8" }
 func (*L2InterfacePbbTagRewrite) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1455,7 +1597,7 @@ type L2MacsEvent struct {
 
 func (m *L2MacsEvent) Reset()               { *m = L2MacsEvent{} }
 func (*L2MacsEvent) GetMessageName() string { return "l2_macs_event" }
-func (*L2MacsEvent) GetCrcString() string   { return "2eadfc8b" }
+func (*L2MacsEvent) GetCrcString() string   { return "44b8fd64" }
 func (*L2MacsEvent) GetMessageType() api.MessageType {
        return api.EventMessage
 }
@@ -1521,7 +1663,7 @@ type L2PatchAddDel struct {
 
 func (m *L2PatchAddDel) Reset()               { *m = L2PatchAddDel{} }
 func (*L2PatchAddDel) GetMessageName() string { return "l2_patch_add_del" }
-func (*L2PatchAddDel) GetCrcString() string   { return "522f3445" }
+func (*L2PatchAddDel) GetCrcString() string   { return "a1f6a6f3" }
 func (*L2PatchAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1594,7 +1736,7 @@ type L2XconnectDetails struct {
 
 func (m *L2XconnectDetails) Reset()               { *m = L2XconnectDetails{} }
 func (*L2XconnectDetails) GetMessageName() string { return "l2_xconnect_details" }
-func (*L2XconnectDetails) GetCrcString() string   { return "c8aa6b37" }
+func (*L2XconnectDetails) GetCrcString() string   { return "472b6b67" }
 func (*L2XconnectDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1663,7 +1805,7 @@ type L2fibAddDel struct {
 
 func (m *L2fibAddDel) Reset()               { *m = L2fibAddDel{} }
 func (*L2fibAddDel) GetMessageName() string { return "l2fib_add_del" }
-func (*L2fibAddDel) GetCrcString() string   { return "f29d796c" }
+func (*L2fibAddDel) GetCrcString() string   { return "eddda487" }
 func (*L2fibAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1932,6 +2074,72 @@ func (m *L2fibFlushIntReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// L2fibSetScanDelay defines message 'l2fib_set_scan_delay'.
+type L2fibSetScanDelay struct {
+       ScanDelay uint16 `binapi:"u16,name=scan_delay,default=10" json:"scan_delay,omitempty"`
+}
+
+func (m *L2fibSetScanDelay) Reset()               { *m = L2fibSetScanDelay{} }
+func (*L2fibSetScanDelay) GetMessageName() string { return "l2fib_set_scan_delay" }
+func (*L2fibSetScanDelay) GetCrcString() string   { return "a3b968a4" }
+func (*L2fibSetScanDelay) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *L2fibSetScanDelay) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 2 // m.ScanDelay
+       return size
+}
+func (m *L2fibSetScanDelay) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint16(m.ScanDelay)
+       return buf.Bytes(), nil
+}
+func (m *L2fibSetScanDelay) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.ScanDelay = buf.DecodeUint16()
+       return nil
+}
+
+// L2fibSetScanDelayReply defines message 'l2fib_set_scan_delay_reply'.
+type L2fibSetScanDelayReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *L2fibSetScanDelayReply) Reset()               { *m = L2fibSetScanDelayReply{} }
+func (*L2fibSetScanDelayReply) GetMessageName() string { return "l2fib_set_scan_delay_reply" }
+func (*L2fibSetScanDelayReply) GetCrcString() string   { return "e8d4e804" }
+func (*L2fibSetScanDelayReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *L2fibSetScanDelayReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *L2fibSetScanDelayReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *L2fibSetScanDelayReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
 // SwInterfaceSetL2Bridge defines message 'sw_interface_set_l2_bridge'.
 type SwInterfaceSetL2Bridge struct {
        RxSwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=rx_sw_if_index" json:"rx_sw_if_index,omitempty"`
@@ -1943,7 +2151,7 @@ type SwInterfaceSetL2Bridge struct {
 
 func (m *SwInterfaceSetL2Bridge) Reset()               { *m = SwInterfaceSetL2Bridge{} }
 func (*SwInterfaceSetL2Bridge) GetMessageName() string { return "sw_interface_set_l2_bridge" }
-func (*SwInterfaceSetL2Bridge) GetCrcString() string   { return "2e483cd0" }
+func (*SwInterfaceSetL2Bridge) GetCrcString() string   { return "d0678b13" }
 func (*SwInterfaceSetL2Bridge) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -2025,7 +2233,7 @@ type SwInterfaceSetL2Xconnect struct {
 
 func (m *SwInterfaceSetL2Xconnect) Reset()               { *m = SwInterfaceSetL2Xconnect{} }
 func (*SwInterfaceSetL2Xconnect) GetMessageName() string { return "sw_interface_set_l2_xconnect" }
-func (*SwInterfaceSetL2Xconnect) GetCrcString() string   { return "1aaa2dbb" }
+func (*SwInterfaceSetL2Xconnect) GetCrcString() string   { return "4fa28a85" }
 func (*SwInterfaceSetL2Xconnect) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -2233,6 +2441,7 @@ func (m *WantL2ArpTermEventsReply) Unmarshal(b []byte) error {
 }
 
 // WantL2MacsEvents defines message 'want_l2_macs_events'.
+// Deprecated: the message will be removed in the future versions
 type WantL2MacsEvents struct {
        LearnLimit     uint32 `binapi:"u32,name=learn_limit,default=1000" json:"learn_limit,omitempty"`
        ScanDelay      uint8  `binapi:"u8,name=scan_delay,default=10" json:"scan_delay,omitempty"`
@@ -2281,7 +2490,82 @@ func (m *WantL2MacsEvents) Unmarshal(b []byte) error {
        return nil
 }
 
+// WantL2MacsEvents2 defines message 'want_l2_macs_events2'.
+type WantL2MacsEvents2 struct {
+       MaxMacsInEvent uint8  `binapi:"u8,name=max_macs_in_event,default=10" json:"max_macs_in_event,omitempty"`
+       EnableDisable  bool   `binapi:"bool,name=enable_disable,default=true" json:"enable_disable,omitempty"`
+       PID            uint32 `binapi:"u32,name=pid" json:"pid,omitempty"`
+}
+
+func (m *WantL2MacsEvents2) Reset()               { *m = WantL2MacsEvents2{} }
+func (*WantL2MacsEvents2) GetMessageName() string { return "want_l2_macs_events2" }
+func (*WantL2MacsEvents2) GetCrcString() string   { return "cc1377b0" }
+func (*WantL2MacsEvents2) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *WantL2MacsEvents2) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.MaxMacsInEvent
+       size += 1 // m.EnableDisable
+       size += 4 // m.PID
+       return size
+}
+func (m *WantL2MacsEvents2) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(m.MaxMacsInEvent)
+       buf.EncodeBool(m.EnableDisable)
+       buf.EncodeUint32(m.PID)
+       return buf.Bytes(), nil
+}
+func (m *WantL2MacsEvents2) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.MaxMacsInEvent = buf.DecodeUint8()
+       m.EnableDisable = buf.DecodeBool()
+       m.PID = buf.DecodeUint32()
+       return nil
+}
+
+// WantL2MacsEvents2Reply defines message 'want_l2_macs_events2_reply'.
+type WantL2MacsEvents2Reply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *WantL2MacsEvents2Reply) Reset()               { *m = WantL2MacsEvents2Reply{} }
+func (*WantL2MacsEvents2Reply) GetMessageName() string { return "want_l2_macs_events2_reply" }
+func (*WantL2MacsEvents2Reply) GetCrcString() string   { return "e8d4e804" }
+func (*WantL2MacsEvents2Reply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *WantL2MacsEvents2Reply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *WantL2MacsEvents2Reply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *WantL2MacsEvents2Reply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
 // WantL2MacsEventsReply defines message 'want_l2_macs_events_reply'.
+// Deprecated: the message will be removed in the future versions
 type WantL2MacsEventsReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -2316,16 +2600,20 @@ func (m *WantL2MacsEventsReply) Unmarshal(b []byte) error {
 
 func init() { file_l2_binapi_init() }
 func file_l2_binapi_init() {
-       api.RegisterMessage((*BdIPMacAddDel)(nil), "bd_ip_mac_add_del_5f2b84e2")
+       api.RegisterMessage((*BdIPMacAddDel)(nil), "bd_ip_mac_add_del_0257c869")
        api.RegisterMessage((*BdIPMacAddDelReply)(nil), "bd_ip_mac_add_del_reply_e8d4e804")
-       api.RegisterMessage((*BdIPMacDetails)(nil), "bd_ip_mac_details_a52f8044")
+       api.RegisterMessage((*BdIPMacDetails)(nil), "bd_ip_mac_details_545af86a")
        api.RegisterMessage((*BdIPMacDump)(nil), "bd_ip_mac_dump_c25fdce6")
        api.RegisterMessage((*BdIPMacFlush)(nil), "bd_ip_mac_flush_c25fdce6")
        api.RegisterMessage((*BdIPMacFlushReply)(nil), "bd_ip_mac_flush_reply_e8d4e804")
        api.RegisterMessage((*BridgeDomainAddDel)(nil), "bridge_domain_add_del_600b7170")
        api.RegisterMessage((*BridgeDomainAddDelReply)(nil), "bridge_domain_add_del_reply_e8d4e804")
-       api.RegisterMessage((*BridgeDomainDetails)(nil), "bridge_domain_details_979f549d")
+       api.RegisterMessage((*BridgeDomainDetails)(nil), "bridge_domain_details_0fa506fd")
        api.RegisterMessage((*BridgeDomainDump)(nil), "bridge_domain_dump_74396a43")
+       api.RegisterMessage((*BridgeDomainSetDefaultLearnLimit)(nil), "bridge_domain_set_default_learn_limit_f097ffce")
+       api.RegisterMessage((*BridgeDomainSetDefaultLearnLimitReply)(nil), "bridge_domain_set_default_learn_limit_reply_e8d4e804")
+       api.RegisterMessage((*BridgeDomainSetLearnLimit)(nil), "bridge_domain_set_learn_limit_89c52b5f")
+       api.RegisterMessage((*BridgeDomainSetLearnLimitReply)(nil), "bridge_domain_set_learn_limit_reply_e8d4e804")
        api.RegisterMessage((*BridgeDomainSetMacAge)(nil), "bridge_domain_set_mac_age_b537ad7b")
        api.RegisterMessage((*BridgeDomainSetMacAgeReply)(nil), "bridge_domain_set_mac_age_reply_e8d4e804")
        api.RegisterMessage((*BridgeFlags)(nil), "bridge_flags_1b0c5fbd")
@@ -2334,25 +2622,25 @@ func file_l2_binapi_init() {
        api.RegisterMessage((*BviCreateReply)(nil), "bvi_create_reply_5383d31f")
        api.RegisterMessage((*BviDelete)(nil), "bvi_delete_f9e6675e")
        api.RegisterMessage((*BviDeleteReply)(nil), "bvi_delete_reply_e8d4e804")
-       api.RegisterMessage((*L2ArpTermEvent)(nil), "l2_arp_term_event_85ff71ea")
+       api.RegisterMessage((*L2ArpTermEvent)(nil), "l2_arp_term_event_6963e07a")
        api.RegisterMessage((*L2FibClearTable)(nil), "l2_fib_clear_table_51077d14")
        api.RegisterMessage((*L2FibClearTableReply)(nil), "l2_fib_clear_table_reply_e8d4e804")
-       api.RegisterMessage((*L2FibTableDetails)(nil), "l2_fib_table_details_e8d2fc72")
+       api.RegisterMessage((*L2FibTableDetails)(nil), "l2_fib_table_details_a44ef6b8")
        api.RegisterMessage((*L2FibTableDump)(nil), "l2_fib_table_dump_c25fdce6")
        api.RegisterMessage((*L2Flags)(nil), "l2_flags_fc41cfe8")
        api.RegisterMessage((*L2FlagsReply)(nil), "l2_flags_reply_29b2a2b3")
        api.RegisterMessage((*L2InterfaceEfpFilter)(nil), "l2_interface_efp_filter_5501adee")
        api.RegisterMessage((*L2InterfaceEfpFilterReply)(nil), "l2_interface_efp_filter_reply_e8d4e804")
-       api.RegisterMessage((*L2InterfacePbbTagRewrite)(nil), "l2_interface_pbb_tag_rewrite_612efa5a")
+       api.RegisterMessage((*L2InterfacePbbTagRewrite)(nil), "l2_interface_pbb_tag_rewrite_38e802a8")
        api.RegisterMessage((*L2InterfacePbbTagRewriteReply)(nil), "l2_interface_pbb_tag_rewrite_reply_e8d4e804")
        api.RegisterMessage((*L2InterfaceVlanTagRewrite)(nil), "l2_interface_vlan_tag_rewrite_62cc0bbc")
        api.RegisterMessage((*L2InterfaceVlanTagRewriteReply)(nil), "l2_interface_vlan_tag_rewrite_reply_e8d4e804")
-       api.RegisterMessage((*L2MacsEvent)(nil), "l2_macs_event_2eadfc8b")
-       api.RegisterMessage((*L2PatchAddDel)(nil), "l2_patch_add_del_522f3445")
+       api.RegisterMessage((*L2MacsEvent)(nil), "l2_macs_event_44b8fd64")
+       api.RegisterMessage((*L2PatchAddDel)(nil), "l2_patch_add_del_a1f6a6f3")
        api.RegisterMessage((*L2PatchAddDelReply)(nil), "l2_patch_add_del_reply_e8d4e804")
-       api.RegisterMessage((*L2XconnectDetails)(nil), "l2_xconnect_details_c8aa6b37")
+       api.RegisterMessage((*L2XconnectDetails)(nil), "l2_xconnect_details_472b6b67")
        api.RegisterMessage((*L2XconnectDump)(nil), "l2_xconnect_dump_51077d14")
-       api.RegisterMessage((*L2fibAddDel)(nil), "l2fib_add_del_f29d796c")
+       api.RegisterMessage((*L2fibAddDel)(nil), "l2fib_add_del_eddda487")
        api.RegisterMessage((*L2fibAddDelReply)(nil), "l2fib_add_del_reply_e8d4e804")
        api.RegisterMessage((*L2fibFlushAll)(nil), "l2fib_flush_all_51077d14")
        api.RegisterMessage((*L2fibFlushAllReply)(nil), "l2fib_flush_all_reply_e8d4e804")
@@ -2360,15 +2648,19 @@ func file_l2_binapi_init() {
        api.RegisterMessage((*L2fibFlushBdReply)(nil), "l2fib_flush_bd_reply_e8d4e804")
        api.RegisterMessage((*L2fibFlushInt)(nil), "l2fib_flush_int_f9e6675e")
        api.RegisterMessage((*L2fibFlushIntReply)(nil), "l2fib_flush_int_reply_e8d4e804")
-       api.RegisterMessage((*SwInterfaceSetL2Bridge)(nil), "sw_interface_set_l2_bridge_2e483cd0")
+       api.RegisterMessage((*L2fibSetScanDelay)(nil), "l2fib_set_scan_delay_a3b968a4")
+       api.RegisterMessage((*L2fibSetScanDelayReply)(nil), "l2fib_set_scan_delay_reply_e8d4e804")
+       api.RegisterMessage((*SwInterfaceSetL2Bridge)(nil), "sw_interface_set_l2_bridge_d0678b13")
        api.RegisterMessage((*SwInterfaceSetL2BridgeReply)(nil), "sw_interface_set_l2_bridge_reply_e8d4e804")
-       api.RegisterMessage((*SwInterfaceSetL2Xconnect)(nil), "sw_interface_set_l2_xconnect_1aaa2dbb")
+       api.RegisterMessage((*SwInterfaceSetL2Xconnect)(nil), "sw_interface_set_l2_xconnect_4fa28a85")
        api.RegisterMessage((*SwInterfaceSetL2XconnectReply)(nil), "sw_interface_set_l2_xconnect_reply_e8d4e804")
        api.RegisterMessage((*SwInterfaceSetVpath)(nil), "sw_interface_set_vpath_ae6cfcfb")
        api.RegisterMessage((*SwInterfaceSetVpathReply)(nil), "sw_interface_set_vpath_reply_e8d4e804")
        api.RegisterMessage((*WantL2ArpTermEvents)(nil), "want_l2_arp_term_events_3ec6d6c2")
        api.RegisterMessage((*WantL2ArpTermEventsReply)(nil), "want_l2_arp_term_events_reply_e8d4e804")
        api.RegisterMessage((*WantL2MacsEvents)(nil), "want_l2_macs_events_9aabdfde")
+       api.RegisterMessage((*WantL2MacsEvents2)(nil), "want_l2_macs_events2_cc1377b0")
+       api.RegisterMessage((*WantL2MacsEvents2Reply)(nil), "want_l2_macs_events2_reply_e8d4e804")
        api.RegisterMessage((*WantL2MacsEventsReply)(nil), "want_l2_macs_events_reply_e8d4e804")
 }
 
@@ -2385,6 +2677,10 @@ func AllMessages() []api.Message {
                (*BridgeDomainAddDelReply)(nil),
                (*BridgeDomainDetails)(nil),
                (*BridgeDomainDump)(nil),
+               (*BridgeDomainSetDefaultLearnLimit)(nil),
+               (*BridgeDomainSetDefaultLearnLimitReply)(nil),
+               (*BridgeDomainSetLearnLimit)(nil),
+               (*BridgeDomainSetLearnLimitReply)(nil),
                (*BridgeDomainSetMacAge)(nil),
                (*BridgeDomainSetMacAgeReply)(nil),
                (*BridgeFlags)(nil),
@@ -2419,6 +2715,8 @@ func AllMessages() []api.Message {
                (*L2fibFlushBdReply)(nil),
                (*L2fibFlushInt)(nil),
                (*L2fibFlushIntReply)(nil),
+               (*L2fibSetScanDelay)(nil),
+               (*L2fibSetScanDelayReply)(nil),
                (*SwInterfaceSetL2Bridge)(nil),
                (*SwInterfaceSetL2BridgeReply)(nil),
                (*SwInterfaceSetL2Xconnect)(nil),
@@ -2428,6 +2726,8 @@ func AllMessages() []api.Message {
                (*WantL2ArpTermEvents)(nil),
                (*WantL2ArpTermEventsReply)(nil),
                (*WantL2MacsEvents)(nil),
+               (*WantL2MacsEvents2)(nil),
+               (*WantL2MacsEvents2Reply)(nil),
                (*WantL2MacsEventsReply)(nil),
        }
 }
index bf097ee..fa2b72b 100644 (file)
@@ -18,6 +18,8 @@ type RPCService interface {
        BdIPMacFlush(ctx context.Context, in *BdIPMacFlush) (*BdIPMacFlushReply, error)
        BridgeDomainAddDel(ctx context.Context, in *BridgeDomainAddDel) (*BridgeDomainAddDelReply, error)
        BridgeDomainDump(ctx context.Context, in *BridgeDomainDump) (RPCService_BridgeDomainDumpClient, error)
+       BridgeDomainSetDefaultLearnLimit(ctx context.Context, in *BridgeDomainSetDefaultLearnLimit) (*BridgeDomainSetDefaultLearnLimitReply, error)
+       BridgeDomainSetLearnLimit(ctx context.Context, in *BridgeDomainSetLearnLimit) (*BridgeDomainSetLearnLimitReply, error)
        BridgeDomainSetMacAge(ctx context.Context, in *BridgeDomainSetMacAge) (*BridgeDomainSetMacAgeReply, error)
        BridgeFlags(ctx context.Context, in *BridgeFlags) (*BridgeFlagsReply, error)
        BviCreate(ctx context.Context, in *BviCreate) (*BviCreateReply, error)
@@ -34,11 +36,13 @@ type RPCService interface {
        L2fibFlushAll(ctx context.Context, in *L2fibFlushAll) (*L2fibFlushAllReply, error)
        L2fibFlushBd(ctx context.Context, in *L2fibFlushBd) (*L2fibFlushBdReply, error)
        L2fibFlushInt(ctx context.Context, in *L2fibFlushInt) (*L2fibFlushIntReply, error)
+       L2fibSetScanDelay(ctx context.Context, in *L2fibSetScanDelay) (*L2fibSetScanDelayReply, error)
        SwInterfaceSetL2Bridge(ctx context.Context, in *SwInterfaceSetL2Bridge) (*SwInterfaceSetL2BridgeReply, error)
        SwInterfaceSetL2Xconnect(ctx context.Context, in *SwInterfaceSetL2Xconnect) (*SwInterfaceSetL2XconnectReply, error)
        SwInterfaceSetVpath(ctx context.Context, in *SwInterfaceSetVpath) (*SwInterfaceSetVpathReply, error)
        WantL2ArpTermEvents(ctx context.Context, in *WantL2ArpTermEvents) (*WantL2ArpTermEventsReply, error)
        WantL2MacsEvents(ctx context.Context, in *WantL2MacsEvents) (*WantL2MacsEventsReply, error)
+       WantL2MacsEvents2(ctx context.Context, in *WantL2MacsEvents2) (*WantL2MacsEvents2Reply, error)
 }
 
 type serviceClient struct {
@@ -154,6 +158,24 @@ func (c *serviceClient_BridgeDomainDumpClient) Recv() (*BridgeDomainDetails, err
        }
 }
 
+func (c *serviceClient) BridgeDomainSetDefaultLearnLimit(ctx context.Context, in *BridgeDomainSetDefaultLearnLimit) (*BridgeDomainSetDefaultLearnLimitReply, error) {
+       out := new(BridgeDomainSetDefaultLearnLimitReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) BridgeDomainSetLearnLimit(ctx context.Context, in *BridgeDomainSetLearnLimit) (*BridgeDomainSetLearnLimitReply, error) {
+       out := new(BridgeDomainSetLearnLimitReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) BridgeDomainSetMacAge(ctx context.Context, in *BridgeDomainSetMacAge) (*BridgeDomainSetMacAgeReply, error) {
        out := new(BridgeDomainSetMacAgeReply)
        err := c.conn.Invoke(ctx, in, out)
@@ -358,6 +380,15 @@ func (c *serviceClient) L2fibFlushInt(ctx context.Context, in *L2fibFlushInt) (*
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) L2fibSetScanDelay(ctx context.Context, in *L2fibSetScanDelay) (*L2fibSetScanDelayReply, error) {
+       out := new(L2fibSetScanDelayReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) SwInterfaceSetL2Bridge(ctx context.Context, in *SwInterfaceSetL2Bridge) (*SwInterfaceSetL2BridgeReply, error) {
        out := new(SwInterfaceSetL2BridgeReply)
        err := c.conn.Invoke(ctx, in, out)
@@ -402,3 +433,12 @@ func (c *serviceClient) WantL2MacsEvents(ctx context.Context, in *WantL2MacsEven
        }
        return out, api.RetvalToVPPApiError(out.Retval)
 }
+
+func (c *serviceClient) WantL2MacsEvents2(ctx context.Context, in *WantL2MacsEvents2) (*WantL2MacsEvents2Reply, error) {
+       out := new(WantL2MacsEvents2Reply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
index 7bf5186..b676d69 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/l2e.api.json
 
 // Package l2e contains generated bindings for API file l2e.api.
@@ -26,10 +26,11 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "l2e"
        APIVersion = "1.0.0"
-       VersionCrc = 0x7c918b8
+       VersionCrc = 0x6e8abdfb
 )
 
 // L2Emulation defines message 'l2_emulation'.
+// InProgress: the message form may change in the future versions
 type L2Emulation struct {
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
        Enable    bool                           `binapi:"bool,name=enable" json:"enable,omitempty"`
@@ -67,6 +68,7 @@ func (m *L2Emulation) Unmarshal(b []byte) error {
 }
 
 // L2EmulationReply defines message 'l2_emulation_reply'.
+// InProgress: the message form may change in the future versions
 type L2EmulationReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
index cf93f79..6eb3508 100644 (file)
@@ -1,8 +1,8 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
-// source: /usr/share/vpp/api/core/l2tp.api.json
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/l2tp.api.json
 
 // Package l2tp contains generated bindings for API file l2tp.api.
 //
@@ -31,7 +31,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "l2tp"
        APIVersion = "2.0.0"
-       VersionCrc = 0xb018cef7
+       VersionCrc = 0x256cef81
 )
 
 // L2tLookupKey defines enum 'l2t_lookup_key'.
@@ -78,7 +78,7 @@ type L2tpv3CreateTunnel struct {
 
 func (m *L2tpv3CreateTunnel) Reset()               { *m = L2tpv3CreateTunnel{} }
 func (*L2tpv3CreateTunnel) GetMessageName() string { return "l2tpv3_create_tunnel" }
-func (*L2tpv3CreateTunnel) GetCrcString() string   { return "596892cb" }
+func (*L2tpv3CreateTunnel) GetCrcString() string   { return "15bed0c2" }
 func (*L2tpv3CreateTunnel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -397,7 +397,7 @@ type SwIfL2tpv3TunnelDetails struct {
 
 func (m *SwIfL2tpv3TunnelDetails) Reset()               { *m = SwIfL2tpv3TunnelDetails{} }
 func (*SwIfL2tpv3TunnelDetails) GetMessageName() string { return "sw_if_l2tpv3_tunnel_details" }
-func (*SwIfL2tpv3TunnelDetails) GetCrcString() string   { return "1dab5c7e" }
+func (*SwIfL2tpv3TunnelDetails) GetCrcString() string   { return "50b88993" }
 func (*SwIfL2tpv3TunnelDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -491,7 +491,7 @@ func (m *SwIfL2tpv3TunnelDump) Unmarshal(b []byte) error {
 
 func init() { file_l2tp_binapi_init() }
 func file_l2tp_binapi_init() {
-       api.RegisterMessage((*L2tpv3CreateTunnel)(nil), "l2tpv3_create_tunnel_596892cb")
+       api.RegisterMessage((*L2tpv3CreateTunnel)(nil), "l2tpv3_create_tunnel_15bed0c2")
        api.RegisterMessage((*L2tpv3CreateTunnelReply)(nil), "l2tpv3_create_tunnel_reply_5383d31f")
        api.RegisterMessage((*L2tpv3InterfaceEnableDisable)(nil), "l2tpv3_interface_enable_disable_3865946c")
        api.RegisterMessage((*L2tpv3InterfaceEnableDisableReply)(nil), "l2tpv3_interface_enable_disable_reply_e8d4e804")
@@ -499,7 +499,7 @@ func file_l2tp_binapi_init() {
        api.RegisterMessage((*L2tpv3SetLookupKeyReply)(nil), "l2tpv3_set_lookup_key_reply_e8d4e804")
        api.RegisterMessage((*L2tpv3SetTunnelCookies)(nil), "l2tpv3_set_tunnel_cookies_b3f4faf7")
        api.RegisterMessage((*L2tpv3SetTunnelCookiesReply)(nil), "l2tpv3_set_tunnel_cookies_reply_e8d4e804")
-       api.RegisterMessage((*SwIfL2tpv3TunnelDetails)(nil), "sw_if_l2tpv3_tunnel_details_1dab5c7e")
+       api.RegisterMessage((*SwIfL2tpv3TunnelDetails)(nil), "sw_if_l2tpv3_tunnel_details_50b88993")
        api.RegisterMessage((*SwIfL2tpv3TunnelDump)(nil), "sw_if_l2tpv3_tunnel_dump_51077d14")
 }
 
index ac35157..c2eedf9 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/l3xc.api.json
 
 // Package l3xc contains generated bindings for API file l3xc.api.
@@ -29,7 +29,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "l3xc"
        APIVersion = "1.0.1"
-       VersionCrc = 0xaf18effb
+       VersionCrc = 0x520bfc6e
 )
 
 // L3xc defines type 'l3xc'.
@@ -117,7 +117,7 @@ type L3xcDetails struct {
 
 func (m *L3xcDetails) Reset()               { *m = L3xcDetails{} }
 func (*L3xcDetails) GetMessageName() string { return "l3xc_details" }
-func (*L3xcDetails) GetCrcString() string   { return "d4f69627" }
+func (*L3xcDetails) GetCrcString() string   { return "bc5bf852" }
 func (*L3xcDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -326,7 +326,7 @@ type L3xcUpdate struct {
 
 func (m *L3xcUpdate) Reset()               { *m = L3xcUpdate{} }
 func (*L3xcUpdate) GetMessageName() string { return "l3xc_update" }
-func (*L3xcUpdate) GetCrcString() string   { return "0787b1d3" }
+func (*L3xcUpdate) GetCrcString() string   { return "e96aabdf" }
 func (*L3xcUpdate) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -472,11 +472,11 @@ func init() { file_l3xc_binapi_init() }
 func file_l3xc_binapi_init() {
        api.RegisterMessage((*L3xcDel)(nil), "l3xc_del_e7dbef91")
        api.RegisterMessage((*L3xcDelReply)(nil), "l3xc_del_reply_e8d4e804")
-       api.RegisterMessage((*L3xcDetails)(nil), "l3xc_details_d4f69627")
+       api.RegisterMessage((*L3xcDetails)(nil), "l3xc_details_bc5bf852")
        api.RegisterMessage((*L3xcDump)(nil), "l3xc_dump_f9e6675e")
        api.RegisterMessage((*L3xcPluginGetVersion)(nil), "l3xc_plugin_get_version_51077d14")
        api.RegisterMessage((*L3xcPluginGetVersionReply)(nil), "l3xc_plugin_get_version_reply_9b32cf86")
-       api.RegisterMessage((*L3xcUpdate)(nil), "l3xc_update_0787b1d3")
+       api.RegisterMessage((*L3xcUpdate)(nil), "l3xc_update_e96aabdf")
        api.RegisterMessage((*L3xcUpdateReply)(nil), "l3xc_update_reply_1992deab")
 }
 
index 29ad103..050bc30 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/lacp.api.json
 
 // Package lacp contains generated bindings for API file lacp.api.
@@ -27,7 +27,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "lacp"
        APIVersion = "2.0.0"
-       VersionCrc = 0x461bf09e
+       VersionCrc = 0xe1609dab
 )
 
 // SwInterfaceLacpDetails defines message 'sw_interface_lacp_details'.
@@ -55,7 +55,7 @@ type SwInterfaceLacpDetails struct {
 
 func (m *SwInterfaceLacpDetails) Reset()               { *m = SwInterfaceLacpDetails{} }
 func (*SwInterfaceLacpDetails) GetMessageName() string { return "sw_interface_lacp_details" }
-func (*SwInterfaceLacpDetails) GetCrcString() string   { return "745ae0ba" }
+func (*SwInterfaceLacpDetails) GetCrcString() string   { return "d9a83d2f" }
 func (*SwInterfaceLacpDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -164,7 +164,7 @@ func (m *SwInterfaceLacpDump) Unmarshal(b []byte) error {
 
 func init() { file_lacp_binapi_init() }
 func file_lacp_binapi_init() {
-       api.RegisterMessage((*SwInterfaceLacpDetails)(nil), "sw_interface_lacp_details_745ae0ba")
+       api.RegisterMessage((*SwInterfaceLacpDetails)(nil), "sw_interface_lacp_details_d9a83d2f")
        api.RegisterMessage((*SwInterfaceLacpDump)(nil), "sw_interface_lacp_dump_51077d14")
 }
 
index 0349d86..e93f032 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/lb.api.json
 
 // Package lb contains generated bindings for API file lb.api.
@@ -28,7 +28,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "lb"
        APIVersion = "1.0.0"
-       VersionCrc = 0x5e4e85b1
+       VersionCrc = 0x50c0a6c9
 )
 
 // LbAddDelAs defines message 'lb_add_del_as'.
@@ -43,7 +43,7 @@ type LbAddDelAs struct {
 
 func (m *LbAddDelAs) Reset()               { *m = LbAddDelAs{} }
 func (*LbAddDelAs) GetMessageName() string { return "lb_add_del_as" }
-func (*LbAddDelAs) GetCrcString() string   { return "78628987" }
+func (*LbAddDelAs) GetCrcString() string   { return "35d72500" }
 func (*LbAddDelAs) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -282,7 +282,7 @@ type LbAddDelVip struct {
 
 func (m *LbAddDelVip) Reset()               { *m = LbAddDelVip{} }
 func (*LbAddDelVip) GetMessageName() string { return "lb_add_del_vip" }
-func (*LbAddDelVip) GetCrcString() string   { return "d15b7ddc" }
+func (*LbAddDelVip) GetCrcString() string   { return "6fa569c7" }
 func (*LbAddDelVip) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -384,7 +384,7 @@ type LbAsDetails struct {
 
 func (m *LbAsDetails) Reset()               { *m = LbAsDetails{} }
 func (*LbAsDetails) GetMessageName() string { return "lb_as_details" }
-func (*LbAsDetails) GetCrcString() string   { return "9c39f60e" }
+func (*LbAsDetails) GetCrcString() string   { return "8d24c29e" }
 func (*LbAsDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -491,7 +491,7 @@ type LbConf struct {
 
 func (m *LbConf) Reset()               { *m = LbConf{} }
 func (*LbConf) GetMessageName() string { return "lb_conf" }
-func (*LbConf) GetCrcString() string   { return "22ddb739" }
+func (*LbConf) GetCrcString() string   { return "56cd3261" }
 func (*LbConf) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -651,7 +651,7 @@ type LbVipDetails struct {
 
 func (m *LbVipDetails) Reset()               { *m = LbVipDetails{} }
 func (*LbVipDetails) GetMessageName() string { return "lb_vip_details" }
-func (*LbVipDetails) GetCrcString() string   { return "08f39bed" }
+func (*LbVipDetails) GetCrcString() string   { return "1329ec9b" }
 func (*LbVipDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -714,7 +714,7 @@ type LbVipDump struct {
 
 func (m *LbVipDump) Reset()               { *m = LbVipDump{} }
 func (*LbVipDump) GetMessageName() string { return "lb_vip_dump" }
-func (*LbVipDump) GetCrcString() string   { return "c7bcb124" }
+func (*LbVipDump) GetCrcString() string   { return "56110cb7" }
 func (*LbVipDump) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -760,22 +760,22 @@ func (m *LbVipDump) Unmarshal(b []byte) error {
 
 func init() { file_lb_binapi_init() }
 func file_lb_binapi_init() {
-       api.RegisterMessage((*LbAddDelAs)(nil), "lb_add_del_as_78628987")
+       api.RegisterMessage((*LbAddDelAs)(nil), "lb_add_del_as_35d72500")
        api.RegisterMessage((*LbAddDelAsReply)(nil), "lb_add_del_as_reply_e8d4e804")
        api.RegisterMessage((*LbAddDelIntfNat4)(nil), "lb_add_del_intf_nat4_47d6e753")
        api.RegisterMessage((*LbAddDelIntfNat4Reply)(nil), "lb_add_del_intf_nat4_reply_e8d4e804")
        api.RegisterMessage((*LbAddDelIntfNat6)(nil), "lb_add_del_intf_nat6_47d6e753")
        api.RegisterMessage((*LbAddDelIntfNat6Reply)(nil), "lb_add_del_intf_nat6_reply_e8d4e804")
-       api.RegisterMessage((*LbAddDelVip)(nil), "lb_add_del_vip_d15b7ddc")
+       api.RegisterMessage((*LbAddDelVip)(nil), "lb_add_del_vip_6fa569c7")
        api.RegisterMessage((*LbAddDelVipReply)(nil), "lb_add_del_vip_reply_e8d4e804")
-       api.RegisterMessage((*LbAsDetails)(nil), "lb_as_details_9c39f60e")
+       api.RegisterMessage((*LbAsDetails)(nil), "lb_as_details_8d24c29e")
        api.RegisterMessage((*LbAsDump)(nil), "lb_as_dump_1063f819")
-       api.RegisterMessage((*LbConf)(nil), "lb_conf_22ddb739")
+       api.RegisterMessage((*LbConf)(nil), "lb_conf_56cd3261")
        api.RegisterMessage((*LbConfReply)(nil), "lb_conf_reply_e8d4e804")
        api.RegisterMessage((*LbFlushVip)(nil), "lb_flush_vip_1063f819")
        api.RegisterMessage((*LbFlushVipReply)(nil), "lb_flush_vip_reply_e8d4e804")
-       api.RegisterMessage((*LbVipDetails)(nil), "lb_vip_details_08f39bed")
-       api.RegisterMessage((*LbVipDump)(nil), "lb_vip_dump_c7bcb124")
+       api.RegisterMessage((*LbVipDetails)(nil), "lb_vip_details_1329ec9b")
+       api.RegisterMessage((*LbVipDump)(nil), "lb_vip_dump_56110cb7")
 }
 
 // Messages returns list of all messages in this module.
index 6b91100..6ec8134 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/lb_types.api.json
 
 // Package lb_types contains generated bindings for API file lb_types.api.
diff --git a/binapi/lcp/lcp.ba.go b/binapi/lcp/lcp.ba.go
new file mode 100644 (file)
index 0000000..063c0d4
--- /dev/null
@@ -0,0 +1,639 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/lcp.api.json
+
+// Package lcp contains generated bindings for API file lcp.api.
+//
+// Contents:
+//   1 enum
+//  15 messages
+//
+package lcp
+
+import (
+       "strconv"
+
+       api "git.fd.io/govpp.git/api"
+       interface_types "git.fd.io/govpp.git/binapi/interface_types"
+       codec "git.fd.io/govpp.git/codec"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+const (
+       APIFile    = "lcp"
+       APIVersion = "1.0.0"
+       VersionCrc = 0xd6fdb642
+)
+
+// LcpItfHostType defines enum 'lcp_itf_host_type'.
+type LcpItfHostType uint8
+
+const (
+       LCP_API_ITF_HOST_TAP LcpItfHostType = 0
+       LCP_API_ITF_HOST_TUN LcpItfHostType = 1
+)
+
+var (
+       LcpItfHostType_name = map[uint8]string{
+               0: "LCP_API_ITF_HOST_TAP",
+               1: "LCP_API_ITF_HOST_TUN",
+       }
+       LcpItfHostType_value = map[string]uint8{
+               "LCP_API_ITF_HOST_TAP": 0,
+               "LCP_API_ITF_HOST_TUN": 1,
+       }
+)
+
+func (x LcpItfHostType) String() string {
+       s, ok := LcpItfHostType_name[uint8(x)]
+       if ok {
+               return s
+       }
+       return "LcpItfHostType(" + strconv.Itoa(int(x)) + ")"
+}
+
+// LcpDefaultNsGet defines message 'lcp_default_ns_get'.
+type LcpDefaultNsGet struct{}
+
+func (m *LcpDefaultNsGet) Reset()               { *m = LcpDefaultNsGet{} }
+func (*LcpDefaultNsGet) GetMessageName() string { return "lcp_default_ns_get" }
+func (*LcpDefaultNsGet) GetCrcString() string   { return "51077d14" }
+func (*LcpDefaultNsGet) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *LcpDefaultNsGet) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *LcpDefaultNsGet) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *LcpDefaultNsGet) Unmarshal(b []byte) error {
+       return nil
+}
+
+// LcpDefaultNsGetReply defines message 'lcp_default_ns_get_reply'.
+type LcpDefaultNsGetReply struct {
+       Namespace string `binapi:"string[32],name=namespace" json:"namespace,omitempty"`
+}
+
+func (m *LcpDefaultNsGetReply) Reset()               { *m = LcpDefaultNsGetReply{} }
+func (*LcpDefaultNsGetReply) GetMessageName() string { return "lcp_default_ns_get_reply" }
+func (*LcpDefaultNsGetReply) GetCrcString() string   { return "eaeef6d3" }
+func (*LcpDefaultNsGetReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *LcpDefaultNsGetReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 32 // m.Namespace
+       return size
+}
+func (m *LcpDefaultNsGetReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeString(m.Namespace, 32)
+       return buf.Bytes(), nil
+}
+func (m *LcpDefaultNsGetReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Namespace = buf.DecodeString(32)
+       return nil
+}
+
+// LcpDefaultNsSet defines message 'lcp_default_ns_set'.
+type LcpDefaultNsSet struct {
+       Namespace string `binapi:"string[32],name=namespace" json:"namespace,omitempty"`
+}
+
+func (m *LcpDefaultNsSet) Reset()               { *m = LcpDefaultNsSet{} }
+func (*LcpDefaultNsSet) GetMessageName() string { return "lcp_default_ns_set" }
+func (*LcpDefaultNsSet) GetCrcString() string   { return "b561a74a" }
+func (*LcpDefaultNsSet) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *LcpDefaultNsSet) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 32 // m.Namespace
+       return size
+}
+func (m *LcpDefaultNsSet) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeString(m.Namespace, 32)
+       return buf.Bytes(), nil
+}
+func (m *LcpDefaultNsSet) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Namespace = buf.DecodeString(32)
+       return nil
+}
+
+// LcpDefaultNsSetReply defines message 'lcp_default_ns_set_reply'.
+type LcpDefaultNsSetReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *LcpDefaultNsSetReply) Reset()               { *m = LcpDefaultNsSetReply{} }
+func (*LcpDefaultNsSetReply) GetMessageName() string { return "lcp_default_ns_set_reply" }
+func (*LcpDefaultNsSetReply) GetCrcString() string   { return "e8d4e804" }
+func (*LcpDefaultNsSetReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *LcpDefaultNsSetReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *LcpDefaultNsSetReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *LcpDefaultNsSetReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// LcpItfPairAddDel defines message 'lcp_itf_pair_add_del'.
+type LcpItfPairAddDel struct {
+       IsAdd      bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       SwIfIndex  interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       HostIfName string                         `binapi:"string[16],name=host_if_name" json:"host_if_name,omitempty"`
+       HostIfType LcpItfHostType                 `binapi:"lcp_itf_host_type,name=host_if_type" json:"host_if_type,omitempty"`
+       Namespace  string                         `binapi:"string[32],name=namespace" json:"namespace,omitempty"`
+}
+
+func (m *LcpItfPairAddDel) Reset()               { *m = LcpItfPairAddDel{} }
+func (*LcpItfPairAddDel) GetMessageName() string { return "lcp_itf_pair_add_del" }
+func (*LcpItfPairAddDel) GetCrcString() string   { return "f3157f59" }
+func (*LcpItfPairAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *LcpItfPairAddDel) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1  // m.IsAdd
+       size += 4  // m.SwIfIndex
+       size += 16 // m.HostIfName
+       size += 1  // m.HostIfType
+       size += 32 // m.Namespace
+       return size
+}
+func (m *LcpItfPairAddDel) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsAdd)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeString(m.HostIfName, 16)
+       buf.EncodeUint8(uint8(m.HostIfType))
+       buf.EncodeString(m.Namespace, 32)
+       return buf.Bytes(), nil
+}
+func (m *LcpItfPairAddDel) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeBool()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.HostIfName = buf.DecodeString(16)
+       m.HostIfType = LcpItfHostType(buf.DecodeUint8())
+       m.Namespace = buf.DecodeString(32)
+       return nil
+}
+
+// LcpItfPairAddDelReply defines message 'lcp_itf_pair_add_del_reply'.
+type LcpItfPairAddDelReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *LcpItfPairAddDelReply) Reset()               { *m = LcpItfPairAddDelReply{} }
+func (*LcpItfPairAddDelReply) GetMessageName() string { return "lcp_itf_pair_add_del_reply" }
+func (*LcpItfPairAddDelReply) GetCrcString() string   { return "e8d4e804" }
+func (*LcpItfPairAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *LcpItfPairAddDelReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *LcpItfPairAddDelReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *LcpItfPairAddDelReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// LcpItfPairAddDelV2 defines message 'lcp_itf_pair_add_del_v2'.
+type LcpItfPairAddDelV2 struct {
+       IsAdd      bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       SwIfIndex  interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       HostIfName string                         `binapi:"string[16],name=host_if_name" json:"host_if_name,omitempty"`
+       HostIfType LcpItfHostType                 `binapi:"lcp_itf_host_type,name=host_if_type" json:"host_if_type,omitempty"`
+       Namespace  string                         `binapi:"string[32],name=namespace" json:"namespace,omitempty"`
+}
+
+func (m *LcpItfPairAddDelV2) Reset()               { *m = LcpItfPairAddDelV2{} }
+func (*LcpItfPairAddDelV2) GetMessageName() string { return "lcp_itf_pair_add_del_v2" }
+func (*LcpItfPairAddDelV2) GetCrcString() string   { return "f3157f59" }
+func (*LcpItfPairAddDelV2) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *LcpItfPairAddDelV2) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1  // m.IsAdd
+       size += 4  // m.SwIfIndex
+       size += 16 // m.HostIfName
+       size += 1  // m.HostIfType
+       size += 32 // m.Namespace
+       return size
+}
+func (m *LcpItfPairAddDelV2) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsAdd)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeString(m.HostIfName, 16)
+       buf.EncodeUint8(uint8(m.HostIfType))
+       buf.EncodeString(m.Namespace, 32)
+       return buf.Bytes(), nil
+}
+func (m *LcpItfPairAddDelV2) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeBool()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.HostIfName = buf.DecodeString(16)
+       m.HostIfType = LcpItfHostType(buf.DecodeUint8())
+       m.Namespace = buf.DecodeString(32)
+       return nil
+}
+
+// LcpItfPairAddDelV2Reply defines message 'lcp_itf_pair_add_del_v2_reply'.
+type LcpItfPairAddDelV2Reply struct {
+       Retval        int32                          `binapi:"i32,name=retval" json:"retval,omitempty"`
+       HostSwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=host_sw_if_index" json:"host_sw_if_index,omitempty"`
+}
+
+func (m *LcpItfPairAddDelV2Reply) Reset()               { *m = LcpItfPairAddDelV2Reply{} }
+func (*LcpItfPairAddDelV2Reply) GetMessageName() string { return "lcp_itf_pair_add_del_v2_reply" }
+func (*LcpItfPairAddDelV2Reply) GetCrcString() string   { return "39452f52" }
+func (*LcpItfPairAddDelV2Reply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *LcpItfPairAddDelV2Reply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.HostSwIfIndex
+       return size
+}
+func (m *LcpItfPairAddDelV2Reply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(uint32(m.HostSwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *LcpItfPairAddDelV2Reply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.HostSwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// LcpItfPairDetails defines message 'lcp_itf_pair_details'.
+type LcpItfPairDetails struct {
+       PhySwIfIndex  interface_types.InterfaceIndex `binapi:"interface_index,name=phy_sw_if_index" json:"phy_sw_if_index,omitempty"`
+       HostSwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=host_sw_if_index" json:"host_sw_if_index,omitempty"`
+       VifIndex      uint32                         `binapi:"u32,name=vif_index" json:"vif_index,omitempty"`
+       HostIfName    string                         `binapi:"string[16],name=host_if_name" json:"host_if_name,omitempty"`
+       HostIfType    LcpItfHostType                 `binapi:"lcp_itf_host_type,name=host_if_type" json:"host_if_type,omitempty"`
+       Namespace     string                         `binapi:"string[32],name=namespace" json:"namespace,omitempty"`
+}
+
+func (m *LcpItfPairDetails) Reset()               { *m = LcpItfPairDetails{} }
+func (*LcpItfPairDetails) GetMessageName() string { return "lcp_itf_pair_details" }
+func (*LcpItfPairDetails) GetCrcString() string   { return "5a95842f" }
+func (*LcpItfPairDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *LcpItfPairDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4  // m.PhySwIfIndex
+       size += 4  // m.HostSwIfIndex
+       size += 4  // m.VifIndex
+       size += 16 // m.HostIfName
+       size += 1  // m.HostIfType
+       size += 32 // m.Namespace
+       return size
+}
+func (m *LcpItfPairDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.PhySwIfIndex))
+       buf.EncodeUint32(uint32(m.HostSwIfIndex))
+       buf.EncodeUint32(m.VifIndex)
+       buf.EncodeString(m.HostIfName, 16)
+       buf.EncodeUint8(uint8(m.HostIfType))
+       buf.EncodeString(m.Namespace, 32)
+       return buf.Bytes(), nil
+}
+func (m *LcpItfPairDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.PhySwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.HostSwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.VifIndex = buf.DecodeUint32()
+       m.HostIfName = buf.DecodeString(16)
+       m.HostIfType = LcpItfHostType(buf.DecodeUint8())
+       m.Namespace = buf.DecodeString(32)
+       return nil
+}
+
+// LcpItfPairGet defines message 'lcp_itf_pair_get'.
+type LcpItfPairGet struct {
+       Cursor uint32 `binapi:"u32,name=cursor" json:"cursor,omitempty"`
+}
+
+func (m *LcpItfPairGet) Reset()               { *m = LcpItfPairGet{} }
+func (*LcpItfPairGet) GetMessageName() string { return "lcp_itf_pair_get" }
+func (*LcpItfPairGet) GetCrcString() string   { return "f75ba505" }
+func (*LcpItfPairGet) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *LcpItfPairGet) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Cursor
+       return size
+}
+func (m *LcpItfPairGet) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.Cursor)
+       return buf.Bytes(), nil
+}
+func (m *LcpItfPairGet) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Cursor = buf.DecodeUint32()
+       return nil
+}
+
+// LcpItfPairGetReply defines message 'lcp_itf_pair_get_reply'.
+type LcpItfPairGetReply struct {
+       Retval int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       Cursor uint32 `binapi:"u32,name=cursor" json:"cursor,omitempty"`
+}
+
+func (m *LcpItfPairGetReply) Reset()               { *m = LcpItfPairGetReply{} }
+func (*LcpItfPairGetReply) GetMessageName() string { return "lcp_itf_pair_get_reply" }
+func (*LcpItfPairGetReply) GetCrcString() string   { return "53b48f5d" }
+func (*LcpItfPairGetReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *LcpItfPairGetReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.Cursor
+       return size
+}
+func (m *LcpItfPairGetReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.Cursor)
+       return buf.Bytes(), nil
+}
+func (m *LcpItfPairGetReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.Cursor = buf.DecodeUint32()
+       return nil
+}
+
+// LcpItfPairReplaceBegin defines message 'lcp_itf_pair_replace_begin'.
+type LcpItfPairReplaceBegin struct{}
+
+func (m *LcpItfPairReplaceBegin) Reset()               { *m = LcpItfPairReplaceBegin{} }
+func (*LcpItfPairReplaceBegin) GetMessageName() string { return "lcp_itf_pair_replace_begin" }
+func (*LcpItfPairReplaceBegin) GetCrcString() string   { return "51077d14" }
+func (*LcpItfPairReplaceBegin) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *LcpItfPairReplaceBegin) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *LcpItfPairReplaceBegin) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *LcpItfPairReplaceBegin) Unmarshal(b []byte) error {
+       return nil
+}
+
+// LcpItfPairReplaceBeginReply defines message 'lcp_itf_pair_replace_begin_reply'.
+type LcpItfPairReplaceBeginReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *LcpItfPairReplaceBeginReply) Reset() { *m = LcpItfPairReplaceBeginReply{} }
+func (*LcpItfPairReplaceBeginReply) GetMessageName() string {
+       return "lcp_itf_pair_replace_begin_reply"
+}
+func (*LcpItfPairReplaceBeginReply) GetCrcString() string { return "e8d4e804" }
+func (*LcpItfPairReplaceBeginReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *LcpItfPairReplaceBeginReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *LcpItfPairReplaceBeginReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *LcpItfPairReplaceBeginReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// LcpItfPairReplaceEnd defines message 'lcp_itf_pair_replace_end'.
+type LcpItfPairReplaceEnd struct{}
+
+func (m *LcpItfPairReplaceEnd) Reset()               { *m = LcpItfPairReplaceEnd{} }
+func (*LcpItfPairReplaceEnd) GetMessageName() string { return "lcp_itf_pair_replace_end" }
+func (*LcpItfPairReplaceEnd) GetCrcString() string   { return "51077d14" }
+func (*LcpItfPairReplaceEnd) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *LcpItfPairReplaceEnd) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *LcpItfPairReplaceEnd) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *LcpItfPairReplaceEnd) Unmarshal(b []byte) error {
+       return nil
+}
+
+// LcpItfPairReplaceEndReply defines message 'lcp_itf_pair_replace_end_reply'.
+type LcpItfPairReplaceEndReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *LcpItfPairReplaceEndReply) Reset()               { *m = LcpItfPairReplaceEndReply{} }
+func (*LcpItfPairReplaceEndReply) GetMessageName() string { return "lcp_itf_pair_replace_end_reply" }
+func (*LcpItfPairReplaceEndReply) GetCrcString() string   { return "e8d4e804" }
+func (*LcpItfPairReplaceEndReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *LcpItfPairReplaceEndReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *LcpItfPairReplaceEndReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *LcpItfPairReplaceEndReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+func init() { file_lcp_binapi_init() }
+func file_lcp_binapi_init() {
+       api.RegisterMessage((*LcpDefaultNsGet)(nil), "lcp_default_ns_get_51077d14")
+       api.RegisterMessage((*LcpDefaultNsGetReply)(nil), "lcp_default_ns_get_reply_eaeef6d3")
+       api.RegisterMessage((*LcpDefaultNsSet)(nil), "lcp_default_ns_set_b561a74a")
+       api.RegisterMessage((*LcpDefaultNsSetReply)(nil), "lcp_default_ns_set_reply_e8d4e804")
+       api.RegisterMessage((*LcpItfPairAddDel)(nil), "lcp_itf_pair_add_del_f3157f59")
+       api.RegisterMessage((*LcpItfPairAddDelReply)(nil), "lcp_itf_pair_add_del_reply_e8d4e804")
+       api.RegisterMessage((*LcpItfPairAddDelV2)(nil), "lcp_itf_pair_add_del_v2_f3157f59")
+       api.RegisterMessage((*LcpItfPairAddDelV2Reply)(nil), "lcp_itf_pair_add_del_v2_reply_39452f52")
+       api.RegisterMessage((*LcpItfPairDetails)(nil), "lcp_itf_pair_details_5a95842f")
+       api.RegisterMessage((*LcpItfPairGet)(nil), "lcp_itf_pair_get_f75ba505")
+       api.RegisterMessage((*LcpItfPairGetReply)(nil), "lcp_itf_pair_get_reply_53b48f5d")
+       api.RegisterMessage((*LcpItfPairReplaceBegin)(nil), "lcp_itf_pair_replace_begin_51077d14")
+       api.RegisterMessage((*LcpItfPairReplaceBeginReply)(nil), "lcp_itf_pair_replace_begin_reply_e8d4e804")
+       api.RegisterMessage((*LcpItfPairReplaceEnd)(nil), "lcp_itf_pair_replace_end_51077d14")
+       api.RegisterMessage((*LcpItfPairReplaceEndReply)(nil), "lcp_itf_pair_replace_end_reply_e8d4e804")
+}
+
+// Messages returns list of all messages in this module.
+func AllMessages() []api.Message {
+       return []api.Message{
+               (*LcpDefaultNsGet)(nil),
+               (*LcpDefaultNsGetReply)(nil),
+               (*LcpDefaultNsSet)(nil),
+               (*LcpDefaultNsSetReply)(nil),
+               (*LcpItfPairAddDel)(nil),
+               (*LcpItfPairAddDelReply)(nil),
+               (*LcpItfPairAddDelV2)(nil),
+               (*LcpItfPairAddDelV2Reply)(nil),
+               (*LcpItfPairDetails)(nil),
+               (*LcpItfPairGet)(nil),
+               (*LcpItfPairGetReply)(nil),
+               (*LcpItfPairReplaceBegin)(nil),
+               (*LcpItfPairReplaceBeginReply)(nil),
+               (*LcpItfPairReplaceEnd)(nil),
+               (*LcpItfPairReplaceEndReply)(nil),
+       }
+}
diff --git a/binapi/lcp/lcp_rpc.ba.go b/binapi/lcp/lcp_rpc.ba.go
new file mode 100644 (file)
index 0000000..8faa2e8
--- /dev/null
@@ -0,0 +1,120 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+
+package lcp
+
+import (
+       "context"
+       "fmt"
+       "io"
+
+       api "git.fd.io/govpp.git/api"
+)
+
+// RPCService defines RPC service lcp.
+type RPCService interface {
+       LcpDefaultNsGet(ctx context.Context, in *LcpDefaultNsGet) (*LcpDefaultNsGetReply, error)
+       LcpDefaultNsSet(ctx context.Context, in *LcpDefaultNsSet) (*LcpDefaultNsSetReply, error)
+       LcpItfPairAddDel(ctx context.Context, in *LcpItfPairAddDel) (*LcpItfPairAddDelReply, error)
+       LcpItfPairAddDelV2(ctx context.Context, in *LcpItfPairAddDelV2) (*LcpItfPairAddDelV2Reply, error)
+       LcpItfPairGet(ctx context.Context, in *LcpItfPairGet) (RPCService_LcpItfPairGetClient, error)
+       LcpItfPairReplaceBegin(ctx context.Context, in *LcpItfPairReplaceBegin) (*LcpItfPairReplaceBeginReply, error)
+       LcpItfPairReplaceEnd(ctx context.Context, in *LcpItfPairReplaceEnd) (*LcpItfPairReplaceEndReply, error)
+}
+
+type serviceClient struct {
+       conn api.Connection
+}
+
+func NewServiceClient(conn api.Connection) RPCService {
+       return &serviceClient{conn}
+}
+
+func (c *serviceClient) LcpDefaultNsGet(ctx context.Context, in *LcpDefaultNsGet) (*LcpDefaultNsGetReply, error) {
+       out := new(LcpDefaultNsGetReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, nil
+}
+
+func (c *serviceClient) LcpDefaultNsSet(ctx context.Context, in *LcpDefaultNsSet) (*LcpDefaultNsSetReply, error) {
+       out := new(LcpDefaultNsSetReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) LcpItfPairAddDel(ctx context.Context, in *LcpItfPairAddDel) (*LcpItfPairAddDelReply, error) {
+       out := new(LcpItfPairAddDelReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) LcpItfPairAddDelV2(ctx context.Context, in *LcpItfPairAddDelV2) (*LcpItfPairAddDelV2Reply, error) {
+       out := new(LcpItfPairAddDelV2Reply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) LcpItfPairGet(ctx context.Context, in *LcpItfPairGet) (RPCService_LcpItfPairGetClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_LcpItfPairGetClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_LcpItfPairGetClient interface {
+       Recv() (*LcpItfPairDetails, error)
+       api.Stream
+}
+
+type serviceClient_LcpItfPairGetClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_LcpItfPairGetClient) Recv() (*LcpItfPairDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *LcpItfPairDetails:
+               return m, nil
+       case *LcpItfPairGetReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) LcpItfPairReplaceBegin(ctx context.Context, in *LcpItfPairReplaceBegin) (*LcpItfPairReplaceBeginReply, error) {
+       out := new(LcpItfPairReplaceBeginReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) LcpItfPairReplaceEnd(ctx context.Context, in *LcpItfPairReplaceEnd) (*LcpItfPairReplaceEndReply, error) {
+       out := new(LcpItfPairReplaceEndReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
index c6e2246..184f683 100644 (file)
@@ -1,8 +1,8 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
-// source: /usr/share/vpp/api/core/lisp.api.json
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/lisp.api.json
 
 // Package lisp contains generated bindings for API file lisp.api.
 //
@@ -33,7 +33,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "lisp"
        APIVersion = "2.0.0"
-       VersionCrc = 0xf2d169ad
+       VersionCrc = 0xcb04530f
 )
 
 // LispLocatorSetFilter defines enum 'lisp_locator_set_filter'.
@@ -82,7 +82,7 @@ type LispAddDelAdjacency struct {
 
 func (m *LispAddDelAdjacency) Reset()               { *m = LispAddDelAdjacency{} }
 func (*LispAddDelAdjacency) GetMessageName() string { return "lisp_add_del_adjacency" }
-func (*LispAddDelAdjacency) GetCrcString() string   { return "cf5edb61" }
+func (*LispAddDelAdjacency) GetCrcString() string   { return "2ce0e6f6" }
 func (*LispAddDelAdjacency) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -167,7 +167,7 @@ type LispAddDelLocalEid struct {
 
 func (m *LispAddDelLocalEid) Reset()               { *m = LispAddDelLocalEid{} }
 func (*LispAddDelLocalEid) GetMessageName() string { return "lisp_add_del_local_eid" }
-func (*LispAddDelLocalEid) GetCrcString() string   { return "21f573bd" }
+func (*LispAddDelLocalEid) GetCrcString() string   { return "4e5a83a2" }
 func (*LispAddDelLocalEid) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -513,7 +513,7 @@ type LispAddDelMapResolver struct {
 
 func (m *LispAddDelMapResolver) Reset()               { *m = LispAddDelMapResolver{} }
 func (*LispAddDelMapResolver) GetMessageName() string { return "lisp_add_del_map_resolver" }
-func (*LispAddDelMapResolver) GetCrcString() string   { return "6598ea7c" }
+func (*LispAddDelMapResolver) GetCrcString() string   { return "ce19e32d" }
 func (*LispAddDelMapResolver) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -586,7 +586,7 @@ type LispAddDelMapServer struct {
 
 func (m *LispAddDelMapServer) Reset()               { *m = LispAddDelMapServer{} }
 func (*LispAddDelMapServer) GetMessageName() string { return "lisp_add_del_map_server" }
-func (*LispAddDelMapServer) GetCrcString() string   { return "6598ea7c" }
+func (*LispAddDelMapServer) GetCrcString() string   { return "ce19e32d" }
 func (*LispAddDelMapServer) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -666,7 +666,7 @@ type LispAddDelRemoteMapping struct {
 
 func (m *LispAddDelRemoteMapping) Reset()               { *m = LispAddDelRemoteMapping{} }
 func (*LispAddDelRemoteMapping) GetMessageName() string { return "lisp_add_del_remote_mapping" }
-func (*LispAddDelRemoteMapping) GetCrcString() string   { return "fae8ed77" }
+func (*LispAddDelRemoteMapping) GetCrcString() string   { return "6d5c789e" }
 func (*LispAddDelRemoteMapping) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -824,7 +824,7 @@ type LispAdjacenciesGetReply struct {
 
 func (m *LispAdjacenciesGetReply) Reset()               { *m = LispAdjacenciesGetReply{} }
 func (*LispAdjacenciesGetReply) GetMessageName() string { return "lisp_adjacencies_get_reply" }
-func (*LispAdjacenciesGetReply) GetCrcString() string   { return "3f97bcdd" }
+func (*LispAdjacenciesGetReply) GetCrcString() string   { return "807257bf" }
 func (*LispAdjacenciesGetReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -975,7 +975,7 @@ type LispEidTableDetails struct {
 
 func (m *LispEidTableDetails) Reset()               { *m = LispEidTableDetails{} }
 func (*LispEidTableDetails) GetMessageName() string { return "lisp_eid_table_details" }
-func (*LispEidTableDetails) GetCrcString() string   { return "4bc32e3a" }
+func (*LispEidTableDetails) GetCrcString() string   { return "1c29f792" }
 func (*LispEidTableDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1049,7 +1049,7 @@ type LispEidTableDump struct {
 
 func (m *LispEidTableDump) Reset()               { *m = LispEidTableDump{} }
 func (*LispEidTableDump) GetMessageName() string { return "lisp_eid_table_dump" }
-func (*LispEidTableDump) GetCrcString() string   { return "b959b73b" }
+func (*LispEidTableDump) GetCrcString() string   { return "629468b5" }
 func (*LispEidTableDump) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1363,7 +1363,7 @@ type LispLocatorDetails struct {
 
 func (m *LispLocatorDetails) Reset()               { *m = LispLocatorDetails{} }
 func (*LispLocatorDetails) GetMessageName() string { return "lisp_locator_details" }
-func (*LispLocatorDetails) GetCrcString() string   { return "c0c4c2a7" }
+func (*LispLocatorDetails) GetCrcString() string   { return "2c620ffe" }
 func (*LispLocatorDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1658,7 +1658,7 @@ type LispMapResolverDetails struct {
 
 func (m *LispMapResolverDetails) Reset()               { *m = LispMapResolverDetails{} }
 func (*LispMapResolverDetails) GetMessageName() string { return "lisp_map_resolver_details" }
-func (*LispMapResolverDetails) GetCrcString() string   { return "82a09deb" }
+func (*LispMapResolverDetails) GetCrcString() string   { return "3e78fc57" }
 func (*LispMapResolverDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1721,7 +1721,7 @@ type LispMapServerDetails struct {
 
 func (m *LispMapServerDetails) Reset()               { *m = LispMapServerDetails{} }
 func (*LispMapServerDetails) GetMessageName() string { return "lisp_map_server_details" }
-func (*LispMapServerDetails) GetCrcString() string   { return "82a09deb" }
+func (*LispMapServerDetails) GetCrcString() string   { return "3e78fc57" }
 func (*LispMapServerDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1923,7 +1923,7 @@ type LispUsePetr struct {
 
 func (m *LispUsePetr) Reset()               { *m = LispUsePetr{} }
 func (*LispUsePetr) GetMessageName() string { return "lisp_use_petr" }
-func (*LispUsePetr) GetCrcString() string   { return "9e141831" }
+func (*LispUsePetr) GetCrcString() string   { return "d87dbad9" }
 func (*LispUsePetr) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -2018,7 +2018,7 @@ func (m *ShowLispMapRegisterState) Unmarshal(b []byte) error {
 // ShowLispMapRegisterStateReply defines message 'show_lisp_map_register_state_reply'.
 type ShowLispMapRegisterStateReply struct {
        Retval    int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
-       IsEnabled bool  `binapi:"bool,name=is_enabled,default=true" json:"is_enabled,omitempty"`
+       IsEnabled bool  `binapi:"bool,name=is_enabled" json:"is_enabled,omitempty"`
 }
 
 func (m *ShowLispMapRegisterStateReply) Reset() { *m = ShowLispMapRegisterStateReply{} }
@@ -2218,7 +2218,7 @@ func (m *ShowLispRlocProbeState) Unmarshal(b []byte) error {
 // ShowLispRlocProbeStateReply defines message 'show_lisp_rloc_probe_state_reply'.
 type ShowLispRlocProbeStateReply struct {
        Retval    int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
-       IsEnabled bool  `binapi:"bool,name=is_enabled,default=true" json:"is_enabled,omitempty"`
+       IsEnabled bool  `binapi:"bool,name=is_enabled" json:"is_enabled,omitempty"`
 }
 
 func (m *ShowLispRlocProbeStateReply) Reset() { *m = ShowLispRlocProbeStateReply{} }
@@ -2352,13 +2352,13 @@ func (m *ShowLispUsePetr) Unmarshal(b []byte) error {
 // ShowLispUsePetrReply defines message 'show_lisp_use_petr_reply'.
 type ShowLispUsePetrReply struct {
        Retval       int32            `binapi:"i32,name=retval" json:"retval,omitempty"`
-       IsPetrEnable bool             `binapi:"bool,name=is_petr_enable,default=true" json:"is_petr_enable,omitempty"`
+       IsPetrEnable bool             `binapi:"bool,name=is_petr_enable" json:"is_petr_enable,omitempty"`
        IPAddress    ip_types.Address `binapi:"address,name=ip_address" json:"ip_address,omitempty"`
 }
 
 func (m *ShowLispUsePetrReply) Reset()               { *m = ShowLispUsePetrReply{} }
 func (*ShowLispUsePetrReply) GetMessageName() string { return "show_lisp_use_petr_reply" }
-func (*ShowLispUsePetrReply) GetCrcString() string   { return "dcad8a81" }
+func (*ShowLispUsePetrReply) GetCrcString() string   { return "22b9a4b0" }
 func (*ShowLispUsePetrReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -2395,9 +2395,9 @@ func (m *ShowLispUsePetrReply) Unmarshal(b []byte) error {
 
 func init() { file_lisp_binapi_init() }
 func file_lisp_binapi_init() {
-       api.RegisterMessage((*LispAddDelAdjacency)(nil), "lisp_add_del_adjacency_cf5edb61")
+       api.RegisterMessage((*LispAddDelAdjacency)(nil), "lisp_add_del_adjacency_2ce0e6f6")
        api.RegisterMessage((*LispAddDelAdjacencyReply)(nil), "lisp_add_del_adjacency_reply_e8d4e804")
-       api.RegisterMessage((*LispAddDelLocalEid)(nil), "lisp_add_del_local_eid_21f573bd")
+       api.RegisterMessage((*LispAddDelLocalEid)(nil), "lisp_add_del_local_eid_4e5a83a2")
        api.RegisterMessage((*LispAddDelLocalEidReply)(nil), "lisp_add_del_local_eid_reply_e8d4e804")
        api.RegisterMessage((*LispAddDelLocator)(nil), "lisp_add_del_locator_af4d8f13")
        api.RegisterMessage((*LispAddDelLocatorReply)(nil), "lisp_add_del_locator_reply_e8d4e804")
@@ -2405,18 +2405,18 @@ func file_lisp_binapi_init() {
        api.RegisterMessage((*LispAddDelLocatorSetReply)(nil), "lisp_add_del_locator_set_reply_b6666db4")
        api.RegisterMessage((*LispAddDelMapRequestItrRlocs)(nil), "lisp_add_del_map_request_itr_rlocs_6be88e45")
        api.RegisterMessage((*LispAddDelMapRequestItrRlocsReply)(nil), "lisp_add_del_map_request_itr_rlocs_reply_e8d4e804")
-       api.RegisterMessage((*LispAddDelMapResolver)(nil), "lisp_add_del_map_resolver_6598ea7c")
+       api.RegisterMessage((*LispAddDelMapResolver)(nil), "lisp_add_del_map_resolver_ce19e32d")
        api.RegisterMessage((*LispAddDelMapResolverReply)(nil), "lisp_add_del_map_resolver_reply_e8d4e804")
-       api.RegisterMessage((*LispAddDelMapServer)(nil), "lisp_add_del_map_server_6598ea7c")
+       api.RegisterMessage((*LispAddDelMapServer)(nil), "lisp_add_del_map_server_ce19e32d")
        api.RegisterMessage((*LispAddDelMapServerReply)(nil), "lisp_add_del_map_server_reply_e8d4e804")
-       api.RegisterMessage((*LispAddDelRemoteMapping)(nil), "lisp_add_del_remote_mapping_fae8ed77")
+       api.RegisterMessage((*LispAddDelRemoteMapping)(nil), "lisp_add_del_remote_mapping_6d5c789e")
        api.RegisterMessage((*LispAddDelRemoteMappingReply)(nil), "lisp_add_del_remote_mapping_reply_e8d4e804")
        api.RegisterMessage((*LispAdjacenciesGet)(nil), "lisp_adjacencies_get_8d1f2fe9")
-       api.RegisterMessage((*LispAdjacenciesGetReply)(nil), "lisp_adjacencies_get_reply_3f97bcdd")
+       api.RegisterMessage((*LispAdjacenciesGetReply)(nil), "lisp_adjacencies_get_reply_807257bf")
        api.RegisterMessage((*LispEidTableAddDelMap)(nil), "lisp_eid_table_add_del_map_9481416b")
        api.RegisterMessage((*LispEidTableAddDelMapReply)(nil), "lisp_eid_table_add_del_map_reply_e8d4e804")
-       api.RegisterMessage((*LispEidTableDetails)(nil), "lisp_eid_table_details_4bc32e3a")
-       api.RegisterMessage((*LispEidTableDump)(nil), "lisp_eid_table_dump_b959b73b")
+       api.RegisterMessage((*LispEidTableDetails)(nil), "lisp_eid_table_details_1c29f792")
+       api.RegisterMessage((*LispEidTableDump)(nil), "lisp_eid_table_dump_629468b5")
        api.RegisterMessage((*LispEidTableMapDetails)(nil), "lisp_eid_table_map_details_0b6859e2")
        api.RegisterMessage((*LispEidTableMapDump)(nil), "lisp_eid_table_map_dump_d6cf0c3d")
        api.RegisterMessage((*LispEidTableVniDetails)(nil), "lisp_eid_table_vni_details_64abc01e")
@@ -2425,7 +2425,7 @@ func file_lisp_binapi_init() {
        api.RegisterMessage((*LispEnableDisableReply)(nil), "lisp_enable_disable_reply_e8d4e804")
        api.RegisterMessage((*LispGetMapRequestItrRlocs)(nil), "lisp_get_map_request_itr_rlocs_51077d14")
        api.RegisterMessage((*LispGetMapRequestItrRlocsReply)(nil), "lisp_get_map_request_itr_rlocs_reply_76580f3a")
-       api.RegisterMessage((*LispLocatorDetails)(nil), "lisp_locator_details_c0c4c2a7")
+       api.RegisterMessage((*LispLocatorDetails)(nil), "lisp_locator_details_2c620ffe")
        api.RegisterMessage((*LispLocatorDump)(nil), "lisp_locator_dump_b954fad7")
        api.RegisterMessage((*LispLocatorSetDetails)(nil), "lisp_locator_set_details_5b33a105")
        api.RegisterMessage((*LispLocatorSetDump)(nil), "lisp_locator_set_dump_c2cb5922")
@@ -2433,15 +2433,15 @@ func file_lisp_binapi_init() {
        api.RegisterMessage((*LispMapRegisterEnableDisableReply)(nil), "lisp_map_register_enable_disable_reply_e8d4e804")
        api.RegisterMessage((*LispMapRequestMode)(nil), "lisp_map_request_mode_f43c26ae")
        api.RegisterMessage((*LispMapRequestModeReply)(nil), "lisp_map_request_mode_reply_e8d4e804")
-       api.RegisterMessage((*LispMapResolverDetails)(nil), "lisp_map_resolver_details_82a09deb")
+       api.RegisterMessage((*LispMapResolverDetails)(nil), "lisp_map_resolver_details_3e78fc57")
        api.RegisterMessage((*LispMapResolverDump)(nil), "lisp_map_resolver_dump_51077d14")
-       api.RegisterMessage((*LispMapServerDetails)(nil), "lisp_map_server_details_82a09deb")
+       api.RegisterMessage((*LispMapServerDetails)(nil), "lisp_map_server_details_3e78fc57")
        api.RegisterMessage((*LispMapServerDump)(nil), "lisp_map_server_dump_51077d14")
        api.RegisterMessage((*LispPitrSetLocatorSet)(nil), "lisp_pitr_set_locator_set_486e2b76")
        api.RegisterMessage((*LispPitrSetLocatorSetReply)(nil), "lisp_pitr_set_locator_set_reply_e8d4e804")
        api.RegisterMessage((*LispRlocProbeEnableDisable)(nil), "lisp_rloc_probe_enable_disable_c264d7bf")
        api.RegisterMessage((*LispRlocProbeEnableDisableReply)(nil), "lisp_rloc_probe_enable_disable_reply_e8d4e804")
-       api.RegisterMessage((*LispUsePetr)(nil), "lisp_use_petr_9e141831")
+       api.RegisterMessage((*LispUsePetr)(nil), "lisp_use_petr_d87dbad9")
        api.RegisterMessage((*LispUsePetrReply)(nil), "lisp_use_petr_reply_e8d4e804")
        api.RegisterMessage((*ShowLispMapRegisterState)(nil), "show_lisp_map_register_state_51077d14")
        api.RegisterMessage((*ShowLispMapRegisterStateReply)(nil), "show_lisp_map_register_state_reply_e33a377b")
@@ -2454,7 +2454,7 @@ func file_lisp_binapi_init() {
        api.RegisterMessage((*ShowLispStatus)(nil), "show_lisp_status_51077d14")
        api.RegisterMessage((*ShowLispStatusReply)(nil), "show_lisp_status_reply_9e8f10c0")
        api.RegisterMessage((*ShowLispUsePetr)(nil), "show_lisp_use_petr_51077d14")
-       api.RegisterMessage((*ShowLispUsePetrReply)(nil), "show_lisp_use_petr_reply_dcad8a81")
+       api.RegisterMessage((*ShowLispUsePetrReply)(nil), "show_lisp_use_petr_reply_22b9a4b0")
 }
 
 // Messages returns list of all messages in this module.
index 91cb715..9379fbf 100644 (file)
@@ -1,8 +1,8 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
-// source: /usr/share/vpp/api/core/lisp_gpe.api.json
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/lisp_gpe.api.json
 
 // Package lisp_gpe contains generated bindings for API file lisp_gpe.api.
 //
@@ -30,7 +30,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "lisp_gpe"
        APIVersion = "2.0.0"
-       VersionCrc = 0x4947ac96
+       VersionCrc = 0x92611b0
 )
 
 // GpeFwdEntry defines type 'gpe_fwd_entry'.
@@ -70,7 +70,7 @@ type GpeAddDelFwdEntry struct {
 
 func (m *GpeAddDelFwdEntry) Reset()               { *m = GpeAddDelFwdEntry{} }
 func (*GpeAddDelFwdEntry) GetMessageName() string { return "gpe_add_del_fwd_entry" }
-func (*GpeAddDelFwdEntry) GetCrcString() string   { return "de6df50f" }
+func (*GpeAddDelFwdEntry) GetCrcString() string   { return "f0847644" }
 func (*GpeAddDelFwdEntry) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -270,7 +270,7 @@ type GpeAddDelNativeFwdRpath struct {
 
 func (m *GpeAddDelNativeFwdRpath) Reset()               { *m = GpeAddDelNativeFwdRpath{} }
 func (*GpeAddDelNativeFwdRpath) GetMessageName() string { return "gpe_add_del_native_fwd_rpath" }
-func (*GpeAddDelNativeFwdRpath) GetCrcString() string   { return "812da2f2" }
+func (*GpeAddDelNativeFwdRpath) GetCrcString() string   { return "43fc8b54" }
 func (*GpeAddDelNativeFwdRpath) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -451,7 +451,7 @@ type GpeFwdEntriesGetReply struct {
 
 func (m *GpeFwdEntriesGetReply) Reset()               { *m = GpeFwdEntriesGetReply{} }
 func (*GpeFwdEntriesGetReply) GetMessageName() string { return "gpe_fwd_entries_get_reply" }
-func (*GpeFwdEntriesGetReply) GetCrcString() string   { return "f9f53f1b" }
+func (*GpeFwdEntriesGetReply) GetCrcString() string   { return "c4844876" }
 func (*GpeFwdEntriesGetReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -528,7 +528,7 @@ type GpeFwdEntryPathDetails struct {
 
 func (m *GpeFwdEntryPathDetails) Reset()               { *m = GpeFwdEntryPathDetails{} }
 func (*GpeFwdEntryPathDetails) GetMessageName() string { return "gpe_fwd_entry_path_details" }
-func (*GpeFwdEntryPathDetails) GetCrcString() string   { return "ee80b19a" }
+func (*GpeFwdEntryPathDetails) GetCrcString() string   { return "483df51a" }
 func (*GpeFwdEntryPathDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -785,7 +785,7 @@ type GpeNativeFwdRpathsGetReply struct {
 
 func (m *GpeNativeFwdRpathsGetReply) Reset()               { *m = GpeNativeFwdRpathsGetReply{} }
 func (*GpeNativeFwdRpathsGetReply) GetMessageName() string { return "gpe_native_fwd_rpaths_get_reply" }
-func (*GpeNativeFwdRpathsGetReply) GetCrcString() string   { return "79d54eb9" }
+func (*GpeNativeFwdRpathsGetReply) GetCrcString() string   { return "7a1ca5a2" }
 func (*GpeNativeFwdRpathsGetReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -910,24 +910,24 @@ func (m *GpeSetEncapModeReply) Unmarshal(b []byte) error {
 
 func init() { file_lisp_gpe_binapi_init() }
 func file_lisp_gpe_binapi_init() {
-       api.RegisterMessage((*GpeAddDelFwdEntry)(nil), "gpe_add_del_fwd_entry_de6df50f")
+       api.RegisterMessage((*GpeAddDelFwdEntry)(nil), "gpe_add_del_fwd_entry_f0847644")
        api.RegisterMessage((*GpeAddDelFwdEntryReply)(nil), "gpe_add_del_fwd_entry_reply_efe5f176")
        api.RegisterMessage((*GpeAddDelIface)(nil), "gpe_add_del_iface_3ccff273")
        api.RegisterMessage((*GpeAddDelIfaceReply)(nil), "gpe_add_del_iface_reply_e8d4e804")
-       api.RegisterMessage((*GpeAddDelNativeFwdRpath)(nil), "gpe_add_del_native_fwd_rpath_812da2f2")
+       api.RegisterMessage((*GpeAddDelNativeFwdRpath)(nil), "gpe_add_del_native_fwd_rpath_43fc8b54")
        api.RegisterMessage((*GpeAddDelNativeFwdRpathReply)(nil), "gpe_add_del_native_fwd_rpath_reply_e8d4e804")
        api.RegisterMessage((*GpeEnableDisable)(nil), "gpe_enable_disable_c264d7bf")
        api.RegisterMessage((*GpeEnableDisableReply)(nil), "gpe_enable_disable_reply_e8d4e804")
        api.RegisterMessage((*GpeFwdEntriesGet)(nil), "gpe_fwd_entries_get_8d1f2fe9")
-       api.RegisterMessage((*GpeFwdEntriesGetReply)(nil), "gpe_fwd_entries_get_reply_f9f53f1b")
-       api.RegisterMessage((*GpeFwdEntryPathDetails)(nil), "gpe_fwd_entry_path_details_ee80b19a")
+       api.RegisterMessage((*GpeFwdEntriesGetReply)(nil), "gpe_fwd_entries_get_reply_c4844876")
+       api.RegisterMessage((*GpeFwdEntryPathDetails)(nil), "gpe_fwd_entry_path_details_483df51a")
        api.RegisterMessage((*GpeFwdEntryPathDump)(nil), "gpe_fwd_entry_path_dump_39bce980")
        api.RegisterMessage((*GpeFwdEntryVnisGet)(nil), "gpe_fwd_entry_vnis_get_51077d14")
        api.RegisterMessage((*GpeFwdEntryVnisGetReply)(nil), "gpe_fwd_entry_vnis_get_reply_aa70da20")
        api.RegisterMessage((*GpeGetEncapMode)(nil), "gpe_get_encap_mode_51077d14")
        api.RegisterMessage((*GpeGetEncapModeReply)(nil), "gpe_get_encap_mode_reply_36e3f7ca")
        api.RegisterMessage((*GpeNativeFwdRpathsGet)(nil), "gpe_native_fwd_rpaths_get_f652ceb4")
-       api.RegisterMessage((*GpeNativeFwdRpathsGetReply)(nil), "gpe_native_fwd_rpaths_get_reply_79d54eb9")
+       api.RegisterMessage((*GpeNativeFwdRpathsGetReply)(nil), "gpe_native_fwd_rpaths_get_reply_7a1ca5a2")
        api.RegisterMessage((*GpeSetEncapMode)(nil), "gpe_set_encap_mode_bd819eac")
        api.RegisterMessage((*GpeSetEncapModeReply)(nil), "gpe_set_encap_mode_reply_e8d4e804")
 }
index 1af3a26..b6a1b97 100644 (file)
@@ -1,8 +1,8 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
-// source: /usr/share/vpp/api/core/lisp_types.api.json
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/lisp_types.api.json
 
 // Package lisp_types contains generated bindings for API file lisp_types.api.
 //
index 6ae1ae7..0d210fc 100644 (file)
@@ -1,8 +1,8 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
-// source: /usr/share/vpp/api/core/lldp.api.json
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/lldp.api.json
 
 // Package lldp contains generated bindings for API file lldp.api.
 //
@@ -27,7 +27,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "lldp"
        APIVersion = "2.0.0"
-       VersionCrc = 0x44347d6
+       VersionCrc = 0x8a7e7049
 )
 
 // LldpConfig defines message 'lldp_config'.
@@ -116,7 +116,7 @@ type SwInterfaceSetLldp struct {
 
 func (m *SwInterfaceSetLldp) Reset()               { *m = SwInterfaceSetLldp{} }
 func (*SwInterfaceSetLldp) GetMessageName() string { return "sw_interface_set_lldp" }
-func (*SwInterfaceSetLldp) GetCrcString() string   { return "d646ae0f" }
+func (*SwInterfaceSetLldp) GetCrcString() string   { return "57afbcd4" }
 func (*SwInterfaceSetLldp) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -195,7 +195,7 @@ func init() { file_lldp_binapi_init() }
 func file_lldp_binapi_init() {
        api.RegisterMessage((*LldpConfig)(nil), "lldp_config_c14445df")
        api.RegisterMessage((*LldpConfigReply)(nil), "lldp_config_reply_e8d4e804")
-       api.RegisterMessage((*SwInterfaceSetLldp)(nil), "sw_interface_set_lldp_d646ae0f")
+       api.RegisterMessage((*SwInterfaceSetLldp)(nil), "sw_interface_set_lldp_57afbcd4")
        api.RegisterMessage((*SwInterfaceSetLldpReply)(nil), "sw_interface_set_lldp_reply_e8d4e804")
 }
 
index 4c95735..cc3c06c 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/mactime.api.json
 
 // Package mactime contains generated bindings for API file mactime.api.
@@ -28,7 +28,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "mactime"
        APIVersion = "2.0.0"
-       VersionCrc = 0x9283d3e
+       VersionCrc = 0xc72e296e
 )
 
 // MactimeTimeRange defines type 'mactime_time_range'.
@@ -59,7 +59,7 @@ type MactimeAddDelRange struct {
 
 func (m *MactimeAddDelRange) Reset()               { *m = MactimeAddDelRange{} }
 func (*MactimeAddDelRange) GetMessageName() string { return "mactime_add_del_range" }
-func (*MactimeAddDelRange) GetCrcString() string   { return "101858ef" }
+func (*MactimeAddDelRange) GetCrcString() string   { return "cb56e877" }
 func (*MactimeAddDelRange) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -178,7 +178,7 @@ type MactimeDetails struct {
 
 func (m *MactimeDetails) Reset()               { *m = MactimeDetails{} }
 func (*MactimeDetails) GetMessageName() string { return "mactime_details" }
-func (*MactimeDetails) GetCrcString() string   { return "44921c06" }
+func (*MactimeDetails) GetCrcString() string   { return "da25b13a" }
 func (*MactimeDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -386,9 +386,9 @@ func (m *MactimeEnableDisableReply) Unmarshal(b []byte) error {
 
 func init() { file_mactime_binapi_init() }
 func file_mactime_binapi_init() {
-       api.RegisterMessage((*MactimeAddDelRange)(nil), "mactime_add_del_range_101858ef")
+       api.RegisterMessage((*MactimeAddDelRange)(nil), "mactime_add_del_range_cb56e877")
        api.RegisterMessage((*MactimeAddDelRangeReply)(nil), "mactime_add_del_range_reply_e8d4e804")
-       api.RegisterMessage((*MactimeDetails)(nil), "mactime_details_44921c06")
+       api.RegisterMessage((*MactimeDetails)(nil), "mactime_details_da25b13a")
        api.RegisterMessage((*MactimeDump)(nil), "mactime_dump_8f454e23")
        api.RegisterMessage((*MactimeDumpReply)(nil), "mactime_dump_reply_49bcc753")
        api.RegisterMessage((*MactimeEnableDisable)(nil), "mactime_enable_disable_3865946c")
index aeb8cf7..7457841 100644 (file)
@@ -1,13 +1,13 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/map.api.json
 
 // Package maps contains generated bindings for API file map.api.
 //
 // Contents:
-//  30 messages
+//  32 messages
 //
 package maps
 
@@ -26,8 +26,8 @@ const _ = api.GoVppAPIPackageIsVersion2
 
 const (
        APIFile    = "map"
-       APIVersion = "4.1.1"
-       VersionCrc = 0x82b79829
+       APIVersion = "4.2.1"
+       VersionCrc = 0xd1f7f56c
 )
 
 // MapAddDelRule defines message 'map_add_del_rule'.
@@ -122,7 +122,7 @@ type MapAddDomain struct {
 
 func (m *MapAddDomain) Reset()               { *m = MapAddDomain{} }
 func (*MapAddDomain) GetMessageName() string { return "map_add_domain" }
-func (*MapAddDomain) GetCrcString() string   { return "7a5a18c9" }
+func (*MapAddDomain) GetCrcString() string   { return "249f195c" }
 func (*MapAddDomain) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -297,7 +297,7 @@ type MapDomainDetails struct {
 
 func (m *MapDomainDetails) Reset()               { *m = MapDomainDetails{} }
 func (*MapDomainDetails) GetMessageName() string { return "map_domain_details" }
-func (*MapDomainDetails) GetCrcString() string   { return "fc1859dd" }
+func (*MapDomainDetails) GetCrcString() string   { return "796edb50" }
 func (*MapDomainDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -360,6 +360,7 @@ func (m *MapDomainDetails) Unmarshal(b []byte) error {
 }
 
 // MapDomainDump defines message 'map_domain_dump'.
+// Deprecated: the message will be removed in the future versions
 type MapDomainDump struct{}
 
 func (m *MapDomainDump) Reset()               { *m = MapDomainDump{} }
@@ -386,6 +387,76 @@ func (m *MapDomainDump) Unmarshal(b []byte) error {
        return nil
 }
 
+// MapDomainsGet defines message 'map_domains_get'.
+type MapDomainsGet struct {
+       Cursor uint32 `binapi:"u32,name=cursor" json:"cursor,omitempty"`
+}
+
+func (m *MapDomainsGet) Reset()               { *m = MapDomainsGet{} }
+func (*MapDomainsGet) GetMessageName() string { return "map_domains_get" }
+func (*MapDomainsGet) GetCrcString() string   { return "f75ba505" }
+func (*MapDomainsGet) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *MapDomainsGet) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Cursor
+       return size
+}
+func (m *MapDomainsGet) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.Cursor)
+       return buf.Bytes(), nil
+}
+func (m *MapDomainsGet) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Cursor = buf.DecodeUint32()
+       return nil
+}
+
+// MapDomainsGetReply defines message 'map_domains_get_reply'.
+type MapDomainsGetReply struct {
+       Retval int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       Cursor uint32 `binapi:"u32,name=cursor" json:"cursor,omitempty"`
+}
+
+func (m *MapDomainsGetReply) Reset()               { *m = MapDomainsGetReply{} }
+func (*MapDomainsGetReply) GetMessageName() string { return "map_domains_get_reply" }
+func (*MapDomainsGetReply) GetCrcString() string   { return "53b48f5d" }
+func (*MapDomainsGetReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *MapDomainsGetReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.Cursor
+       return size
+}
+func (m *MapDomainsGetReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.Cursor)
+       return buf.Bytes(), nil
+}
+func (m *MapDomainsGetReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.Cursor = buf.DecodeUint32()
+       return nil
+}
+
 // MapIfEnableDisable defines message 'map_if_enable_disable'.
 type MapIfEnableDisable struct {
        SwIfIndex     interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
@@ -469,7 +540,7 @@ type MapParamAddDelPreResolve struct {
 
 func (m *MapParamAddDelPreResolve) Reset()               { *m = MapParamAddDelPreResolve{} }
 func (*MapParamAddDelPreResolve) GetMessageName() string { return "map_param_add_del_pre_resolve" }
-func (*MapParamAddDelPreResolve) GetCrcString() string   { return "17008c66" }
+func (*MapParamAddDelPreResolve) GetCrcString() string   { return "dae5af03" }
 func (*MapParamAddDelPreResolve) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -584,7 +655,7 @@ type MapParamGetReply struct {
 
 func (m *MapParamGetReply) Reset()               { *m = MapParamGetReply{} }
 func (*MapParamGetReply) GetMessageName() string { return "map_param_get_reply" }
-func (*MapParamGetReply) GetCrcString() string   { return "28092156" }
+func (*MapParamGetReply) GetCrcString() string   { return "26272c90" }
 func (*MapParamGetReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1247,18 +1318,20 @@ func init() { file_maps_binapi_init() }
 func file_maps_binapi_init() {
        api.RegisterMessage((*MapAddDelRule)(nil), "map_add_del_rule_c65b32f7")
        api.RegisterMessage((*MapAddDelRuleReply)(nil), "map_add_del_rule_reply_e8d4e804")
-       api.RegisterMessage((*MapAddDomain)(nil), "map_add_domain_7a5a18c9")
+       api.RegisterMessage((*MapAddDomain)(nil), "map_add_domain_249f195c")
        api.RegisterMessage((*MapAddDomainReply)(nil), "map_add_domain_reply_3e6d4e2c")
        api.RegisterMessage((*MapDelDomain)(nil), "map_del_domain_8ac76db6")
        api.RegisterMessage((*MapDelDomainReply)(nil), "map_del_domain_reply_e8d4e804")
-       api.RegisterMessage((*MapDomainDetails)(nil), "map_domain_details_fc1859dd")
+       api.RegisterMessage((*MapDomainDetails)(nil), "map_domain_details_796edb50")
        api.RegisterMessage((*MapDomainDump)(nil), "map_domain_dump_51077d14")
+       api.RegisterMessage((*MapDomainsGet)(nil), "map_domains_get_f75ba505")
+       api.RegisterMessage((*MapDomainsGetReply)(nil), "map_domains_get_reply_53b48f5d")
        api.RegisterMessage((*MapIfEnableDisable)(nil), "map_if_enable_disable_59bb32f4")
        api.RegisterMessage((*MapIfEnableDisableReply)(nil), "map_if_enable_disable_reply_e8d4e804")
-       api.RegisterMessage((*MapParamAddDelPreResolve)(nil), "map_param_add_del_pre_resolve_17008c66")
+       api.RegisterMessage((*MapParamAddDelPreResolve)(nil), "map_param_add_del_pre_resolve_dae5af03")
        api.RegisterMessage((*MapParamAddDelPreResolveReply)(nil), "map_param_add_del_pre_resolve_reply_e8d4e804")
        api.RegisterMessage((*MapParamGet)(nil), "map_param_get_51077d14")
-       api.RegisterMessage((*MapParamGetReply)(nil), "map_param_get_reply_28092156")
+       api.RegisterMessage((*MapParamGetReply)(nil), "map_param_get_reply_26272c90")
        api.RegisterMessage((*MapParamSetFragmentation)(nil), "map_param_set_fragmentation_9ff54d90")
        api.RegisterMessage((*MapParamSetFragmentationReply)(nil), "map_param_set_fragmentation_reply_e8d4e804")
        api.RegisterMessage((*MapParamSetICMP)(nil), "map_param_set_icmp_58210cbf")
@@ -1288,6 +1361,8 @@ func AllMessages() []api.Message {
                (*MapDelDomainReply)(nil),
                (*MapDomainDetails)(nil),
                (*MapDomainDump)(nil),
+               (*MapDomainsGet)(nil),
+               (*MapDomainsGetReply)(nil),
                (*MapIfEnableDisable)(nil),
                (*MapIfEnableDisableReply)(nil),
                (*MapParamAddDelPreResolve)(nil),
index 8c20779..06bb1d8 100644 (file)
@@ -17,6 +17,7 @@ type RPCService interface {
        MapAddDomain(ctx context.Context, in *MapAddDomain) (*MapAddDomainReply, error)
        MapDelDomain(ctx context.Context, in *MapDelDomain) (*MapDelDomainReply, error)
        MapDomainDump(ctx context.Context, in *MapDomainDump) (RPCService_MapDomainDumpClient, error)
+       MapDomainsGet(ctx context.Context, in *MapDomainsGet) (RPCService_MapDomainsGetClient, error)
        MapIfEnableDisable(ctx context.Context, in *MapIfEnableDisable) (*MapIfEnableDisableReply, error)
        MapParamAddDelPreResolve(ctx context.Context, in *MapParamAddDelPreResolve) (*MapParamAddDelPreResolveReply, error)
        MapParamGet(ctx context.Context, in *MapParamGet) (*MapParamGetReply, error)
@@ -104,6 +105,42 @@ func (c *serviceClient_MapDomainDumpClient) Recv() (*MapDomainDetails, error) {
        }
 }
 
+func (c *serviceClient) MapDomainsGet(ctx context.Context, in *MapDomainsGet) (RPCService_MapDomainsGetClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_MapDomainsGetClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_MapDomainsGetClient interface {
+       Recv() (*MapDomainDetails, error)
+       api.Stream
+}
+
+type serviceClient_MapDomainsGetClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_MapDomainsGetClient) Recv() (*MapDomainDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *MapDomainDetails:
+               return m, nil
+       case *MapDomainsGetReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
 func (c *serviceClient) MapIfEnableDisable(ctx context.Context, in *MapIfEnableDisable) (*MapIfEnableDisableReply, error) {
        out := new(MapIfEnableDisableReply)
        err := c.conn.Invoke(ctx, in, out)
index a218692..946c2d0 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/mdata.api.json
 
 // Package mdata contains generated bindings for API file mdata.api.
@@ -26,10 +26,11 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "mdata"
        APIVersion = "0.1.0"
-       VersionCrc = 0x3a1911dd
+       VersionCrc = 0x5bd69477
 )
 
 // MdataEnableDisable defines message 'mdata_enable_disable'.
+// InProgress: the message form may change in the future versions
 type MdataEnableDisable struct {
        EnableDisable bool `binapi:"bool,name=enable_disable" json:"enable_disable,omitempty"`
 }
@@ -63,6 +64,7 @@ func (m *MdataEnableDisable) Unmarshal(b []byte) error {
 }
 
 // MdataEnableDisableReply defines message 'mdata_enable_disable_reply'.
+// InProgress: the message form may change in the future versions
 type MdataEnableDisableReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
index 0dac33f..1f2fc75 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/memclnt.api.json
 
 // Package memclnt contains generated bindings for API file memclnt.api.
index 8a7140b..dedc6c6 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/memif.api.json
 
 // Package memif contains generated bindings for API file memif.api.
@@ -30,7 +30,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "memif"
        APIVersion = "3.0.0"
-       VersionCrc = 0x1a1c95b8
+       VersionCrc = 0xd189f1e1
 )
 
 // MemifMode defines enum 'memif_mode'.
@@ -283,7 +283,7 @@ type MemifDetails struct {
 
 func (m *MemifDetails) Reset()               { *m = MemifDetails{} }
 func (*MemifDetails) GetMessageName() string { return "memif_details" }
-func (*MemifDetails) GetCrcString() string   { return "d0382c4c" }
+func (*MemifDetails) GetCrcString() string   { return "da34feb9" }
 func (*MemifDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -512,7 +512,7 @@ func file_memif_binapi_init() {
        api.RegisterMessage((*MemifCreateReply)(nil), "memif_create_reply_5383d31f")
        api.RegisterMessage((*MemifDelete)(nil), "memif_delete_f9e6675e")
        api.RegisterMessage((*MemifDeleteReply)(nil), "memif_delete_reply_e8d4e804")
-       api.RegisterMessage((*MemifDetails)(nil), "memif_details_d0382c4c")
+       api.RegisterMessage((*MemifDetails)(nil), "memif_details_da34feb9")
        api.RegisterMessage((*MemifDump)(nil), "memif_dump_51077d14")
        api.RegisterMessage((*MemifSocketFilenameAddDel)(nil), "memif_socket_filename_add_del_a2ce1a10")
        api.RegisterMessage((*MemifSocketFilenameAddDelReply)(nil), "memif_socket_filename_add_del_reply_e8d4e804")
index 41c2434..6928592 100644 (file)
@@ -1,13 +1,13 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/mfib_types.api.json
 
 // Package mfib_types contains generated bindings for API file mfib_types.api.
 //
 // Contents:
-//   1 enum
+//   2 enums
 //   1 struct
 //
 package mfib_types
@@ -26,6 +26,61 @@ import (
 // GoVPP api package needs to be updated.
 const _ = api.GoVppAPIPackageIsVersion2
 
+// MfibEntryFlags defines enum 'mfib_entry_flags'.
+type MfibEntryFlags uint32
+
+const (
+       MFIB_API_ENTRY_FLAG_NONE           MfibEntryFlags = 0
+       MFIB_API_ENTRY_FLAG_SIGNAL         MfibEntryFlags = 1
+       MFIB_API_ENTRY_FLAG_DROP           MfibEntryFlags = 2
+       MFIB_API_ENTRY_FLAG_CONNECTED      MfibEntryFlags = 4
+       MFIB_API_ENTRY_FLAG_ACCEPT_ALL_ITF MfibEntryFlags = 8
+)
+
+var (
+       MfibEntryFlags_name = map[uint32]string{
+               0: "MFIB_API_ENTRY_FLAG_NONE",
+               1: "MFIB_API_ENTRY_FLAG_SIGNAL",
+               2: "MFIB_API_ENTRY_FLAG_DROP",
+               4: "MFIB_API_ENTRY_FLAG_CONNECTED",
+               8: "MFIB_API_ENTRY_FLAG_ACCEPT_ALL_ITF",
+       }
+       MfibEntryFlags_value = map[string]uint32{
+               "MFIB_API_ENTRY_FLAG_NONE":           0,
+               "MFIB_API_ENTRY_FLAG_SIGNAL":         1,
+               "MFIB_API_ENTRY_FLAG_DROP":           2,
+               "MFIB_API_ENTRY_FLAG_CONNECTED":      4,
+               "MFIB_API_ENTRY_FLAG_ACCEPT_ALL_ITF": 8,
+       }
+)
+
+func (x MfibEntryFlags) String() string {
+       s, ok := MfibEntryFlags_name[uint32(x)]
+       if ok {
+               return s
+       }
+       str := func(n uint32) string {
+               s, ok := MfibEntryFlags_name[uint32(n)]
+               if ok {
+                       return s
+               }
+               return "MfibEntryFlags(" + strconv.Itoa(int(n)) + ")"
+       }
+       for i := uint32(0); i <= 32; i++ {
+               val := uint32(x)
+               if val&(1<<i) != 0 {
+                       if s != "" {
+                               s += "|"
+                       }
+                       s += str(1 << i)
+               }
+       }
+       if s == "" {
+               return str(uint32(x))
+       }
+       return s
+}
+
 // MfibItfFlags defines enum 'mfib_itf_flags'.
 type MfibItfFlags uint32
 
index 799ae69..5f88146 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/mpls.api.json
 
 // Package mpls contains generated bindings for API file mpls.api.
@@ -29,7 +29,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "mpls"
        APIVersion = "1.1.1"
-       VersionCrc = 0xd83a030f
+       VersionCrc = 0x46824f02
 )
 
 // MplsRoute defines type 'mpls_route'.
@@ -71,7 +71,7 @@ type MplsIPBindUnbind struct {
 
 func (m *MplsIPBindUnbind) Reset()               { *m = MplsIPBindUnbind{} }
 func (*MplsIPBindUnbind) GetMessageName() string { return "mpls_ip_bind_unbind" }
-func (*MplsIPBindUnbind) GetCrcString() string   { return "48249a27" }
+func (*MplsIPBindUnbind) GetCrcString() string   { return "c7533b32" }
 func (*MplsIPBindUnbind) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -157,7 +157,7 @@ type MplsRouteAddDel struct {
 
 func (m *MplsRouteAddDel) Reset()               { *m = MplsRouteAddDel{} }
 func (*MplsRouteAddDel) GetMessageName() string { return "mpls_route_add_del" }
-func (*MplsRouteAddDel) GetCrcString() string   { return "343cff54" }
+func (*MplsRouteAddDel) GetCrcString() string   { return "8e1d1e07" }
 func (*MplsRouteAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -321,7 +321,7 @@ type MplsRouteDetails struct {
 
 func (m *MplsRouteDetails) Reset()               { *m = MplsRouteDetails{} }
 func (*MplsRouteDetails) GetMessageName() string { return "mpls_route_details" }
-func (*MplsRouteDetails) GetCrcString() string   { return "d0ac384c" }
+func (*MplsRouteDetails) GetCrcString() string   { return "9b5043dc" }
 func (*MplsRouteDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -615,7 +615,7 @@ type MplsTunnelAddDel struct {
 
 func (m *MplsTunnelAddDel) Reset()               { *m = MplsTunnelAddDel{} }
 func (*MplsTunnelAddDel) GetMessageName() string { return "mpls_tunnel_add_del" }
-func (*MplsTunnelAddDel) GetCrcString() string   { return "e57ce61d" }
+func (*MplsTunnelAddDel) GetCrcString() string   { return "44350ac1" }
 func (*MplsTunnelAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -780,7 +780,7 @@ type MplsTunnelDetails struct {
 
 func (m *MplsTunnelDetails) Reset()               { *m = MplsTunnelDetails{} }
 func (*MplsTunnelDetails) GetMessageName() string { return "mpls_tunnel_details" }
-func (*MplsTunnelDetails) GetCrcString() string   { return "f3c0928e" }
+func (*MplsTunnelDetails) GetCrcString() string   { return "57118ae3" }
 func (*MplsTunnelDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1001,19 +1001,19 @@ func (m *SwInterfaceSetMplsEnableReply) Unmarshal(b []byte) error {
 
 func init() { file_mpls_binapi_init() }
 func file_mpls_binapi_init() {
-       api.RegisterMessage((*MplsIPBindUnbind)(nil), "mpls_ip_bind_unbind_48249a27")
+       api.RegisterMessage((*MplsIPBindUnbind)(nil), "mpls_ip_bind_unbind_c7533b32")
        api.RegisterMessage((*MplsIPBindUnbindReply)(nil), "mpls_ip_bind_unbind_reply_e8d4e804")
-       api.RegisterMessage((*MplsRouteAddDel)(nil), "mpls_route_add_del_343cff54")
+       api.RegisterMessage((*MplsRouteAddDel)(nil), "mpls_route_add_del_8e1d1e07")
        api.RegisterMessage((*MplsRouteAddDelReply)(nil), "mpls_route_add_del_reply_1992deab")
-       api.RegisterMessage((*MplsRouteDetails)(nil), "mpls_route_details_d0ac384c")
+       api.RegisterMessage((*MplsRouteDetails)(nil), "mpls_route_details_9b5043dc")
        api.RegisterMessage((*MplsRouteDump)(nil), "mpls_route_dump_935fdefa")
        api.RegisterMessage((*MplsTableAddDel)(nil), "mpls_table_add_del_57817512")
        api.RegisterMessage((*MplsTableAddDelReply)(nil), "mpls_table_add_del_reply_e8d4e804")
        api.RegisterMessage((*MplsTableDetails)(nil), "mpls_table_details_f03ecdc8")
        api.RegisterMessage((*MplsTableDump)(nil), "mpls_table_dump_51077d14")
-       api.RegisterMessage((*MplsTunnelAddDel)(nil), "mpls_tunnel_add_del_e57ce61d")
+       api.RegisterMessage((*MplsTunnelAddDel)(nil), "mpls_tunnel_add_del_44350ac1")
        api.RegisterMessage((*MplsTunnelAddDelReply)(nil), "mpls_tunnel_add_del_reply_afb01472")
-       api.RegisterMessage((*MplsTunnelDetails)(nil), "mpls_tunnel_details_f3c0928e")
+       api.RegisterMessage((*MplsTunnelDetails)(nil), "mpls_tunnel_details_57118ae3")
        api.RegisterMessage((*MplsTunnelDump)(nil), "mpls_tunnel_dump_f9e6675e")
        api.RegisterMessage((*SwInterfaceSetMplsEnable)(nil), "sw_interface_set_mpls_enable_ae6cfcfb")
        api.RegisterMessage((*SwInterfaceSetMplsEnableReply)(nil), "sw_interface_set_mpls_enable_reply_e8d4e804")
diff --git a/binapi/mss_clamp/mss_clamp.ba.go b/binapi/mss_clamp/mss_clamp.ba.go
new file mode 100644 (file)
index 0000000..b44cc09
--- /dev/null
@@ -0,0 +1,307 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/mss_clamp.api.json
+
+// Package mss_clamp contains generated bindings for API file mss_clamp.api.
+//
+// Contents:
+//   1 enum
+//   5 messages
+//
+package mss_clamp
+
+import (
+       "strconv"
+
+       api "git.fd.io/govpp.git/api"
+       interface_types "git.fd.io/govpp.git/binapi/interface_types"
+       codec "git.fd.io/govpp.git/codec"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+const (
+       APIFile    = "mss_clamp"
+       APIVersion = "1.0.0"
+       VersionCrc = 0xea8186c0
+)
+
+// MssClampDir defines enum 'mss_clamp_dir'.
+type MssClampDir uint8
+
+const (
+       MSS_CLAMP_DIR_NONE MssClampDir = 0
+       MSS_CLAMP_DIR_RX   MssClampDir = 1
+       MSS_CLAMP_DIR_TX   MssClampDir = 2
+)
+
+var (
+       MssClampDir_name = map[uint8]string{
+               0: "MSS_CLAMP_DIR_NONE",
+               1: "MSS_CLAMP_DIR_RX",
+               2: "MSS_CLAMP_DIR_TX",
+       }
+       MssClampDir_value = map[string]uint8{
+               "MSS_CLAMP_DIR_NONE": 0,
+               "MSS_CLAMP_DIR_RX":   1,
+               "MSS_CLAMP_DIR_TX":   2,
+       }
+)
+
+func (x MssClampDir) String() string {
+       s, ok := MssClampDir_name[uint8(x)]
+       if ok {
+               return s
+       }
+       str := func(n uint8) string {
+               s, ok := MssClampDir_name[uint8(n)]
+               if ok {
+                       return s
+               }
+               return "MssClampDir(" + strconv.Itoa(int(n)) + ")"
+       }
+       for i := uint8(0); i <= 8; i++ {
+               val := uint8(x)
+               if val&(1<<i) != 0 {
+                       if s != "" {
+                               s += "|"
+                       }
+                       s += str(1 << i)
+               }
+       }
+       if s == "" {
+               return str(uint8(x))
+       }
+       return s
+}
+
+// MssClampDetails defines message 'mss_clamp_details'.
+type MssClampDetails struct {
+       SwIfIndex     interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       IPv4Mss       uint16                         `binapi:"u16,name=ipv4_mss" json:"ipv4_mss,omitempty"`
+       IPv6Mss       uint16                         `binapi:"u16,name=ipv6_mss" json:"ipv6_mss,omitempty"`
+       IPv4Direction MssClampDir                    `binapi:"mss_clamp_dir,name=ipv4_direction" json:"ipv4_direction,omitempty"`
+       IPv6Direction MssClampDir                    `binapi:"mss_clamp_dir,name=ipv6_direction" json:"ipv6_direction,omitempty"`
+}
+
+func (m *MssClampDetails) Reset()               { *m = MssClampDetails{} }
+func (*MssClampDetails) GetMessageName() string { return "mss_clamp_details" }
+func (*MssClampDetails) GetCrcString() string   { return "d3a4de61" }
+func (*MssClampDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *MssClampDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       size += 2 // m.IPv4Mss
+       size += 2 // m.IPv6Mss
+       size += 1 // m.IPv4Direction
+       size += 1 // m.IPv6Direction
+       return size
+}
+func (m *MssClampDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint16(m.IPv4Mss)
+       buf.EncodeUint16(m.IPv6Mss)
+       buf.EncodeUint8(uint8(m.IPv4Direction))
+       buf.EncodeUint8(uint8(m.IPv6Direction))
+       return buf.Bytes(), nil
+}
+func (m *MssClampDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.IPv4Mss = buf.DecodeUint16()
+       m.IPv6Mss = buf.DecodeUint16()
+       m.IPv4Direction = MssClampDir(buf.DecodeUint8())
+       m.IPv6Direction = MssClampDir(buf.DecodeUint8())
+       return nil
+}
+
+// MssClampEnableDisable defines message 'mss_clamp_enable_disable'.
+type MssClampEnableDisable struct {
+       SwIfIndex     interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       IPv4Mss       uint16                         `binapi:"u16,name=ipv4_mss" json:"ipv4_mss,omitempty"`
+       IPv6Mss       uint16                         `binapi:"u16,name=ipv6_mss" json:"ipv6_mss,omitempty"`
+       IPv4Direction MssClampDir                    `binapi:"mss_clamp_dir,name=ipv4_direction" json:"ipv4_direction,omitempty"`
+       IPv6Direction MssClampDir                    `binapi:"mss_clamp_dir,name=ipv6_direction" json:"ipv6_direction,omitempty"`
+}
+
+func (m *MssClampEnableDisable) Reset()               { *m = MssClampEnableDisable{} }
+func (*MssClampEnableDisable) GetMessageName() string { return "mss_clamp_enable_disable" }
+func (*MssClampEnableDisable) GetCrcString() string   { return "d31b44e3" }
+func (*MssClampEnableDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *MssClampEnableDisable) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       size += 2 // m.IPv4Mss
+       size += 2 // m.IPv6Mss
+       size += 1 // m.IPv4Direction
+       size += 1 // m.IPv6Direction
+       return size
+}
+func (m *MssClampEnableDisable) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint16(m.IPv4Mss)
+       buf.EncodeUint16(m.IPv6Mss)
+       buf.EncodeUint8(uint8(m.IPv4Direction))
+       buf.EncodeUint8(uint8(m.IPv6Direction))
+       return buf.Bytes(), nil
+}
+func (m *MssClampEnableDisable) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.IPv4Mss = buf.DecodeUint16()
+       m.IPv6Mss = buf.DecodeUint16()
+       m.IPv4Direction = MssClampDir(buf.DecodeUint8())
+       m.IPv6Direction = MssClampDir(buf.DecodeUint8())
+       return nil
+}
+
+// MssClampEnableDisableReply defines message 'mss_clamp_enable_disable_reply'.
+type MssClampEnableDisableReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *MssClampEnableDisableReply) Reset()               { *m = MssClampEnableDisableReply{} }
+func (*MssClampEnableDisableReply) GetMessageName() string { return "mss_clamp_enable_disable_reply" }
+func (*MssClampEnableDisableReply) GetCrcString() string   { return "e8d4e804" }
+func (*MssClampEnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *MssClampEnableDisableReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *MssClampEnableDisableReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *MssClampEnableDisableReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// MssClampGet defines message 'mss_clamp_get'.
+type MssClampGet struct {
+       Cursor    uint32                         `binapi:"u32,name=cursor" json:"cursor,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *MssClampGet) Reset()               { *m = MssClampGet{} }
+func (*MssClampGet) GetMessageName() string { return "mss_clamp_get" }
+func (*MssClampGet) GetCrcString() string   { return "47250981" }
+func (*MssClampGet) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *MssClampGet) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Cursor
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *MssClampGet) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.Cursor)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *MssClampGet) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Cursor = buf.DecodeUint32()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// MssClampGetReply defines message 'mss_clamp_get_reply'.
+type MssClampGetReply struct {
+       Retval int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       Cursor uint32 `binapi:"u32,name=cursor" json:"cursor,omitempty"`
+}
+
+func (m *MssClampGetReply) Reset()               { *m = MssClampGetReply{} }
+func (*MssClampGetReply) GetMessageName() string { return "mss_clamp_get_reply" }
+func (*MssClampGetReply) GetCrcString() string   { return "53b48f5d" }
+func (*MssClampGetReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *MssClampGetReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.Cursor
+       return size
+}
+func (m *MssClampGetReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.Cursor)
+       return buf.Bytes(), nil
+}
+func (m *MssClampGetReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.Cursor = buf.DecodeUint32()
+       return nil
+}
+
+func init() { file_mss_clamp_binapi_init() }
+func file_mss_clamp_binapi_init() {
+       api.RegisterMessage((*MssClampDetails)(nil), "mss_clamp_details_d3a4de61")
+       api.RegisterMessage((*MssClampEnableDisable)(nil), "mss_clamp_enable_disable_d31b44e3")
+       api.RegisterMessage((*MssClampEnableDisableReply)(nil), "mss_clamp_enable_disable_reply_e8d4e804")
+       api.RegisterMessage((*MssClampGet)(nil), "mss_clamp_get_47250981")
+       api.RegisterMessage((*MssClampGetReply)(nil), "mss_clamp_get_reply_53b48f5d")
+}
+
+// Messages returns list of all messages in this module.
+func AllMessages() []api.Message {
+       return []api.Message{
+               (*MssClampDetails)(nil),
+               (*MssClampEnableDisable)(nil),
+               (*MssClampEnableDisableReply)(nil),
+               (*MssClampGet)(nil),
+               (*MssClampGetReply)(nil),
+       }
+}
diff --git a/binapi/mss_clamp/mss_clamp_rpc.ba.go b/binapi/mss_clamp/mss_clamp_rpc.ba.go
new file mode 100644 (file)
index 0000000..7353d86
--- /dev/null
@@ -0,0 +1,70 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+
+package mss_clamp
+
+import (
+       "context"
+       "fmt"
+       "io"
+
+       api "git.fd.io/govpp.git/api"
+)
+
+// RPCService defines RPC service mss_clamp.
+type RPCService interface {
+       MssClampEnableDisable(ctx context.Context, in *MssClampEnableDisable) (*MssClampEnableDisableReply, error)
+       MssClampGet(ctx context.Context, in *MssClampGet) (RPCService_MssClampGetClient, error)
+}
+
+type serviceClient struct {
+       conn api.Connection
+}
+
+func NewServiceClient(conn api.Connection) RPCService {
+       return &serviceClient{conn}
+}
+
+func (c *serviceClient) MssClampEnableDisable(ctx context.Context, in *MssClampEnableDisable) (*MssClampEnableDisableReply, error) {
+       out := new(MssClampEnableDisableReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) MssClampGet(ctx context.Context, in *MssClampGet) (RPCService_MssClampGetClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_MssClampGetClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_MssClampGetClient interface {
+       Recv() (*MssClampDetails, error)
+       api.Stream
+}
+
+type serviceClient_MssClampGetClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_MssClampGetClient) Recv() (*MssClampDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *MssClampDetails:
+               return m, nil
+       case *MssClampGetReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
similarity index 65%
rename from binapi/nat/nat.ba.go
rename to binapi/nat44_ed/nat44_ed.ba.go
index ac65413..7e22eeb 100644 (file)
@@ -1,17 +1,17 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
-// source: /usr/share/vpp/api/plugins/nat.api.json
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/nat44_ed.api.json
 
-// Package nat contains generated bindings for API file nat.api.
+// Package nat44_ed contains generated bindings for API file nat44_ed.api.
 //
 // Contents:
-//   2 enums
+//   1 enum
 //   1 struct
-// 125 messages
+//  97 messages
 //
-package nat
+package nat44_ed
 
 import (
        "strconv"
@@ -19,6 +19,7 @@ import (
        api "git.fd.io/govpp.git/api"
        interface_types "git.fd.io/govpp.git/binapi/interface_types"
        ip_types "git.fd.io/govpp.git/binapi/ip_types"
+       nat_types "git.fd.io/govpp.git/binapi/nat_types"
        codec "git.fd.io/govpp.git/codec"
 )
 
@@ -29,62 +30,50 @@ import (
 const _ = api.GoVppAPIPackageIsVersion2
 
 const (
-       APIFile    = "nat"
-       APIVersion = "5.2.0"
-       VersionCrc = 0xabdcbb0d
+       APIFile    = "nat44_ed"
+       APIVersion = "5.3.0"
+       VersionCrc = 0xfd9ae40f
 )
 
-// NatConfigFlags defines enum 'nat_config_flags'.
-type NatConfigFlags uint8
+// Nat44ConfigFlags defines enum 'nat44_config_flags'.
+type Nat44ConfigFlags uint8
 
 const (
-       NAT_IS_NONE           NatConfigFlags = 0
-       NAT_IS_TWICE_NAT      NatConfigFlags = 1
-       NAT_IS_SELF_TWICE_NAT NatConfigFlags = 2
-       NAT_IS_OUT2IN_ONLY    NatConfigFlags = 4
-       NAT_IS_ADDR_ONLY      NatConfigFlags = 8
-       NAT_IS_OUTSIDE        NatConfigFlags = 16
-       NAT_IS_INSIDE         NatConfigFlags = 32
-       NAT_IS_STATIC         NatConfigFlags = 64
-       NAT_IS_EXT_HOST_VALID NatConfigFlags = 128
+       NAT44_IS_ENDPOINT_INDEPENDENT Nat44ConfigFlags = 0
+       NAT44_IS_ENDPOINT_DEPENDENT   Nat44ConfigFlags = 1
+       NAT44_IS_STATIC_MAPPING_ONLY  Nat44ConfigFlags = 2
+       NAT44_IS_CONNECTION_TRACKING  Nat44ConfigFlags = 4
+       NAT44_IS_OUT2IN_DPO           Nat44ConfigFlags = 8
 )
 
 var (
-       NatConfigFlags_name = map[uint8]string{
-               0:   "NAT_IS_NONE",
-               1:   "NAT_IS_TWICE_NAT",
-               2:   "NAT_IS_SELF_TWICE_NAT",
-               4:   "NAT_IS_OUT2IN_ONLY",
-               8:   "NAT_IS_ADDR_ONLY",
-               16:  "NAT_IS_OUTSIDE",
-               32:  "NAT_IS_INSIDE",
-               64:  "NAT_IS_STATIC",
-               128: "NAT_IS_EXT_HOST_VALID",
-       }
-       NatConfigFlags_value = map[string]uint8{
-               "NAT_IS_NONE":           0,
-               "NAT_IS_TWICE_NAT":      1,
-               "NAT_IS_SELF_TWICE_NAT": 2,
-               "NAT_IS_OUT2IN_ONLY":    4,
-               "NAT_IS_ADDR_ONLY":      8,
-               "NAT_IS_OUTSIDE":        16,
-               "NAT_IS_INSIDE":         32,
-               "NAT_IS_STATIC":         64,
-               "NAT_IS_EXT_HOST_VALID": 128,
+       Nat44ConfigFlags_name = map[uint8]string{
+               0: "NAT44_IS_ENDPOINT_INDEPENDENT",
+               1: "NAT44_IS_ENDPOINT_DEPENDENT",
+               2: "NAT44_IS_STATIC_MAPPING_ONLY",
+               4: "NAT44_IS_CONNECTION_TRACKING",
+               8: "NAT44_IS_OUT2IN_DPO",
+       }
+       Nat44ConfigFlags_value = map[string]uint8{
+               "NAT44_IS_ENDPOINT_INDEPENDENT": 0,
+               "NAT44_IS_ENDPOINT_DEPENDENT":   1,
+               "NAT44_IS_STATIC_MAPPING_ONLY":  2,
+               "NAT44_IS_CONNECTION_TRACKING":  4,
+               "NAT44_IS_OUT2IN_DPO":           8,
        }
 )
 
-func (x NatConfigFlags) String() string {
-       s, ok := NatConfigFlags_name[uint8(x)]
+func (x Nat44ConfigFlags) String() string {
+       s, ok := Nat44ConfigFlags_name[uint8(x)]
        if ok {
                return s
        }
        str := func(n uint8) string {
-               s, ok := NatConfigFlags_name[uint8(n)]
+               s, ok := Nat44ConfigFlags_name[uint8(n)]
                if ok {
                        return s
                }
-               return "NatConfigFlags(" + strconv.Itoa(int(n)) + ")"
+               return "Nat44ConfigFlags(" + strconv.Itoa(int(n)) + ")"
        }
        for i := uint8(0); i <= 8; i++ {
                val := uint8(x)
@@ -101,45 +90,6 @@ func (x NatConfigFlags) String() string {
        return s
 }
 
-// NatLogLevel defines enum 'nat_log_level'.
-type NatLogLevel uint8
-
-const (
-       NAT_LOG_NONE    NatLogLevel = 0
-       NAT_LOG_ERROR   NatLogLevel = 1
-       NAT_LOG_WARNING NatLogLevel = 2
-       NAT_LOG_NOTICE  NatLogLevel = 3
-       NAT_LOG_INFO    NatLogLevel = 4
-       NAT_LOG_DEBUG   NatLogLevel = 5
-)
-
-var (
-       NatLogLevel_name = map[uint8]string{
-               0: "NAT_LOG_NONE",
-               1: "NAT_LOG_ERROR",
-               2: "NAT_LOG_WARNING",
-               3: "NAT_LOG_NOTICE",
-               4: "NAT_LOG_INFO",
-               5: "NAT_LOG_DEBUG",
-       }
-       NatLogLevel_value = map[string]uint8{
-               "NAT_LOG_NONE":    0,
-               "NAT_LOG_ERROR":   1,
-               "NAT_LOG_WARNING": 2,
-               "NAT_LOG_NOTICE":  3,
-               "NAT_LOG_INFO":    4,
-               "NAT_LOG_DEBUG":   5,
-       }
-)
-
-func (x NatLogLevel) String() string {
-       s, ok := NatLogLevel_name[uint8(x)]
-       if ok {
-               return s
-       }
-       return "NatLogLevel(" + strconv.Itoa(int(x)) + ")"
-}
-
 // Nat44LbAddrPort defines type 'nat44_lb_addr_port'.
 type Nat44LbAddrPort struct {
        Addr        ip_types.IP4Address `binapi:"ip4_address,name=addr" json:"addr,omitempty"`
@@ -150,16 +100,16 @@ type Nat44LbAddrPort struct {
 
 // Nat44AddDelAddressRange defines message 'nat44_add_del_address_range'.
 type Nat44AddDelAddressRange struct {
-       FirstIPAddress ip_types.IP4Address `binapi:"ip4_address,name=first_ip_address" json:"first_ip_address,omitempty"`
-       LastIPAddress  ip_types.IP4Address `binapi:"ip4_address,name=last_ip_address" json:"last_ip_address,omitempty"`
-       VrfID          uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
-       IsAdd          bool                `binapi:"bool,name=is_add" json:"is_add,omitempty"`
-       Flags          NatConfigFlags      `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
+       FirstIPAddress ip_types.IP4Address      `binapi:"ip4_address,name=first_ip_address" json:"first_ip_address,omitempty"`
+       LastIPAddress  ip_types.IP4Address      `binapi:"ip4_address,name=last_ip_address" json:"last_ip_address,omitempty"`
+       VrfID          uint32                   `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+       IsAdd          bool                     `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       Flags          nat_types.NatConfigFlags `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
 }
 
 func (m *Nat44AddDelAddressRange) Reset()               { *m = Nat44AddDelAddressRange{} }
 func (*Nat44AddDelAddressRange) GetMessageName() string { return "nat44_add_del_address_range" }
-func (*Nat44AddDelAddressRange) GetCrcString() string   { return "d4c7568c" }
+func (*Nat44AddDelAddressRange) GetCrcString() string   { return "6f2b8055" }
 func (*Nat44AddDelAddressRange) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -193,7 +143,7 @@ func (m *Nat44AddDelAddressRange) Unmarshal(b []byte) error {
        copy(m.LastIPAddress[:], buf.DecodeBytes(4))
        m.VrfID = buf.DecodeUint32()
        m.IsAdd = buf.DecodeBool()
-       m.Flags = NatConfigFlags(buf.DecodeUint8())
+       m.Flags = nat_types.NatConfigFlags(buf.DecodeUint8())
        return nil
 }
 
@@ -235,7 +185,7 @@ func (m *Nat44AddDelAddressRangeReply) Unmarshal(b []byte) error {
 // Nat44AddDelIdentityMapping defines message 'nat44_add_del_identity_mapping'.
 type Nat44AddDelIdentityMapping struct {
        IsAdd     bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
-       Flags     NatConfigFlags                 `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
+       Flags     nat_types.NatConfigFlags       `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
        IPAddress ip_types.IP4Address            `binapi:"ip4_address,name=ip_address" json:"ip_address,omitempty"`
        Protocol  uint8                          `binapi:"u8,name=protocol" json:"protocol,omitempty"`
        Port      uint16                         `binapi:"u16,name=port" json:"port,omitempty"`
@@ -246,7 +196,7 @@ type Nat44AddDelIdentityMapping struct {
 
 func (m *Nat44AddDelIdentityMapping) Reset()               { *m = Nat44AddDelIdentityMapping{} }
 func (*Nat44AddDelIdentityMapping) GetMessageName() string { return "nat44_add_del_identity_mapping" }
-func (*Nat44AddDelIdentityMapping) GetCrcString() string   { return "8e12743f" }
+func (*Nat44AddDelIdentityMapping) GetCrcString() string   { return "02faaa22" }
 func (*Nat44AddDelIdentityMapping) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -283,7 +233,7 @@ func (m *Nat44AddDelIdentityMapping) Marshal(b []byte) ([]byte, error) {
 func (m *Nat44AddDelIdentityMapping) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
        m.IsAdd = buf.DecodeBool()
-       m.Flags = NatConfigFlags(buf.DecodeUint8())
+       m.Flags = nat_types.NatConfigFlags(buf.DecodeUint8())
        copy(m.IPAddress[:], buf.DecodeBytes(4))
        m.Protocol = buf.DecodeUint8()
        m.Port = buf.DecodeUint16()
@@ -332,12 +282,12 @@ func (m *Nat44AddDelIdentityMappingReply) Unmarshal(b []byte) error {
 type Nat44AddDelInterfaceAddr struct {
        IsAdd     bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
-       Flags     NatConfigFlags                 `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
+       Flags     nat_types.NatConfigFlags       `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
 }
 
 func (m *Nat44AddDelInterfaceAddr) Reset()               { *m = Nat44AddDelInterfaceAddr{} }
 func (*Nat44AddDelInterfaceAddr) GetMessageName() string { return "nat44_add_del_interface_addr" }
-func (*Nat44AddDelInterfaceAddr) GetCrcString() string   { return "fc835325" }
+func (*Nat44AddDelInterfaceAddr) GetCrcString() string   { return "4aed50c0" }
 func (*Nat44AddDelInterfaceAddr) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -365,7 +315,7 @@ func (m *Nat44AddDelInterfaceAddr) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
        m.IsAdd = buf.DecodeBool()
        m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
-       m.Flags = NatConfigFlags(buf.DecodeUint8())
+       m.Flags = nat_types.NatConfigFlags(buf.DecodeUint8())
        return nil
 }
 
@@ -406,20 +356,20 @@ func (m *Nat44AddDelInterfaceAddrReply) Unmarshal(b []byte) error {
 
 // Nat44AddDelLbStaticMapping defines message 'nat44_add_del_lb_static_mapping'.
 type Nat44AddDelLbStaticMapping struct {
-       IsAdd        bool                `binapi:"bool,name=is_add" json:"is_add,omitempty"`
-       Flags        NatConfigFlags      `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
-       ExternalAddr ip_types.IP4Address `binapi:"ip4_address,name=external_addr" json:"external_addr,omitempty"`
-       ExternalPort uint16              `binapi:"u16,name=external_port" json:"external_port,omitempty"`
-       Protocol     uint8               `binapi:"u8,name=protocol" json:"protocol,omitempty"`
-       Affinity     uint32              `binapi:"u32,name=affinity" json:"affinity,omitempty"`
-       Tag          string              `binapi:"string[64],name=tag" json:"tag,omitempty"`
-       LocalNum     uint32              `binapi:"u32,name=local_num" json:"-"`
-       Locals       []Nat44LbAddrPort   `binapi:"nat44_lb_addr_port[local_num],name=locals" json:"locals,omitempty"`
+       IsAdd        bool                     `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       Flags        nat_types.NatConfigFlags `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
+       ExternalAddr ip_types.IP4Address      `binapi:"ip4_address,name=external_addr" json:"external_addr,omitempty"`
+       ExternalPort uint16                   `binapi:"u16,name=external_port" json:"external_port,omitempty"`
+       Protocol     uint8                    `binapi:"u8,name=protocol" json:"protocol,omitempty"`
+       Affinity     uint32                   `binapi:"u32,name=affinity" json:"affinity,omitempty"`
+       Tag          string                   `binapi:"string[64],name=tag" json:"tag,omitempty"`
+       LocalNum     uint32                   `binapi:"u32,name=local_num" json:"-"`
+       Locals       []Nat44LbAddrPort        `binapi:"nat44_lb_addr_port[local_num],name=locals" json:"locals,omitempty"`
 }
 
 func (m *Nat44AddDelLbStaticMapping) Reset()               { *m = Nat44AddDelLbStaticMapping{} }
 func (*Nat44AddDelLbStaticMapping) GetMessageName() string { return "nat44_add_del_lb_static_mapping" }
-func (*Nat44AddDelLbStaticMapping) GetCrcString() string   { return "53b24611" }
+func (*Nat44AddDelLbStaticMapping) GetCrcString() string   { return "4f68ee9d" }
 func (*Nat44AddDelLbStaticMapping) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -477,7 +427,7 @@ func (m *Nat44AddDelLbStaticMapping) Marshal(b []byte) ([]byte, error) {
 func (m *Nat44AddDelLbStaticMapping) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
        m.IsAdd = buf.DecodeBool()
-       m.Flags = NatConfigFlags(buf.DecodeUint8())
+       m.Flags = nat_types.NatConfigFlags(buf.DecodeUint8())
        copy(m.ExternalAddr[:], buf.DecodeBytes(4))
        m.ExternalPort = buf.DecodeUint16()
        m.Protocol = buf.DecodeUint8()
@@ -532,7 +482,7 @@ func (m *Nat44AddDelLbStaticMappingReply) Unmarshal(b []byte) error {
 // Nat44AddDelStaticMapping defines message 'nat44_add_del_static_mapping'.
 type Nat44AddDelStaticMapping struct {
        IsAdd             bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
-       Flags             NatConfigFlags                 `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
+       Flags             nat_types.NatConfigFlags       `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
        LocalIPAddress    ip_types.IP4Address            `binapi:"ip4_address,name=local_ip_address" json:"local_ip_address,omitempty"`
        ExternalIPAddress ip_types.IP4Address            `binapi:"ip4_address,name=external_ip_address" json:"external_ip_address,omitempty"`
        Protocol          uint8                          `binapi:"u8,name=protocol" json:"protocol,omitempty"`
@@ -545,7 +495,7 @@ type Nat44AddDelStaticMapping struct {
 
 func (m *Nat44AddDelStaticMapping) Reset()               { *m = Nat44AddDelStaticMapping{} }
 func (*Nat44AddDelStaticMapping) GetMessageName() string { return "nat44_add_del_static_mapping" }
-func (*Nat44AddDelStaticMapping) GetCrcString() string   { return "e165e83b" }
+func (*Nat44AddDelStaticMapping) GetCrcString() string   { return "5ae5f03e" }
 func (*Nat44AddDelStaticMapping) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -586,7 +536,7 @@ func (m *Nat44AddDelStaticMapping) Marshal(b []byte) ([]byte, error) {
 func (m *Nat44AddDelStaticMapping) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
        m.IsAdd = buf.DecodeBool()
-       m.Flags = NatConfigFlags(buf.DecodeUint8())
+       m.Flags = nat_types.NatConfigFlags(buf.DecodeUint8())
        copy(m.LocalIPAddress[:], buf.DecodeBytes(4))
        copy(m.ExternalIPAddress[:], buf.DecodeBytes(4))
        m.Protocol = buf.DecodeUint8()
@@ -633,16 +583,130 @@ func (m *Nat44AddDelStaticMappingReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// Nat44AddDelStaticMappingV2 defines message 'nat44_add_del_static_mapping_v2'.
+// InProgress: the message form may change in the future versions
+type Nat44AddDelStaticMappingV2 struct {
+       IsAdd             bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       MatchPool         bool                           `binapi:"bool,name=match_pool" json:"match_pool,omitempty"`
+       Flags             nat_types.NatConfigFlags       `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
+       PoolIPAddress     ip_types.IP4Address            `binapi:"ip4_address,name=pool_ip_address" json:"pool_ip_address,omitempty"`
+       LocalIPAddress    ip_types.IP4Address            `binapi:"ip4_address,name=local_ip_address" json:"local_ip_address,omitempty"`
+       ExternalIPAddress ip_types.IP4Address            `binapi:"ip4_address,name=external_ip_address" json:"external_ip_address,omitempty"`
+       Protocol          uint8                          `binapi:"u8,name=protocol" json:"protocol,omitempty"`
+       LocalPort         uint16                         `binapi:"u16,name=local_port" json:"local_port,omitempty"`
+       ExternalPort      uint16                         `binapi:"u16,name=external_port" json:"external_port,omitempty"`
+       ExternalSwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=external_sw_if_index" json:"external_sw_if_index,omitempty"`
+       VrfID             uint32                         `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+       Tag               string                         `binapi:"string[64],name=tag" json:"tag,omitempty"`
+}
+
+func (m *Nat44AddDelStaticMappingV2) Reset()               { *m = Nat44AddDelStaticMappingV2{} }
+func (*Nat44AddDelStaticMappingV2) GetMessageName() string { return "nat44_add_del_static_mapping_v2" }
+func (*Nat44AddDelStaticMappingV2) GetCrcString() string   { return "5e205f1a" }
+func (*Nat44AddDelStaticMappingV2) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44AddDelStaticMappingV2) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1     // m.IsAdd
+       size += 1     // m.MatchPool
+       size += 1     // m.Flags
+       size += 1 * 4 // m.PoolIPAddress
+       size += 1 * 4 // m.LocalIPAddress
+       size += 1 * 4 // m.ExternalIPAddress
+       size += 1     // m.Protocol
+       size += 2     // m.LocalPort
+       size += 2     // m.ExternalPort
+       size += 4     // m.ExternalSwIfIndex
+       size += 4     // m.VrfID
+       size += 64    // m.Tag
+       return size
+}
+func (m *Nat44AddDelStaticMappingV2) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsAdd)
+       buf.EncodeBool(m.MatchPool)
+       buf.EncodeUint8(uint8(m.Flags))
+       buf.EncodeBytes(m.PoolIPAddress[:], 4)
+       buf.EncodeBytes(m.LocalIPAddress[:], 4)
+       buf.EncodeBytes(m.ExternalIPAddress[:], 4)
+       buf.EncodeUint8(m.Protocol)
+       buf.EncodeUint16(m.LocalPort)
+       buf.EncodeUint16(m.ExternalPort)
+       buf.EncodeUint32(uint32(m.ExternalSwIfIndex))
+       buf.EncodeUint32(m.VrfID)
+       buf.EncodeString(m.Tag, 64)
+       return buf.Bytes(), nil
+}
+func (m *Nat44AddDelStaticMappingV2) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeBool()
+       m.MatchPool = buf.DecodeBool()
+       m.Flags = nat_types.NatConfigFlags(buf.DecodeUint8())
+       copy(m.PoolIPAddress[:], buf.DecodeBytes(4))
+       copy(m.LocalIPAddress[:], buf.DecodeBytes(4))
+       copy(m.ExternalIPAddress[:], buf.DecodeBytes(4))
+       m.Protocol = buf.DecodeUint8()
+       m.LocalPort = buf.DecodeUint16()
+       m.ExternalPort = buf.DecodeUint16()
+       m.ExternalSwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.VrfID = buf.DecodeUint32()
+       m.Tag = buf.DecodeString(64)
+       return nil
+}
+
+// Nat44AddDelStaticMappingV2Reply defines message 'nat44_add_del_static_mapping_v2_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44AddDelStaticMappingV2Reply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44AddDelStaticMappingV2Reply) Reset() { *m = Nat44AddDelStaticMappingV2Reply{} }
+func (*Nat44AddDelStaticMappingV2Reply) GetMessageName() string {
+       return "nat44_add_del_static_mapping_v2_reply"
+}
+func (*Nat44AddDelStaticMappingV2Reply) GetCrcString() string { return "e8d4e804" }
+func (*Nat44AddDelStaticMappingV2Reply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44AddDelStaticMappingV2Reply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44AddDelStaticMappingV2Reply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44AddDelStaticMappingV2Reply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
 // Nat44AddressDetails defines message 'nat44_address_details'.
 type Nat44AddressDetails struct {
-       IPAddress ip_types.IP4Address `binapi:"ip4_address,name=ip_address" json:"ip_address,omitempty"`
-       Flags     NatConfigFlags      `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
-       VrfID     uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+       IPAddress ip_types.IP4Address      `binapi:"ip4_address,name=ip_address" json:"ip_address,omitempty"`
+       Flags     nat_types.NatConfigFlags `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
+       VrfID     uint32                   `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
 }
 
 func (m *Nat44AddressDetails) Reset()               { *m = Nat44AddressDetails{} }
 func (*Nat44AddressDetails) GetMessageName() string { return "nat44_address_details" }
-func (*Nat44AddressDetails) GetCrcString() string   { return "45410ac4" }
+func (*Nat44AddressDetails) GetCrcString() string   { return "0d1beac1" }
 func (*Nat44AddressDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -669,7 +733,7 @@ func (m *Nat44AddressDetails) Marshal(b []byte) ([]byte, error) {
 func (m *Nat44AddressDetails) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
        copy(m.IPAddress[:], buf.DecodeBytes(4))
-       m.Flags = NatConfigFlags(buf.DecodeUint8())
+       m.Flags = nat_types.NatConfigFlags(buf.DecodeUint8())
        m.VrfID = buf.DecodeUint32()
        return nil
 }
@@ -703,18 +767,18 @@ func (m *Nat44AddressDump) Unmarshal(b []byte) error {
 
 // Nat44DelSession defines message 'nat44_del_session'.
 type Nat44DelSession struct {
-       Address        ip_types.IP4Address `binapi:"ip4_address,name=address" json:"address,omitempty"`
-       Protocol       uint8               `binapi:"u8,name=protocol" json:"protocol,omitempty"`
-       Port           uint16              `binapi:"u16,name=port" json:"port,omitempty"`
-       VrfID          uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
-       Flags          NatConfigFlags      `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
-       ExtHostAddress ip_types.IP4Address `binapi:"ip4_address,name=ext_host_address" json:"ext_host_address,omitempty"`
-       ExtHostPort    uint16              `binapi:"u16,name=ext_host_port" json:"ext_host_port,omitempty"`
+       Address        ip_types.IP4Address      `binapi:"ip4_address,name=address" json:"address,omitempty"`
+       Protocol       uint8                    `binapi:"u8,name=protocol" json:"protocol,omitempty"`
+       Port           uint16                   `binapi:"u16,name=port" json:"port,omitempty"`
+       VrfID          uint32                   `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+       Flags          nat_types.NatConfigFlags `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
+       ExtHostAddress ip_types.IP4Address      `binapi:"ip4_address,name=ext_host_address" json:"ext_host_address,omitempty"`
+       ExtHostPort    uint16                   `binapi:"u16,name=ext_host_port" json:"ext_host_port,omitempty"`
 }
 
 func (m *Nat44DelSession) Reset()               { *m = Nat44DelSession{} }
 func (*Nat44DelSession) GetMessageName() string { return "nat44_del_session" }
-func (*Nat44DelSession) GetCrcString() string   { return "4c49c387" }
+func (*Nat44DelSession) GetCrcString() string   { return "15a5bf8c" }
 func (*Nat44DelSession) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -752,7 +816,7 @@ func (m *Nat44DelSession) Unmarshal(b []byte) error {
        m.Protocol = buf.DecodeUint8()
        m.Port = buf.DecodeUint16()
        m.VrfID = buf.DecodeUint32()
-       m.Flags = NatConfigFlags(buf.DecodeUint8())
+       m.Flags = nat_types.NatConfigFlags(buf.DecodeUint8())
        copy(m.ExtHostAddress[:], buf.DecodeBytes(4))
        m.ExtHostPort = buf.DecodeUint16()
        return nil
@@ -861,7 +925,232 @@ func (m *Nat44DelUserReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// Nat44EdPluginEnableDisable defines message 'nat44_ed_plugin_enable_disable'.
+// InProgress: the message form may change in the future versions
+type Nat44EdPluginEnableDisable struct {
+       InsideVrf     uint32           `binapi:"u32,name=inside_vrf" json:"inside_vrf,omitempty"`
+       OutsideVrf    uint32           `binapi:"u32,name=outside_vrf" json:"outside_vrf,omitempty"`
+       Sessions      uint32           `binapi:"u32,name=sessions" json:"sessions,omitempty"`
+       SessionMemory uint32           `binapi:"u32,name=session_memory" json:"session_memory,omitempty"`
+       Enable        bool             `binapi:"bool,name=enable" json:"enable,omitempty"`
+       Flags         Nat44ConfigFlags `binapi:"nat44_config_flags,name=flags" json:"flags,omitempty"`
+}
+
+func (m *Nat44EdPluginEnableDisable) Reset()               { *m = Nat44EdPluginEnableDisable{} }
+func (*Nat44EdPluginEnableDisable) GetMessageName() string { return "nat44_ed_plugin_enable_disable" }
+func (*Nat44EdPluginEnableDisable) GetCrcString() string   { return "be17f8dd" }
+func (*Nat44EdPluginEnableDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EdPluginEnableDisable) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.InsideVrf
+       size += 4 // m.OutsideVrf
+       size += 4 // m.Sessions
+       size += 4 // m.SessionMemory
+       size += 1 // m.Enable
+       size += 1 // m.Flags
+       return size
+}
+func (m *Nat44EdPluginEnableDisable) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.InsideVrf)
+       buf.EncodeUint32(m.OutsideVrf)
+       buf.EncodeUint32(m.Sessions)
+       buf.EncodeUint32(m.SessionMemory)
+       buf.EncodeBool(m.Enable)
+       buf.EncodeUint8(uint8(m.Flags))
+       return buf.Bytes(), nil
+}
+func (m *Nat44EdPluginEnableDisable) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.InsideVrf = buf.DecodeUint32()
+       m.OutsideVrf = buf.DecodeUint32()
+       m.Sessions = buf.DecodeUint32()
+       m.SessionMemory = buf.DecodeUint32()
+       m.Enable = buf.DecodeBool()
+       m.Flags = Nat44ConfigFlags(buf.DecodeUint8())
+       return nil
+}
+
+// Nat44EdPluginEnableDisableReply defines message 'nat44_ed_plugin_enable_disable_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44EdPluginEnableDisableReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EdPluginEnableDisableReply) Reset() { *m = Nat44EdPluginEnableDisableReply{} }
+func (*Nat44EdPluginEnableDisableReply) GetMessageName() string {
+       return "nat44_ed_plugin_enable_disable_reply"
+}
+func (*Nat44EdPluginEnableDisableReply) GetCrcString() string { return "e8d4e804" }
+func (*Nat44EdPluginEnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EdPluginEnableDisableReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EdPluginEnableDisableReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EdPluginEnableDisableReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EdSetFqOptions defines message 'nat44_ed_set_fq_options'.
+// InProgress: the message form may change in the future versions
+type Nat44EdSetFqOptions struct {
+       FrameQueueNelts uint32 `binapi:"u32,name=frame_queue_nelts" json:"frame_queue_nelts,omitempty"`
+}
+
+func (m *Nat44EdSetFqOptions) Reset()               { *m = Nat44EdSetFqOptions{} }
+func (*Nat44EdSetFqOptions) GetMessageName() string { return "nat44_ed_set_fq_options" }
+func (*Nat44EdSetFqOptions) GetCrcString() string   { return "2399bd71" }
+func (*Nat44EdSetFqOptions) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EdSetFqOptions) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.FrameQueueNelts
+       return size
+}
+func (m *Nat44EdSetFqOptions) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.FrameQueueNelts)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EdSetFqOptions) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.FrameQueueNelts = buf.DecodeUint32()
+       return nil
+}
+
+// Nat44EdSetFqOptionsReply defines message 'nat44_ed_set_fq_options_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44EdSetFqOptionsReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EdSetFqOptionsReply) Reset()               { *m = Nat44EdSetFqOptionsReply{} }
+func (*Nat44EdSetFqOptionsReply) GetMessageName() string { return "nat44_ed_set_fq_options_reply" }
+func (*Nat44EdSetFqOptionsReply) GetCrcString() string   { return "e8d4e804" }
+func (*Nat44EdSetFqOptionsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EdSetFqOptionsReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EdSetFqOptionsReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EdSetFqOptionsReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EdShowFqOptions defines message 'nat44_ed_show_fq_options'.
+// InProgress: the message form may change in the future versions
+type Nat44EdShowFqOptions struct{}
+
+func (m *Nat44EdShowFqOptions) Reset()               { *m = Nat44EdShowFqOptions{} }
+func (*Nat44EdShowFqOptions) GetMessageName() string { return "nat44_ed_show_fq_options" }
+func (*Nat44EdShowFqOptions) GetCrcString() string   { return "51077d14" }
+func (*Nat44EdShowFqOptions) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EdShowFqOptions) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat44EdShowFqOptions) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EdShowFqOptions) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Nat44EdShowFqOptionsReply defines message 'nat44_ed_show_fq_options_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44EdShowFqOptionsReply struct {
+       Retval          int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       FrameQueueNelts uint32 `binapi:"u32,name=frame_queue_nelts" json:"frame_queue_nelts,omitempty"`
+}
+
+func (m *Nat44EdShowFqOptionsReply) Reset()               { *m = Nat44EdShowFqOptionsReply{} }
+func (*Nat44EdShowFqOptionsReply) GetMessageName() string { return "nat44_ed_show_fq_options_reply" }
+func (*Nat44EdShowFqOptionsReply) GetCrcString() string   { return "7213b545" }
+func (*Nat44EdShowFqOptionsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EdShowFqOptionsReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.FrameQueueNelts
+       return size
+}
+func (m *Nat44EdShowFqOptionsReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.FrameQueueNelts)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EdShowFqOptionsReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.FrameQueueNelts = buf.DecodeUint32()
+       return nil
+}
+
 // Nat44ForwardingEnableDisable defines message 'nat44_forwarding_enable_disable'.
+// Deprecated: the message will be removed in the future versions
 type Nat44ForwardingEnableDisable struct {
        Enable bool `binapi:"bool,name=enable" json:"enable,omitempty"`
 }
@@ -897,6 +1186,7 @@ func (m *Nat44ForwardingEnableDisable) Unmarshal(b []byte) error {
 }
 
 // Nat44ForwardingEnableDisableReply defines message 'nat44_forwarding_enable_disable_reply'.
+// Deprecated: the message will be removed in the future versions
 type Nat44ForwardingEnableDisableReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -932,6 +1222,7 @@ func (m *Nat44ForwardingEnableDisableReply) Unmarshal(b []byte) error {
 }
 
 // Nat44ForwardingIsEnabled defines message 'nat44_forwarding_is_enabled'.
+// Deprecated: the message will be removed in the future versions
 type Nat44ForwardingIsEnabled struct{}
 
 func (m *Nat44ForwardingIsEnabled) Reset()               { *m = Nat44ForwardingIsEnabled{} }
@@ -959,6 +1250,7 @@ func (m *Nat44ForwardingIsEnabled) Unmarshal(b []byte) error {
 }
 
 // Nat44ForwardingIsEnabledReply defines message 'nat44_forwarding_is_enabled_reply'.
+// Deprecated: the message will be removed in the future versions
 type Nat44ForwardingIsEnabledReply struct {
        Enabled bool `binapi:"bool,name=enabled" json:"enabled,omitempty"`
 }
@@ -995,7 +1287,7 @@ func (m *Nat44ForwardingIsEnabledReply) Unmarshal(b []byte) error {
 
 // Nat44IdentityMappingDetails defines message 'nat44_identity_mapping_details'.
 type Nat44IdentityMappingDetails struct {
-       Flags     NatConfigFlags                 `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
+       Flags     nat_types.NatConfigFlags       `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
        IPAddress ip_types.IP4Address            `binapi:"ip4_address,name=ip_address" json:"ip_address,omitempty"`
        Protocol  uint8                          `binapi:"u8,name=protocol" json:"protocol,omitempty"`
        Port      uint16                         `binapi:"u16,name=port" json:"port,omitempty"`
@@ -1006,7 +1298,7 @@ type Nat44IdentityMappingDetails struct {
 
 func (m *Nat44IdentityMappingDetails) Reset()               { *m = Nat44IdentityMappingDetails{} }
 func (*Nat44IdentityMappingDetails) GetMessageName() string { return "nat44_identity_mapping_details" }
-func (*Nat44IdentityMappingDetails) GetCrcString() string   { return "36d21351" }
+func (*Nat44IdentityMappingDetails) GetCrcString() string   { return "2a52a030" }
 func (*Nat44IdentityMappingDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1040,7 +1332,7 @@ func (m *Nat44IdentityMappingDetails) Marshal(b []byte) ([]byte, error) {
 }
 func (m *Nat44IdentityMappingDetails) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
-       m.Flags = NatConfigFlags(buf.DecodeUint8())
+       m.Flags = nat_types.NatConfigFlags(buf.DecodeUint8())
        copy(m.IPAddress[:], buf.DecodeBytes(4))
        m.Protocol = buf.DecodeUint8()
        m.Port = buf.DecodeUint16()
@@ -1080,7 +1372,7 @@ func (m *Nat44IdentityMappingDump) Unmarshal(b []byte) error {
 // Nat44InterfaceAddDelFeature defines message 'nat44_interface_add_del_feature'.
 type Nat44InterfaceAddDelFeature struct {
        IsAdd     bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
-       Flags     NatConfigFlags                 `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
+       Flags     nat_types.NatConfigFlags       `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
 }
 
@@ -1113,7 +1405,7 @@ func (m *Nat44InterfaceAddDelFeature) Marshal(b []byte) ([]byte, error) {
 func (m *Nat44InterfaceAddDelFeature) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
        m.IsAdd = buf.DecodeBool()
-       m.Flags = NatConfigFlags(buf.DecodeUint8())
+       m.Flags = nat_types.NatConfigFlags(buf.DecodeUint8())
        m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
        return nil
 }
@@ -1156,7 +1448,7 @@ func (m *Nat44InterfaceAddDelFeatureReply) Unmarshal(b []byte) error {
 // Nat44InterfaceAddDelOutputFeature defines message 'nat44_interface_add_del_output_feature'.
 type Nat44InterfaceAddDelOutputFeature struct {
        IsAdd     bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
-       Flags     NatConfigFlags                 `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
+       Flags     nat_types.NatConfigFlags       `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
 }
 
@@ -1191,7 +1483,7 @@ func (m *Nat44InterfaceAddDelOutputFeature) Marshal(b []byte) ([]byte, error) {
 func (m *Nat44InterfaceAddDelOutputFeature) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
        m.IsAdd = buf.DecodeBool()
-       m.Flags = NatConfigFlags(buf.DecodeUint8())
+       m.Flags = nat_types.NatConfigFlags(buf.DecodeUint8())
        m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
        return nil
 }
@@ -1236,12 +1528,12 @@ func (m *Nat44InterfaceAddDelOutputFeatureReply) Unmarshal(b []byte) error {
 // Nat44InterfaceAddrDetails defines message 'nat44_interface_addr_details'.
 type Nat44InterfaceAddrDetails struct {
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
-       Flags     NatConfigFlags                 `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
+       Flags     nat_types.NatConfigFlags       `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
 }
 
 func (m *Nat44InterfaceAddrDetails) Reset()               { *m = Nat44InterfaceAddrDetails{} }
 func (*Nat44InterfaceAddrDetails) GetMessageName() string { return "nat44_interface_addr_details" }
-func (*Nat44InterfaceAddrDetails) GetCrcString() string   { return "3e687514" }
+func (*Nat44InterfaceAddrDetails) GetCrcString() string   { return "e4aca9ca" }
 func (*Nat44InterfaceAddrDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1266,7 +1558,7 @@ func (m *Nat44InterfaceAddrDetails) Marshal(b []byte) ([]byte, error) {
 func (m *Nat44InterfaceAddrDetails) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
        m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
-       m.Flags = NatConfigFlags(buf.DecodeUint8())
+       m.Flags = nat_types.NatConfigFlags(buf.DecodeUint8())
        return nil
 }
 
@@ -1299,7 +1591,7 @@ func (m *Nat44InterfaceAddrDump) Unmarshal(b []byte) error {
 
 // Nat44InterfaceDetails defines message 'nat44_interface_details'.
 type Nat44InterfaceDetails struct {
-       Flags     NatConfigFlags                 `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
+       Flags     nat_types.NatConfigFlags       `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
 }
 
@@ -1329,7 +1621,7 @@ func (m *Nat44InterfaceDetails) Marshal(b []byte) ([]byte, error) {
 }
 func (m *Nat44InterfaceDetails) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
-       m.Flags = NatConfigFlags(buf.DecodeUint8())
+       m.Flags = nat_types.NatConfigFlags(buf.DecodeUint8())
        m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
        return nil
 }
@@ -1363,7 +1655,7 @@ func (m *Nat44InterfaceDump) Unmarshal(b []byte) error {
 
 // Nat44InterfaceOutputFeatureDetails defines message 'nat44_interface_output_feature_details'.
 type Nat44InterfaceOutputFeatureDetails struct {
-       Flags     NatConfigFlags                 `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
+       Flags     nat_types.NatConfigFlags       `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
 }
 
@@ -1395,7 +1687,7 @@ func (m *Nat44InterfaceOutputFeatureDetails) Marshal(b []byte) ([]byte, error) {
 }
 func (m *Nat44InterfaceOutputFeatureDetails) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
-       m.Flags = NatConfigFlags(buf.DecodeUint8())
+       m.Flags = nat_types.NatConfigFlags(buf.DecodeUint8())
        m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
        return nil
 }
@@ -1442,7 +1734,7 @@ func (m *Nat44LbStaticMappingAddDelLocal) Reset() { *m = Nat44LbStaticMappingAdd
 func (*Nat44LbStaticMappingAddDelLocal) GetMessageName() string {
        return "nat44_lb_static_mapping_add_del_local"
 }
-func (*Nat44LbStaticMappingAddDelLocal) GetCrcString() string { return "2910a151" }
+func (*Nat44LbStaticMappingAddDelLocal) GetCrcString() string { return "7ca47547" }
 func (*Nat44LbStaticMappingAddDelLocal) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1526,19 +1818,19 @@ func (m *Nat44LbStaticMappingAddDelLocalReply) Unmarshal(b []byte) error {
 
 // Nat44LbStaticMappingDetails defines message 'nat44_lb_static_mapping_details'.
 type Nat44LbStaticMappingDetails struct {
-       ExternalAddr ip_types.IP4Address `binapi:"ip4_address,name=external_addr" json:"external_addr,omitempty"`
-       ExternalPort uint16              `binapi:"u16,name=external_port" json:"external_port,omitempty"`
-       Protocol     uint8               `binapi:"u8,name=protocol" json:"protocol,omitempty"`
-       Flags        NatConfigFlags      `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
-       Affinity     uint32              `binapi:"u32,name=affinity" json:"affinity,omitempty"`
-       Tag          string              `binapi:"string[64],name=tag" json:"tag,omitempty"`
-       LocalNum     uint32              `binapi:"u32,name=local_num" json:"-"`
-       Locals       []Nat44LbAddrPort   `binapi:"nat44_lb_addr_port[local_num],name=locals" json:"locals,omitempty"`
+       ExternalAddr ip_types.IP4Address      `binapi:"ip4_address,name=external_addr" json:"external_addr,omitempty"`
+       ExternalPort uint16                   `binapi:"u16,name=external_port" json:"external_port,omitempty"`
+       Protocol     uint8                    `binapi:"u8,name=protocol" json:"protocol,omitempty"`
+       Flags        nat_types.NatConfigFlags `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
+       Affinity     uint32                   `binapi:"u32,name=affinity" json:"affinity,omitempty"`
+       Tag          string                   `binapi:"string[64],name=tag" json:"tag,omitempty"`
+       LocalNum     uint32                   `binapi:"u32,name=local_num" json:"-"`
+       Locals       []Nat44LbAddrPort        `binapi:"nat44_lb_addr_port[local_num],name=locals" json:"locals,omitempty"`
 }
 
 func (m *Nat44LbStaticMappingDetails) Reset()               { *m = Nat44LbStaticMappingDetails{} }
 func (*Nat44LbStaticMappingDetails) GetMessageName() string { return "nat44_lb_static_mapping_details" }
-func (*Nat44LbStaticMappingDetails) GetCrcString() string   { return "2267b9e8" }
+func (*Nat44LbStaticMappingDetails) GetCrcString() string   { return "ed5ce876" }
 func (*Nat44LbStaticMappingDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1596,7 +1888,7 @@ func (m *Nat44LbStaticMappingDetails) Unmarshal(b []byte) error {
        copy(m.ExternalAddr[:], buf.DecodeBytes(4))
        m.ExternalPort = buf.DecodeUint16()
        m.Protocol = buf.DecodeUint8()
-       m.Flags = NatConfigFlags(buf.DecodeUint8())
+       m.Flags = nat_types.NatConfigFlags(buf.DecodeUint8())
        m.Affinity = buf.DecodeUint32()
        m.Tag = buf.DecodeString(64)
        m.LocalNum = buf.DecodeUint32()
@@ -1637,34 +1929,138 @@ func (m *Nat44LbStaticMappingDump) Unmarshal(b []byte) error {
        return nil
 }
 
-// Nat44SessionCleanup defines message 'nat44_session_cleanup'.
-type Nat44SessionCleanup struct{}
-
-func (m *Nat44SessionCleanup) Reset()               { *m = Nat44SessionCleanup{} }
-func (*Nat44SessionCleanup) GetMessageName() string { return "nat44_session_cleanup" }
-func (*Nat44SessionCleanup) GetCrcString() string   { return "51077d14" }
-func (*Nat44SessionCleanup) GetMessageType() api.MessageType {
+// Nat44PluginEnableDisable defines message 'nat44_plugin_enable_disable'.
+// Deprecated: the message will be removed in the future versions
+type Nat44PluginEnableDisable struct {
+       InsideVrf     uint32           `binapi:"u32,name=inside_vrf" json:"inside_vrf,omitempty"`
+       OutsideVrf    uint32           `binapi:"u32,name=outside_vrf" json:"outside_vrf,omitempty"`
+       Users         uint32           `binapi:"u32,name=users" json:"users,omitempty"`
+       UserMemory    uint32           `binapi:"u32,name=user_memory" json:"user_memory,omitempty"`
+       Sessions      uint32           `binapi:"u32,name=sessions" json:"sessions,omitempty"`
+       SessionMemory uint32           `binapi:"u32,name=session_memory" json:"session_memory,omitempty"`
+       UserSessions  uint32           `binapi:"u32,name=user_sessions" json:"user_sessions,omitempty"`
+       Enable        bool             `binapi:"bool,name=enable" json:"enable,omitempty"`
+       Flags         Nat44ConfigFlags `binapi:"nat44_config_flags,name=flags" json:"flags,omitempty"`
+}
+
+func (m *Nat44PluginEnableDisable) Reset()               { *m = Nat44PluginEnableDisable{} }
+func (*Nat44PluginEnableDisable) GetMessageName() string { return "nat44_plugin_enable_disable" }
+func (*Nat44PluginEnableDisable) GetCrcString() string   { return "dea0d501" }
+func (*Nat44PluginEnableDisable) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 
-func (m *Nat44SessionCleanup) Size() (size int) {
+func (m *Nat44PluginEnableDisable) Size() (size int) {
        if m == nil {
                return 0
        }
+       size += 4 // m.InsideVrf
+       size += 4 // m.OutsideVrf
+       size += 4 // m.Users
+       size += 4 // m.UserMemory
+       size += 4 // m.Sessions
+       size += 4 // m.SessionMemory
+       size += 4 // m.UserSessions
+       size += 1 // m.Enable
+       size += 1 // m.Flags
        return size
 }
-func (m *Nat44SessionCleanup) Marshal(b []byte) ([]byte, error) {
+func (m *Nat44PluginEnableDisable) Marshal(b []byte) ([]byte, error) {
        if b == nil {
                b = make([]byte, m.Size())
        }
        buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.InsideVrf)
+       buf.EncodeUint32(m.OutsideVrf)
+       buf.EncodeUint32(m.Users)
+       buf.EncodeUint32(m.UserMemory)
+       buf.EncodeUint32(m.Sessions)
+       buf.EncodeUint32(m.SessionMemory)
+       buf.EncodeUint32(m.UserSessions)
+       buf.EncodeBool(m.Enable)
+       buf.EncodeUint8(uint8(m.Flags))
        return buf.Bytes(), nil
 }
-func (m *Nat44SessionCleanup) Unmarshal(b []byte) error {
+func (m *Nat44PluginEnableDisable) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.InsideVrf = buf.DecodeUint32()
+       m.OutsideVrf = buf.DecodeUint32()
+       m.Users = buf.DecodeUint32()
+       m.UserMemory = buf.DecodeUint32()
+       m.Sessions = buf.DecodeUint32()
+       m.SessionMemory = buf.DecodeUint32()
+       m.UserSessions = buf.DecodeUint32()
+       m.Enable = buf.DecodeBool()
+       m.Flags = Nat44ConfigFlags(buf.DecodeUint8())
+       return nil
+}
+
+// Nat44PluginEnableDisableReply defines message 'nat44_plugin_enable_disable_reply'.
+// Deprecated: the message will be removed in the future versions
+type Nat44PluginEnableDisableReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44PluginEnableDisableReply) Reset() { *m = Nat44PluginEnableDisableReply{} }
+func (*Nat44PluginEnableDisableReply) GetMessageName() string {
+       return "nat44_plugin_enable_disable_reply"
+}
+func (*Nat44PluginEnableDisableReply) GetCrcString() string { return "e8d4e804" }
+func (*Nat44PluginEnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44PluginEnableDisableReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44PluginEnableDisableReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44PluginEnableDisableReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44SessionCleanup defines message 'nat44_session_cleanup'.
+// Deprecated: the message will be removed in the future versions
+type Nat44SessionCleanup struct{}
+
+func (m *Nat44SessionCleanup) Reset()               { *m = Nat44SessionCleanup{} }
+func (*Nat44SessionCleanup) GetMessageName() string { return "nat44_session_cleanup" }
+func (*Nat44SessionCleanup) GetCrcString() string   { return "51077d14" }
+func (*Nat44SessionCleanup) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44SessionCleanup) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat44SessionCleanup) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat44SessionCleanup) Unmarshal(b []byte) error {
        return nil
 }
 
 // Nat44SessionCleanupReply defines message 'nat44_session_cleanup_reply'.
+// Deprecated: the message will be removed in the future versions
 type Nat44SessionCleanupReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -1767,9 +2163,128 @@ func (m *Nat44SetSessionLimitReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// Nat44ShowRunningConfig defines message 'nat44_show_running_config'.
+// InProgress: the message form may change in the future versions
+type Nat44ShowRunningConfig struct{}
+
+func (m *Nat44ShowRunningConfig) Reset()               { *m = Nat44ShowRunningConfig{} }
+func (*Nat44ShowRunningConfig) GetMessageName() string { return "nat44_show_running_config" }
+func (*Nat44ShowRunningConfig) GetCrcString() string   { return "51077d14" }
+func (*Nat44ShowRunningConfig) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44ShowRunningConfig) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat44ShowRunningConfig) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat44ShowRunningConfig) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Nat44ShowRunningConfigReply defines message 'nat44_show_running_config_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44ShowRunningConfigReply struct {
+       Retval              int32                 `binapi:"i32,name=retval" json:"retval,omitempty"`
+       InsideVrf           uint32                `binapi:"u32,name=inside_vrf" json:"inside_vrf,omitempty"`
+       OutsideVrf          uint32                `binapi:"u32,name=outside_vrf" json:"outside_vrf,omitempty"`
+       Users               uint32                `binapi:"u32,name=users" json:"users,omitempty"`
+       Sessions            uint32                `binapi:"u32,name=sessions" json:"sessions,omitempty"`
+       UserSessions        uint32                `binapi:"u32,name=user_sessions" json:"user_sessions,omitempty"`
+       UserBuckets         uint32                `binapi:"u32,name=user_buckets" json:"user_buckets,omitempty"`
+       TranslationBuckets  uint32                `binapi:"u32,name=translation_buckets" json:"translation_buckets,omitempty"`
+       ForwardingEnabled   bool                  `binapi:"bool,name=forwarding_enabled" json:"forwarding_enabled,omitempty"`
+       IpfixLoggingEnabled bool                  `binapi:"bool,name=ipfix_logging_enabled" json:"ipfix_logging_enabled,omitempty"`
+       Timeouts            nat_types.NatTimeouts `binapi:"nat_timeouts,name=timeouts" json:"timeouts,omitempty"`
+       LogLevel            nat_types.NatLogLevel `binapi:"nat_log_level,name=log_level" json:"log_level,omitempty"`
+       Flags               Nat44ConfigFlags      `binapi:"nat44_config_flags,name=flags" json:"flags,omitempty"`
+}
+
+func (m *Nat44ShowRunningConfigReply) Reset()               { *m = Nat44ShowRunningConfigReply{} }
+func (*Nat44ShowRunningConfigReply) GetMessageName() string { return "nat44_show_running_config_reply" }
+func (*Nat44ShowRunningConfigReply) GetCrcString() string   { return "93d8e267" }
+func (*Nat44ShowRunningConfigReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44ShowRunningConfigReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.InsideVrf
+       size += 4 // m.OutsideVrf
+       size += 4 // m.Users
+       size += 4 // m.Sessions
+       size += 4 // m.UserSessions
+       size += 4 // m.UserBuckets
+       size += 4 // m.TranslationBuckets
+       size += 1 // m.ForwardingEnabled
+       size += 1 // m.IpfixLoggingEnabled
+       size += 4 // m.Timeouts.UDP
+       size += 4 // m.Timeouts.TCPEstablished
+       size += 4 // m.Timeouts.TCPTransitory
+       size += 4 // m.Timeouts.ICMP
+       size += 1 // m.LogLevel
+       size += 1 // m.Flags
+       return size
+}
+func (m *Nat44ShowRunningConfigReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.InsideVrf)
+       buf.EncodeUint32(m.OutsideVrf)
+       buf.EncodeUint32(m.Users)
+       buf.EncodeUint32(m.Sessions)
+       buf.EncodeUint32(m.UserSessions)
+       buf.EncodeUint32(m.UserBuckets)
+       buf.EncodeUint32(m.TranslationBuckets)
+       buf.EncodeBool(m.ForwardingEnabled)
+       buf.EncodeBool(m.IpfixLoggingEnabled)
+       buf.EncodeUint32(m.Timeouts.UDP)
+       buf.EncodeUint32(m.Timeouts.TCPEstablished)
+       buf.EncodeUint32(m.Timeouts.TCPTransitory)
+       buf.EncodeUint32(m.Timeouts.ICMP)
+       buf.EncodeUint8(uint8(m.LogLevel))
+       buf.EncodeUint8(uint8(m.Flags))
+       return buf.Bytes(), nil
+}
+func (m *Nat44ShowRunningConfigReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.InsideVrf = buf.DecodeUint32()
+       m.OutsideVrf = buf.DecodeUint32()
+       m.Users = buf.DecodeUint32()
+       m.Sessions = buf.DecodeUint32()
+       m.UserSessions = buf.DecodeUint32()
+       m.UserBuckets = buf.DecodeUint32()
+       m.TranslationBuckets = buf.DecodeUint32()
+       m.ForwardingEnabled = buf.DecodeBool()
+       m.IpfixLoggingEnabled = buf.DecodeBool()
+       m.Timeouts.UDP = buf.DecodeUint32()
+       m.Timeouts.TCPEstablished = buf.DecodeUint32()
+       m.Timeouts.TCPTransitory = buf.DecodeUint32()
+       m.Timeouts.ICMP = buf.DecodeUint32()
+       m.LogLevel = nat_types.NatLogLevel(buf.DecodeUint8())
+       m.Flags = Nat44ConfigFlags(buf.DecodeUint8())
+       return nil
+}
+
 // Nat44StaticMappingDetails defines message 'nat44_static_mapping_details'.
 type Nat44StaticMappingDetails struct {
-       Flags             NatConfigFlags                 `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
+       Flags             nat_types.NatConfigFlags       `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
        LocalIPAddress    ip_types.IP4Address            `binapi:"ip4_address,name=local_ip_address" json:"local_ip_address,omitempty"`
        ExternalIPAddress ip_types.IP4Address            `binapi:"ip4_address,name=external_ip_address" json:"external_ip_address,omitempty"`
        Protocol          uint8                          `binapi:"u8,name=protocol" json:"protocol,omitempty"`
@@ -1782,7 +2297,7 @@ type Nat44StaticMappingDetails struct {
 
 func (m *Nat44StaticMappingDetails) Reset()               { *m = Nat44StaticMappingDetails{} }
 func (*Nat44StaticMappingDetails) GetMessageName() string { return "nat44_static_mapping_details" }
-func (*Nat44StaticMappingDetails) GetCrcString() string   { return "1a433ef7" }
+func (*Nat44StaticMappingDetails) GetCrcString() string   { return "06cb40b2" }
 func (*Nat44StaticMappingDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1820,7 +2335,7 @@ func (m *Nat44StaticMappingDetails) Marshal(b []byte) ([]byte, error) {
 }
 func (m *Nat44StaticMappingDetails) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
-       m.Flags = NatConfigFlags(buf.DecodeUint8())
+       m.Flags = nat_types.NatConfigFlags(buf.DecodeUint8())
        copy(m.LocalIPAddress[:], buf.DecodeBytes(4))
        copy(m.ExternalIPAddress[:], buf.DecodeBytes(4))
        m.Protocol = buf.DecodeUint8()
@@ -1837,1917 +2352,285 @@ type Nat44StaticMappingDump struct{}
 
 func (m *Nat44StaticMappingDump) Reset()               { *m = Nat44StaticMappingDump{} }
 func (*Nat44StaticMappingDump) GetMessageName() string { return "nat44_static_mapping_dump" }
-func (*Nat44StaticMappingDump) GetCrcString() string   { return "51077d14" }
-func (*Nat44StaticMappingDump) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *Nat44StaticMappingDump) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       return size
-}
-func (m *Nat44StaticMappingDump) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       return buf.Bytes(), nil
-}
-func (m *Nat44StaticMappingDump) Unmarshal(b []byte) error {
-       return nil
-}
-
-// Nat44UserDetails defines message 'nat44_user_details'.
-type Nat44UserDetails struct {
-       VrfID           uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
-       IPAddress       ip_types.IP4Address `binapi:"ip4_address,name=ip_address" json:"ip_address,omitempty"`
-       Nsessions       uint32              `binapi:"u32,name=nsessions" json:"nsessions,omitempty"`
-       Nstaticsessions uint32              `binapi:"u32,name=nstaticsessions" json:"nstaticsessions,omitempty"`
-}
-
-func (m *Nat44UserDetails) Reset()               { *m = Nat44UserDetails{} }
-func (*Nat44UserDetails) GetMessageName() string { return "nat44_user_details" }
-func (*Nat44UserDetails) GetCrcString() string   { return "355896c2" }
-func (*Nat44UserDetails) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *Nat44UserDetails) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 4     // m.VrfID
-       size += 1 * 4 // m.IPAddress
-       size += 4     // m.Nsessions
-       size += 4     // m.Nstaticsessions
-       return size
-}
-func (m *Nat44UserDetails) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeUint32(m.VrfID)
-       buf.EncodeBytes(m.IPAddress[:], 4)
-       buf.EncodeUint32(m.Nsessions)
-       buf.EncodeUint32(m.Nstaticsessions)
-       return buf.Bytes(), nil
-}
-func (m *Nat44UserDetails) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.VrfID = buf.DecodeUint32()
-       copy(m.IPAddress[:], buf.DecodeBytes(4))
-       m.Nsessions = buf.DecodeUint32()
-       m.Nstaticsessions = buf.DecodeUint32()
-       return nil
-}
-
-// Nat44UserDump defines message 'nat44_user_dump'.
-type Nat44UserDump struct{}
-
-func (m *Nat44UserDump) Reset()               { *m = Nat44UserDump{} }
-func (*Nat44UserDump) GetMessageName() string { return "nat44_user_dump" }
-func (*Nat44UserDump) GetCrcString() string   { return "51077d14" }
-func (*Nat44UserDump) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *Nat44UserDump) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       return size
-}
-func (m *Nat44UserDump) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       return buf.Bytes(), nil
-}
-func (m *Nat44UserDump) Unmarshal(b []byte) error {
-       return nil
-}
-
-// Nat44UserSessionDetails defines message 'nat44_user_session_details'.
-type Nat44UserSessionDetails struct {
-       OutsideIPAddress  ip_types.IP4Address `binapi:"ip4_address,name=outside_ip_address" json:"outside_ip_address,omitempty"`
-       OutsidePort       uint16              `binapi:"u16,name=outside_port" json:"outside_port,omitempty"`
-       InsideIPAddress   ip_types.IP4Address `binapi:"ip4_address,name=inside_ip_address" json:"inside_ip_address,omitempty"`
-       InsidePort        uint16              `binapi:"u16,name=inside_port" json:"inside_port,omitempty"`
-       Protocol          uint16              `binapi:"u16,name=protocol" json:"protocol,omitempty"`
-       Flags             NatConfigFlags      `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
-       LastHeard         uint64              `binapi:"u64,name=last_heard" json:"last_heard,omitempty"`
-       TotalBytes        uint64              `binapi:"u64,name=total_bytes" json:"total_bytes,omitempty"`
-       TotalPkts         uint32              `binapi:"u32,name=total_pkts" json:"total_pkts,omitempty"`
-       ExtHostAddress    ip_types.IP4Address `binapi:"ip4_address,name=ext_host_address" json:"ext_host_address,omitempty"`
-       ExtHostPort       uint16              `binapi:"u16,name=ext_host_port" json:"ext_host_port,omitempty"`
-       ExtHostNatAddress ip_types.IP4Address `binapi:"ip4_address,name=ext_host_nat_address" json:"ext_host_nat_address,omitempty"`
-       ExtHostNatPort    uint16              `binapi:"u16,name=ext_host_nat_port" json:"ext_host_nat_port,omitempty"`
-}
-
-func (m *Nat44UserSessionDetails) Reset()               { *m = Nat44UserSessionDetails{} }
-func (*Nat44UserSessionDetails) GetMessageName() string { return "nat44_user_session_details" }
-func (*Nat44UserSessionDetails) GetCrcString() string   { return "1965fd69" }
-func (*Nat44UserSessionDetails) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *Nat44UserSessionDetails) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1 * 4 // m.OutsideIPAddress
-       size += 2     // m.OutsidePort
-       size += 1 * 4 // m.InsideIPAddress
-       size += 2     // m.InsidePort
-       size += 2     // m.Protocol
-       size += 1     // m.Flags
-       size += 8     // m.LastHeard
-       size += 8     // m.TotalBytes
-       size += 4     // m.TotalPkts
-       size += 1 * 4 // m.ExtHostAddress
-       size += 2     // m.ExtHostPort
-       size += 1 * 4 // m.ExtHostNatAddress
-       size += 2     // m.ExtHostNatPort
-       return size
-}
-func (m *Nat44UserSessionDetails) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeBytes(m.OutsideIPAddress[:], 4)
-       buf.EncodeUint16(m.OutsidePort)
-       buf.EncodeBytes(m.InsideIPAddress[:], 4)
-       buf.EncodeUint16(m.InsidePort)
-       buf.EncodeUint16(m.Protocol)
-       buf.EncodeUint8(uint8(m.Flags))
-       buf.EncodeUint64(m.LastHeard)
-       buf.EncodeUint64(m.TotalBytes)
-       buf.EncodeUint32(m.TotalPkts)
-       buf.EncodeBytes(m.ExtHostAddress[:], 4)
-       buf.EncodeUint16(m.ExtHostPort)
-       buf.EncodeBytes(m.ExtHostNatAddress[:], 4)
-       buf.EncodeUint16(m.ExtHostNatPort)
-       return buf.Bytes(), nil
-}
-func (m *Nat44UserSessionDetails) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       copy(m.OutsideIPAddress[:], buf.DecodeBytes(4))
-       m.OutsidePort = buf.DecodeUint16()
-       copy(m.InsideIPAddress[:], buf.DecodeBytes(4))
-       m.InsidePort = buf.DecodeUint16()
-       m.Protocol = buf.DecodeUint16()
-       m.Flags = NatConfigFlags(buf.DecodeUint8())
-       m.LastHeard = buf.DecodeUint64()
-       m.TotalBytes = buf.DecodeUint64()
-       m.TotalPkts = buf.DecodeUint32()
-       copy(m.ExtHostAddress[:], buf.DecodeBytes(4))
-       m.ExtHostPort = buf.DecodeUint16()
-       copy(m.ExtHostNatAddress[:], buf.DecodeBytes(4))
-       m.ExtHostNatPort = buf.DecodeUint16()
-       return nil
-}
-
-// Nat44UserSessionDump defines message 'nat44_user_session_dump'.
-type Nat44UserSessionDump struct {
-       IPAddress ip_types.IP4Address `binapi:"ip4_address,name=ip_address" json:"ip_address,omitempty"`
-       VrfID     uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
-}
-
-func (m *Nat44UserSessionDump) Reset()               { *m = Nat44UserSessionDump{} }
-func (*Nat44UserSessionDump) GetMessageName() string { return "nat44_user_session_dump" }
-func (*Nat44UserSessionDump) GetCrcString() string   { return "e1899c98" }
-func (*Nat44UserSessionDump) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *Nat44UserSessionDump) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1 * 4 // m.IPAddress
-       size += 4     // m.VrfID
-       return size
-}
-func (m *Nat44UserSessionDump) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeBytes(m.IPAddress[:], 4)
-       buf.EncodeUint32(m.VrfID)
-       return buf.Bytes(), nil
-}
-func (m *Nat44UserSessionDump) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       copy(m.IPAddress[:], buf.DecodeBytes(4))
-       m.VrfID = buf.DecodeUint32()
-       return nil
-}
-
-// Nat64AddDelInterface defines message 'nat64_add_del_interface'.
-type Nat64AddDelInterface struct {
-       IsAdd     bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
-       Flags     NatConfigFlags                 `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
-       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
-}
-
-func (m *Nat64AddDelInterface) Reset()               { *m = Nat64AddDelInterface{} }
-func (*Nat64AddDelInterface) GetMessageName() string { return "nat64_add_del_interface" }
-func (*Nat64AddDelInterface) GetCrcString() string   { return "f3699b83" }
-func (*Nat64AddDelInterface) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *Nat64AddDelInterface) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1 // m.IsAdd
-       size += 1 // m.Flags
-       size += 4 // m.SwIfIndex
-       return size
-}
-func (m *Nat64AddDelInterface) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeBool(m.IsAdd)
-       buf.EncodeUint8(uint8(m.Flags))
-       buf.EncodeUint32(uint32(m.SwIfIndex))
-       return buf.Bytes(), nil
-}
-func (m *Nat64AddDelInterface) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.IsAdd = buf.DecodeBool()
-       m.Flags = NatConfigFlags(buf.DecodeUint8())
-       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
-       return nil
-}
-
-// Nat64AddDelInterfaceAddr defines message 'nat64_add_del_interface_addr'.
-type Nat64AddDelInterfaceAddr struct {
-       IsAdd     bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
-       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
-}
-
-func (m *Nat64AddDelInterfaceAddr) Reset()               { *m = Nat64AddDelInterfaceAddr{} }
-func (*Nat64AddDelInterfaceAddr) GetMessageName() string { return "nat64_add_del_interface_addr" }
-func (*Nat64AddDelInterfaceAddr) GetCrcString() string   { return "47d6e753" }
-func (*Nat64AddDelInterfaceAddr) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *Nat64AddDelInterfaceAddr) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1 // m.IsAdd
-       size += 4 // m.SwIfIndex
-       return size
-}
-func (m *Nat64AddDelInterfaceAddr) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeBool(m.IsAdd)
-       buf.EncodeUint32(uint32(m.SwIfIndex))
-       return buf.Bytes(), nil
-}
-func (m *Nat64AddDelInterfaceAddr) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.IsAdd = buf.DecodeBool()
-       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
-       return nil
-}
-
-// Nat64AddDelInterfaceAddrReply defines message 'nat64_add_del_interface_addr_reply'.
-type Nat64AddDelInterfaceAddrReply struct {
-       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
-}
-
-func (m *Nat64AddDelInterfaceAddrReply) Reset() { *m = Nat64AddDelInterfaceAddrReply{} }
-func (*Nat64AddDelInterfaceAddrReply) GetMessageName() string {
-       return "nat64_add_del_interface_addr_reply"
-}
-func (*Nat64AddDelInterfaceAddrReply) GetCrcString() string { return "e8d4e804" }
-func (*Nat64AddDelInterfaceAddrReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *Nat64AddDelInterfaceAddrReply) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 4 // m.Retval
-       return size
-}
-func (m *Nat64AddDelInterfaceAddrReply) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeInt32(m.Retval)
-       return buf.Bytes(), nil
-}
-func (m *Nat64AddDelInterfaceAddrReply) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.Retval = buf.DecodeInt32()
-       return nil
-}
-
-// Nat64AddDelInterfaceReply defines message 'nat64_add_del_interface_reply'.
-type Nat64AddDelInterfaceReply struct {
-       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
-}
-
-func (m *Nat64AddDelInterfaceReply) Reset()               { *m = Nat64AddDelInterfaceReply{} }
-func (*Nat64AddDelInterfaceReply) GetMessageName() string { return "nat64_add_del_interface_reply" }
-func (*Nat64AddDelInterfaceReply) GetCrcString() string   { return "e8d4e804" }
-func (*Nat64AddDelInterfaceReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *Nat64AddDelInterfaceReply) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 4 // m.Retval
-       return size
-}
-func (m *Nat64AddDelInterfaceReply) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeInt32(m.Retval)
-       return buf.Bytes(), nil
-}
-func (m *Nat64AddDelInterfaceReply) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.Retval = buf.DecodeInt32()
-       return nil
-}
-
-// Nat64AddDelPoolAddrRange defines message 'nat64_add_del_pool_addr_range'.
-type Nat64AddDelPoolAddrRange struct {
-       StartAddr ip_types.IP4Address `binapi:"ip4_address,name=start_addr" json:"start_addr,omitempty"`
-       EndAddr   ip_types.IP4Address `binapi:"ip4_address,name=end_addr" json:"end_addr,omitempty"`
-       VrfID     uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
-       IsAdd     bool                `binapi:"bool,name=is_add" json:"is_add,omitempty"`
-}
-
-func (m *Nat64AddDelPoolAddrRange) Reset()               { *m = Nat64AddDelPoolAddrRange{} }
-func (*Nat64AddDelPoolAddrRange) GetMessageName() string { return "nat64_add_del_pool_addr_range" }
-func (*Nat64AddDelPoolAddrRange) GetCrcString() string   { return "21234ef3" }
-func (*Nat64AddDelPoolAddrRange) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *Nat64AddDelPoolAddrRange) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1 * 4 // m.StartAddr
-       size += 1 * 4 // m.EndAddr
-       size += 4     // m.VrfID
-       size += 1     // m.IsAdd
-       return size
-}
-func (m *Nat64AddDelPoolAddrRange) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeBytes(m.StartAddr[:], 4)
-       buf.EncodeBytes(m.EndAddr[:], 4)
-       buf.EncodeUint32(m.VrfID)
-       buf.EncodeBool(m.IsAdd)
-       return buf.Bytes(), nil
-}
-func (m *Nat64AddDelPoolAddrRange) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       copy(m.StartAddr[:], buf.DecodeBytes(4))
-       copy(m.EndAddr[:], buf.DecodeBytes(4))
-       m.VrfID = buf.DecodeUint32()
-       m.IsAdd = buf.DecodeBool()
-       return nil
-}
-
-// Nat64AddDelPoolAddrRangeReply defines message 'nat64_add_del_pool_addr_range_reply'.
-type Nat64AddDelPoolAddrRangeReply struct {
-       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
-}
-
-func (m *Nat64AddDelPoolAddrRangeReply) Reset() { *m = Nat64AddDelPoolAddrRangeReply{} }
-func (*Nat64AddDelPoolAddrRangeReply) GetMessageName() string {
-       return "nat64_add_del_pool_addr_range_reply"
-}
-func (*Nat64AddDelPoolAddrRangeReply) GetCrcString() string { return "e8d4e804" }
-func (*Nat64AddDelPoolAddrRangeReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *Nat64AddDelPoolAddrRangeReply) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 4 // m.Retval
-       return size
-}
-func (m *Nat64AddDelPoolAddrRangeReply) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeInt32(m.Retval)
-       return buf.Bytes(), nil
-}
-func (m *Nat64AddDelPoolAddrRangeReply) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.Retval = buf.DecodeInt32()
-       return nil
-}
-
-// Nat64AddDelPrefix defines message 'nat64_add_del_prefix'.
-type Nat64AddDelPrefix struct {
-       Prefix ip_types.IP6Prefix `binapi:"ip6_prefix,name=prefix" json:"prefix,omitempty"`
-       VrfID  uint32             `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
-       IsAdd  bool               `binapi:"bool,name=is_add" json:"is_add,omitempty"`
-}
-
-func (m *Nat64AddDelPrefix) Reset()               { *m = Nat64AddDelPrefix{} }
-func (*Nat64AddDelPrefix) GetMessageName() string { return "nat64_add_del_prefix" }
-func (*Nat64AddDelPrefix) GetCrcString() string   { return "727b2f4c" }
-func (*Nat64AddDelPrefix) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *Nat64AddDelPrefix) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1 * 16 // m.Prefix.Address
-       size += 1      // m.Prefix.Len
-       size += 4      // m.VrfID
-       size += 1      // m.IsAdd
-       return size
-}
-func (m *Nat64AddDelPrefix) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeBytes(m.Prefix.Address[:], 16)
-       buf.EncodeUint8(m.Prefix.Len)
-       buf.EncodeUint32(m.VrfID)
-       buf.EncodeBool(m.IsAdd)
-       return buf.Bytes(), nil
-}
-func (m *Nat64AddDelPrefix) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       copy(m.Prefix.Address[:], buf.DecodeBytes(16))
-       m.Prefix.Len = buf.DecodeUint8()
-       m.VrfID = buf.DecodeUint32()
-       m.IsAdd = buf.DecodeBool()
-       return nil
-}
-
-// Nat64AddDelPrefixReply defines message 'nat64_add_del_prefix_reply'.
-type Nat64AddDelPrefixReply struct {
-       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
-}
-
-func (m *Nat64AddDelPrefixReply) Reset()               { *m = Nat64AddDelPrefixReply{} }
-func (*Nat64AddDelPrefixReply) GetMessageName() string { return "nat64_add_del_prefix_reply" }
-func (*Nat64AddDelPrefixReply) GetCrcString() string   { return "e8d4e804" }
-func (*Nat64AddDelPrefixReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *Nat64AddDelPrefixReply) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 4 // m.Retval
-       return size
-}
-func (m *Nat64AddDelPrefixReply) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeInt32(m.Retval)
-       return buf.Bytes(), nil
-}
-func (m *Nat64AddDelPrefixReply) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.Retval = buf.DecodeInt32()
-       return nil
-}
-
-// Nat64AddDelStaticBib defines message 'nat64_add_del_static_bib'.
-type Nat64AddDelStaticBib struct {
-       IAddr ip_types.IP6Address `binapi:"ip6_address,name=i_addr" json:"i_addr,omitempty"`
-       OAddr ip_types.IP4Address `binapi:"ip4_address,name=o_addr" json:"o_addr,omitempty"`
-       IPort uint16              `binapi:"u16,name=i_port" json:"i_port,omitempty"`
-       OPort uint16              `binapi:"u16,name=o_port" json:"o_port,omitempty"`
-       VrfID uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
-       Proto uint8               `binapi:"u8,name=proto" json:"proto,omitempty"`
-       IsAdd bool                `binapi:"bool,name=is_add" json:"is_add,omitempty"`
-}
-
-func (m *Nat64AddDelStaticBib) Reset()               { *m = Nat64AddDelStaticBib{} }
-func (*Nat64AddDelStaticBib) GetMessageName() string { return "nat64_add_del_static_bib" }
-func (*Nat64AddDelStaticBib) GetCrcString() string   { return "90fae58a" }
-func (*Nat64AddDelStaticBib) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *Nat64AddDelStaticBib) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1 * 16 // m.IAddr
-       size += 1 * 4  // m.OAddr
-       size += 2      // m.IPort
-       size += 2      // m.OPort
-       size += 4      // m.VrfID
-       size += 1      // m.Proto
-       size += 1      // m.IsAdd
-       return size
-}
-func (m *Nat64AddDelStaticBib) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeBytes(m.IAddr[:], 16)
-       buf.EncodeBytes(m.OAddr[:], 4)
-       buf.EncodeUint16(m.IPort)
-       buf.EncodeUint16(m.OPort)
-       buf.EncodeUint32(m.VrfID)
-       buf.EncodeUint8(m.Proto)
-       buf.EncodeBool(m.IsAdd)
-       return buf.Bytes(), nil
-}
-func (m *Nat64AddDelStaticBib) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       copy(m.IAddr[:], buf.DecodeBytes(16))
-       copy(m.OAddr[:], buf.DecodeBytes(4))
-       m.IPort = buf.DecodeUint16()
-       m.OPort = buf.DecodeUint16()
-       m.VrfID = buf.DecodeUint32()
-       m.Proto = buf.DecodeUint8()
-       m.IsAdd = buf.DecodeBool()
-       return nil
-}
-
-// Nat64AddDelStaticBibReply defines message 'nat64_add_del_static_bib_reply'.
-type Nat64AddDelStaticBibReply struct {
-       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
-}
-
-func (m *Nat64AddDelStaticBibReply) Reset()               { *m = Nat64AddDelStaticBibReply{} }
-func (*Nat64AddDelStaticBibReply) GetMessageName() string { return "nat64_add_del_static_bib_reply" }
-func (*Nat64AddDelStaticBibReply) GetCrcString() string   { return "e8d4e804" }
-func (*Nat64AddDelStaticBibReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *Nat64AddDelStaticBibReply) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 4 // m.Retval
-       return size
-}
-func (m *Nat64AddDelStaticBibReply) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeInt32(m.Retval)
-       return buf.Bytes(), nil
-}
-func (m *Nat64AddDelStaticBibReply) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.Retval = buf.DecodeInt32()
-       return nil
-}
-
-// Nat64BibDetails defines message 'nat64_bib_details'.
-type Nat64BibDetails struct {
-       IAddr  ip_types.IP6Address `binapi:"ip6_address,name=i_addr" json:"i_addr,omitempty"`
-       OAddr  ip_types.IP4Address `binapi:"ip4_address,name=o_addr" json:"o_addr,omitempty"`
-       IPort  uint16              `binapi:"u16,name=i_port" json:"i_port,omitempty"`
-       OPort  uint16              `binapi:"u16,name=o_port" json:"o_port,omitempty"`
-       VrfID  uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
-       Proto  uint8               `binapi:"u8,name=proto" json:"proto,omitempty"`
-       Flags  NatConfigFlags      `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
-       SesNum uint32              `binapi:"u32,name=ses_num" json:"ses_num,omitempty"`
-}
-
-func (m *Nat64BibDetails) Reset()               { *m = Nat64BibDetails{} }
-func (*Nat64BibDetails) GetMessageName() string { return "nat64_bib_details" }
-func (*Nat64BibDetails) GetCrcString() string   { return "62c8541d" }
-func (*Nat64BibDetails) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *Nat64BibDetails) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1 * 16 // m.IAddr
-       size += 1 * 4  // m.OAddr
-       size += 2      // m.IPort
-       size += 2      // m.OPort
-       size += 4      // m.VrfID
-       size += 1      // m.Proto
-       size += 1      // m.Flags
-       size += 4      // m.SesNum
-       return size
-}
-func (m *Nat64BibDetails) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeBytes(m.IAddr[:], 16)
-       buf.EncodeBytes(m.OAddr[:], 4)
-       buf.EncodeUint16(m.IPort)
-       buf.EncodeUint16(m.OPort)
-       buf.EncodeUint32(m.VrfID)
-       buf.EncodeUint8(m.Proto)
-       buf.EncodeUint8(uint8(m.Flags))
-       buf.EncodeUint32(m.SesNum)
-       return buf.Bytes(), nil
-}
-func (m *Nat64BibDetails) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       copy(m.IAddr[:], buf.DecodeBytes(16))
-       copy(m.OAddr[:], buf.DecodeBytes(4))
-       m.IPort = buf.DecodeUint16()
-       m.OPort = buf.DecodeUint16()
-       m.VrfID = buf.DecodeUint32()
-       m.Proto = buf.DecodeUint8()
-       m.Flags = NatConfigFlags(buf.DecodeUint8())
-       m.SesNum = buf.DecodeUint32()
-       return nil
-}
-
-// Nat64BibDump defines message 'nat64_bib_dump'.
-type Nat64BibDump struct {
-       Proto uint8 `binapi:"u8,name=proto" json:"proto,omitempty"`
-}
-
-func (m *Nat64BibDump) Reset()               { *m = Nat64BibDump{} }
-func (*Nat64BibDump) GetMessageName() string { return "nat64_bib_dump" }
-func (*Nat64BibDump) GetCrcString() string   { return "cfcb6b75" }
-func (*Nat64BibDump) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *Nat64BibDump) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1 // m.Proto
-       return size
-}
-func (m *Nat64BibDump) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeUint8(m.Proto)
-       return buf.Bytes(), nil
-}
-func (m *Nat64BibDump) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.Proto = buf.DecodeUint8()
-       return nil
-}
-
-// Nat64InterfaceDetails defines message 'nat64_interface_details'.
-type Nat64InterfaceDetails struct {
-       Flags     NatConfigFlags                 `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
-       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
-}
-
-func (m *Nat64InterfaceDetails) Reset()               { *m = Nat64InterfaceDetails{} }
-func (*Nat64InterfaceDetails) GetMessageName() string { return "nat64_interface_details" }
-func (*Nat64InterfaceDetails) GetCrcString() string   { return "5d286289" }
-func (*Nat64InterfaceDetails) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *Nat64InterfaceDetails) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1 // m.Flags
-       size += 4 // m.SwIfIndex
-       return size
-}
-func (m *Nat64InterfaceDetails) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeUint8(uint8(m.Flags))
-       buf.EncodeUint32(uint32(m.SwIfIndex))
-       return buf.Bytes(), nil
-}
-func (m *Nat64InterfaceDetails) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.Flags = NatConfigFlags(buf.DecodeUint8())
-       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
-       return nil
-}
-
-// Nat64InterfaceDump defines message 'nat64_interface_dump'.
-type Nat64InterfaceDump struct{}
-
-func (m *Nat64InterfaceDump) Reset()               { *m = Nat64InterfaceDump{} }
-func (*Nat64InterfaceDump) GetMessageName() string { return "nat64_interface_dump" }
-func (*Nat64InterfaceDump) GetCrcString() string   { return "51077d14" }
-func (*Nat64InterfaceDump) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *Nat64InterfaceDump) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       return size
-}
-func (m *Nat64InterfaceDump) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       return buf.Bytes(), nil
-}
-func (m *Nat64InterfaceDump) Unmarshal(b []byte) error {
-       return nil
-}
-
-// Nat64PoolAddrDetails defines message 'nat64_pool_addr_details'.
-type Nat64PoolAddrDetails struct {
-       Address ip_types.IP4Address `binapi:"ip4_address,name=address" json:"address,omitempty"`
-       VrfID   uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
-}
-
-func (m *Nat64PoolAddrDetails) Reset()               { *m = Nat64PoolAddrDetails{} }
-func (*Nat64PoolAddrDetails) GetMessageName() string { return "nat64_pool_addr_details" }
-func (*Nat64PoolAddrDetails) GetCrcString() string   { return "9bb99cdb" }
-func (*Nat64PoolAddrDetails) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *Nat64PoolAddrDetails) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1 * 4 // m.Address
-       size += 4     // m.VrfID
-       return size
-}
-func (m *Nat64PoolAddrDetails) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeBytes(m.Address[:], 4)
-       buf.EncodeUint32(m.VrfID)
-       return buf.Bytes(), nil
-}
-func (m *Nat64PoolAddrDetails) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       copy(m.Address[:], buf.DecodeBytes(4))
-       m.VrfID = buf.DecodeUint32()
-       return nil
-}
-
-// Nat64PoolAddrDump defines message 'nat64_pool_addr_dump'.
-type Nat64PoolAddrDump struct{}
-
-func (m *Nat64PoolAddrDump) Reset()               { *m = Nat64PoolAddrDump{} }
-func (*Nat64PoolAddrDump) GetMessageName() string { return "nat64_pool_addr_dump" }
-func (*Nat64PoolAddrDump) GetCrcString() string   { return "51077d14" }
-func (*Nat64PoolAddrDump) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *Nat64PoolAddrDump) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       return size
-}
-func (m *Nat64PoolAddrDump) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       return buf.Bytes(), nil
-}
-func (m *Nat64PoolAddrDump) Unmarshal(b []byte) error {
-       return nil
-}
-
-// Nat64PrefixDetails defines message 'nat64_prefix_details'.
-type Nat64PrefixDetails struct {
-       Prefix ip_types.IP6Prefix `binapi:"ip6_prefix,name=prefix" json:"prefix,omitempty"`
-       VrfID  uint32             `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
-}
-
-func (m *Nat64PrefixDetails) Reset()               { *m = Nat64PrefixDetails{} }
-func (*Nat64PrefixDetails) GetMessageName() string { return "nat64_prefix_details" }
-func (*Nat64PrefixDetails) GetCrcString() string   { return "20568de3" }
-func (*Nat64PrefixDetails) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *Nat64PrefixDetails) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1 * 16 // m.Prefix.Address
-       size += 1      // m.Prefix.Len
-       size += 4      // m.VrfID
-       return size
-}
-func (m *Nat64PrefixDetails) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeBytes(m.Prefix.Address[:], 16)
-       buf.EncodeUint8(m.Prefix.Len)
-       buf.EncodeUint32(m.VrfID)
-       return buf.Bytes(), nil
-}
-func (m *Nat64PrefixDetails) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       copy(m.Prefix.Address[:], buf.DecodeBytes(16))
-       m.Prefix.Len = buf.DecodeUint8()
-       m.VrfID = buf.DecodeUint32()
-       return nil
-}
-
-// Nat64PrefixDump defines message 'nat64_prefix_dump'.
-type Nat64PrefixDump struct{}
-
-func (m *Nat64PrefixDump) Reset()               { *m = Nat64PrefixDump{} }
-func (*Nat64PrefixDump) GetMessageName() string { return "nat64_prefix_dump" }
-func (*Nat64PrefixDump) GetCrcString() string   { return "51077d14" }
-func (*Nat64PrefixDump) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *Nat64PrefixDump) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       return size
-}
-func (m *Nat64PrefixDump) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       return buf.Bytes(), nil
-}
-func (m *Nat64PrefixDump) Unmarshal(b []byte) error {
-       return nil
-}
-
-// Nat64StDetails defines message 'nat64_st_details'.
-type Nat64StDetails struct {
-       IlAddr ip_types.IP6Address `binapi:"ip6_address,name=il_addr" json:"il_addr,omitempty"`
-       OlAddr ip_types.IP4Address `binapi:"ip4_address,name=ol_addr" json:"ol_addr,omitempty"`
-       IlPort uint16              `binapi:"u16,name=il_port" json:"il_port,omitempty"`
-       OlPort uint16              `binapi:"u16,name=ol_port" json:"ol_port,omitempty"`
-       IrAddr ip_types.IP6Address `binapi:"ip6_address,name=ir_addr" json:"ir_addr,omitempty"`
-       OrAddr ip_types.IP4Address `binapi:"ip4_address,name=or_addr" json:"or_addr,omitempty"`
-       RPort  uint16              `binapi:"u16,name=r_port" json:"r_port,omitempty"`
-       VrfID  uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
-       Proto  uint8               `binapi:"u8,name=proto" json:"proto,omitempty"`
-}
-
-func (m *Nat64StDetails) Reset()               { *m = Nat64StDetails{} }
-func (*Nat64StDetails) GetMessageName() string { return "nat64_st_details" }
-func (*Nat64StDetails) GetCrcString() string   { return "c770d620" }
-func (*Nat64StDetails) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *Nat64StDetails) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1 * 16 // m.IlAddr
-       size += 1 * 4  // m.OlAddr
-       size += 2      // m.IlPort
-       size += 2      // m.OlPort
-       size += 1 * 16 // m.IrAddr
-       size += 1 * 4  // m.OrAddr
-       size += 2      // m.RPort
-       size += 4      // m.VrfID
-       size += 1      // m.Proto
-       return size
-}
-func (m *Nat64StDetails) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeBytes(m.IlAddr[:], 16)
-       buf.EncodeBytes(m.OlAddr[:], 4)
-       buf.EncodeUint16(m.IlPort)
-       buf.EncodeUint16(m.OlPort)
-       buf.EncodeBytes(m.IrAddr[:], 16)
-       buf.EncodeBytes(m.OrAddr[:], 4)
-       buf.EncodeUint16(m.RPort)
-       buf.EncodeUint32(m.VrfID)
-       buf.EncodeUint8(m.Proto)
-       return buf.Bytes(), nil
-}
-func (m *Nat64StDetails) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       copy(m.IlAddr[:], buf.DecodeBytes(16))
-       copy(m.OlAddr[:], buf.DecodeBytes(4))
-       m.IlPort = buf.DecodeUint16()
-       m.OlPort = buf.DecodeUint16()
-       copy(m.IrAddr[:], buf.DecodeBytes(16))
-       copy(m.OrAddr[:], buf.DecodeBytes(4))
-       m.RPort = buf.DecodeUint16()
-       m.VrfID = buf.DecodeUint32()
-       m.Proto = buf.DecodeUint8()
-       return nil
-}
-
-// Nat64StDump defines message 'nat64_st_dump'.
-type Nat64StDump struct {
-       Proto uint8 `binapi:"u8,name=proto" json:"proto,omitempty"`
-}
-
-func (m *Nat64StDump) Reset()               { *m = Nat64StDump{} }
-func (*Nat64StDump) GetMessageName() string { return "nat64_st_dump" }
-func (*Nat64StDump) GetCrcString() string   { return "cfcb6b75" }
-func (*Nat64StDump) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *Nat64StDump) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1 // m.Proto
-       return size
-}
-func (m *Nat64StDump) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeUint8(m.Proto)
-       return buf.Bytes(), nil
-}
-func (m *Nat64StDump) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.Proto = buf.DecodeUint8()
-       return nil
-}
-
-// Nat66AddDelInterface defines message 'nat66_add_del_interface'.
-type Nat66AddDelInterface struct {
-       IsAdd     bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
-       Flags     NatConfigFlags                 `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
-       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
-}
-
-func (m *Nat66AddDelInterface) Reset()               { *m = Nat66AddDelInterface{} }
-func (*Nat66AddDelInterface) GetMessageName() string { return "nat66_add_del_interface" }
-func (*Nat66AddDelInterface) GetCrcString() string   { return "f3699b83" }
-func (*Nat66AddDelInterface) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *Nat66AddDelInterface) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1 // m.IsAdd
-       size += 1 // m.Flags
-       size += 4 // m.SwIfIndex
-       return size
-}
-func (m *Nat66AddDelInterface) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeBool(m.IsAdd)
-       buf.EncodeUint8(uint8(m.Flags))
-       buf.EncodeUint32(uint32(m.SwIfIndex))
-       return buf.Bytes(), nil
-}
-func (m *Nat66AddDelInterface) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.IsAdd = buf.DecodeBool()
-       m.Flags = NatConfigFlags(buf.DecodeUint8())
-       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
-       return nil
-}
-
-// Nat66AddDelInterfaceReply defines message 'nat66_add_del_interface_reply'.
-type Nat66AddDelInterfaceReply struct {
-       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
-}
-
-func (m *Nat66AddDelInterfaceReply) Reset()               { *m = Nat66AddDelInterfaceReply{} }
-func (*Nat66AddDelInterfaceReply) GetMessageName() string { return "nat66_add_del_interface_reply" }
-func (*Nat66AddDelInterfaceReply) GetCrcString() string   { return "e8d4e804" }
-func (*Nat66AddDelInterfaceReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *Nat66AddDelInterfaceReply) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 4 // m.Retval
-       return size
-}
-func (m *Nat66AddDelInterfaceReply) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeInt32(m.Retval)
-       return buf.Bytes(), nil
-}
-func (m *Nat66AddDelInterfaceReply) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.Retval = buf.DecodeInt32()
-       return nil
-}
-
-// Nat66AddDelStaticMapping defines message 'nat66_add_del_static_mapping'.
-type Nat66AddDelStaticMapping struct {
-       IsAdd             bool                `binapi:"bool,name=is_add" json:"is_add,omitempty"`
-       LocalIPAddress    ip_types.IP6Address `binapi:"ip6_address,name=local_ip_address" json:"local_ip_address,omitempty"`
-       ExternalIPAddress ip_types.IP6Address `binapi:"ip6_address,name=external_ip_address" json:"external_ip_address,omitempty"`
-       VrfID             uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
-}
-
-func (m *Nat66AddDelStaticMapping) Reset()               { *m = Nat66AddDelStaticMapping{} }
-func (*Nat66AddDelStaticMapping) GetMessageName() string { return "nat66_add_del_static_mapping" }
-func (*Nat66AddDelStaticMapping) GetCrcString() string   { return "fb64e50b" }
-func (*Nat66AddDelStaticMapping) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *Nat66AddDelStaticMapping) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1      // m.IsAdd
-       size += 1 * 16 // m.LocalIPAddress
-       size += 1 * 16 // m.ExternalIPAddress
-       size += 4      // m.VrfID
-       return size
-}
-func (m *Nat66AddDelStaticMapping) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeBool(m.IsAdd)
-       buf.EncodeBytes(m.LocalIPAddress[:], 16)
-       buf.EncodeBytes(m.ExternalIPAddress[:], 16)
-       buf.EncodeUint32(m.VrfID)
-       return buf.Bytes(), nil
-}
-func (m *Nat66AddDelStaticMapping) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.IsAdd = buf.DecodeBool()
-       copy(m.LocalIPAddress[:], buf.DecodeBytes(16))
-       copy(m.ExternalIPAddress[:], buf.DecodeBytes(16))
-       m.VrfID = buf.DecodeUint32()
-       return nil
-}
-
-// Nat66AddDelStaticMappingReply defines message 'nat66_add_del_static_mapping_reply'.
-type Nat66AddDelStaticMappingReply struct {
-       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
-}
-
-func (m *Nat66AddDelStaticMappingReply) Reset() { *m = Nat66AddDelStaticMappingReply{} }
-func (*Nat66AddDelStaticMappingReply) GetMessageName() string {
-       return "nat66_add_del_static_mapping_reply"
-}
-func (*Nat66AddDelStaticMappingReply) GetCrcString() string { return "e8d4e804" }
-func (*Nat66AddDelStaticMappingReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *Nat66AddDelStaticMappingReply) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 4 // m.Retval
-       return size
-}
-func (m *Nat66AddDelStaticMappingReply) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeInt32(m.Retval)
-       return buf.Bytes(), nil
-}
-func (m *Nat66AddDelStaticMappingReply) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.Retval = buf.DecodeInt32()
-       return nil
-}
-
-// Nat66InterfaceDetails defines message 'nat66_interface_details'.
-type Nat66InterfaceDetails struct {
-       Flags     NatConfigFlags                 `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
-       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
-}
-
-func (m *Nat66InterfaceDetails) Reset()               { *m = Nat66InterfaceDetails{} }
-func (*Nat66InterfaceDetails) GetMessageName() string { return "nat66_interface_details" }
-func (*Nat66InterfaceDetails) GetCrcString() string   { return "5d286289" }
-func (*Nat66InterfaceDetails) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *Nat66InterfaceDetails) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1 // m.Flags
-       size += 4 // m.SwIfIndex
-       return size
-}
-func (m *Nat66InterfaceDetails) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeUint8(uint8(m.Flags))
-       buf.EncodeUint32(uint32(m.SwIfIndex))
-       return buf.Bytes(), nil
-}
-func (m *Nat66InterfaceDetails) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.Flags = NatConfigFlags(buf.DecodeUint8())
-       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
-       return nil
-}
-
-// Nat66InterfaceDump defines message 'nat66_interface_dump'.
-type Nat66InterfaceDump struct{}
-
-func (m *Nat66InterfaceDump) Reset()               { *m = Nat66InterfaceDump{} }
-func (*Nat66InterfaceDump) GetMessageName() string { return "nat66_interface_dump" }
-func (*Nat66InterfaceDump) GetCrcString() string   { return "51077d14" }
-func (*Nat66InterfaceDump) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *Nat66InterfaceDump) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       return size
-}
-func (m *Nat66InterfaceDump) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       return buf.Bytes(), nil
-}
-func (m *Nat66InterfaceDump) Unmarshal(b []byte) error {
-       return nil
-}
-
-// Nat66StaticMappingDetails defines message 'nat66_static_mapping_details'.
-type Nat66StaticMappingDetails struct {
-       LocalIPAddress    ip_types.IP6Address `binapi:"ip6_address,name=local_ip_address" json:"local_ip_address,omitempty"`
-       ExternalIPAddress ip_types.IP6Address `binapi:"ip6_address,name=external_ip_address" json:"external_ip_address,omitempty"`
-       VrfID             uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
-       TotalBytes        uint64              `binapi:"u64,name=total_bytes" json:"total_bytes,omitempty"`
-       TotalPkts         uint64              `binapi:"u64,name=total_pkts" json:"total_pkts,omitempty"`
-}
-
-func (m *Nat66StaticMappingDetails) Reset()               { *m = Nat66StaticMappingDetails{} }
-func (*Nat66StaticMappingDetails) GetMessageName() string { return "nat66_static_mapping_details" }
-func (*Nat66StaticMappingDetails) GetCrcString() string   { return "5c568448" }
-func (*Nat66StaticMappingDetails) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *Nat66StaticMappingDetails) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1 * 16 // m.LocalIPAddress
-       size += 1 * 16 // m.ExternalIPAddress
-       size += 4      // m.VrfID
-       size += 8      // m.TotalBytes
-       size += 8      // m.TotalPkts
-       return size
-}
-func (m *Nat66StaticMappingDetails) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeBytes(m.LocalIPAddress[:], 16)
-       buf.EncodeBytes(m.ExternalIPAddress[:], 16)
-       buf.EncodeUint32(m.VrfID)
-       buf.EncodeUint64(m.TotalBytes)
-       buf.EncodeUint64(m.TotalPkts)
-       return buf.Bytes(), nil
-}
-func (m *Nat66StaticMappingDetails) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       copy(m.LocalIPAddress[:], buf.DecodeBytes(16))
-       copy(m.ExternalIPAddress[:], buf.DecodeBytes(16))
-       m.VrfID = buf.DecodeUint32()
-       m.TotalBytes = buf.DecodeUint64()
-       m.TotalPkts = buf.DecodeUint64()
-       return nil
-}
-
-// Nat66StaticMappingDump defines message 'nat66_static_mapping_dump'.
-type Nat66StaticMappingDump struct{}
-
-func (m *Nat66StaticMappingDump) Reset()               { *m = Nat66StaticMappingDump{} }
-func (*Nat66StaticMappingDump) GetMessageName() string { return "nat66_static_mapping_dump" }
-func (*Nat66StaticMappingDump) GetCrcString() string   { return "51077d14" }
-func (*Nat66StaticMappingDump) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *Nat66StaticMappingDump) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       return size
-}
-func (m *Nat66StaticMappingDump) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       return buf.Bytes(), nil
-}
-func (m *Nat66StaticMappingDump) Unmarshal(b []byte) error {
-       return nil
-}
-
-// NatControlPing defines message 'nat_control_ping'.
-type NatControlPing struct{}
-
-func (m *NatControlPing) Reset()               { *m = NatControlPing{} }
-func (*NatControlPing) GetMessageName() string { return "nat_control_ping" }
-func (*NatControlPing) GetCrcString() string   { return "51077d14" }
-func (*NatControlPing) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *NatControlPing) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       return size
-}
-func (m *NatControlPing) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       return buf.Bytes(), nil
-}
-func (m *NatControlPing) Unmarshal(b []byte) error {
-       return nil
-}
-
-// NatControlPingReply defines message 'nat_control_ping_reply'.
-type NatControlPingReply struct {
-       Retval      int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
-       ClientIndex uint32 `binapi:"u32,name=client_index" json:"client_index,omitempty"`
-       VpePID      uint32 `binapi:"u32,name=vpe_pid" json:"vpe_pid,omitempty"`
-}
-
-func (m *NatControlPingReply) Reset()               { *m = NatControlPingReply{} }
-func (*NatControlPingReply) GetMessageName() string { return "nat_control_ping_reply" }
-func (*NatControlPingReply) GetCrcString() string   { return "f6b0b8ca" }
-func (*NatControlPingReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *NatControlPingReply) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 4 // m.Retval
-       size += 4 // m.ClientIndex
-       size += 4 // m.VpePID
-       return size
-}
-func (m *NatControlPingReply) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeInt32(m.Retval)
-       buf.EncodeUint32(m.ClientIndex)
-       buf.EncodeUint32(m.VpePID)
-       return buf.Bytes(), nil
-}
-func (m *NatControlPingReply) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.Retval = buf.DecodeInt32()
-       m.ClientIndex = buf.DecodeUint32()
-       m.VpePID = buf.DecodeUint32()
-       return nil
-}
-
-// NatDetAddDelMap defines message 'nat_det_add_del_map'.
-type NatDetAddDelMap struct {
-       IsAdd   bool                `binapi:"bool,name=is_add" json:"is_add,omitempty"`
-       InAddr  ip_types.IP4Address `binapi:"ip4_address,name=in_addr" json:"in_addr,omitempty"`
-       InPlen  uint8               `binapi:"u8,name=in_plen" json:"in_plen,omitempty"`
-       OutAddr ip_types.IP4Address `binapi:"ip4_address,name=out_addr" json:"out_addr,omitempty"`
-       OutPlen uint8               `binapi:"u8,name=out_plen" json:"out_plen,omitempty"`
-}
-
-func (m *NatDetAddDelMap) Reset()               { *m = NatDetAddDelMap{} }
-func (*NatDetAddDelMap) GetMessageName() string { return "nat_det_add_del_map" }
-func (*NatDetAddDelMap) GetCrcString() string   { return "112fde05" }
-func (*NatDetAddDelMap) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *NatDetAddDelMap) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1     // m.IsAdd
-       size += 1 * 4 // m.InAddr
-       size += 1     // m.InPlen
-       size += 1 * 4 // m.OutAddr
-       size += 1     // m.OutPlen
-       return size
-}
-func (m *NatDetAddDelMap) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeBool(m.IsAdd)
-       buf.EncodeBytes(m.InAddr[:], 4)
-       buf.EncodeUint8(m.InPlen)
-       buf.EncodeBytes(m.OutAddr[:], 4)
-       buf.EncodeUint8(m.OutPlen)
-       return buf.Bytes(), nil
-}
-func (m *NatDetAddDelMap) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.IsAdd = buf.DecodeBool()
-       copy(m.InAddr[:], buf.DecodeBytes(4))
-       m.InPlen = buf.DecodeUint8()
-       copy(m.OutAddr[:], buf.DecodeBytes(4))
-       m.OutPlen = buf.DecodeUint8()
-       return nil
-}
-
-// NatDetAddDelMapReply defines message 'nat_det_add_del_map_reply'.
-type NatDetAddDelMapReply struct {
-       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
-}
-
-func (m *NatDetAddDelMapReply) Reset()               { *m = NatDetAddDelMapReply{} }
-func (*NatDetAddDelMapReply) GetMessageName() string { return "nat_det_add_del_map_reply" }
-func (*NatDetAddDelMapReply) GetCrcString() string   { return "e8d4e804" }
-func (*NatDetAddDelMapReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *NatDetAddDelMapReply) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 4 // m.Retval
-       return size
-}
-func (m *NatDetAddDelMapReply) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeInt32(m.Retval)
-       return buf.Bytes(), nil
-}
-func (m *NatDetAddDelMapReply) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.Retval = buf.DecodeInt32()
-       return nil
-}
-
-// NatDetCloseSessionIn defines message 'nat_det_close_session_in'.
-type NatDetCloseSessionIn struct {
-       InAddr  ip_types.IP4Address `binapi:"ip4_address,name=in_addr" json:"in_addr,omitempty"`
-       InPort  uint16              `binapi:"u16,name=in_port" json:"in_port,omitempty"`
-       ExtAddr ip_types.IP4Address `binapi:"ip4_address,name=ext_addr" json:"ext_addr,omitempty"`
-       ExtPort uint16              `binapi:"u16,name=ext_port" json:"ext_port,omitempty"`
-}
-
-func (m *NatDetCloseSessionIn) Reset()               { *m = NatDetCloseSessionIn{} }
-func (*NatDetCloseSessionIn) GetMessageName() string { return "nat_det_close_session_in" }
-func (*NatDetCloseSessionIn) GetCrcString() string   { return "0a10ef64" }
-func (*NatDetCloseSessionIn) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *NatDetCloseSessionIn) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1 * 4 // m.InAddr
-       size += 2     // m.InPort
-       size += 1 * 4 // m.ExtAddr
-       size += 2     // m.ExtPort
-       return size
-}
-func (m *NatDetCloseSessionIn) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeBytes(m.InAddr[:], 4)
-       buf.EncodeUint16(m.InPort)
-       buf.EncodeBytes(m.ExtAddr[:], 4)
-       buf.EncodeUint16(m.ExtPort)
-       return buf.Bytes(), nil
-}
-func (m *NatDetCloseSessionIn) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       copy(m.InAddr[:], buf.DecodeBytes(4))
-       m.InPort = buf.DecodeUint16()
-       copy(m.ExtAddr[:], buf.DecodeBytes(4))
-       m.ExtPort = buf.DecodeUint16()
-       return nil
-}
-
-// NatDetCloseSessionInReply defines message 'nat_det_close_session_in_reply'.
-type NatDetCloseSessionInReply struct {
-       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
-}
-
-func (m *NatDetCloseSessionInReply) Reset()               { *m = NatDetCloseSessionInReply{} }
-func (*NatDetCloseSessionInReply) GetMessageName() string { return "nat_det_close_session_in_reply" }
-func (*NatDetCloseSessionInReply) GetCrcString() string   { return "e8d4e804" }
-func (*NatDetCloseSessionInReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *NatDetCloseSessionInReply) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 4 // m.Retval
-       return size
-}
-func (m *NatDetCloseSessionInReply) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeInt32(m.Retval)
-       return buf.Bytes(), nil
-}
-func (m *NatDetCloseSessionInReply) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.Retval = buf.DecodeInt32()
-       return nil
-}
-
-// NatDetCloseSessionOut defines message 'nat_det_close_session_out'.
-type NatDetCloseSessionOut struct {
-       OutAddr ip_types.IP4Address `binapi:"ip4_address,name=out_addr" json:"out_addr,omitempty"`
-       OutPort uint16              `binapi:"u16,name=out_port" json:"out_port,omitempty"`
-       ExtAddr ip_types.IP4Address `binapi:"ip4_address,name=ext_addr" json:"ext_addr,omitempty"`
-       ExtPort uint16              `binapi:"u16,name=ext_port" json:"ext_port,omitempty"`
-}
-
-func (m *NatDetCloseSessionOut) Reset()               { *m = NatDetCloseSessionOut{} }
-func (*NatDetCloseSessionOut) GetMessageName() string { return "nat_det_close_session_out" }
-func (*NatDetCloseSessionOut) GetCrcString() string   { return "c1b6cbfb" }
-func (*NatDetCloseSessionOut) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *NatDetCloseSessionOut) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1 * 4 // m.OutAddr
-       size += 2     // m.OutPort
-       size += 1 * 4 // m.ExtAddr
-       size += 2     // m.ExtPort
-       return size
-}
-func (m *NatDetCloseSessionOut) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeBytes(m.OutAddr[:], 4)
-       buf.EncodeUint16(m.OutPort)
-       buf.EncodeBytes(m.ExtAddr[:], 4)
-       buf.EncodeUint16(m.ExtPort)
-       return buf.Bytes(), nil
-}
-func (m *NatDetCloseSessionOut) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       copy(m.OutAddr[:], buf.DecodeBytes(4))
-       m.OutPort = buf.DecodeUint16()
-       copy(m.ExtAddr[:], buf.DecodeBytes(4))
-       m.ExtPort = buf.DecodeUint16()
-       return nil
-}
-
-// NatDetCloseSessionOutReply defines message 'nat_det_close_session_out_reply'.
-type NatDetCloseSessionOutReply struct {
-       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
-}
-
-func (m *NatDetCloseSessionOutReply) Reset()               { *m = NatDetCloseSessionOutReply{} }
-func (*NatDetCloseSessionOutReply) GetMessageName() string { return "nat_det_close_session_out_reply" }
-func (*NatDetCloseSessionOutReply) GetCrcString() string   { return "e8d4e804" }
-func (*NatDetCloseSessionOutReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-
-func (m *NatDetCloseSessionOutReply) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 4 // m.Retval
-       return size
-}
-func (m *NatDetCloseSessionOutReply) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeInt32(m.Retval)
-       return buf.Bytes(), nil
-}
-func (m *NatDetCloseSessionOutReply) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.Retval = buf.DecodeInt32()
-       return nil
-}
-
-// NatDetForward defines message 'nat_det_forward'.
-type NatDetForward struct {
-       InAddr ip_types.IP4Address `binapi:"ip4_address,name=in_addr" json:"in_addr,omitempty"`
-}
-
-func (m *NatDetForward) Reset()               { *m = NatDetForward{} }
-func (*NatDetForward) GetMessageName() string { return "nat_det_forward" }
-func (*NatDetForward) GetCrcString() string   { return "7f8a89cd" }
-func (*NatDetForward) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-
-func (m *NatDetForward) Size() (size int) {
-       if m == nil {
-               return 0
-       }
-       size += 1 * 4 // m.InAddr
-       return size
-}
-func (m *NatDetForward) Marshal(b []byte) ([]byte, error) {
-       if b == nil {
-               b = make([]byte, m.Size())
-       }
-       buf := codec.NewBuffer(b)
-       buf.EncodeBytes(m.InAddr[:], 4)
-       return buf.Bytes(), nil
-}
-func (m *NatDetForward) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       copy(m.InAddr[:], buf.DecodeBytes(4))
-       return nil
-}
-
-// NatDetForwardReply defines message 'nat_det_forward_reply'.
-type NatDetForwardReply struct {
-       Retval    int32               `binapi:"i32,name=retval" json:"retval,omitempty"`
-       OutPortLo uint16              `binapi:"u16,name=out_port_lo" json:"out_port_lo,omitempty"`
-       OutPortHi uint16              `binapi:"u16,name=out_port_hi" json:"out_port_hi,omitempty"`
-       OutAddr   ip_types.IP4Address `binapi:"ip4_address,name=out_addr" json:"out_addr,omitempty"`
-}
-
-func (m *NatDetForwardReply) Reset()               { *m = NatDetForwardReply{} }
-func (*NatDetForwardReply) GetMessageName() string { return "nat_det_forward_reply" }
-func (*NatDetForwardReply) GetCrcString() string   { return "a8ccbdc0" }
-func (*NatDetForwardReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
+func (*Nat44StaticMappingDump) GetCrcString() string   { return "51077d14" }
+func (*Nat44StaticMappingDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
 }
 
-func (m *NatDetForwardReply) Size() (size int) {
+func (m *Nat44StaticMappingDump) Size() (size int) {
        if m == nil {
                return 0
        }
-       size += 4     // m.Retval
-       size += 2     // m.OutPortLo
-       size += 2     // m.OutPortHi
-       size += 1 * 4 // m.OutAddr
        return size
 }
-func (m *NatDetForwardReply) Marshal(b []byte) ([]byte, error) {
+func (m *Nat44StaticMappingDump) Marshal(b []byte) ([]byte, error) {
        if b == nil {
                b = make([]byte, m.Size())
        }
        buf := codec.NewBuffer(b)
-       buf.EncodeInt32(m.Retval)
-       buf.EncodeUint16(m.OutPortLo)
-       buf.EncodeUint16(m.OutPortHi)
-       buf.EncodeBytes(m.OutAddr[:], 4)
        return buf.Bytes(), nil
 }
-func (m *NatDetForwardReply) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.Retval = buf.DecodeInt32()
-       m.OutPortLo = buf.DecodeUint16()
-       m.OutPortHi = buf.DecodeUint16()
-       copy(m.OutAddr[:], buf.DecodeBytes(4))
+func (m *Nat44StaticMappingDump) Unmarshal(b []byte) error {
        return nil
 }
 
-// NatDetMapDetails defines message 'nat_det_map_details'.
-type NatDetMapDetails struct {
-       InAddr       ip_types.IP4Address `binapi:"ip4_address,name=in_addr" json:"in_addr,omitempty"`
-       InPlen       uint8               `binapi:"u8,name=in_plen" json:"in_plen,omitempty"`
-       OutAddr      ip_types.IP4Address `binapi:"ip4_address,name=out_addr" json:"out_addr,omitempty"`
-       OutPlen      uint8               `binapi:"u8,name=out_plen" json:"out_plen,omitempty"`
-       SharingRatio uint32              `binapi:"u32,name=sharing_ratio" json:"sharing_ratio,omitempty"`
-       PortsPerHost uint16              `binapi:"u16,name=ports_per_host" json:"ports_per_host,omitempty"`
-       SesNum       uint32              `binapi:"u32,name=ses_num" json:"ses_num,omitempty"`
+// Nat44UserDetails defines message 'nat44_user_details'.
+type Nat44UserDetails struct {
+       VrfID           uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+       IPAddress       ip_types.IP4Address `binapi:"ip4_address,name=ip_address" json:"ip_address,omitempty"`
+       Nsessions       uint32              `binapi:"u32,name=nsessions" json:"nsessions,omitempty"`
+       Nstaticsessions uint32              `binapi:"u32,name=nstaticsessions" json:"nstaticsessions,omitempty"`
 }
 
-func (m *NatDetMapDetails) Reset()               { *m = NatDetMapDetails{} }
-func (*NatDetMapDetails) GetMessageName() string { return "nat_det_map_details" }
-func (*NatDetMapDetails) GetCrcString() string   { return "88000ee1" }
-func (*NatDetMapDetails) GetMessageType() api.MessageType {
+func (m *Nat44UserDetails) Reset()               { *m = Nat44UserDetails{} }
+func (*Nat44UserDetails) GetMessageName() string { return "nat44_user_details" }
+func (*Nat44UserDetails) GetCrcString() string   { return "355896c2" }
+func (*Nat44UserDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 
-func (m *NatDetMapDetails) Size() (size int) {
+func (m *Nat44UserDetails) Size() (size int) {
        if m == nil {
                return 0
        }
-       size += 1 * 4 // m.InAddr
-       size += 1     // m.InPlen
-       size += 1 * 4 // m.OutAddr
-       size += 1     // m.OutPlen
-       size += 4     // m.SharingRatio
-       size += 2     // m.PortsPerHost
-       size += 4     // m.SesNum
+       size += 4     // m.VrfID
+       size += 1 * 4 // m.IPAddress
+       size += 4     // m.Nsessions
+       size += 4     // m.Nstaticsessions
        return size
 }
-func (m *NatDetMapDetails) Marshal(b []byte) ([]byte, error) {
+func (m *Nat44UserDetails) Marshal(b []byte) ([]byte, error) {
        if b == nil {
                b = make([]byte, m.Size())
        }
        buf := codec.NewBuffer(b)
-       buf.EncodeBytes(m.InAddr[:], 4)
-       buf.EncodeUint8(m.InPlen)
-       buf.EncodeBytes(m.OutAddr[:], 4)
-       buf.EncodeUint8(m.OutPlen)
-       buf.EncodeUint32(m.SharingRatio)
-       buf.EncodeUint16(m.PortsPerHost)
-       buf.EncodeUint32(m.SesNum)
+       buf.EncodeUint32(m.VrfID)
+       buf.EncodeBytes(m.IPAddress[:], 4)
+       buf.EncodeUint32(m.Nsessions)
+       buf.EncodeUint32(m.Nstaticsessions)
        return buf.Bytes(), nil
 }
-func (m *NatDetMapDetails) Unmarshal(b []byte) error {
+func (m *Nat44UserDetails) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
-       copy(m.InAddr[:], buf.DecodeBytes(4))
-       m.InPlen = buf.DecodeUint8()
-       copy(m.OutAddr[:], buf.DecodeBytes(4))
-       m.OutPlen = buf.DecodeUint8()
-       m.SharingRatio = buf.DecodeUint32()
-       m.PortsPerHost = buf.DecodeUint16()
-       m.SesNum = buf.DecodeUint32()
+       m.VrfID = buf.DecodeUint32()
+       copy(m.IPAddress[:], buf.DecodeBytes(4))
+       m.Nsessions = buf.DecodeUint32()
+       m.Nstaticsessions = buf.DecodeUint32()
        return nil
 }
 
-// NatDetMapDump defines message 'nat_det_map_dump'.
-type NatDetMapDump struct{}
+// Nat44UserDump defines message 'nat44_user_dump'.
+type Nat44UserDump struct{}
 
-func (m *NatDetMapDump) Reset()               { *m = NatDetMapDump{} }
-func (*NatDetMapDump) GetMessageName() string { return "nat_det_map_dump" }
-func (*NatDetMapDump) GetCrcString() string   { return "51077d14" }
-func (*NatDetMapDump) GetMessageType() api.MessageType {
+func (m *Nat44UserDump) Reset()               { *m = Nat44UserDump{} }
+func (*Nat44UserDump) GetMessageName() string { return "nat44_user_dump" }
+func (*Nat44UserDump) GetCrcString() string   { return "51077d14" }
+func (*Nat44UserDump) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 
-func (m *NatDetMapDump) Size() (size int) {
+func (m *Nat44UserDump) Size() (size int) {
        if m == nil {
                return 0
        }
        return size
 }
-func (m *NatDetMapDump) Marshal(b []byte) ([]byte, error) {
+func (m *Nat44UserDump) Marshal(b []byte) ([]byte, error) {
        if b == nil {
                b = make([]byte, m.Size())
        }
        buf := codec.NewBuffer(b)
        return buf.Bytes(), nil
 }
-func (m *NatDetMapDump) Unmarshal(b []byte) error {
+func (m *Nat44UserDump) Unmarshal(b []byte) error {
        return nil
 }
 
-// NatDetReverse defines message 'nat_det_reverse'.
-type NatDetReverse struct {
-       OutPort uint16              `binapi:"u16,name=out_port" json:"out_port,omitempty"`
-       OutAddr ip_types.IP4Address `binapi:"ip4_address,name=out_addr" json:"out_addr,omitempty"`
+// Nat44UserSessionDetails defines message 'nat44_user_session_details'.
+type Nat44UserSessionDetails struct {
+       OutsideIPAddress  ip_types.IP4Address      `binapi:"ip4_address,name=outside_ip_address" json:"outside_ip_address,omitempty"`
+       OutsidePort       uint16                   `binapi:"u16,name=outside_port" json:"outside_port,omitempty"`
+       InsideIPAddress   ip_types.IP4Address      `binapi:"ip4_address,name=inside_ip_address" json:"inside_ip_address,omitempty"`
+       InsidePort        uint16                   `binapi:"u16,name=inside_port" json:"inside_port,omitempty"`
+       Protocol          uint16                   `binapi:"u16,name=protocol" json:"protocol,omitempty"`
+       Flags             nat_types.NatConfigFlags `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
+       LastHeard         uint64                   `binapi:"u64,name=last_heard" json:"last_heard,omitempty"`
+       TotalBytes        uint64                   `binapi:"u64,name=total_bytes" json:"total_bytes,omitempty"`
+       TotalPkts         uint32                   `binapi:"u32,name=total_pkts" json:"total_pkts,omitempty"`
+       ExtHostAddress    ip_types.IP4Address      `binapi:"ip4_address,name=ext_host_address" json:"ext_host_address,omitempty"`
+       ExtHostPort       uint16                   `binapi:"u16,name=ext_host_port" json:"ext_host_port,omitempty"`
+       ExtHostNatAddress ip_types.IP4Address      `binapi:"ip4_address,name=ext_host_nat_address" json:"ext_host_nat_address,omitempty"`
+       ExtHostNatPort    uint16                   `binapi:"u16,name=ext_host_nat_port" json:"ext_host_nat_port,omitempty"`
 }
 
-func (m *NatDetReverse) Reset()               { *m = NatDetReverse{} }
-func (*NatDetReverse) GetMessageName() string { return "nat_det_reverse" }
-func (*NatDetReverse) GetCrcString() string   { return "a7573fe1" }
-func (*NatDetReverse) GetMessageType() api.MessageType {
-       return api.RequestMessage
+func (m *Nat44UserSessionDetails) Reset()               { *m = Nat44UserSessionDetails{} }
+func (*Nat44UserSessionDetails) GetMessageName() string { return "nat44_user_session_details" }
+func (*Nat44UserSessionDetails) GetCrcString() string   { return "2cf6e16d" }
+func (*Nat44UserSessionDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
 }
 
-func (m *NatDetReverse) Size() (size int) {
+func (m *Nat44UserSessionDetails) Size() (size int) {
        if m == nil {
                return 0
        }
-       size += 2     // m.OutPort
-       size += 1 * 4 // m.OutAddr
+       size += 1 * 4 // m.OutsideIPAddress
+       size += 2     // m.OutsidePort
+       size += 1 * 4 // m.InsideIPAddress
+       size += 2     // m.InsidePort
+       size += 2     // m.Protocol
+       size += 1     // m.Flags
+       size += 8     // m.LastHeard
+       size += 8     // m.TotalBytes
+       size += 4     // m.TotalPkts
+       size += 1 * 4 // m.ExtHostAddress
+       size += 2     // m.ExtHostPort
+       size += 1 * 4 // m.ExtHostNatAddress
+       size += 2     // m.ExtHostNatPort
        return size
 }
-func (m *NatDetReverse) Marshal(b []byte) ([]byte, error) {
+func (m *Nat44UserSessionDetails) Marshal(b []byte) ([]byte, error) {
        if b == nil {
                b = make([]byte, m.Size())
        }
        buf := codec.NewBuffer(b)
-       buf.EncodeUint16(m.OutPort)
-       buf.EncodeBytes(m.OutAddr[:], 4)
+       buf.EncodeBytes(m.OutsideIPAddress[:], 4)
+       buf.EncodeUint16(m.OutsidePort)
+       buf.EncodeBytes(m.InsideIPAddress[:], 4)
+       buf.EncodeUint16(m.InsidePort)
+       buf.EncodeUint16(m.Protocol)
+       buf.EncodeUint8(uint8(m.Flags))
+       buf.EncodeUint64(m.LastHeard)
+       buf.EncodeUint64(m.TotalBytes)
+       buf.EncodeUint32(m.TotalPkts)
+       buf.EncodeBytes(m.ExtHostAddress[:], 4)
+       buf.EncodeUint16(m.ExtHostPort)
+       buf.EncodeBytes(m.ExtHostNatAddress[:], 4)
+       buf.EncodeUint16(m.ExtHostNatPort)
        return buf.Bytes(), nil
 }
-func (m *NatDetReverse) Unmarshal(b []byte) error {
+func (m *Nat44UserSessionDetails) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
-       m.OutPort = buf.DecodeUint16()
-       copy(m.OutAddr[:], buf.DecodeBytes(4))
+       copy(m.OutsideIPAddress[:], buf.DecodeBytes(4))
+       m.OutsidePort = buf.DecodeUint16()
+       copy(m.InsideIPAddress[:], buf.DecodeBytes(4))
+       m.InsidePort = buf.DecodeUint16()
+       m.Protocol = buf.DecodeUint16()
+       m.Flags = nat_types.NatConfigFlags(buf.DecodeUint8())
+       m.LastHeard = buf.DecodeUint64()
+       m.TotalBytes = buf.DecodeUint64()
+       m.TotalPkts = buf.DecodeUint32()
+       copy(m.ExtHostAddress[:], buf.DecodeBytes(4))
+       m.ExtHostPort = buf.DecodeUint16()
+       copy(m.ExtHostNatAddress[:], buf.DecodeBytes(4))
+       m.ExtHostNatPort = buf.DecodeUint16()
        return nil
 }
 
-// NatDetReverseReply defines message 'nat_det_reverse_reply'.
-type NatDetReverseReply struct {
-       Retval int32               `binapi:"i32,name=retval" json:"retval,omitempty"`
-       InAddr ip_types.IP4Address `binapi:"ip4_address,name=in_addr" json:"in_addr,omitempty"`
+// Nat44UserSessionDump defines message 'nat44_user_session_dump'.
+type Nat44UserSessionDump struct {
+       IPAddress ip_types.IP4Address `binapi:"ip4_address,name=ip_address" json:"ip_address,omitempty"`
+       VrfID     uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
 }
 
-func (m *NatDetReverseReply) Reset()               { *m = NatDetReverseReply{} }
-func (*NatDetReverseReply) GetMessageName() string { return "nat_det_reverse_reply" }
-func (*NatDetReverseReply) GetCrcString() string   { return "34066d48" }
-func (*NatDetReverseReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
+func (m *Nat44UserSessionDump) Reset()               { *m = Nat44UserSessionDump{} }
+func (*Nat44UserSessionDump) GetMessageName() string { return "nat44_user_session_dump" }
+func (*Nat44UserSessionDump) GetCrcString() string   { return "e1899c98" }
+func (*Nat44UserSessionDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
 }
 
-func (m *NatDetReverseReply) Size() (size int) {
+func (m *Nat44UserSessionDump) Size() (size int) {
        if m == nil {
                return 0
        }
-       size += 4     // m.Retval
-       size += 1 * 4 // m.InAddr
+       size += 1 * 4 // m.IPAddress
+       size += 4     // m.VrfID
        return size
 }
-func (m *NatDetReverseReply) Marshal(b []byte) ([]byte, error) {
+func (m *Nat44UserSessionDump) Marshal(b []byte) ([]byte, error) {
        if b == nil {
                b = make([]byte, m.Size())
        }
        buf := codec.NewBuffer(b)
-       buf.EncodeInt32(m.Retval)
-       buf.EncodeBytes(m.InAddr[:], 4)
+       buf.EncodeBytes(m.IPAddress[:], 4)
+       buf.EncodeUint32(m.VrfID)
        return buf.Bytes(), nil
 }
-func (m *NatDetReverseReply) Unmarshal(b []byte) error {
+func (m *Nat44UserSessionDump) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
-       m.Retval = buf.DecodeInt32()
-       copy(m.InAddr[:], buf.DecodeBytes(4))
+       copy(m.IPAddress[:], buf.DecodeBytes(4))
+       m.VrfID = buf.DecodeUint32()
        return nil
 }
 
-// NatDetSessionDetails defines message 'nat_det_session_details'.
-type NatDetSessionDetails struct {
-       InPort  uint16              `binapi:"u16,name=in_port" json:"in_port,omitempty"`
-       ExtAddr ip_types.IP4Address `binapi:"ip4_address,name=ext_addr" json:"ext_addr,omitempty"`
-       ExtPort uint16              `binapi:"u16,name=ext_port" json:"ext_port,omitempty"`
-       OutPort uint16              `binapi:"u16,name=out_port" json:"out_port,omitempty"`
-       State   uint8               `binapi:"u8,name=state" json:"state,omitempty"`
-       Expire  uint32              `binapi:"u32,name=expire" json:"expire,omitempty"`
-}
+// NatControlPing defines message 'nat_control_ping'.
+// Deprecated: the message will be removed in the future versions
+type NatControlPing struct{}
 
-func (m *NatDetSessionDetails) Reset()               { *m = NatDetSessionDetails{} }
-func (*NatDetSessionDetails) GetMessageName() string { return "nat_det_session_details" }
-func (*NatDetSessionDetails) GetCrcString() string   { return "27f3c171" }
-func (*NatDetSessionDetails) GetMessageType() api.MessageType {
-       return api.ReplyMessage
+func (m *NatControlPing) Reset()               { *m = NatControlPing{} }
+func (*NatControlPing) GetMessageName() string { return "nat_control_ping" }
+func (*NatControlPing) GetCrcString() string   { return "51077d14" }
+func (*NatControlPing) GetMessageType() api.MessageType {
+       return api.RequestMessage
 }
 
-func (m *NatDetSessionDetails) Size() (size int) {
+func (m *NatControlPing) Size() (size int) {
        if m == nil {
                return 0
        }
-       size += 2     // m.InPort
-       size += 1 * 4 // m.ExtAddr
-       size += 2     // m.ExtPort
-       size += 2     // m.OutPort
-       size += 1     // m.State
-       size += 4     // m.Expire
        return size
 }
-func (m *NatDetSessionDetails) Marshal(b []byte) ([]byte, error) {
+func (m *NatControlPing) Marshal(b []byte) ([]byte, error) {
        if b == nil {
                b = make([]byte, m.Size())
        }
        buf := codec.NewBuffer(b)
-       buf.EncodeUint16(m.InPort)
-       buf.EncodeBytes(m.ExtAddr[:], 4)
-       buf.EncodeUint16(m.ExtPort)
-       buf.EncodeUint16(m.OutPort)
-       buf.EncodeUint8(m.State)
-       buf.EncodeUint32(m.Expire)
        return buf.Bytes(), nil
 }
-func (m *NatDetSessionDetails) Unmarshal(b []byte) error {
-       buf := codec.NewBuffer(b)
-       m.InPort = buf.DecodeUint16()
-       copy(m.ExtAddr[:], buf.DecodeBytes(4))
-       m.ExtPort = buf.DecodeUint16()
-       m.OutPort = buf.DecodeUint16()
-       m.State = buf.DecodeUint8()
-       m.Expire = buf.DecodeUint32()
+func (m *NatControlPing) Unmarshal(b []byte) error {
        return nil
 }
 
-// NatDetSessionDump defines message 'nat_det_session_dump'.
-type NatDetSessionDump struct {
-       UserAddr ip_types.IP4Address `binapi:"ip4_address,name=user_addr" json:"user_addr,omitempty"`
+// NatControlPingReply defines message 'nat_control_ping_reply'.
+// Deprecated: the message will be removed in the future versions
+type NatControlPingReply struct {
+       Retval      int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       ClientIndex uint32 `binapi:"u32,name=client_index" json:"client_index,omitempty"`
+       VpePID      uint32 `binapi:"u32,name=vpe_pid" json:"vpe_pid,omitempty"`
 }
 
-func (m *NatDetSessionDump) Reset()               { *m = NatDetSessionDump{} }
-func (*NatDetSessionDump) GetMessageName() string { return "nat_det_session_dump" }
-func (*NatDetSessionDump) GetCrcString() string   { return "e45a3af7" }
-func (*NatDetSessionDump) GetMessageType() api.MessageType {
-       return api.RequestMessage
+func (m *NatControlPingReply) Reset()               { *m = NatControlPingReply{} }
+func (*NatControlPingReply) GetMessageName() string { return "nat_control_ping_reply" }
+func (*NatControlPingReply) GetCrcString() string   { return "f6b0b8ca" }
+func (*NatControlPingReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
 }
 
-func (m *NatDetSessionDump) Size() (size int) {
+func (m *NatControlPingReply) Size() (size int) {
        if m == nil {
                return 0
        }
-       size += 1 * 4 // m.UserAddr
+       size += 4 // m.Retval
+       size += 4 // m.ClientIndex
+       size += 4 // m.VpePID
        return size
 }
-func (m *NatDetSessionDump) Marshal(b []byte) ([]byte, error) {
+func (m *NatControlPingReply) Marshal(b []byte) ([]byte, error) {
        if b == nil {
                b = make([]byte, m.Size())
        }
        buf := codec.NewBuffer(b)
-       buf.EncodeBytes(m.UserAddr[:], 4)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.ClientIndex)
+       buf.EncodeUint32(m.VpePID)
        return buf.Bytes(), nil
 }
-func (m *NatDetSessionDump) Unmarshal(b []byte) error {
+func (m *NatControlPingReply) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
-       copy(m.UserAddr[:], buf.DecodeBytes(4))
+       m.Retval = buf.DecodeInt32()
+       m.ClientIndex = buf.DecodeUint32()
+       m.VpePID = buf.DecodeUint32()
        return nil
 }
 
@@ -3906,6 +2789,7 @@ func (m *NatGetMssClampingReply) Unmarshal(b []byte) error {
 }
 
 // NatGetTimeouts defines message 'nat_get_timeouts'.
+// Deprecated: the message will be removed in the future versions
 type NatGetTimeouts struct{}
 
 func (m *NatGetTimeouts) Reset()               { *m = NatGetTimeouts{} }
@@ -3933,6 +2817,7 @@ func (m *NatGetTimeouts) Unmarshal(b []byte) error {
 }
 
 // NatGetTimeoutsReply defines message 'nat_get_timeouts_reply'.
+// Deprecated: the message will be removed in the future versions
 type NatGetTimeoutsReply struct {
        Retval         int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
        UDP            uint32 `binapi:"u32,name=udp" json:"udp,omitempty"`
@@ -4441,6 +3326,7 @@ func (m *NatHaSetListenerReply) Unmarshal(b []byte) error {
 }
 
 // NatIpfixEnableDisable defines message 'nat_ipfix_enable_disable'.
+// Deprecated: the message will be removed in the future versions
 type NatIpfixEnableDisable struct {
        DomainID uint32 `binapi:"u32,name=domain_id" json:"domain_id,omitempty"`
        SrcPort  uint16 `binapi:"u16,name=src_port" json:"src_port,omitempty"`
@@ -4482,6 +3368,7 @@ func (m *NatIpfixEnableDisable) Unmarshal(b []byte) error {
 }
 
 // NatIpfixEnableDisableReply defines message 'nat_ipfix_enable_disable_reply'.
+// Deprecated: the message will be removed in the future versions
 type NatIpfixEnableDisableReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -4603,8 +3490,9 @@ func (m *NatSetAddrAndPortAllocAlgReply) Unmarshal(b []byte) error {
 }
 
 // NatSetLogLevel defines message 'nat_set_log_level'.
+// Deprecated: the message will be removed in the future versions
 type NatSetLogLevel struct {
-       LogLevel NatLogLevel `binapi:"nat_log_level,name=log_level" json:"log_level,omitempty"`
+       LogLevel nat_types.NatLogLevel `binapi:"nat_log_level,name=log_level" json:"log_level,omitempty"`
 }
 
 func (m *NatSetLogLevel) Reset()               { *m = NatSetLogLevel{} }
@@ -4631,11 +3519,12 @@ func (m *NatSetLogLevel) Marshal(b []byte) ([]byte, error) {
 }
 func (m *NatSetLogLevel) Unmarshal(b []byte) error {
        buf := codec.NewBuffer(b)
-       m.LogLevel = NatLogLevel(buf.DecodeUint8())
+       m.LogLevel = nat_types.NatLogLevel(buf.DecodeUint8())
        return nil
 }
 
 // NatSetLogLevelReply defines message 'nat_set_log_level_reply'.
+// Deprecated: the message will be removed in the future versions
 type NatSetLogLevelReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -4739,6 +3628,7 @@ func (m *NatSetMssClampingReply) Unmarshal(b []byte) error {
 }
 
 // NatSetTimeouts defines message 'nat_set_timeouts'.
+// Deprecated: the message will be removed in the future versions
 type NatSetTimeouts struct {
        UDP            uint32 `binapi:"u32,name=udp" json:"udp,omitempty"`
        TCPEstablished uint32 `binapi:"u32,name=tcp_established" json:"tcp_established,omitempty"`
@@ -4784,6 +3674,7 @@ func (m *NatSetTimeouts) Unmarshal(b []byte) error {
 }
 
 // NatSetTimeoutsReply defines message 'nat_set_timeouts_reply'.
+// Deprecated: the message will be removed in the future versions
 type NatSetTimeoutsReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -4883,6 +3774,7 @@ func (m *NatSetWorkersReply) Unmarshal(b []byte) error {
 }
 
 // NatShowConfig defines message 'nat_show_config'.
+// Deprecated: the message will be removed in the future versions
 type NatShowConfig struct{}
 
 func (m *NatShowConfig) Reset()               { *m = NatShowConfig{} }
@@ -4909,7 +3801,146 @@ func (m *NatShowConfig) Unmarshal(b []byte) error {
        return nil
 }
 
+// NatShowConfig2 defines message 'nat_show_config_2'.
+// Deprecated: the message will be removed in the future versions
+type NatShowConfig2 struct{}
+
+func (m *NatShowConfig2) Reset()               { *m = NatShowConfig2{} }
+func (*NatShowConfig2) GetMessageName() string { return "nat_show_config_2" }
+func (*NatShowConfig2) GetCrcString() string   { return "51077d14" }
+func (*NatShowConfig2) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *NatShowConfig2) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *NatShowConfig2) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *NatShowConfig2) Unmarshal(b []byte) error {
+       return nil
+}
+
+// NatShowConfig2Reply defines message 'nat_show_config_2_reply'.
+// Deprecated: the message will be removed in the future versions
+type NatShowConfig2Reply struct {
+       Retval                          int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       StaticMappingOnly               bool   `binapi:"bool,name=static_mapping_only" json:"static_mapping_only,omitempty"`
+       StaticMappingConnectionTracking bool   `binapi:"bool,name=static_mapping_connection_tracking" json:"static_mapping_connection_tracking,omitempty"`
+       Deterministic                   bool   `binapi:"bool,name=deterministic" json:"deterministic,omitempty"`
+       EndpointDependent               bool   `binapi:"bool,name=endpoint_dependent" json:"endpoint_dependent,omitempty"`
+       Out2inDpo                       bool   `binapi:"bool,name=out2in_dpo" json:"out2in_dpo,omitempty"`
+       DsliteCe                        bool   `binapi:"bool,name=dslite_ce" json:"dslite_ce,omitempty"`
+       TranslationBuckets              uint32 `binapi:"u32,name=translation_buckets" json:"translation_buckets,omitempty"`
+       TranslationMemorySize           uint64 `binapi:"u64,name=translation_memory_size" json:"translation_memory_size,omitempty"`
+       UserBuckets                     uint32 `binapi:"u32,name=user_buckets" json:"user_buckets,omitempty"`
+       UserMemorySize                  uint64 `binapi:"u64,name=user_memory_size" json:"user_memory_size,omitempty"`
+       MaxTranslationsPerUser          uint32 `binapi:"u32,name=max_translations_per_user" json:"max_translations_per_user,omitempty"`
+       OutsideVrfID                    uint32 `binapi:"u32,name=outside_vrf_id" json:"outside_vrf_id,omitempty"`
+       InsideVrfID                     uint32 `binapi:"u32,name=inside_vrf_id" json:"inside_vrf_id,omitempty"`
+       Nat64BibBuckets                 uint32 `binapi:"u32,name=nat64_bib_buckets" json:"nat64_bib_buckets,omitempty"`
+       Nat64BibMemorySize              uint64 `binapi:"u64,name=nat64_bib_memory_size" json:"nat64_bib_memory_size,omitempty"`
+       Nat64StBuckets                  uint32 `binapi:"u32,name=nat64_st_buckets" json:"nat64_st_buckets,omitempty"`
+       Nat64StMemorySize               uint64 `binapi:"u64,name=nat64_st_memory_size" json:"nat64_st_memory_size,omitempty"`
+       MaxTranslationsPerThread        uint32 `binapi:"u32,name=max_translations_per_thread" json:"max_translations_per_thread,omitempty"`
+       MaxUsersPerThread               uint32 `binapi:"u32,name=max_users_per_thread" json:"max_users_per_thread,omitempty"`
+}
+
+func (m *NatShowConfig2Reply) Reset()               { *m = NatShowConfig2Reply{} }
+func (*NatShowConfig2Reply) GetMessageName() string { return "nat_show_config_2_reply" }
+func (*NatShowConfig2Reply) GetCrcString() string   { return "0404a5b4" }
+func (*NatShowConfig2Reply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *NatShowConfig2Reply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 1 // m.StaticMappingOnly
+       size += 1 // m.StaticMappingConnectionTracking
+       size += 1 // m.Deterministic
+       size += 1 // m.EndpointDependent
+       size += 1 // m.Out2inDpo
+       size += 1 // m.DsliteCe
+       size += 4 // m.TranslationBuckets
+       size += 8 // m.TranslationMemorySize
+       size += 4 // m.UserBuckets
+       size += 8 // m.UserMemorySize
+       size += 4 // m.MaxTranslationsPerUser
+       size += 4 // m.OutsideVrfID
+       size += 4 // m.InsideVrfID
+       size += 4 // m.Nat64BibBuckets
+       size += 8 // m.Nat64BibMemorySize
+       size += 4 // m.Nat64StBuckets
+       size += 8 // m.Nat64StMemorySize
+       size += 4 // m.MaxTranslationsPerThread
+       size += 4 // m.MaxUsersPerThread
+       return size
+}
+func (m *NatShowConfig2Reply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeBool(m.StaticMappingOnly)
+       buf.EncodeBool(m.StaticMappingConnectionTracking)
+       buf.EncodeBool(m.Deterministic)
+       buf.EncodeBool(m.EndpointDependent)
+       buf.EncodeBool(m.Out2inDpo)
+       buf.EncodeBool(m.DsliteCe)
+       buf.EncodeUint32(m.TranslationBuckets)
+       buf.EncodeUint64(m.TranslationMemorySize)
+       buf.EncodeUint32(m.UserBuckets)
+       buf.EncodeUint64(m.UserMemorySize)
+       buf.EncodeUint32(m.MaxTranslationsPerUser)
+       buf.EncodeUint32(m.OutsideVrfID)
+       buf.EncodeUint32(m.InsideVrfID)
+       buf.EncodeUint32(m.Nat64BibBuckets)
+       buf.EncodeUint64(m.Nat64BibMemorySize)
+       buf.EncodeUint32(m.Nat64StBuckets)
+       buf.EncodeUint64(m.Nat64StMemorySize)
+       buf.EncodeUint32(m.MaxTranslationsPerThread)
+       buf.EncodeUint32(m.MaxUsersPerThread)
+       return buf.Bytes(), nil
+}
+func (m *NatShowConfig2Reply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.StaticMappingOnly = buf.DecodeBool()
+       m.StaticMappingConnectionTracking = buf.DecodeBool()
+       m.Deterministic = buf.DecodeBool()
+       m.EndpointDependent = buf.DecodeBool()
+       m.Out2inDpo = buf.DecodeBool()
+       m.DsliteCe = buf.DecodeBool()
+       m.TranslationBuckets = buf.DecodeUint32()
+       m.TranslationMemorySize = buf.DecodeUint64()
+       m.UserBuckets = buf.DecodeUint32()
+       m.UserMemorySize = buf.DecodeUint64()
+       m.MaxTranslationsPerUser = buf.DecodeUint32()
+       m.OutsideVrfID = buf.DecodeUint32()
+       m.InsideVrfID = buf.DecodeUint32()
+       m.Nat64BibBuckets = buf.DecodeUint32()
+       m.Nat64BibMemorySize = buf.DecodeUint64()
+       m.Nat64StBuckets = buf.DecodeUint32()
+       m.Nat64StMemorySize = buf.DecodeUint64()
+       m.MaxTranslationsPerThread = buf.DecodeUint32()
+       m.MaxUsersPerThread = buf.DecodeUint32()
+       return nil
+}
+
 // NatShowConfigReply defines message 'nat_show_config_reply'.
+// Deprecated: the message will be removed in the future versions
 type NatShowConfigReply struct {
        Retval                          int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
        StaticMappingOnly               bool   `binapi:"bool,name=static_mapping_only" json:"static_mapping_only,omitempty"`
@@ -5078,98 +4109,68 @@ func (m *NatWorkerDump) Unmarshal(b []byte) error {
        return nil
 }
 
-func init() { file_nat_binapi_init() }
-func file_nat_binapi_init() {
-       api.RegisterMessage((*Nat44AddDelAddressRange)(nil), "nat44_add_del_address_range_d4c7568c")
+func init() { file_nat44_ed_binapi_init() }
+func file_nat44_ed_binapi_init() {
+       api.RegisterMessage((*Nat44AddDelAddressRange)(nil), "nat44_add_del_address_range_6f2b8055")
        api.RegisterMessage((*Nat44AddDelAddressRangeReply)(nil), "nat44_add_del_address_range_reply_e8d4e804")
-       api.RegisterMessage((*Nat44AddDelIdentityMapping)(nil), "nat44_add_del_identity_mapping_8e12743f")
+       api.RegisterMessage((*Nat44AddDelIdentityMapping)(nil), "nat44_add_del_identity_mapping_02faaa22")
        api.RegisterMessage((*Nat44AddDelIdentityMappingReply)(nil), "nat44_add_del_identity_mapping_reply_e8d4e804")
-       api.RegisterMessage((*Nat44AddDelInterfaceAddr)(nil), "nat44_add_del_interface_addr_fc835325")
+       api.RegisterMessage((*Nat44AddDelInterfaceAddr)(nil), "nat44_add_del_interface_addr_4aed50c0")
        api.RegisterMessage((*Nat44AddDelInterfaceAddrReply)(nil), "nat44_add_del_interface_addr_reply_e8d4e804")
-       api.RegisterMessage((*Nat44AddDelLbStaticMapping)(nil), "nat44_add_del_lb_static_mapping_53b24611")
+       api.RegisterMessage((*Nat44AddDelLbStaticMapping)(nil), "nat44_add_del_lb_static_mapping_4f68ee9d")
        api.RegisterMessage((*Nat44AddDelLbStaticMappingReply)(nil), "nat44_add_del_lb_static_mapping_reply_e8d4e804")
-       api.RegisterMessage((*Nat44AddDelStaticMapping)(nil), "nat44_add_del_static_mapping_e165e83b")
+       api.RegisterMessage((*Nat44AddDelStaticMapping)(nil), "nat44_add_del_static_mapping_5ae5f03e")
        api.RegisterMessage((*Nat44AddDelStaticMappingReply)(nil), "nat44_add_del_static_mapping_reply_e8d4e804")
-       api.RegisterMessage((*Nat44AddressDetails)(nil), "nat44_address_details_45410ac4")
+       api.RegisterMessage((*Nat44AddDelStaticMappingV2)(nil), "nat44_add_del_static_mapping_v2_5e205f1a")
+       api.RegisterMessage((*Nat44AddDelStaticMappingV2Reply)(nil), "nat44_add_del_static_mapping_v2_reply_e8d4e804")
+       api.RegisterMessage((*Nat44AddressDetails)(nil), "nat44_address_details_0d1beac1")
        api.RegisterMessage((*Nat44AddressDump)(nil), "nat44_address_dump_51077d14")
-       api.RegisterMessage((*Nat44DelSession)(nil), "nat44_del_session_4c49c387")
+       api.RegisterMessage((*Nat44DelSession)(nil), "nat44_del_session_15a5bf8c")
        api.RegisterMessage((*Nat44DelSessionReply)(nil), "nat44_del_session_reply_e8d4e804")
        api.RegisterMessage((*Nat44DelUser)(nil), "nat44_del_user_99a9f998")
        api.RegisterMessage((*Nat44DelUserReply)(nil), "nat44_del_user_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EdPluginEnableDisable)(nil), "nat44_ed_plugin_enable_disable_be17f8dd")
+       api.RegisterMessage((*Nat44EdPluginEnableDisableReply)(nil), "nat44_ed_plugin_enable_disable_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EdSetFqOptions)(nil), "nat44_ed_set_fq_options_2399bd71")
+       api.RegisterMessage((*Nat44EdSetFqOptionsReply)(nil), "nat44_ed_set_fq_options_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EdShowFqOptions)(nil), "nat44_ed_show_fq_options_51077d14")
+       api.RegisterMessage((*Nat44EdShowFqOptionsReply)(nil), "nat44_ed_show_fq_options_reply_7213b545")
        api.RegisterMessage((*Nat44ForwardingEnableDisable)(nil), "nat44_forwarding_enable_disable_b3e225d2")
        api.RegisterMessage((*Nat44ForwardingEnableDisableReply)(nil), "nat44_forwarding_enable_disable_reply_e8d4e804")
        api.RegisterMessage((*Nat44ForwardingIsEnabled)(nil), "nat44_forwarding_is_enabled_51077d14")
        api.RegisterMessage((*Nat44ForwardingIsEnabledReply)(nil), "nat44_forwarding_is_enabled_reply_46924a06")
-       api.RegisterMessage((*Nat44IdentityMappingDetails)(nil), "nat44_identity_mapping_details_36d21351")
+       api.RegisterMessage((*Nat44IdentityMappingDetails)(nil), "nat44_identity_mapping_details_2a52a030")
        api.RegisterMessage((*Nat44IdentityMappingDump)(nil), "nat44_identity_mapping_dump_51077d14")
        api.RegisterMessage((*Nat44InterfaceAddDelFeature)(nil), "nat44_interface_add_del_feature_f3699b83")
        api.RegisterMessage((*Nat44InterfaceAddDelFeatureReply)(nil), "nat44_interface_add_del_feature_reply_e8d4e804")
        api.RegisterMessage((*Nat44InterfaceAddDelOutputFeature)(nil), "nat44_interface_add_del_output_feature_f3699b83")
        api.RegisterMessage((*Nat44InterfaceAddDelOutputFeatureReply)(nil), "nat44_interface_add_del_output_feature_reply_e8d4e804")
-       api.RegisterMessage((*Nat44InterfaceAddrDetails)(nil), "nat44_interface_addr_details_3e687514")
+       api.RegisterMessage((*Nat44InterfaceAddrDetails)(nil), "nat44_interface_addr_details_e4aca9ca")
        api.RegisterMessage((*Nat44InterfaceAddrDump)(nil), "nat44_interface_addr_dump_51077d14")
        api.RegisterMessage((*Nat44InterfaceDetails)(nil), "nat44_interface_details_5d286289")
        api.RegisterMessage((*Nat44InterfaceDump)(nil), "nat44_interface_dump_51077d14")
        api.RegisterMessage((*Nat44InterfaceOutputFeatureDetails)(nil), "nat44_interface_output_feature_details_5d286289")
        api.RegisterMessage((*Nat44InterfaceOutputFeatureDump)(nil), "nat44_interface_output_feature_dump_51077d14")
-       api.RegisterMessage((*Nat44LbStaticMappingAddDelLocal)(nil), "nat44_lb_static_mapping_add_del_local_2910a151")
+       api.RegisterMessage((*Nat44LbStaticMappingAddDelLocal)(nil), "nat44_lb_static_mapping_add_del_local_7ca47547")
        api.RegisterMessage((*Nat44LbStaticMappingAddDelLocalReply)(nil), "nat44_lb_static_mapping_add_del_local_reply_e8d4e804")
-       api.RegisterMessage((*Nat44LbStaticMappingDetails)(nil), "nat44_lb_static_mapping_details_2267b9e8")
+       api.RegisterMessage((*Nat44LbStaticMappingDetails)(nil), "nat44_lb_static_mapping_details_ed5ce876")
        api.RegisterMessage((*Nat44LbStaticMappingDump)(nil), "nat44_lb_static_mapping_dump_51077d14")
+       api.RegisterMessage((*Nat44PluginEnableDisable)(nil), "nat44_plugin_enable_disable_dea0d501")
+       api.RegisterMessage((*Nat44PluginEnableDisableReply)(nil), "nat44_plugin_enable_disable_reply_e8d4e804")
        api.RegisterMessage((*Nat44SessionCleanup)(nil), "nat44_session_cleanup_51077d14")
        api.RegisterMessage((*Nat44SessionCleanupReply)(nil), "nat44_session_cleanup_reply_e8d4e804")
        api.RegisterMessage((*Nat44SetSessionLimit)(nil), "nat44_set_session_limit_8899bbb1")
        api.RegisterMessage((*Nat44SetSessionLimitReply)(nil), "nat44_set_session_limit_reply_e8d4e804")
-       api.RegisterMessage((*Nat44StaticMappingDetails)(nil), "nat44_static_mapping_details_1a433ef7")
+       api.RegisterMessage((*Nat44ShowRunningConfig)(nil), "nat44_show_running_config_51077d14")
+       api.RegisterMessage((*Nat44ShowRunningConfigReply)(nil), "nat44_show_running_config_reply_93d8e267")
+       api.RegisterMessage((*Nat44StaticMappingDetails)(nil), "nat44_static_mapping_details_06cb40b2")
        api.RegisterMessage((*Nat44StaticMappingDump)(nil), "nat44_static_mapping_dump_51077d14")
        api.RegisterMessage((*Nat44UserDetails)(nil), "nat44_user_details_355896c2")
        api.RegisterMessage((*Nat44UserDump)(nil), "nat44_user_dump_51077d14")
-       api.RegisterMessage((*Nat44UserSessionDetails)(nil), "nat44_user_session_details_1965fd69")
+       api.RegisterMessage((*Nat44UserSessionDetails)(nil), "nat44_user_session_details_2cf6e16d")
        api.RegisterMessage((*Nat44UserSessionDump)(nil), "nat44_user_session_dump_e1899c98")
-       api.RegisterMessage((*Nat64AddDelInterface)(nil), "nat64_add_del_interface_f3699b83")
-       api.RegisterMessage((*Nat64AddDelInterfaceAddr)(nil), "nat64_add_del_interface_addr_47d6e753")
-       api.RegisterMessage((*Nat64AddDelInterfaceAddrReply)(nil), "nat64_add_del_interface_addr_reply_e8d4e804")
-       api.RegisterMessage((*Nat64AddDelInterfaceReply)(nil), "nat64_add_del_interface_reply_e8d4e804")
-       api.RegisterMessage((*Nat64AddDelPoolAddrRange)(nil), "nat64_add_del_pool_addr_range_21234ef3")
-       api.RegisterMessage((*Nat64AddDelPoolAddrRangeReply)(nil), "nat64_add_del_pool_addr_range_reply_e8d4e804")
-       api.RegisterMessage((*Nat64AddDelPrefix)(nil), "nat64_add_del_prefix_727b2f4c")
-       api.RegisterMessage((*Nat64AddDelPrefixReply)(nil), "nat64_add_del_prefix_reply_e8d4e804")
-       api.RegisterMessage((*Nat64AddDelStaticBib)(nil), "nat64_add_del_static_bib_90fae58a")
-       api.RegisterMessage((*Nat64AddDelStaticBibReply)(nil), "nat64_add_del_static_bib_reply_e8d4e804")
-       api.RegisterMessage((*Nat64BibDetails)(nil), "nat64_bib_details_62c8541d")
-       api.RegisterMessage((*Nat64BibDump)(nil), "nat64_bib_dump_cfcb6b75")
-       api.RegisterMessage((*Nat64InterfaceDetails)(nil), "nat64_interface_details_5d286289")
-       api.RegisterMessage((*Nat64InterfaceDump)(nil), "nat64_interface_dump_51077d14")
-       api.RegisterMessage((*Nat64PoolAddrDetails)(nil), "nat64_pool_addr_details_9bb99cdb")
-       api.RegisterMessage((*Nat64PoolAddrDump)(nil), "nat64_pool_addr_dump_51077d14")
-       api.RegisterMessage((*Nat64PrefixDetails)(nil), "nat64_prefix_details_20568de3")
-       api.RegisterMessage((*Nat64PrefixDump)(nil), "nat64_prefix_dump_51077d14")
-       api.RegisterMessage((*Nat64StDetails)(nil), "nat64_st_details_c770d620")
-       api.RegisterMessage((*Nat64StDump)(nil), "nat64_st_dump_cfcb6b75")
-       api.RegisterMessage((*Nat66AddDelInterface)(nil), "nat66_add_del_interface_f3699b83")
-       api.RegisterMessage((*Nat66AddDelInterfaceReply)(nil), "nat66_add_del_interface_reply_e8d4e804")
-       api.RegisterMessage((*Nat66AddDelStaticMapping)(nil), "nat66_add_del_static_mapping_fb64e50b")
-       api.RegisterMessage((*Nat66AddDelStaticMappingReply)(nil), "nat66_add_del_static_mapping_reply_e8d4e804")
-       api.RegisterMessage((*Nat66InterfaceDetails)(nil), "nat66_interface_details_5d286289")
-       api.RegisterMessage((*Nat66InterfaceDump)(nil), "nat66_interface_dump_51077d14")
-       api.RegisterMessage((*Nat66StaticMappingDetails)(nil), "nat66_static_mapping_details_5c568448")
-       api.RegisterMessage((*Nat66StaticMappingDump)(nil), "nat66_static_mapping_dump_51077d14")
        api.RegisterMessage((*NatControlPing)(nil), "nat_control_ping_51077d14")
        api.RegisterMessage((*NatControlPingReply)(nil), "nat_control_ping_reply_f6b0b8ca")
-       api.RegisterMessage((*NatDetAddDelMap)(nil), "nat_det_add_del_map_112fde05")
-       api.RegisterMessage((*NatDetAddDelMapReply)(nil), "nat_det_add_del_map_reply_e8d4e804")
-       api.RegisterMessage((*NatDetCloseSessionIn)(nil), "nat_det_close_session_in_0a10ef64")
-       api.RegisterMessage((*NatDetCloseSessionInReply)(nil), "nat_det_close_session_in_reply_e8d4e804")
-       api.RegisterMessage((*NatDetCloseSessionOut)(nil), "nat_det_close_session_out_c1b6cbfb")
-       api.RegisterMessage((*NatDetCloseSessionOutReply)(nil), "nat_det_close_session_out_reply_e8d4e804")
-       api.RegisterMessage((*NatDetForward)(nil), "nat_det_forward_7f8a89cd")
-       api.RegisterMessage((*NatDetForwardReply)(nil), "nat_det_forward_reply_a8ccbdc0")
-       api.RegisterMessage((*NatDetMapDetails)(nil), "nat_det_map_details_88000ee1")
-       api.RegisterMessage((*NatDetMapDump)(nil), "nat_det_map_dump_51077d14")
-       api.RegisterMessage((*NatDetReverse)(nil), "nat_det_reverse_a7573fe1")
-       api.RegisterMessage((*NatDetReverseReply)(nil), "nat_det_reverse_reply_34066d48")
-       api.RegisterMessage((*NatDetSessionDetails)(nil), "nat_det_session_details_27f3c171")
-       api.RegisterMessage((*NatDetSessionDump)(nil), "nat_det_session_dump_e45a3af7")
        api.RegisterMessage((*NatGetAddrAndPortAllocAlg)(nil), "nat_get_addr_and_port_alloc_alg_51077d14")
        api.RegisterMessage((*NatGetAddrAndPortAllocAlgReply)(nil), "nat_get_addr_and_port_alloc_alg_reply_3607a7d0")
        api.RegisterMessage((*NatGetMssClamping)(nil), "nat_get_mss_clamping_51077d14")
@@ -5202,6 +4203,8 @@ func file_nat_binapi_init() {
        api.RegisterMessage((*NatSetWorkers)(nil), "nat_set_workers_da926638")
        api.RegisterMessage((*NatSetWorkersReply)(nil), "nat_set_workers_reply_e8d4e804")
        api.RegisterMessage((*NatShowConfig)(nil), "nat_show_config_51077d14")
+       api.RegisterMessage((*NatShowConfig2)(nil), "nat_show_config_2_51077d14")
+       api.RegisterMessage((*NatShowConfig2Reply)(nil), "nat_show_config_2_reply_0404a5b4")
        api.RegisterMessage((*NatShowConfigReply)(nil), "nat_show_config_reply_7903ef06")
        api.RegisterMessage((*NatWorkerDetails)(nil), "nat_worker_details_84bf06fc")
        api.RegisterMessage((*NatWorkerDump)(nil), "nat_worker_dump_51077d14")
@@ -5220,12 +4223,20 @@ func AllMessages() []api.Message {
                (*Nat44AddDelLbStaticMappingReply)(nil),
                (*Nat44AddDelStaticMapping)(nil),
                (*Nat44AddDelStaticMappingReply)(nil),
+               (*Nat44AddDelStaticMappingV2)(nil),
+               (*Nat44AddDelStaticMappingV2Reply)(nil),
                (*Nat44AddressDetails)(nil),
                (*Nat44AddressDump)(nil),
                (*Nat44DelSession)(nil),
                (*Nat44DelSessionReply)(nil),
                (*Nat44DelUser)(nil),
                (*Nat44DelUserReply)(nil),
+               (*Nat44EdPluginEnableDisable)(nil),
+               (*Nat44EdPluginEnableDisableReply)(nil),
+               (*Nat44EdSetFqOptions)(nil),
+               (*Nat44EdSetFqOptionsReply)(nil),
+               (*Nat44EdShowFqOptions)(nil),
+               (*Nat44EdShowFqOptionsReply)(nil),
                (*Nat44ForwardingEnableDisable)(nil),
                (*Nat44ForwardingEnableDisableReply)(nil),
                (*Nat44ForwardingIsEnabled)(nil),
@@ -5246,60 +4257,22 @@ func AllMessages() []api.Message {
                (*Nat44LbStaticMappingAddDelLocalReply)(nil),
                (*Nat44LbStaticMappingDetails)(nil),
                (*Nat44LbStaticMappingDump)(nil),
+               (*Nat44PluginEnableDisable)(nil),
+               (*Nat44PluginEnableDisableReply)(nil),
                (*Nat44SessionCleanup)(nil),
                (*Nat44SessionCleanupReply)(nil),
                (*Nat44SetSessionLimit)(nil),
                (*Nat44SetSessionLimitReply)(nil),
+               (*Nat44ShowRunningConfig)(nil),
+               (*Nat44ShowRunningConfigReply)(nil),
                (*Nat44StaticMappingDetails)(nil),
                (*Nat44StaticMappingDump)(nil),
                (*Nat44UserDetails)(nil),
                (*Nat44UserDump)(nil),
                (*Nat44UserSessionDetails)(nil),
                (*Nat44UserSessionDump)(nil),
-               (*Nat64AddDelInterface)(nil),
-               (*Nat64AddDelInterfaceAddr)(nil),
-               (*Nat64AddDelInterfaceAddrReply)(nil),
-               (*Nat64AddDelInterfaceReply)(nil),
-               (*Nat64AddDelPoolAddrRange)(nil),
-               (*Nat64AddDelPoolAddrRangeReply)(nil),
-               (*Nat64AddDelPrefix)(nil),
-               (*Nat64AddDelPrefixReply)(nil),
-               (*Nat64AddDelStaticBib)(nil),
-               (*Nat64AddDelStaticBibReply)(nil),
-               (*Nat64BibDetails)(nil),
-               (*Nat64BibDump)(nil),
-               (*Nat64InterfaceDetails)(nil),
-               (*Nat64InterfaceDump)(nil),
-               (*Nat64PoolAddrDetails)(nil),
-               (*Nat64PoolAddrDump)(nil),
-               (*Nat64PrefixDetails)(nil),
-               (*Nat64PrefixDump)(nil),
-               (*Nat64StDetails)(nil),
-               (*Nat64StDump)(nil),
-               (*Nat66AddDelInterface)(nil),
-               (*Nat66AddDelInterfaceReply)(nil),
-               (*Nat66AddDelStaticMapping)(nil),
-               (*Nat66AddDelStaticMappingReply)(nil),
-               (*Nat66InterfaceDetails)(nil),
-               (*Nat66InterfaceDump)(nil),
-               (*Nat66StaticMappingDetails)(nil),
-               (*Nat66StaticMappingDump)(nil),
                (*NatControlPing)(nil),
                (*NatControlPingReply)(nil),
-               (*NatDetAddDelMap)(nil),
-               (*NatDetAddDelMapReply)(nil),
-               (*NatDetCloseSessionIn)(nil),
-               (*NatDetCloseSessionInReply)(nil),
-               (*NatDetCloseSessionOut)(nil),
-               (*NatDetCloseSessionOutReply)(nil),
-               (*NatDetForward)(nil),
-               (*NatDetForwardReply)(nil),
-               (*NatDetMapDetails)(nil),
-               (*NatDetMapDump)(nil),
-               (*NatDetReverse)(nil),
-               (*NatDetReverseReply)(nil),
-               (*NatDetSessionDetails)(nil),
-               (*NatDetSessionDump)(nil),
                (*NatGetAddrAndPortAllocAlg)(nil),
                (*NatGetAddrAndPortAllocAlgReply)(nil),
                (*NatGetMssClamping)(nil),
@@ -5332,6 +4305,8 @@ func AllMessages() []api.Message {
                (*NatSetWorkers)(nil),
                (*NatSetWorkersReply)(nil),
                (*NatShowConfig)(nil),
+               (*NatShowConfig2)(nil),
+               (*NatShowConfig2Reply)(nil),
                (*NatShowConfigReply)(nil),
                (*NatWorkerDetails)(nil),
                (*NatWorkerDump)(nil),
similarity index 64%
rename from binapi/nat/nat_rpc.ba.go
rename to binapi/nat44_ed/nat44_ed_rpc.ba.go
index 9da5e09..6560a27 100644 (file)
@@ -1,6 +1,6 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 
-package nat
+package nat44_ed
 
 import (
        "context"
@@ -11,16 +11,20 @@ import (
        vpe "git.fd.io/govpp.git/binapi/vpe"
 )
 
-// RPCService defines RPC service nat.
+// RPCService defines RPC service nat44_ed.
 type RPCService interface {
        Nat44AddDelAddressRange(ctx context.Context, in *Nat44AddDelAddressRange) (*Nat44AddDelAddressRangeReply, error)
        Nat44AddDelIdentityMapping(ctx context.Context, in *Nat44AddDelIdentityMapping) (*Nat44AddDelIdentityMappingReply, error)
        Nat44AddDelInterfaceAddr(ctx context.Context, in *Nat44AddDelInterfaceAddr) (*Nat44AddDelInterfaceAddrReply, error)
        Nat44AddDelLbStaticMapping(ctx context.Context, in *Nat44AddDelLbStaticMapping) (*Nat44AddDelLbStaticMappingReply, error)
        Nat44AddDelStaticMapping(ctx context.Context, in *Nat44AddDelStaticMapping) (*Nat44AddDelStaticMappingReply, error)
+       Nat44AddDelStaticMappingV2(ctx context.Context, in *Nat44AddDelStaticMappingV2) (*Nat44AddDelStaticMappingV2Reply, error)
        Nat44AddressDump(ctx context.Context, in *Nat44AddressDump) (RPCService_Nat44AddressDumpClient, error)
        Nat44DelSession(ctx context.Context, in *Nat44DelSession) (*Nat44DelSessionReply, error)
        Nat44DelUser(ctx context.Context, in *Nat44DelUser) (*Nat44DelUserReply, error)
+       Nat44EdPluginEnableDisable(ctx context.Context, in *Nat44EdPluginEnableDisable) (*Nat44EdPluginEnableDisableReply, error)
+       Nat44EdSetFqOptions(ctx context.Context, in *Nat44EdSetFqOptions) (*Nat44EdSetFqOptionsReply, error)
+       Nat44EdShowFqOptions(ctx context.Context, in *Nat44EdShowFqOptions) (*Nat44EdShowFqOptionsReply, error)
        Nat44ForwardingEnableDisable(ctx context.Context, in *Nat44ForwardingEnableDisable) (*Nat44ForwardingEnableDisableReply, error)
        Nat44ForwardingIsEnabled(ctx context.Context, in *Nat44ForwardingIsEnabled) (*Nat44ForwardingIsEnabledReply, error)
        Nat44IdentityMappingDump(ctx context.Context, in *Nat44IdentityMappingDump) (RPCService_Nat44IdentityMappingDumpClient, error)
@@ -31,33 +35,14 @@ type RPCService interface {
        Nat44InterfaceOutputFeatureDump(ctx context.Context, in *Nat44InterfaceOutputFeatureDump) (RPCService_Nat44InterfaceOutputFeatureDumpClient, error)
        Nat44LbStaticMappingAddDelLocal(ctx context.Context, in *Nat44LbStaticMappingAddDelLocal) (*Nat44LbStaticMappingAddDelLocalReply, error)
        Nat44LbStaticMappingDump(ctx context.Context, in *Nat44LbStaticMappingDump) (RPCService_Nat44LbStaticMappingDumpClient, error)
+       Nat44PluginEnableDisable(ctx context.Context, in *Nat44PluginEnableDisable) (*Nat44PluginEnableDisableReply, error)
        Nat44SessionCleanup(ctx context.Context, in *Nat44SessionCleanup) (*Nat44SessionCleanupReply, error)
        Nat44SetSessionLimit(ctx context.Context, in *Nat44SetSessionLimit) (*Nat44SetSessionLimitReply, error)
+       Nat44ShowRunningConfig(ctx context.Context, in *Nat44ShowRunningConfig) (*Nat44ShowRunningConfigReply, error)
        Nat44StaticMappingDump(ctx context.Context, in *Nat44StaticMappingDump) (RPCService_Nat44StaticMappingDumpClient, error)
        Nat44UserDump(ctx context.Context, in *Nat44UserDump) (RPCService_Nat44UserDumpClient, error)
        Nat44UserSessionDump(ctx context.Context, in *Nat44UserSessionDump) (RPCService_Nat44UserSessionDumpClient, error)
-       Nat64AddDelInterface(ctx context.Context, in *Nat64AddDelInterface) (*Nat64AddDelInterfaceReply, error)
-       Nat64AddDelInterfaceAddr(ctx context.Context, in *Nat64AddDelInterfaceAddr) (*Nat64AddDelInterfaceAddrReply, error)
-       Nat64AddDelPoolAddrRange(ctx context.Context, in *Nat64AddDelPoolAddrRange) (*Nat64AddDelPoolAddrRangeReply, error)
-       Nat64AddDelPrefix(ctx context.Context, in *Nat64AddDelPrefix) (*Nat64AddDelPrefixReply, error)
-       Nat64AddDelStaticBib(ctx context.Context, in *Nat64AddDelStaticBib) (*Nat64AddDelStaticBibReply, error)
-       Nat64BibDump(ctx context.Context, in *Nat64BibDump) (RPCService_Nat64BibDumpClient, error)
-       Nat64InterfaceDump(ctx context.Context, in *Nat64InterfaceDump) (RPCService_Nat64InterfaceDumpClient, error)
-       Nat64PoolAddrDump(ctx context.Context, in *Nat64PoolAddrDump) (RPCService_Nat64PoolAddrDumpClient, error)
-       Nat64PrefixDump(ctx context.Context, in *Nat64PrefixDump) (RPCService_Nat64PrefixDumpClient, error)
-       Nat64StDump(ctx context.Context, in *Nat64StDump) (RPCService_Nat64StDumpClient, error)
-       Nat66AddDelInterface(ctx context.Context, in *Nat66AddDelInterface) (*Nat66AddDelInterfaceReply, error)
-       Nat66AddDelStaticMapping(ctx context.Context, in *Nat66AddDelStaticMapping) (*Nat66AddDelStaticMappingReply, error)
-       Nat66InterfaceDump(ctx context.Context, in *Nat66InterfaceDump) (RPCService_Nat66InterfaceDumpClient, error)
-       Nat66StaticMappingDump(ctx context.Context, in *Nat66StaticMappingDump) (RPCService_Nat66StaticMappingDumpClient, error)
        NatControlPing(ctx context.Context, in *NatControlPing) (*NatControlPingReply, error)
-       NatDetAddDelMap(ctx context.Context, in *NatDetAddDelMap) (*NatDetAddDelMapReply, error)
-       NatDetCloseSessionIn(ctx context.Context, in *NatDetCloseSessionIn) (*NatDetCloseSessionInReply, error)
-       NatDetCloseSessionOut(ctx context.Context, in *NatDetCloseSessionOut) (*NatDetCloseSessionOutReply, error)
-       NatDetForward(ctx context.Context, in *NatDetForward) (*NatDetForwardReply, error)
-       NatDetMapDump(ctx context.Context, in *NatDetMapDump) (RPCService_NatDetMapDumpClient, error)
-       NatDetReverse(ctx context.Context, in *NatDetReverse) (*NatDetReverseReply, error)
-       NatDetSessionDump(ctx context.Context, in *NatDetSessionDump) (RPCService_NatDetSessionDumpClient, error)
        NatGetAddrAndPortAllocAlg(ctx context.Context, in *NatGetAddrAndPortAllocAlg) (*NatGetAddrAndPortAllocAlgReply, error)
        NatGetMssClamping(ctx context.Context, in *NatGetMssClamping) (*NatGetMssClampingReply, error)
        NatGetTimeouts(ctx context.Context, in *NatGetTimeouts) (*NatGetTimeoutsReply, error)
@@ -74,6 +59,7 @@ type RPCService interface {
        NatSetTimeouts(ctx context.Context, in *NatSetTimeouts) (*NatSetTimeoutsReply, error)
        NatSetWorkers(ctx context.Context, in *NatSetWorkers) (*NatSetWorkersReply, error)
        NatShowConfig(ctx context.Context, in *NatShowConfig) (*NatShowConfigReply, error)
+       NatShowConfig2(ctx context.Context, in *NatShowConfig2) (*NatShowConfig2Reply, error)
        NatWorkerDump(ctx context.Context, in *NatWorkerDump) (RPCService_NatWorkerDumpClient, error)
 }
 
@@ -130,6 +116,15 @@ func (c *serviceClient) Nat44AddDelStaticMapping(ctx context.Context, in *Nat44A
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) Nat44AddDelStaticMappingV2(ctx context.Context, in *Nat44AddDelStaticMappingV2) (*Nat44AddDelStaticMappingV2Reply, error) {
+       out := new(Nat44AddDelStaticMappingV2Reply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) Nat44AddressDump(ctx context.Context, in *Nat44AddressDump) (RPCService_Nat44AddressDumpClient, error) {
        stream, err := c.conn.NewStream(ctx)
        if err != nil {
@@ -187,6 +182,33 @@ func (c *serviceClient) Nat44DelUser(ctx context.Context, in *Nat44DelUser) (*Na
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) Nat44EdPluginEnableDisable(ctx context.Context, in *Nat44EdPluginEnableDisable) (*Nat44EdPluginEnableDisableReply, error) {
+       out := new(Nat44EdPluginEnableDisableReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EdSetFqOptions(ctx context.Context, in *Nat44EdSetFqOptions) (*Nat44EdSetFqOptionsReply, error) {
+       out := new(Nat44EdSetFqOptionsReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EdShowFqOptions(ctx context.Context, in *Nat44EdShowFqOptions) (*Nat44EdShowFqOptionsReply, error) {
+       out := new(Nat44EdShowFqOptionsReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) Nat44ForwardingEnableDisable(ctx context.Context, in *Nat44ForwardingEnableDisable) (*Nat44ForwardingEnableDisableReply, error) {
        out := new(Nat44ForwardingEnableDisableReply)
        err := c.conn.Invoke(ctx, in, out)
@@ -427,6 +449,15 @@ func (c *serviceClient_Nat44LbStaticMappingDumpClient) Recv() (*Nat44LbStaticMap
        }
 }
 
+func (c *serviceClient) Nat44PluginEnableDisable(ctx context.Context, in *Nat44PluginEnableDisable) (*Nat44PluginEnableDisableReply, error) {
+       out := new(Nat44PluginEnableDisableReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) Nat44SessionCleanup(ctx context.Context, in *Nat44SessionCleanup) (*Nat44SessionCleanupReply, error) {
        out := new(Nat44SessionCleanupReply)
        err := c.conn.Invoke(ctx, in, out)
@@ -445,6 +476,15 @@ func (c *serviceClient) Nat44SetSessionLimit(ctx context.Context, in *Nat44SetSe
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) Nat44ShowRunningConfig(ctx context.Context, in *Nat44ShowRunningConfig) (*Nat44ShowRunningConfigReply, error) {
+       out := new(Nat44ShowRunningConfigReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) Nat44StaticMappingDump(ctx context.Context, in *Nat44StaticMappingDump) (RPCService_Nat44StaticMappingDumpClient, error) {
        stream, err := c.conn.NewStream(ctx)
        if err != nil {
@@ -562,342 +602,6 @@ func (c *serviceClient_Nat44UserSessionDumpClient) Recv() (*Nat44UserSessionDeta
        }
 }
 
-func (c *serviceClient) Nat64AddDelInterface(ctx context.Context, in *Nat64AddDelInterface) (*Nat64AddDelInterfaceReply, error) {
-       out := new(Nat64AddDelInterfaceReply)
-       err := c.conn.Invoke(ctx, in, out)
-       if err != nil {
-               return nil, err
-       }
-       return out, api.RetvalToVPPApiError(out.Retval)
-}
-
-func (c *serviceClient) Nat64AddDelInterfaceAddr(ctx context.Context, in *Nat64AddDelInterfaceAddr) (*Nat64AddDelInterfaceAddrReply, error) {
-       out := new(Nat64AddDelInterfaceAddrReply)
-       err := c.conn.Invoke(ctx, in, out)
-       if err != nil {
-               return nil, err
-       }
-       return out, api.RetvalToVPPApiError(out.Retval)
-}
-
-func (c *serviceClient) Nat64AddDelPoolAddrRange(ctx context.Context, in *Nat64AddDelPoolAddrRange) (*Nat64AddDelPoolAddrRangeReply, error) {
-       out := new(Nat64AddDelPoolAddrRangeReply)
-       err := c.conn.Invoke(ctx, in, out)
-       if err != nil {
-               return nil, err
-       }
-       return out, api.RetvalToVPPApiError(out.Retval)
-}
-
-func (c *serviceClient) Nat64AddDelPrefix(ctx context.Context, in *Nat64AddDelPrefix) (*Nat64AddDelPrefixReply, error) {
-       out := new(Nat64AddDelPrefixReply)
-       err := c.conn.Invoke(ctx, in, out)
-       if err != nil {
-               return nil, err
-       }
-       return out, api.RetvalToVPPApiError(out.Retval)
-}
-
-func (c *serviceClient) Nat64AddDelStaticBib(ctx context.Context, in *Nat64AddDelStaticBib) (*Nat64AddDelStaticBibReply, error) {
-       out := new(Nat64AddDelStaticBibReply)
-       err := c.conn.Invoke(ctx, in, out)
-       if err != nil {
-               return nil, err
-       }
-       return out, api.RetvalToVPPApiError(out.Retval)
-}
-
-func (c *serviceClient) Nat64BibDump(ctx context.Context, in *Nat64BibDump) (RPCService_Nat64BibDumpClient, error) {
-       stream, err := c.conn.NewStream(ctx)
-       if err != nil {
-               return nil, err
-       }
-       x := &serviceClient_Nat64BibDumpClient{stream}
-       if err := x.Stream.SendMsg(in); err != nil {
-               return nil, err
-       }
-       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
-               return nil, err
-       }
-       return x, nil
-}
-
-type RPCService_Nat64BibDumpClient interface {
-       Recv() (*Nat64BibDetails, error)
-       api.Stream
-}
-
-type serviceClient_Nat64BibDumpClient struct {
-       api.Stream
-}
-
-func (c *serviceClient_Nat64BibDumpClient) Recv() (*Nat64BibDetails, error) {
-       msg, err := c.Stream.RecvMsg()
-       if err != nil {
-               return nil, err
-       }
-       switch m := msg.(type) {
-       case *Nat64BibDetails:
-               return m, nil
-       case *vpe.ControlPingReply:
-               return nil, io.EOF
-       default:
-               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
-       }
-}
-
-func (c *serviceClient) Nat64InterfaceDump(ctx context.Context, in *Nat64InterfaceDump) (RPCService_Nat64InterfaceDumpClient, error) {
-       stream, err := c.conn.NewStream(ctx)
-       if err != nil {
-               return nil, err
-       }
-       x := &serviceClient_Nat64InterfaceDumpClient{stream}
-       if err := x.Stream.SendMsg(in); err != nil {
-               return nil, err
-       }
-       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
-               return nil, err
-       }
-       return x, nil
-}
-
-type RPCService_Nat64InterfaceDumpClient interface {
-       Recv() (*Nat64InterfaceDetails, error)
-       api.Stream
-}
-
-type serviceClient_Nat64InterfaceDumpClient struct {
-       api.Stream
-}
-
-func (c *serviceClient_Nat64InterfaceDumpClient) Recv() (*Nat64InterfaceDetails, error) {
-       msg, err := c.Stream.RecvMsg()
-       if err != nil {
-               return nil, err
-       }
-       switch m := msg.(type) {
-       case *Nat64InterfaceDetails:
-               return m, nil
-       case *vpe.ControlPingReply:
-               return nil, io.EOF
-       default:
-               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
-       }
-}
-
-func (c *serviceClient) Nat64PoolAddrDump(ctx context.Context, in *Nat64PoolAddrDump) (RPCService_Nat64PoolAddrDumpClient, error) {
-       stream, err := c.conn.NewStream(ctx)
-       if err != nil {
-               return nil, err
-       }
-       x := &serviceClient_Nat64PoolAddrDumpClient{stream}
-       if err := x.Stream.SendMsg(in); err != nil {
-               return nil, err
-       }
-       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
-               return nil, err
-       }
-       return x, nil
-}
-
-type RPCService_Nat64PoolAddrDumpClient interface {
-       Recv() (*Nat64PoolAddrDetails, error)
-       api.Stream
-}
-
-type serviceClient_Nat64PoolAddrDumpClient struct {
-       api.Stream
-}
-
-func (c *serviceClient_Nat64PoolAddrDumpClient) Recv() (*Nat64PoolAddrDetails, error) {
-       msg, err := c.Stream.RecvMsg()
-       if err != nil {
-               return nil, err
-       }
-       switch m := msg.(type) {
-       case *Nat64PoolAddrDetails:
-               return m, nil
-       case *vpe.ControlPingReply:
-               return nil, io.EOF
-       default:
-               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
-       }
-}
-
-func (c *serviceClient) Nat64PrefixDump(ctx context.Context, in *Nat64PrefixDump) (RPCService_Nat64PrefixDumpClient, error) {
-       stream, err := c.conn.NewStream(ctx)
-       if err != nil {
-               return nil, err
-       }
-       x := &serviceClient_Nat64PrefixDumpClient{stream}
-       if err := x.Stream.SendMsg(in); err != nil {
-               return nil, err
-       }
-       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
-               return nil, err
-       }
-       return x, nil
-}
-
-type RPCService_Nat64PrefixDumpClient interface {
-       Recv() (*Nat64PrefixDetails, error)
-       api.Stream
-}
-
-type serviceClient_Nat64PrefixDumpClient struct {
-       api.Stream
-}
-
-func (c *serviceClient_Nat64PrefixDumpClient) Recv() (*Nat64PrefixDetails, error) {
-       msg, err := c.Stream.RecvMsg()
-       if err != nil {
-               return nil, err
-       }
-       switch m := msg.(type) {
-       case *Nat64PrefixDetails:
-               return m, nil
-       case *vpe.ControlPingReply:
-               return nil, io.EOF
-       default:
-               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
-       }
-}
-
-func (c *serviceClient) Nat64StDump(ctx context.Context, in *Nat64StDump) (RPCService_Nat64StDumpClient, error) {
-       stream, err := c.conn.NewStream(ctx)
-       if err != nil {
-               return nil, err
-       }
-       x := &serviceClient_Nat64StDumpClient{stream}
-       if err := x.Stream.SendMsg(in); err != nil {
-               return nil, err
-       }
-       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
-               return nil, err
-       }
-       return x, nil
-}
-
-type RPCService_Nat64StDumpClient interface {
-       Recv() (*Nat64StDetails, error)
-       api.Stream
-}
-
-type serviceClient_Nat64StDumpClient struct {
-       api.Stream
-}
-
-func (c *serviceClient_Nat64StDumpClient) Recv() (*Nat64StDetails, error) {
-       msg, err := c.Stream.RecvMsg()
-       if err != nil {
-               return nil, err
-       }
-       switch m := msg.(type) {
-       case *Nat64StDetails:
-               return m, nil
-       case *vpe.ControlPingReply:
-               return nil, io.EOF
-       default:
-               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
-       }
-}
-
-func (c *serviceClient) Nat66AddDelInterface(ctx context.Context, in *Nat66AddDelInterface) (*Nat66AddDelInterfaceReply, error) {
-       out := new(Nat66AddDelInterfaceReply)
-       err := c.conn.Invoke(ctx, in, out)
-       if err != nil {
-               return nil, err
-       }
-       return out, api.RetvalToVPPApiError(out.Retval)
-}
-
-func (c *serviceClient) Nat66AddDelStaticMapping(ctx context.Context, in *Nat66AddDelStaticMapping) (*Nat66AddDelStaticMappingReply, error) {
-       out := new(Nat66AddDelStaticMappingReply)
-       err := c.conn.Invoke(ctx, in, out)
-       if err != nil {
-               return nil, err
-       }
-       return out, api.RetvalToVPPApiError(out.Retval)
-}
-
-func (c *serviceClient) Nat66InterfaceDump(ctx context.Context, in *Nat66InterfaceDump) (RPCService_Nat66InterfaceDumpClient, error) {
-       stream, err := c.conn.NewStream(ctx)
-       if err != nil {
-               return nil, err
-       }
-       x := &serviceClient_Nat66InterfaceDumpClient{stream}
-       if err := x.Stream.SendMsg(in); err != nil {
-               return nil, err
-       }
-       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
-               return nil, err
-       }
-       return x, nil
-}
-
-type RPCService_Nat66InterfaceDumpClient interface {
-       Recv() (*Nat66InterfaceDetails, error)
-       api.Stream
-}
-
-type serviceClient_Nat66InterfaceDumpClient struct {
-       api.Stream
-}
-
-func (c *serviceClient_Nat66InterfaceDumpClient) Recv() (*Nat66InterfaceDetails, error) {
-       msg, err := c.Stream.RecvMsg()
-       if err != nil {
-               return nil, err
-       }
-       switch m := msg.(type) {
-       case *Nat66InterfaceDetails:
-               return m, nil
-       case *vpe.ControlPingReply:
-               return nil, io.EOF
-       default:
-               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
-       }
-}
-
-func (c *serviceClient) Nat66StaticMappingDump(ctx context.Context, in *Nat66StaticMappingDump) (RPCService_Nat66StaticMappingDumpClient, error) {
-       stream, err := c.conn.NewStream(ctx)
-       if err != nil {
-               return nil, err
-       }
-       x := &serviceClient_Nat66StaticMappingDumpClient{stream}
-       if err := x.Stream.SendMsg(in); err != nil {
-               return nil, err
-       }
-       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
-               return nil, err
-       }
-       return x, nil
-}
-
-type RPCService_Nat66StaticMappingDumpClient interface {
-       Recv() (*Nat66StaticMappingDetails, error)
-       api.Stream
-}
-
-type serviceClient_Nat66StaticMappingDumpClient struct {
-       api.Stream
-}
-
-func (c *serviceClient_Nat66StaticMappingDumpClient) Recv() (*Nat66StaticMappingDetails, error) {
-       msg, err := c.Stream.RecvMsg()
-       if err != nil {
-               return nil, err
-       }
-       switch m := msg.(type) {
-       case *Nat66StaticMappingDetails:
-               return m, nil
-       case *vpe.ControlPingReply:
-               return nil, io.EOF
-       default:
-               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
-       }
-}
-
 func (c *serviceClient) NatControlPing(ctx context.Context, in *NatControlPing) (*NatControlPingReply, error) {
        out := new(NatControlPingReply)
        err := c.conn.Invoke(ctx, in, out)
@@ -907,129 +611,6 @@ func (c *serviceClient) NatControlPing(ctx context.Context, in *NatControlPing)
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
-func (c *serviceClient) NatDetAddDelMap(ctx context.Context, in *NatDetAddDelMap) (*NatDetAddDelMapReply, error) {
-       out := new(NatDetAddDelMapReply)
-       err := c.conn.Invoke(ctx, in, out)
-       if err != nil {
-               return nil, err
-       }
-       return out, api.RetvalToVPPApiError(out.Retval)
-}
-
-func (c *serviceClient) NatDetCloseSessionIn(ctx context.Context, in *NatDetCloseSessionIn) (*NatDetCloseSessionInReply, error) {
-       out := new(NatDetCloseSessionInReply)
-       err := c.conn.Invoke(ctx, in, out)
-       if err != nil {
-               return nil, err
-       }
-       return out, api.RetvalToVPPApiError(out.Retval)
-}
-
-func (c *serviceClient) NatDetCloseSessionOut(ctx context.Context, in *NatDetCloseSessionOut) (*NatDetCloseSessionOutReply, error) {
-       out := new(NatDetCloseSessionOutReply)
-       err := c.conn.Invoke(ctx, in, out)
-       if err != nil {
-               return nil, err
-       }
-       return out, api.RetvalToVPPApiError(out.Retval)
-}
-
-func (c *serviceClient) NatDetForward(ctx context.Context, in *NatDetForward) (*NatDetForwardReply, error) {
-       out := new(NatDetForwardReply)
-       err := c.conn.Invoke(ctx, in, out)
-       if err != nil {
-               return nil, err
-       }
-       return out, api.RetvalToVPPApiError(out.Retval)
-}
-
-func (c *serviceClient) NatDetMapDump(ctx context.Context, in *NatDetMapDump) (RPCService_NatDetMapDumpClient, error) {
-       stream, err := c.conn.NewStream(ctx)
-       if err != nil {
-               return nil, err
-       }
-       x := &serviceClient_NatDetMapDumpClient{stream}
-       if err := x.Stream.SendMsg(in); err != nil {
-               return nil, err
-       }
-       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
-               return nil, err
-       }
-       return x, nil
-}
-
-type RPCService_NatDetMapDumpClient interface {
-       Recv() (*NatDetMapDetails, error)
-       api.Stream
-}
-
-type serviceClient_NatDetMapDumpClient struct {
-       api.Stream
-}
-
-func (c *serviceClient_NatDetMapDumpClient) Recv() (*NatDetMapDetails, error) {
-       msg, err := c.Stream.RecvMsg()
-       if err != nil {
-               return nil, err
-       }
-       switch m := msg.(type) {
-       case *NatDetMapDetails:
-               return m, nil
-       case *vpe.ControlPingReply:
-               return nil, io.EOF
-       default:
-               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
-       }
-}
-
-func (c *serviceClient) NatDetReverse(ctx context.Context, in *NatDetReverse) (*NatDetReverseReply, error) {
-       out := new(NatDetReverseReply)
-       err := c.conn.Invoke(ctx, in, out)
-       if err != nil {
-               return nil, err
-       }
-       return out, api.RetvalToVPPApiError(out.Retval)
-}
-
-func (c *serviceClient) NatDetSessionDump(ctx context.Context, in *NatDetSessionDump) (RPCService_NatDetSessionDumpClient, error) {
-       stream, err := c.conn.NewStream(ctx)
-       if err != nil {
-               return nil, err
-       }
-       x := &serviceClient_NatDetSessionDumpClient{stream}
-       if err := x.Stream.SendMsg(in); err != nil {
-               return nil, err
-       }
-       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
-               return nil, err
-       }
-       return x, nil
-}
-
-type RPCService_NatDetSessionDumpClient interface {
-       Recv() (*NatDetSessionDetails, error)
-       api.Stream
-}
-
-type serviceClient_NatDetSessionDumpClient struct {
-       api.Stream
-}
-
-func (c *serviceClient_NatDetSessionDumpClient) Recv() (*NatDetSessionDetails, error) {
-       msg, err := c.Stream.RecvMsg()
-       if err != nil {
-               return nil, err
-       }
-       switch m := msg.(type) {
-       case *NatDetSessionDetails:
-               return m, nil
-       case *vpe.ControlPingReply:
-               return nil, io.EOF
-       default:
-               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
-       }
-}
-
 func (c *serviceClient) NatGetAddrAndPortAllocAlg(ctx context.Context, in *NatGetAddrAndPortAllocAlg) (*NatGetAddrAndPortAllocAlgReply, error) {
        out := new(NatGetAddrAndPortAllocAlgReply)
        err := c.conn.Invoke(ctx, in, out)
@@ -1174,6 +755,15 @@ func (c *serviceClient) NatShowConfig(ctx context.Context, in *NatShowConfig) (*
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) NatShowConfig2(ctx context.Context, in *NatShowConfig2) (*NatShowConfig2Reply, error) {
+       out := new(NatShowConfig2Reply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) NatWorkerDump(ctx context.Context, in *NatWorkerDump) (RPCService_NatWorkerDumpClient, error) {
        stream, err := c.conn.NewStream(ctx)
        if err != nil {
diff --git a/binapi/nat44_ei/nat44_ei.ba.go b/binapi/nat44_ei/nat44_ei.ba.go
new file mode 100644 (file)
index 0000000..d1faa82
--- /dev/null
@@ -0,0 +1,3170 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/nat44_ei.api.json
+
+// Package nat44_ei contains generated bindings for API file nat44_ei.api.
+//
+// Contents:
+//   1 enum
+//  73 messages
+//
+package nat44_ei
+
+import (
+       "strconv"
+
+       api "git.fd.io/govpp.git/api"
+       interface_types "git.fd.io/govpp.git/binapi/interface_types"
+       ip_types "git.fd.io/govpp.git/binapi/ip_types"
+       nat_types "git.fd.io/govpp.git/binapi/nat_types"
+       codec "git.fd.io/govpp.git/codec"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+const (
+       APIFile    = "nat44_ei"
+       APIVersion = "1.1.1"
+       VersionCrc = 0x62d113ee
+)
+
+// Nat44EiConfigFlags defines enum 'nat44_ei_config_flags'.
+type Nat44EiConfigFlags uint8
+
+const (
+       NAT44_EI_NONE                Nat44EiConfigFlags = 0
+       NAT44_EI_STATIC_MAPPING_ONLY Nat44EiConfigFlags = 1
+       NAT44_EI_CONNECTION_TRACKING Nat44EiConfigFlags = 2
+       NAT44_EI_OUT2IN_DPO          Nat44EiConfigFlags = 4
+       NAT44_EI_ADDR_ONLY_MAPPING   Nat44EiConfigFlags = 8
+       NAT44_EI_IF_INSIDE           Nat44EiConfigFlags = 16
+       NAT44_EI_IF_OUTSIDE          Nat44EiConfigFlags = 32
+       NAT44_EI_STATIC_MAPPING      Nat44EiConfigFlags = 64
+)
+
+var (
+       Nat44EiConfigFlags_name = map[uint8]string{
+               0:  "NAT44_EI_NONE",
+               1:  "NAT44_EI_STATIC_MAPPING_ONLY",
+               2:  "NAT44_EI_CONNECTION_TRACKING",
+               4:  "NAT44_EI_OUT2IN_DPO",
+               8:  "NAT44_EI_ADDR_ONLY_MAPPING",
+               16: "NAT44_EI_IF_INSIDE",
+               32: "NAT44_EI_IF_OUTSIDE",
+               64: "NAT44_EI_STATIC_MAPPING",
+       }
+       Nat44EiConfigFlags_value = map[string]uint8{
+               "NAT44_EI_NONE":                0,
+               "NAT44_EI_STATIC_MAPPING_ONLY": 1,
+               "NAT44_EI_CONNECTION_TRACKING": 2,
+               "NAT44_EI_OUT2IN_DPO":          4,
+               "NAT44_EI_ADDR_ONLY_MAPPING":   8,
+               "NAT44_EI_IF_INSIDE":           16,
+               "NAT44_EI_IF_OUTSIDE":          32,
+               "NAT44_EI_STATIC_MAPPING":      64,
+       }
+)
+
+func (x Nat44EiConfigFlags) String() string {
+       s, ok := Nat44EiConfigFlags_name[uint8(x)]
+       if ok {
+               return s
+       }
+       str := func(n uint8) string {
+               s, ok := Nat44EiConfigFlags_name[uint8(n)]
+               if ok {
+                       return s
+               }
+               return "Nat44EiConfigFlags(" + strconv.Itoa(int(n)) + ")"
+       }
+       for i := uint8(0); i <= 8; i++ {
+               val := uint8(x)
+               if val&(1<<i) != 0 {
+                       if s != "" {
+                               s += "|"
+                       }
+                       s += str(1 << i)
+               }
+       }
+       if s == "" {
+               return str(uint8(x))
+       }
+       return s
+}
+
+// Nat44EiAddDelAddressRange defines message 'nat44_ei_add_del_address_range'.
+// InProgress: the message form may change in the future versions
+type Nat44EiAddDelAddressRange struct {
+       FirstIPAddress ip_types.IP4Address `binapi:"ip4_address,name=first_ip_address" json:"first_ip_address,omitempty"`
+       LastIPAddress  ip_types.IP4Address `binapi:"ip4_address,name=last_ip_address" json:"last_ip_address,omitempty"`
+       VrfID          uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+       IsAdd          bool                `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+}
+
+func (m *Nat44EiAddDelAddressRange) Reset()               { *m = Nat44EiAddDelAddressRange{} }
+func (*Nat44EiAddDelAddressRange) GetMessageName() string { return "nat44_ei_add_del_address_range" }
+func (*Nat44EiAddDelAddressRange) GetCrcString() string   { return "35f21abc" }
+func (*Nat44EiAddDelAddressRange) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiAddDelAddressRange) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4 // m.FirstIPAddress
+       size += 1 * 4 // m.LastIPAddress
+       size += 4     // m.VrfID
+       size += 1     // m.IsAdd
+       return size
+}
+func (m *Nat44EiAddDelAddressRange) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.FirstIPAddress[:], 4)
+       buf.EncodeBytes(m.LastIPAddress[:], 4)
+       buf.EncodeUint32(m.VrfID)
+       buf.EncodeBool(m.IsAdd)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiAddDelAddressRange) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.FirstIPAddress[:], buf.DecodeBytes(4))
+       copy(m.LastIPAddress[:], buf.DecodeBytes(4))
+       m.VrfID = buf.DecodeUint32()
+       m.IsAdd = buf.DecodeBool()
+       return nil
+}
+
+// Nat44EiAddDelAddressRangeReply defines message 'nat44_ei_add_del_address_range_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44EiAddDelAddressRangeReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EiAddDelAddressRangeReply) Reset() { *m = Nat44EiAddDelAddressRangeReply{} }
+func (*Nat44EiAddDelAddressRangeReply) GetMessageName() string {
+       return "nat44_ei_add_del_address_range_reply"
+}
+func (*Nat44EiAddDelAddressRangeReply) GetCrcString() string { return "e8d4e804" }
+func (*Nat44EiAddDelAddressRangeReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiAddDelAddressRangeReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EiAddDelAddressRangeReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiAddDelAddressRangeReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EiAddDelIdentityMapping defines message 'nat44_ei_add_del_identity_mapping'.
+// Deprecated: the message will be removed in the future versions
+type Nat44EiAddDelIdentityMapping struct {
+       IsAdd     bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       Flags     Nat44EiConfigFlags             `binapi:"nat44_ei_config_flags,name=flags" json:"flags,omitempty"`
+       IPAddress ip_types.IP4Address            `binapi:"ip4_address,name=ip_address" json:"ip_address,omitempty"`
+       Protocol  uint8                          `binapi:"u8,name=protocol" json:"protocol,omitempty"`
+       Port      uint16                         `binapi:"u16,name=port" json:"port,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       VrfID     uint32                         `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+       Tag       string                         `binapi:"string[64],name=tag" json:"tag,omitempty"`
+}
+
+func (m *Nat44EiAddDelIdentityMapping) Reset() { *m = Nat44EiAddDelIdentityMapping{} }
+func (*Nat44EiAddDelIdentityMapping) GetMessageName() string {
+       return "nat44_ei_add_del_identity_mapping"
+}
+func (*Nat44EiAddDelIdentityMapping) GetCrcString() string { return "cb8606b9" }
+func (*Nat44EiAddDelIdentityMapping) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiAddDelIdentityMapping) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1     // m.IsAdd
+       size += 1     // m.Flags
+       size += 1 * 4 // m.IPAddress
+       size += 1     // m.Protocol
+       size += 2     // m.Port
+       size += 4     // m.SwIfIndex
+       size += 4     // m.VrfID
+       size += 64    // m.Tag
+       return size
+}
+func (m *Nat44EiAddDelIdentityMapping) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsAdd)
+       buf.EncodeUint8(uint8(m.Flags))
+       buf.EncodeBytes(m.IPAddress[:], 4)
+       buf.EncodeUint8(m.Protocol)
+       buf.EncodeUint16(m.Port)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint32(m.VrfID)
+       buf.EncodeString(m.Tag, 64)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiAddDelIdentityMapping) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeBool()
+       m.Flags = Nat44EiConfigFlags(buf.DecodeUint8())
+       copy(m.IPAddress[:], buf.DecodeBytes(4))
+       m.Protocol = buf.DecodeUint8()
+       m.Port = buf.DecodeUint16()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.VrfID = buf.DecodeUint32()
+       m.Tag = buf.DecodeString(64)
+       return nil
+}
+
+// Nat44EiAddDelIdentityMappingReply defines message 'nat44_ei_add_del_identity_mapping_reply'.
+// Deprecated: the message will be removed in the future versions
+type Nat44EiAddDelIdentityMappingReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EiAddDelIdentityMappingReply) Reset() { *m = Nat44EiAddDelIdentityMappingReply{} }
+func (*Nat44EiAddDelIdentityMappingReply) GetMessageName() string {
+       return "nat44_ei_add_del_identity_mapping_reply"
+}
+func (*Nat44EiAddDelIdentityMappingReply) GetCrcString() string { return "e8d4e804" }
+func (*Nat44EiAddDelIdentityMappingReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiAddDelIdentityMappingReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EiAddDelIdentityMappingReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiAddDelIdentityMappingReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EiAddDelInterfaceAddr defines message 'nat44_ei_add_del_interface_addr'.
+// Deprecated: the message will be removed in the future versions
+type Nat44EiAddDelInterfaceAddr struct {
+       IsAdd     bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       Flags     Nat44EiConfigFlags             `binapi:"nat44_ei_config_flags,name=flags" json:"flags,omitempty"`
+}
+
+func (m *Nat44EiAddDelInterfaceAddr) Reset()               { *m = Nat44EiAddDelInterfaceAddr{} }
+func (*Nat44EiAddDelInterfaceAddr) GetMessageName() string { return "nat44_ei_add_del_interface_addr" }
+func (*Nat44EiAddDelInterfaceAddr) GetCrcString() string   { return "883abbcc" }
+func (*Nat44EiAddDelInterfaceAddr) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiAddDelInterfaceAddr) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.IsAdd
+       size += 4 // m.SwIfIndex
+       size += 1 // m.Flags
+       return size
+}
+func (m *Nat44EiAddDelInterfaceAddr) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsAdd)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint8(uint8(m.Flags))
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiAddDelInterfaceAddr) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeBool()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Flags = Nat44EiConfigFlags(buf.DecodeUint8())
+       return nil
+}
+
+// Nat44EiAddDelInterfaceAddrReply defines message 'nat44_ei_add_del_interface_addr_reply'.
+// Deprecated: the message will be removed in the future versions
+type Nat44EiAddDelInterfaceAddrReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EiAddDelInterfaceAddrReply) Reset() { *m = Nat44EiAddDelInterfaceAddrReply{} }
+func (*Nat44EiAddDelInterfaceAddrReply) GetMessageName() string {
+       return "nat44_ei_add_del_interface_addr_reply"
+}
+func (*Nat44EiAddDelInterfaceAddrReply) GetCrcString() string { return "e8d4e804" }
+func (*Nat44EiAddDelInterfaceAddrReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiAddDelInterfaceAddrReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EiAddDelInterfaceAddrReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiAddDelInterfaceAddrReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EiAddDelStaticMapping defines message 'nat44_ei_add_del_static_mapping'.
+// InProgress: the message form may change in the future versions
+type Nat44EiAddDelStaticMapping struct {
+       IsAdd             bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       Flags             Nat44EiConfigFlags             `binapi:"nat44_ei_config_flags,name=flags" json:"flags,omitempty"`
+       LocalIPAddress    ip_types.IP4Address            `binapi:"ip4_address,name=local_ip_address" json:"local_ip_address,omitempty"`
+       ExternalIPAddress ip_types.IP4Address            `binapi:"ip4_address,name=external_ip_address" json:"external_ip_address,omitempty"`
+       Protocol          uint8                          `binapi:"u8,name=protocol" json:"protocol,omitempty"`
+       LocalPort         uint16                         `binapi:"u16,name=local_port" json:"local_port,omitempty"`
+       ExternalPort      uint16                         `binapi:"u16,name=external_port" json:"external_port,omitempty"`
+       ExternalSwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=external_sw_if_index" json:"external_sw_if_index,omitempty"`
+       VrfID             uint32                         `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+       Tag               string                         `binapi:"string[64],name=tag" json:"tag,omitempty"`
+}
+
+func (m *Nat44EiAddDelStaticMapping) Reset()               { *m = Nat44EiAddDelStaticMapping{} }
+func (*Nat44EiAddDelStaticMapping) GetMessageName() string { return "nat44_ei_add_del_static_mapping" }
+func (*Nat44EiAddDelStaticMapping) GetCrcString() string   { return "b404b7fe" }
+func (*Nat44EiAddDelStaticMapping) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiAddDelStaticMapping) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1     // m.IsAdd
+       size += 1     // m.Flags
+       size += 1 * 4 // m.LocalIPAddress
+       size += 1 * 4 // m.ExternalIPAddress
+       size += 1     // m.Protocol
+       size += 2     // m.LocalPort
+       size += 2     // m.ExternalPort
+       size += 4     // m.ExternalSwIfIndex
+       size += 4     // m.VrfID
+       size += 64    // m.Tag
+       return size
+}
+func (m *Nat44EiAddDelStaticMapping) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsAdd)
+       buf.EncodeUint8(uint8(m.Flags))
+       buf.EncodeBytes(m.LocalIPAddress[:], 4)
+       buf.EncodeBytes(m.ExternalIPAddress[:], 4)
+       buf.EncodeUint8(m.Protocol)
+       buf.EncodeUint16(m.LocalPort)
+       buf.EncodeUint16(m.ExternalPort)
+       buf.EncodeUint32(uint32(m.ExternalSwIfIndex))
+       buf.EncodeUint32(m.VrfID)
+       buf.EncodeString(m.Tag, 64)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiAddDelStaticMapping) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeBool()
+       m.Flags = Nat44EiConfigFlags(buf.DecodeUint8())
+       copy(m.LocalIPAddress[:], buf.DecodeBytes(4))
+       copy(m.ExternalIPAddress[:], buf.DecodeBytes(4))
+       m.Protocol = buf.DecodeUint8()
+       m.LocalPort = buf.DecodeUint16()
+       m.ExternalPort = buf.DecodeUint16()
+       m.ExternalSwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.VrfID = buf.DecodeUint32()
+       m.Tag = buf.DecodeString(64)
+       return nil
+}
+
+// Nat44EiAddDelStaticMappingReply defines message 'nat44_ei_add_del_static_mapping_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44EiAddDelStaticMappingReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EiAddDelStaticMappingReply) Reset() { *m = Nat44EiAddDelStaticMappingReply{} }
+func (*Nat44EiAddDelStaticMappingReply) GetMessageName() string {
+       return "nat44_ei_add_del_static_mapping_reply"
+}
+func (*Nat44EiAddDelStaticMappingReply) GetCrcString() string { return "e8d4e804" }
+func (*Nat44EiAddDelStaticMappingReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiAddDelStaticMappingReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EiAddDelStaticMappingReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiAddDelStaticMappingReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EiAddressDetails defines message 'nat44_ei_address_details'.
+// InProgress: the message form may change in the future versions
+type Nat44EiAddressDetails struct {
+       IPAddress ip_types.IP4Address `binapi:"ip4_address,name=ip_address" json:"ip_address,omitempty"`
+       VrfID     uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+}
+
+func (m *Nat44EiAddressDetails) Reset()               { *m = Nat44EiAddressDetails{} }
+func (*Nat44EiAddressDetails) GetMessageName() string { return "nat44_ei_address_details" }
+func (*Nat44EiAddressDetails) GetCrcString() string   { return "318f1202" }
+func (*Nat44EiAddressDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiAddressDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4 // m.IPAddress
+       size += 4     // m.VrfID
+       return size
+}
+func (m *Nat44EiAddressDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.IPAddress[:], 4)
+       buf.EncodeUint32(m.VrfID)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiAddressDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.IPAddress[:], buf.DecodeBytes(4))
+       m.VrfID = buf.DecodeUint32()
+       return nil
+}
+
+// Nat44EiAddressDump defines message 'nat44_ei_address_dump'.
+// InProgress: the message form may change in the future versions
+type Nat44EiAddressDump struct{}
+
+func (m *Nat44EiAddressDump) Reset()               { *m = Nat44EiAddressDump{} }
+func (*Nat44EiAddressDump) GetMessageName() string { return "nat44_ei_address_dump" }
+func (*Nat44EiAddressDump) GetCrcString() string   { return "51077d14" }
+func (*Nat44EiAddressDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiAddressDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat44EiAddressDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiAddressDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Nat44EiDelSession defines message 'nat44_ei_del_session'.
+// InProgress: the message form may change in the future versions
+type Nat44EiDelSession struct {
+       Address        ip_types.IP4Address `binapi:"ip4_address,name=address" json:"address,omitempty"`
+       Protocol       uint8               `binapi:"u8,name=protocol" json:"protocol,omitempty"`
+       Port           uint16              `binapi:"u16,name=port" json:"port,omitempty"`
+       VrfID          uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+       Flags          Nat44EiConfigFlags  `binapi:"nat44_ei_config_flags,name=flags" json:"flags,omitempty"`
+       ExtHostAddress ip_types.IP4Address `binapi:"ip4_address,name=ext_host_address" json:"ext_host_address,omitempty"`
+       ExtHostPort    uint16              `binapi:"u16,name=ext_host_port" json:"ext_host_port,omitempty"`
+}
+
+func (m *Nat44EiDelSession) Reset()               { *m = Nat44EiDelSession{} }
+func (*Nat44EiDelSession) GetMessageName() string { return "nat44_ei_del_session" }
+func (*Nat44EiDelSession) GetCrcString() string   { return "74969ffe" }
+func (*Nat44EiDelSession) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiDelSession) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4 // m.Address
+       size += 1     // m.Protocol
+       size += 2     // m.Port
+       size += 4     // m.VrfID
+       size += 1     // m.Flags
+       size += 1 * 4 // m.ExtHostAddress
+       size += 2     // m.ExtHostPort
+       return size
+}
+func (m *Nat44EiDelSession) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.Address[:], 4)
+       buf.EncodeUint8(m.Protocol)
+       buf.EncodeUint16(m.Port)
+       buf.EncodeUint32(m.VrfID)
+       buf.EncodeUint8(uint8(m.Flags))
+       buf.EncodeBytes(m.ExtHostAddress[:], 4)
+       buf.EncodeUint16(m.ExtHostPort)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiDelSession) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.Address[:], buf.DecodeBytes(4))
+       m.Protocol = buf.DecodeUint8()
+       m.Port = buf.DecodeUint16()
+       m.VrfID = buf.DecodeUint32()
+       m.Flags = Nat44EiConfigFlags(buf.DecodeUint8())
+       copy(m.ExtHostAddress[:], buf.DecodeBytes(4))
+       m.ExtHostPort = buf.DecodeUint16()
+       return nil
+}
+
+// Nat44EiDelSessionReply defines message 'nat44_ei_del_session_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44EiDelSessionReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EiDelSessionReply) Reset()               { *m = Nat44EiDelSessionReply{} }
+func (*Nat44EiDelSessionReply) GetMessageName() string { return "nat44_ei_del_session_reply" }
+func (*Nat44EiDelSessionReply) GetCrcString() string   { return "e8d4e804" }
+func (*Nat44EiDelSessionReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiDelSessionReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EiDelSessionReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiDelSessionReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EiDelUser defines message 'nat44_ei_del_user'.
+// InProgress: the message form may change in the future versions
+type Nat44EiDelUser struct {
+       IPAddress ip_types.IP4Address `binapi:"ip4_address,name=ip_address" json:"ip_address,omitempty"`
+       FibIndex  uint32              `binapi:"u32,name=fib_index" json:"fib_index,omitempty"`
+}
+
+func (m *Nat44EiDelUser) Reset()               { *m = Nat44EiDelUser{} }
+func (*Nat44EiDelUser) GetMessageName() string { return "nat44_ei_del_user" }
+func (*Nat44EiDelUser) GetCrcString() string   { return "99a9f998" }
+func (*Nat44EiDelUser) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiDelUser) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4 // m.IPAddress
+       size += 4     // m.FibIndex
+       return size
+}
+func (m *Nat44EiDelUser) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.IPAddress[:], 4)
+       buf.EncodeUint32(m.FibIndex)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiDelUser) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.IPAddress[:], buf.DecodeBytes(4))
+       m.FibIndex = buf.DecodeUint32()
+       return nil
+}
+
+// Nat44EiDelUserReply defines message 'nat44_ei_del_user_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44EiDelUserReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EiDelUserReply) Reset()               { *m = Nat44EiDelUserReply{} }
+func (*Nat44EiDelUserReply) GetMessageName() string { return "nat44_ei_del_user_reply" }
+func (*Nat44EiDelUserReply) GetCrcString() string   { return "e8d4e804" }
+func (*Nat44EiDelUserReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiDelUserReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EiDelUserReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiDelUserReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EiForwardingEnableDisable defines message 'nat44_ei_forwarding_enable_disable'.
+// InProgress: the message form may change in the future versions
+type Nat44EiForwardingEnableDisable struct {
+       Enable bool `binapi:"bool,name=enable" json:"enable,omitempty"`
+}
+
+func (m *Nat44EiForwardingEnableDisable) Reset() { *m = Nat44EiForwardingEnableDisable{} }
+func (*Nat44EiForwardingEnableDisable) GetMessageName() string {
+       return "nat44_ei_forwarding_enable_disable"
+}
+func (*Nat44EiForwardingEnableDisable) GetCrcString() string { return "b3e225d2" }
+func (*Nat44EiForwardingEnableDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiForwardingEnableDisable) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.Enable
+       return size
+}
+func (m *Nat44EiForwardingEnableDisable) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.Enable)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiForwardingEnableDisable) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Enable = buf.DecodeBool()
+       return nil
+}
+
+// Nat44EiForwardingEnableDisableReply defines message 'nat44_ei_forwarding_enable_disable_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44EiForwardingEnableDisableReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EiForwardingEnableDisableReply) Reset() { *m = Nat44EiForwardingEnableDisableReply{} }
+func (*Nat44EiForwardingEnableDisableReply) GetMessageName() string {
+       return "nat44_ei_forwarding_enable_disable_reply"
+}
+func (*Nat44EiForwardingEnableDisableReply) GetCrcString() string { return "e8d4e804" }
+func (*Nat44EiForwardingEnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiForwardingEnableDisableReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EiForwardingEnableDisableReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiForwardingEnableDisableReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EiGetAddrAndPortAllocAlg defines message 'nat44_ei_get_addr_and_port_alloc_alg'.
+// Deprecated: the message will be removed in the future versions
+type Nat44EiGetAddrAndPortAllocAlg struct{}
+
+func (m *Nat44EiGetAddrAndPortAllocAlg) Reset() { *m = Nat44EiGetAddrAndPortAllocAlg{} }
+func (*Nat44EiGetAddrAndPortAllocAlg) GetMessageName() string {
+       return "nat44_ei_get_addr_and_port_alloc_alg"
+}
+func (*Nat44EiGetAddrAndPortAllocAlg) GetCrcString() string { return "51077d14" }
+func (*Nat44EiGetAddrAndPortAllocAlg) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiGetAddrAndPortAllocAlg) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat44EiGetAddrAndPortAllocAlg) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiGetAddrAndPortAllocAlg) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Nat44EiGetAddrAndPortAllocAlgReply defines message 'nat44_ei_get_addr_and_port_alloc_alg_reply'.
+// Deprecated: the message will be removed in the future versions
+type Nat44EiGetAddrAndPortAllocAlgReply struct {
+       Retval     int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       Alg        uint8  `binapi:"u8,name=alg" json:"alg,omitempty"`
+       PsidOffset uint8  `binapi:"u8,name=psid_offset" json:"psid_offset,omitempty"`
+       PsidLength uint8  `binapi:"u8,name=psid_length" json:"psid_length,omitempty"`
+       Psid       uint16 `binapi:"u16,name=psid" json:"psid,omitempty"`
+       StartPort  uint16 `binapi:"u16,name=start_port" json:"start_port,omitempty"`
+       EndPort    uint16 `binapi:"u16,name=end_port" json:"end_port,omitempty"`
+}
+
+func (m *Nat44EiGetAddrAndPortAllocAlgReply) Reset() { *m = Nat44EiGetAddrAndPortAllocAlgReply{} }
+func (*Nat44EiGetAddrAndPortAllocAlgReply) GetMessageName() string {
+       return "nat44_ei_get_addr_and_port_alloc_alg_reply"
+}
+func (*Nat44EiGetAddrAndPortAllocAlgReply) GetCrcString() string { return "3607a7d0" }
+func (*Nat44EiGetAddrAndPortAllocAlgReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiGetAddrAndPortAllocAlgReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 1 // m.Alg
+       size += 1 // m.PsidOffset
+       size += 1 // m.PsidLength
+       size += 2 // m.Psid
+       size += 2 // m.StartPort
+       size += 2 // m.EndPort
+       return size
+}
+func (m *Nat44EiGetAddrAndPortAllocAlgReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint8(m.Alg)
+       buf.EncodeUint8(m.PsidOffset)
+       buf.EncodeUint8(m.PsidLength)
+       buf.EncodeUint16(m.Psid)
+       buf.EncodeUint16(m.StartPort)
+       buf.EncodeUint16(m.EndPort)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiGetAddrAndPortAllocAlgReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.Alg = buf.DecodeUint8()
+       m.PsidOffset = buf.DecodeUint8()
+       m.PsidLength = buf.DecodeUint8()
+       m.Psid = buf.DecodeUint16()
+       m.StartPort = buf.DecodeUint16()
+       m.EndPort = buf.DecodeUint16()
+       return nil
+}
+
+// Nat44EiGetMssClamping defines message 'nat44_ei_get_mss_clamping'.
+// Deprecated: the message will be removed in the future versions
+type Nat44EiGetMssClamping struct{}
+
+func (m *Nat44EiGetMssClamping) Reset()               { *m = Nat44EiGetMssClamping{} }
+func (*Nat44EiGetMssClamping) GetMessageName() string { return "nat44_ei_get_mss_clamping" }
+func (*Nat44EiGetMssClamping) GetCrcString() string   { return "51077d14" }
+func (*Nat44EiGetMssClamping) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiGetMssClamping) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat44EiGetMssClamping) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiGetMssClamping) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Nat44EiGetMssClampingReply defines message 'nat44_ei_get_mss_clamping_reply'.
+// Deprecated: the message will be removed in the future versions
+type Nat44EiGetMssClampingReply struct {
+       Retval   int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       MssValue uint16 `binapi:"u16,name=mss_value" json:"mss_value,omitempty"`
+       Enable   bool   `binapi:"bool,name=enable" json:"enable,omitempty"`
+}
+
+func (m *Nat44EiGetMssClampingReply) Reset()               { *m = Nat44EiGetMssClampingReply{} }
+func (*Nat44EiGetMssClampingReply) GetMessageName() string { return "nat44_ei_get_mss_clamping_reply" }
+func (*Nat44EiGetMssClampingReply) GetCrcString() string   { return "1c0b2a78" }
+func (*Nat44EiGetMssClampingReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiGetMssClampingReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 2 // m.MssValue
+       size += 1 // m.Enable
+       return size
+}
+func (m *Nat44EiGetMssClampingReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint16(m.MssValue)
+       buf.EncodeBool(m.Enable)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiGetMssClampingReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.MssValue = buf.DecodeUint16()
+       m.Enable = buf.DecodeBool()
+       return nil
+}
+
+// Nat44EiHaFlush defines message 'nat44_ei_ha_flush'.
+// InProgress: the message form may change in the future versions
+type Nat44EiHaFlush struct{}
+
+func (m *Nat44EiHaFlush) Reset()               { *m = Nat44EiHaFlush{} }
+func (*Nat44EiHaFlush) GetMessageName() string { return "nat44_ei_ha_flush" }
+func (*Nat44EiHaFlush) GetCrcString() string   { return "51077d14" }
+func (*Nat44EiHaFlush) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiHaFlush) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat44EiHaFlush) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiHaFlush) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Nat44EiHaFlushReply defines message 'nat44_ei_ha_flush_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44EiHaFlushReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EiHaFlushReply) Reset()               { *m = Nat44EiHaFlushReply{} }
+func (*Nat44EiHaFlushReply) GetMessageName() string { return "nat44_ei_ha_flush_reply" }
+func (*Nat44EiHaFlushReply) GetCrcString() string   { return "e8d4e804" }
+func (*Nat44EiHaFlushReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiHaFlushReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EiHaFlushReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiHaFlushReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EiHaGetFailover defines message 'nat44_ei_ha_get_failover'.
+// Deprecated: the message will be removed in the future versions
+type Nat44EiHaGetFailover struct{}
+
+func (m *Nat44EiHaGetFailover) Reset()               { *m = Nat44EiHaGetFailover{} }
+func (*Nat44EiHaGetFailover) GetMessageName() string { return "nat44_ei_ha_get_failover" }
+func (*Nat44EiHaGetFailover) GetCrcString() string   { return "51077d14" }
+func (*Nat44EiHaGetFailover) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiHaGetFailover) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat44EiHaGetFailover) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiHaGetFailover) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Nat44EiHaGetFailoverReply defines message 'nat44_ei_ha_get_failover_reply'.
+// Deprecated: the message will be removed in the future versions
+type Nat44EiHaGetFailoverReply struct {
+       Retval                 int32               `binapi:"i32,name=retval" json:"retval,omitempty"`
+       IPAddress              ip_types.IP4Address `binapi:"ip4_address,name=ip_address" json:"ip_address,omitempty"`
+       Port                   uint16              `binapi:"u16,name=port" json:"port,omitempty"`
+       SessionRefreshInterval uint32              `binapi:"u32,name=session_refresh_interval" json:"session_refresh_interval,omitempty"`
+}
+
+func (m *Nat44EiHaGetFailoverReply) Reset()               { *m = Nat44EiHaGetFailoverReply{} }
+func (*Nat44EiHaGetFailoverReply) GetMessageName() string { return "nat44_ei_ha_get_failover_reply" }
+func (*Nat44EiHaGetFailoverReply) GetCrcString() string   { return "a67d8752" }
+func (*Nat44EiHaGetFailoverReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiHaGetFailoverReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4     // m.Retval
+       size += 1 * 4 // m.IPAddress
+       size += 2     // m.Port
+       size += 4     // m.SessionRefreshInterval
+       return size
+}
+func (m *Nat44EiHaGetFailoverReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeBytes(m.IPAddress[:], 4)
+       buf.EncodeUint16(m.Port)
+       buf.EncodeUint32(m.SessionRefreshInterval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiHaGetFailoverReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       copy(m.IPAddress[:], buf.DecodeBytes(4))
+       m.Port = buf.DecodeUint16()
+       m.SessionRefreshInterval = buf.DecodeUint32()
+       return nil
+}
+
+// Nat44EiHaGetListener defines message 'nat44_ei_ha_get_listener'.
+// Deprecated: the message will be removed in the future versions
+type Nat44EiHaGetListener struct{}
+
+func (m *Nat44EiHaGetListener) Reset()               { *m = Nat44EiHaGetListener{} }
+func (*Nat44EiHaGetListener) GetMessageName() string { return "nat44_ei_ha_get_listener" }
+func (*Nat44EiHaGetListener) GetCrcString() string   { return "51077d14" }
+func (*Nat44EiHaGetListener) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiHaGetListener) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat44EiHaGetListener) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiHaGetListener) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Nat44EiHaGetListenerReply defines message 'nat44_ei_ha_get_listener_reply'.
+// Deprecated: the message will be removed in the future versions
+type Nat44EiHaGetListenerReply struct {
+       Retval    int32               `binapi:"i32,name=retval" json:"retval,omitempty"`
+       IPAddress ip_types.IP4Address `binapi:"ip4_address,name=ip_address" json:"ip_address,omitempty"`
+       Port      uint16              `binapi:"u16,name=port" json:"port,omitempty"`
+       PathMtu   uint32              `binapi:"u32,name=path_mtu" json:"path_mtu,omitempty"`
+}
+
+func (m *Nat44EiHaGetListenerReply) Reset()               { *m = Nat44EiHaGetListenerReply{} }
+func (*Nat44EiHaGetListenerReply) GetMessageName() string { return "nat44_ei_ha_get_listener_reply" }
+func (*Nat44EiHaGetListenerReply) GetCrcString() string   { return "123ea41f" }
+func (*Nat44EiHaGetListenerReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiHaGetListenerReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4     // m.Retval
+       size += 1 * 4 // m.IPAddress
+       size += 2     // m.Port
+       size += 4     // m.PathMtu
+       return size
+}
+func (m *Nat44EiHaGetListenerReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeBytes(m.IPAddress[:], 4)
+       buf.EncodeUint16(m.Port)
+       buf.EncodeUint32(m.PathMtu)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiHaGetListenerReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       copy(m.IPAddress[:], buf.DecodeBytes(4))
+       m.Port = buf.DecodeUint16()
+       m.PathMtu = buf.DecodeUint32()
+       return nil
+}
+
+// Nat44EiHaResync defines message 'nat44_ei_ha_resync'.
+// InProgress: the message form may change in the future versions
+type Nat44EiHaResync struct {
+       WantResyncEvent uint8  `binapi:"u8,name=want_resync_event" json:"want_resync_event,omitempty"`
+       PID             uint32 `binapi:"u32,name=pid" json:"pid,omitempty"`
+}
+
+func (m *Nat44EiHaResync) Reset()               { *m = Nat44EiHaResync{} }
+func (*Nat44EiHaResync) GetMessageName() string { return "nat44_ei_ha_resync" }
+func (*Nat44EiHaResync) GetCrcString() string   { return "c8ab9e03" }
+func (*Nat44EiHaResync) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiHaResync) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.WantResyncEvent
+       size += 4 // m.PID
+       return size
+}
+func (m *Nat44EiHaResync) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(m.WantResyncEvent)
+       buf.EncodeUint32(m.PID)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiHaResync) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.WantResyncEvent = buf.DecodeUint8()
+       m.PID = buf.DecodeUint32()
+       return nil
+}
+
+// Nat44EiHaResyncCompletedEvent defines message 'nat44_ei_ha_resync_completed_event'.
+// InProgress: the message form may change in the future versions
+type Nat44EiHaResyncCompletedEvent struct {
+       PID         uint32 `binapi:"u32,name=pid" json:"pid,omitempty"`
+       MissedCount uint32 `binapi:"u32,name=missed_count" json:"missed_count,omitempty"`
+}
+
+func (m *Nat44EiHaResyncCompletedEvent) Reset() { *m = Nat44EiHaResyncCompletedEvent{} }
+func (*Nat44EiHaResyncCompletedEvent) GetMessageName() string {
+       return "nat44_ei_ha_resync_completed_event"
+}
+func (*Nat44EiHaResyncCompletedEvent) GetCrcString() string { return "fdc598fb" }
+func (*Nat44EiHaResyncCompletedEvent) GetMessageType() api.MessageType {
+       return api.EventMessage
+}
+
+func (m *Nat44EiHaResyncCompletedEvent) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.PID
+       size += 4 // m.MissedCount
+       return size
+}
+func (m *Nat44EiHaResyncCompletedEvent) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.PID)
+       buf.EncodeUint32(m.MissedCount)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiHaResyncCompletedEvent) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.PID = buf.DecodeUint32()
+       m.MissedCount = buf.DecodeUint32()
+       return nil
+}
+
+// Nat44EiHaResyncReply defines message 'nat44_ei_ha_resync_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44EiHaResyncReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EiHaResyncReply) Reset()               { *m = Nat44EiHaResyncReply{} }
+func (*Nat44EiHaResyncReply) GetMessageName() string { return "nat44_ei_ha_resync_reply" }
+func (*Nat44EiHaResyncReply) GetCrcString() string   { return "e8d4e804" }
+func (*Nat44EiHaResyncReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiHaResyncReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EiHaResyncReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiHaResyncReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EiHaSetFailover defines message 'nat44_ei_ha_set_failover'.
+// InProgress: the message form may change in the future versions
+type Nat44EiHaSetFailover struct {
+       IPAddress              ip_types.IP4Address `binapi:"ip4_address,name=ip_address" json:"ip_address,omitempty"`
+       Port                   uint16              `binapi:"u16,name=port" json:"port,omitempty"`
+       SessionRefreshInterval uint32              `binapi:"u32,name=session_refresh_interval" json:"session_refresh_interval,omitempty"`
+}
+
+func (m *Nat44EiHaSetFailover) Reset()               { *m = Nat44EiHaSetFailover{} }
+func (*Nat44EiHaSetFailover) GetMessageName() string { return "nat44_ei_ha_set_failover" }
+func (*Nat44EiHaSetFailover) GetCrcString() string   { return "718246af" }
+func (*Nat44EiHaSetFailover) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiHaSetFailover) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4 // m.IPAddress
+       size += 2     // m.Port
+       size += 4     // m.SessionRefreshInterval
+       return size
+}
+func (m *Nat44EiHaSetFailover) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.IPAddress[:], 4)
+       buf.EncodeUint16(m.Port)
+       buf.EncodeUint32(m.SessionRefreshInterval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiHaSetFailover) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.IPAddress[:], buf.DecodeBytes(4))
+       m.Port = buf.DecodeUint16()
+       m.SessionRefreshInterval = buf.DecodeUint32()
+       return nil
+}
+
+// Nat44EiHaSetFailoverReply defines message 'nat44_ei_ha_set_failover_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44EiHaSetFailoverReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EiHaSetFailoverReply) Reset()               { *m = Nat44EiHaSetFailoverReply{} }
+func (*Nat44EiHaSetFailoverReply) GetMessageName() string { return "nat44_ei_ha_set_failover_reply" }
+func (*Nat44EiHaSetFailoverReply) GetCrcString() string   { return "e8d4e804" }
+func (*Nat44EiHaSetFailoverReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiHaSetFailoverReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EiHaSetFailoverReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiHaSetFailoverReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EiHaSetListener defines message 'nat44_ei_ha_set_listener'.
+// InProgress: the message form may change in the future versions
+type Nat44EiHaSetListener struct {
+       IPAddress ip_types.IP4Address `binapi:"ip4_address,name=ip_address" json:"ip_address,omitempty"`
+       Port      uint16              `binapi:"u16,name=port" json:"port,omitempty"`
+       PathMtu   uint32              `binapi:"u32,name=path_mtu" json:"path_mtu,omitempty"`
+}
+
+func (m *Nat44EiHaSetListener) Reset()               { *m = Nat44EiHaSetListener{} }
+func (*Nat44EiHaSetListener) GetMessageName() string { return "nat44_ei_ha_set_listener" }
+func (*Nat44EiHaSetListener) GetCrcString() string   { return "e4a8cb4e" }
+func (*Nat44EiHaSetListener) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiHaSetListener) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4 // m.IPAddress
+       size += 2     // m.Port
+       size += 4     // m.PathMtu
+       return size
+}
+func (m *Nat44EiHaSetListener) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.IPAddress[:], 4)
+       buf.EncodeUint16(m.Port)
+       buf.EncodeUint32(m.PathMtu)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiHaSetListener) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.IPAddress[:], buf.DecodeBytes(4))
+       m.Port = buf.DecodeUint16()
+       m.PathMtu = buf.DecodeUint32()
+       return nil
+}
+
+// Nat44EiHaSetListenerReply defines message 'nat44_ei_ha_set_listener_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44EiHaSetListenerReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EiHaSetListenerReply) Reset()               { *m = Nat44EiHaSetListenerReply{} }
+func (*Nat44EiHaSetListenerReply) GetMessageName() string { return "nat44_ei_ha_set_listener_reply" }
+func (*Nat44EiHaSetListenerReply) GetCrcString() string   { return "e8d4e804" }
+func (*Nat44EiHaSetListenerReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiHaSetListenerReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EiHaSetListenerReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiHaSetListenerReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EiIdentityMappingDetails defines message 'nat44_ei_identity_mapping_details'.
+// Deprecated: the message will be removed in the future versions
+type Nat44EiIdentityMappingDetails struct {
+       Flags     Nat44EiConfigFlags             `binapi:"nat44_ei_config_flags,name=flags" json:"flags,omitempty"`
+       IPAddress ip_types.IP4Address            `binapi:"ip4_address,name=ip_address" json:"ip_address,omitempty"`
+       Protocol  uint8                          `binapi:"u8,name=protocol" json:"protocol,omitempty"`
+       Port      uint16                         `binapi:"u16,name=port" json:"port,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       VrfID     uint32                         `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+       Tag       string                         `binapi:"string[64],name=tag" json:"tag,omitempty"`
+}
+
+func (m *Nat44EiIdentityMappingDetails) Reset() { *m = Nat44EiIdentityMappingDetails{} }
+func (*Nat44EiIdentityMappingDetails) GetMessageName() string {
+       return "nat44_ei_identity_mapping_details"
+}
+func (*Nat44EiIdentityMappingDetails) GetCrcString() string { return "30d53e26" }
+func (*Nat44EiIdentityMappingDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiIdentityMappingDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1     // m.Flags
+       size += 1 * 4 // m.IPAddress
+       size += 1     // m.Protocol
+       size += 2     // m.Port
+       size += 4     // m.SwIfIndex
+       size += 4     // m.VrfID
+       size += 64    // m.Tag
+       return size
+}
+func (m *Nat44EiIdentityMappingDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(uint8(m.Flags))
+       buf.EncodeBytes(m.IPAddress[:], 4)
+       buf.EncodeUint8(m.Protocol)
+       buf.EncodeUint16(m.Port)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint32(m.VrfID)
+       buf.EncodeString(m.Tag, 64)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiIdentityMappingDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Flags = Nat44EiConfigFlags(buf.DecodeUint8())
+       copy(m.IPAddress[:], buf.DecodeBytes(4))
+       m.Protocol = buf.DecodeUint8()
+       m.Port = buf.DecodeUint16()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.VrfID = buf.DecodeUint32()
+       m.Tag = buf.DecodeString(64)
+       return nil
+}
+
+// Nat44EiIdentityMappingDump defines message 'nat44_ei_identity_mapping_dump'.
+// Deprecated: the message will be removed in the future versions
+type Nat44EiIdentityMappingDump struct{}
+
+func (m *Nat44EiIdentityMappingDump) Reset()               { *m = Nat44EiIdentityMappingDump{} }
+func (*Nat44EiIdentityMappingDump) GetMessageName() string { return "nat44_ei_identity_mapping_dump" }
+func (*Nat44EiIdentityMappingDump) GetCrcString() string   { return "51077d14" }
+func (*Nat44EiIdentityMappingDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiIdentityMappingDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat44EiIdentityMappingDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiIdentityMappingDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Nat44EiInterfaceAddDelFeature defines message 'nat44_ei_interface_add_del_feature'.
+// InProgress: the message form may change in the future versions
+type Nat44EiInterfaceAddDelFeature struct {
+       IsAdd     bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       Flags     Nat44EiConfigFlags             `binapi:"nat44_ei_config_flags,name=flags" json:"flags,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *Nat44EiInterfaceAddDelFeature) Reset() { *m = Nat44EiInterfaceAddDelFeature{} }
+func (*Nat44EiInterfaceAddDelFeature) GetMessageName() string {
+       return "nat44_ei_interface_add_del_feature"
+}
+func (*Nat44EiInterfaceAddDelFeature) GetCrcString() string { return "63a2db8b" }
+func (*Nat44EiInterfaceAddDelFeature) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiInterfaceAddDelFeature) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.IsAdd
+       size += 1 // m.Flags
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *Nat44EiInterfaceAddDelFeature) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsAdd)
+       buf.EncodeUint8(uint8(m.Flags))
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiInterfaceAddDelFeature) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeBool()
+       m.Flags = Nat44EiConfigFlags(buf.DecodeUint8())
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// Nat44EiInterfaceAddDelFeatureReply defines message 'nat44_ei_interface_add_del_feature_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44EiInterfaceAddDelFeatureReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EiInterfaceAddDelFeatureReply) Reset() { *m = Nat44EiInterfaceAddDelFeatureReply{} }
+func (*Nat44EiInterfaceAddDelFeatureReply) GetMessageName() string {
+       return "nat44_ei_interface_add_del_feature_reply"
+}
+func (*Nat44EiInterfaceAddDelFeatureReply) GetCrcString() string { return "e8d4e804" }
+func (*Nat44EiInterfaceAddDelFeatureReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiInterfaceAddDelFeatureReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EiInterfaceAddDelFeatureReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiInterfaceAddDelFeatureReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EiInterfaceAddDelOutputFeature defines message 'nat44_ei_interface_add_del_output_feature'.
+// Deprecated: the message will be removed in the future versions
+type Nat44EiInterfaceAddDelOutputFeature struct {
+       IsAdd     bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       Flags     Nat44EiConfigFlags             `binapi:"nat44_ei_config_flags,name=flags" json:"flags,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *Nat44EiInterfaceAddDelOutputFeature) Reset() { *m = Nat44EiInterfaceAddDelOutputFeature{} }
+func (*Nat44EiInterfaceAddDelOutputFeature) GetMessageName() string {
+       return "nat44_ei_interface_add_del_output_feature"
+}
+func (*Nat44EiInterfaceAddDelOutputFeature) GetCrcString() string { return "63a2db8b" }
+func (*Nat44EiInterfaceAddDelOutputFeature) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiInterfaceAddDelOutputFeature) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.IsAdd
+       size += 1 // m.Flags
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *Nat44EiInterfaceAddDelOutputFeature) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsAdd)
+       buf.EncodeUint8(uint8(m.Flags))
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiInterfaceAddDelOutputFeature) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeBool()
+       m.Flags = Nat44EiConfigFlags(buf.DecodeUint8())
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// Nat44EiInterfaceAddDelOutputFeatureReply defines message 'nat44_ei_interface_add_del_output_feature_reply'.
+// Deprecated: the message will be removed in the future versions
+type Nat44EiInterfaceAddDelOutputFeatureReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EiInterfaceAddDelOutputFeatureReply) Reset() {
+       *m = Nat44EiInterfaceAddDelOutputFeatureReply{}
+}
+func (*Nat44EiInterfaceAddDelOutputFeatureReply) GetMessageName() string {
+       return "nat44_ei_interface_add_del_output_feature_reply"
+}
+func (*Nat44EiInterfaceAddDelOutputFeatureReply) GetCrcString() string { return "e8d4e804" }
+func (*Nat44EiInterfaceAddDelOutputFeatureReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiInterfaceAddDelOutputFeatureReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EiInterfaceAddDelOutputFeatureReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiInterfaceAddDelOutputFeatureReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EiInterfaceAddrDetails defines message 'nat44_ei_interface_addr_details'.
+// Deprecated: the message will be removed in the future versions
+type Nat44EiInterfaceAddrDetails struct {
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *Nat44EiInterfaceAddrDetails) Reset()               { *m = Nat44EiInterfaceAddrDetails{} }
+func (*Nat44EiInterfaceAddrDetails) GetMessageName() string { return "nat44_ei_interface_addr_details" }
+func (*Nat44EiInterfaceAddrDetails) GetCrcString() string   { return "0b45011c" }
+func (*Nat44EiInterfaceAddrDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiInterfaceAddrDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *Nat44EiInterfaceAddrDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiInterfaceAddrDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// Nat44EiInterfaceAddrDump defines message 'nat44_ei_interface_addr_dump'.
+// Deprecated: the message will be removed in the future versions
+type Nat44EiInterfaceAddrDump struct{}
+
+func (m *Nat44EiInterfaceAddrDump) Reset()               { *m = Nat44EiInterfaceAddrDump{} }
+func (*Nat44EiInterfaceAddrDump) GetMessageName() string { return "nat44_ei_interface_addr_dump" }
+func (*Nat44EiInterfaceAddrDump) GetCrcString() string   { return "51077d14" }
+func (*Nat44EiInterfaceAddrDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiInterfaceAddrDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat44EiInterfaceAddrDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiInterfaceAddrDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Nat44EiInterfaceDetails defines message 'nat44_ei_interface_details'.
+// InProgress: the message form may change in the future versions
+type Nat44EiInterfaceDetails struct {
+       Flags     Nat44EiConfigFlags             `binapi:"nat44_ei_config_flags,name=flags" json:"flags,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *Nat44EiInterfaceDetails) Reset()               { *m = Nat44EiInterfaceDetails{} }
+func (*Nat44EiInterfaceDetails) GetMessageName() string { return "nat44_ei_interface_details" }
+func (*Nat44EiInterfaceDetails) GetCrcString() string   { return "f446e508" }
+func (*Nat44EiInterfaceDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiInterfaceDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.Flags
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *Nat44EiInterfaceDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(uint8(m.Flags))
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiInterfaceDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Flags = Nat44EiConfigFlags(buf.DecodeUint8())
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// Nat44EiInterfaceDump defines message 'nat44_ei_interface_dump'.
+// InProgress: the message form may change in the future versions
+type Nat44EiInterfaceDump struct{}
+
+func (m *Nat44EiInterfaceDump) Reset()               { *m = Nat44EiInterfaceDump{} }
+func (*Nat44EiInterfaceDump) GetMessageName() string { return "nat44_ei_interface_dump" }
+func (*Nat44EiInterfaceDump) GetCrcString() string   { return "51077d14" }
+func (*Nat44EiInterfaceDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiInterfaceDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat44EiInterfaceDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiInterfaceDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Nat44EiInterfaceOutputFeatureDetails defines message 'nat44_ei_interface_output_feature_details'.
+// Deprecated: the message will be removed in the future versions
+type Nat44EiInterfaceOutputFeatureDetails struct {
+       Flags     Nat44EiConfigFlags             `binapi:"nat44_ei_config_flags,name=flags" json:"flags,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *Nat44EiInterfaceOutputFeatureDetails) Reset() { *m = Nat44EiInterfaceOutputFeatureDetails{} }
+func (*Nat44EiInterfaceOutputFeatureDetails) GetMessageName() string {
+       return "nat44_ei_interface_output_feature_details"
+}
+func (*Nat44EiInterfaceOutputFeatureDetails) GetCrcString() string { return "f446e508" }
+func (*Nat44EiInterfaceOutputFeatureDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiInterfaceOutputFeatureDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.Flags
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *Nat44EiInterfaceOutputFeatureDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(uint8(m.Flags))
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiInterfaceOutputFeatureDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Flags = Nat44EiConfigFlags(buf.DecodeUint8())
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// Nat44EiInterfaceOutputFeatureDump defines message 'nat44_ei_interface_output_feature_dump'.
+// Deprecated: the message will be removed in the future versions
+type Nat44EiInterfaceOutputFeatureDump struct{}
+
+func (m *Nat44EiInterfaceOutputFeatureDump) Reset() { *m = Nat44EiInterfaceOutputFeatureDump{} }
+func (*Nat44EiInterfaceOutputFeatureDump) GetMessageName() string {
+       return "nat44_ei_interface_output_feature_dump"
+}
+func (*Nat44EiInterfaceOutputFeatureDump) GetCrcString() string { return "51077d14" }
+func (*Nat44EiInterfaceOutputFeatureDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiInterfaceOutputFeatureDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat44EiInterfaceOutputFeatureDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiInterfaceOutputFeatureDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Nat44EiIpfixEnableDisable defines message 'nat44_ei_ipfix_enable_disable'.
+// InProgress: the message form may change in the future versions
+type Nat44EiIpfixEnableDisable struct {
+       DomainID uint32 `binapi:"u32,name=domain_id" json:"domain_id,omitempty"`
+       SrcPort  uint16 `binapi:"u16,name=src_port" json:"src_port,omitempty"`
+       Enable   bool   `binapi:"bool,name=enable" json:"enable,omitempty"`
+}
+
+func (m *Nat44EiIpfixEnableDisable) Reset()               { *m = Nat44EiIpfixEnableDisable{} }
+func (*Nat44EiIpfixEnableDisable) GetMessageName() string { return "nat44_ei_ipfix_enable_disable" }
+func (*Nat44EiIpfixEnableDisable) GetCrcString() string   { return "9af4a2d2" }
+func (*Nat44EiIpfixEnableDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiIpfixEnableDisable) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.DomainID
+       size += 2 // m.SrcPort
+       size += 1 // m.Enable
+       return size
+}
+func (m *Nat44EiIpfixEnableDisable) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.DomainID)
+       buf.EncodeUint16(m.SrcPort)
+       buf.EncodeBool(m.Enable)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiIpfixEnableDisable) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.DomainID = buf.DecodeUint32()
+       m.SrcPort = buf.DecodeUint16()
+       m.Enable = buf.DecodeBool()
+       return nil
+}
+
+// Nat44EiIpfixEnableDisableReply defines message 'nat44_ei_ipfix_enable_disable_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44EiIpfixEnableDisableReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EiIpfixEnableDisableReply) Reset() { *m = Nat44EiIpfixEnableDisableReply{} }
+func (*Nat44EiIpfixEnableDisableReply) GetMessageName() string {
+       return "nat44_ei_ipfix_enable_disable_reply"
+}
+func (*Nat44EiIpfixEnableDisableReply) GetCrcString() string { return "e8d4e804" }
+func (*Nat44EiIpfixEnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiIpfixEnableDisableReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EiIpfixEnableDisableReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiIpfixEnableDisableReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EiPluginEnableDisable defines message 'nat44_ei_plugin_enable_disable'.
+// InProgress: the message form may change in the future versions
+type Nat44EiPluginEnableDisable struct {
+       InsideVrf     uint32             `binapi:"u32,name=inside_vrf" json:"inside_vrf,omitempty"`
+       OutsideVrf    uint32             `binapi:"u32,name=outside_vrf" json:"outside_vrf,omitempty"`
+       Users         uint32             `binapi:"u32,name=users" json:"users,omitempty"`
+       UserMemory    uint32             `binapi:"u32,name=user_memory" json:"user_memory,omitempty"`
+       Sessions      uint32             `binapi:"u32,name=sessions" json:"sessions,omitempty"`
+       SessionMemory uint32             `binapi:"u32,name=session_memory" json:"session_memory,omitempty"`
+       UserSessions  uint32             `binapi:"u32,name=user_sessions" json:"user_sessions,omitempty"`
+       Enable        bool               `binapi:"bool,name=enable" json:"enable,omitempty"`
+       Flags         Nat44EiConfigFlags `binapi:"nat44_ei_config_flags,name=flags" json:"flags,omitempty"`
+}
+
+func (m *Nat44EiPluginEnableDisable) Reset()               { *m = Nat44EiPluginEnableDisable{} }
+func (*Nat44EiPluginEnableDisable) GetMessageName() string { return "nat44_ei_plugin_enable_disable" }
+func (*Nat44EiPluginEnableDisable) GetCrcString() string   { return "bf692144" }
+func (*Nat44EiPluginEnableDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiPluginEnableDisable) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.InsideVrf
+       size += 4 // m.OutsideVrf
+       size += 4 // m.Users
+       size += 4 // m.UserMemory
+       size += 4 // m.Sessions
+       size += 4 // m.SessionMemory
+       size += 4 // m.UserSessions
+       size += 1 // m.Enable
+       size += 1 // m.Flags
+       return size
+}
+func (m *Nat44EiPluginEnableDisable) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.InsideVrf)
+       buf.EncodeUint32(m.OutsideVrf)
+       buf.EncodeUint32(m.Users)
+       buf.EncodeUint32(m.UserMemory)
+       buf.EncodeUint32(m.Sessions)
+       buf.EncodeUint32(m.SessionMemory)
+       buf.EncodeUint32(m.UserSessions)
+       buf.EncodeBool(m.Enable)
+       buf.EncodeUint8(uint8(m.Flags))
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiPluginEnableDisable) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.InsideVrf = buf.DecodeUint32()
+       m.OutsideVrf = buf.DecodeUint32()
+       m.Users = buf.DecodeUint32()
+       m.UserMemory = buf.DecodeUint32()
+       m.Sessions = buf.DecodeUint32()
+       m.SessionMemory = buf.DecodeUint32()
+       m.UserSessions = buf.DecodeUint32()
+       m.Enable = buf.DecodeBool()
+       m.Flags = Nat44EiConfigFlags(buf.DecodeUint8())
+       return nil
+}
+
+// Nat44EiPluginEnableDisableReply defines message 'nat44_ei_plugin_enable_disable_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44EiPluginEnableDisableReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EiPluginEnableDisableReply) Reset() { *m = Nat44EiPluginEnableDisableReply{} }
+func (*Nat44EiPluginEnableDisableReply) GetMessageName() string {
+       return "nat44_ei_plugin_enable_disable_reply"
+}
+func (*Nat44EiPluginEnableDisableReply) GetCrcString() string { return "e8d4e804" }
+func (*Nat44EiPluginEnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiPluginEnableDisableReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EiPluginEnableDisableReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiPluginEnableDisableReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EiSetAddrAndPortAllocAlg defines message 'nat44_ei_set_addr_and_port_alloc_alg'.
+// InProgress: the message form may change in the future versions
+type Nat44EiSetAddrAndPortAllocAlg struct {
+       Alg        uint8  `binapi:"u8,name=alg" json:"alg,omitempty"`
+       PsidOffset uint8  `binapi:"u8,name=psid_offset" json:"psid_offset,omitempty"`
+       PsidLength uint8  `binapi:"u8,name=psid_length" json:"psid_length,omitempty"`
+       Psid       uint16 `binapi:"u16,name=psid" json:"psid,omitempty"`
+       StartPort  uint16 `binapi:"u16,name=start_port" json:"start_port,omitempty"`
+       EndPort    uint16 `binapi:"u16,name=end_port" json:"end_port,omitempty"`
+}
+
+func (m *Nat44EiSetAddrAndPortAllocAlg) Reset() { *m = Nat44EiSetAddrAndPortAllocAlg{} }
+func (*Nat44EiSetAddrAndPortAllocAlg) GetMessageName() string {
+       return "nat44_ei_set_addr_and_port_alloc_alg"
+}
+func (*Nat44EiSetAddrAndPortAllocAlg) GetCrcString() string { return "deeb746f" }
+func (*Nat44EiSetAddrAndPortAllocAlg) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiSetAddrAndPortAllocAlg) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.Alg
+       size += 1 // m.PsidOffset
+       size += 1 // m.PsidLength
+       size += 2 // m.Psid
+       size += 2 // m.StartPort
+       size += 2 // m.EndPort
+       return size
+}
+func (m *Nat44EiSetAddrAndPortAllocAlg) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(m.Alg)
+       buf.EncodeUint8(m.PsidOffset)
+       buf.EncodeUint8(m.PsidLength)
+       buf.EncodeUint16(m.Psid)
+       buf.EncodeUint16(m.StartPort)
+       buf.EncodeUint16(m.EndPort)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiSetAddrAndPortAllocAlg) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Alg = buf.DecodeUint8()
+       m.PsidOffset = buf.DecodeUint8()
+       m.PsidLength = buf.DecodeUint8()
+       m.Psid = buf.DecodeUint16()
+       m.StartPort = buf.DecodeUint16()
+       m.EndPort = buf.DecodeUint16()
+       return nil
+}
+
+// Nat44EiSetAddrAndPortAllocAlgReply defines message 'nat44_ei_set_addr_and_port_alloc_alg_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44EiSetAddrAndPortAllocAlgReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EiSetAddrAndPortAllocAlgReply) Reset() { *m = Nat44EiSetAddrAndPortAllocAlgReply{} }
+func (*Nat44EiSetAddrAndPortAllocAlgReply) GetMessageName() string {
+       return "nat44_ei_set_addr_and_port_alloc_alg_reply"
+}
+func (*Nat44EiSetAddrAndPortAllocAlgReply) GetCrcString() string { return "e8d4e804" }
+func (*Nat44EiSetAddrAndPortAllocAlgReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiSetAddrAndPortAllocAlgReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EiSetAddrAndPortAllocAlgReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiSetAddrAndPortAllocAlgReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EiSetFqOptions defines message 'nat44_ei_set_fq_options'.
+// InProgress: the message form may change in the future versions
+type Nat44EiSetFqOptions struct {
+       FrameQueueNelts uint32 `binapi:"u32,name=frame_queue_nelts" json:"frame_queue_nelts,omitempty"`
+}
+
+func (m *Nat44EiSetFqOptions) Reset()               { *m = Nat44EiSetFqOptions{} }
+func (*Nat44EiSetFqOptions) GetMessageName() string { return "nat44_ei_set_fq_options" }
+func (*Nat44EiSetFqOptions) GetCrcString() string   { return "2399bd71" }
+func (*Nat44EiSetFqOptions) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiSetFqOptions) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.FrameQueueNelts
+       return size
+}
+func (m *Nat44EiSetFqOptions) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.FrameQueueNelts)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiSetFqOptions) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.FrameQueueNelts = buf.DecodeUint32()
+       return nil
+}
+
+// Nat44EiSetFqOptionsReply defines message 'nat44_ei_set_fq_options_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44EiSetFqOptionsReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EiSetFqOptionsReply) Reset()               { *m = Nat44EiSetFqOptionsReply{} }
+func (*Nat44EiSetFqOptionsReply) GetMessageName() string { return "nat44_ei_set_fq_options_reply" }
+func (*Nat44EiSetFqOptionsReply) GetCrcString() string   { return "e8d4e804" }
+func (*Nat44EiSetFqOptionsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiSetFqOptionsReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EiSetFqOptionsReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiSetFqOptionsReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EiSetLogLevel defines message 'nat44_ei_set_log_level'.
+// Deprecated: the message will be removed in the future versions
+type Nat44EiSetLogLevel struct {
+       LogLevel nat_types.NatLogLevel `binapi:"nat_log_level,name=log_level" json:"log_level,omitempty"`
+}
+
+func (m *Nat44EiSetLogLevel) Reset()               { *m = Nat44EiSetLogLevel{} }
+func (*Nat44EiSetLogLevel) GetMessageName() string { return "nat44_ei_set_log_level" }
+func (*Nat44EiSetLogLevel) GetCrcString() string   { return "70076bfe" }
+func (*Nat44EiSetLogLevel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiSetLogLevel) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.LogLevel
+       return size
+}
+func (m *Nat44EiSetLogLevel) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(uint8(m.LogLevel))
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiSetLogLevel) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.LogLevel = nat_types.NatLogLevel(buf.DecodeUint8())
+       return nil
+}
+
+// Nat44EiSetLogLevelReply defines message 'nat44_ei_set_log_level_reply'.
+// Deprecated: the message will be removed in the future versions
+type Nat44EiSetLogLevelReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EiSetLogLevelReply) Reset()               { *m = Nat44EiSetLogLevelReply{} }
+func (*Nat44EiSetLogLevelReply) GetMessageName() string { return "nat44_ei_set_log_level_reply" }
+func (*Nat44EiSetLogLevelReply) GetCrcString() string   { return "e8d4e804" }
+func (*Nat44EiSetLogLevelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiSetLogLevelReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EiSetLogLevelReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiSetLogLevelReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EiSetMssClamping defines message 'nat44_ei_set_mss_clamping'.
+// InProgress: the message form may change in the future versions
+type Nat44EiSetMssClamping struct {
+       MssValue uint16 `binapi:"u16,name=mss_value" json:"mss_value,omitempty"`
+       Enable   bool   `binapi:"bool,name=enable" json:"enable,omitempty"`
+}
+
+func (m *Nat44EiSetMssClamping) Reset()               { *m = Nat44EiSetMssClamping{} }
+func (*Nat44EiSetMssClamping) GetMessageName() string { return "nat44_ei_set_mss_clamping" }
+func (*Nat44EiSetMssClamping) GetCrcString() string   { return "25e90abb" }
+func (*Nat44EiSetMssClamping) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiSetMssClamping) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 2 // m.MssValue
+       size += 1 // m.Enable
+       return size
+}
+func (m *Nat44EiSetMssClamping) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint16(m.MssValue)
+       buf.EncodeBool(m.Enable)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiSetMssClamping) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.MssValue = buf.DecodeUint16()
+       m.Enable = buf.DecodeBool()
+       return nil
+}
+
+// Nat44EiSetMssClampingReply defines message 'nat44_ei_set_mss_clamping_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44EiSetMssClampingReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EiSetMssClampingReply) Reset()               { *m = Nat44EiSetMssClampingReply{} }
+func (*Nat44EiSetMssClampingReply) GetMessageName() string { return "nat44_ei_set_mss_clamping_reply" }
+func (*Nat44EiSetMssClampingReply) GetCrcString() string   { return "e8d4e804" }
+func (*Nat44EiSetMssClampingReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiSetMssClampingReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EiSetMssClampingReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiSetMssClampingReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EiSetTimeouts defines message 'nat44_ei_set_timeouts'.
+// InProgress: the message form may change in the future versions
+type Nat44EiSetTimeouts struct {
+       UDP            uint32 `binapi:"u32,name=udp" json:"udp,omitempty"`
+       TCPEstablished uint32 `binapi:"u32,name=tcp_established" json:"tcp_established,omitempty"`
+       TCPTransitory  uint32 `binapi:"u32,name=tcp_transitory" json:"tcp_transitory,omitempty"`
+       ICMP           uint32 `binapi:"u32,name=icmp" json:"icmp,omitempty"`
+}
+
+func (m *Nat44EiSetTimeouts) Reset()               { *m = Nat44EiSetTimeouts{} }
+func (*Nat44EiSetTimeouts) GetMessageName() string { return "nat44_ei_set_timeouts" }
+func (*Nat44EiSetTimeouts) GetCrcString() string   { return "d4746b16" }
+func (*Nat44EiSetTimeouts) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiSetTimeouts) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.UDP
+       size += 4 // m.TCPEstablished
+       size += 4 // m.TCPTransitory
+       size += 4 // m.ICMP
+       return size
+}
+func (m *Nat44EiSetTimeouts) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.UDP)
+       buf.EncodeUint32(m.TCPEstablished)
+       buf.EncodeUint32(m.TCPTransitory)
+       buf.EncodeUint32(m.ICMP)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiSetTimeouts) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.UDP = buf.DecodeUint32()
+       m.TCPEstablished = buf.DecodeUint32()
+       m.TCPTransitory = buf.DecodeUint32()
+       m.ICMP = buf.DecodeUint32()
+       return nil
+}
+
+// Nat44EiSetTimeoutsReply defines message 'nat44_ei_set_timeouts_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44EiSetTimeoutsReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EiSetTimeoutsReply) Reset()               { *m = Nat44EiSetTimeoutsReply{} }
+func (*Nat44EiSetTimeoutsReply) GetMessageName() string { return "nat44_ei_set_timeouts_reply" }
+func (*Nat44EiSetTimeoutsReply) GetCrcString() string   { return "e8d4e804" }
+func (*Nat44EiSetTimeoutsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiSetTimeoutsReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EiSetTimeoutsReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiSetTimeoutsReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EiSetWorkers defines message 'nat44_ei_set_workers'.
+// InProgress: the message form may change in the future versions
+type Nat44EiSetWorkers struct {
+       WorkerMask uint64 `binapi:"u64,name=worker_mask" json:"worker_mask,omitempty"`
+}
+
+func (m *Nat44EiSetWorkers) Reset()               { *m = Nat44EiSetWorkers{} }
+func (*Nat44EiSetWorkers) GetMessageName() string { return "nat44_ei_set_workers" }
+func (*Nat44EiSetWorkers) GetCrcString() string   { return "da926638" }
+func (*Nat44EiSetWorkers) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiSetWorkers) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 8 // m.WorkerMask
+       return size
+}
+func (m *Nat44EiSetWorkers) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint64(m.WorkerMask)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiSetWorkers) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.WorkerMask = buf.DecodeUint64()
+       return nil
+}
+
+// Nat44EiSetWorkersReply defines message 'nat44_ei_set_workers_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44EiSetWorkersReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat44EiSetWorkersReply) Reset()               { *m = Nat44EiSetWorkersReply{} }
+func (*Nat44EiSetWorkersReply) GetMessageName() string { return "nat44_ei_set_workers_reply" }
+func (*Nat44EiSetWorkersReply) GetCrcString() string   { return "e8d4e804" }
+func (*Nat44EiSetWorkersReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiSetWorkersReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat44EiSetWorkersReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiSetWorkersReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat44EiShowFqOptions defines message 'nat44_ei_show_fq_options'.
+// InProgress: the message form may change in the future versions
+type Nat44EiShowFqOptions struct{}
+
+func (m *Nat44EiShowFqOptions) Reset()               { *m = Nat44EiShowFqOptions{} }
+func (*Nat44EiShowFqOptions) GetMessageName() string { return "nat44_ei_show_fq_options" }
+func (*Nat44EiShowFqOptions) GetCrcString() string   { return "51077d14" }
+func (*Nat44EiShowFqOptions) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiShowFqOptions) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat44EiShowFqOptions) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiShowFqOptions) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Nat44EiShowFqOptionsReply defines message 'nat44_ei_show_fq_options_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44EiShowFqOptionsReply struct {
+       Retval          int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       FrameQueueNelts uint32 `binapi:"u32,name=frame_queue_nelts" json:"frame_queue_nelts,omitempty"`
+}
+
+func (m *Nat44EiShowFqOptionsReply) Reset()               { *m = Nat44EiShowFqOptionsReply{} }
+func (*Nat44EiShowFqOptionsReply) GetMessageName() string { return "nat44_ei_show_fq_options_reply" }
+func (*Nat44EiShowFqOptionsReply) GetCrcString() string   { return "7213b545" }
+func (*Nat44EiShowFqOptionsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiShowFqOptionsReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.FrameQueueNelts
+       return size
+}
+func (m *Nat44EiShowFqOptionsReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.FrameQueueNelts)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiShowFqOptionsReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.FrameQueueNelts = buf.DecodeUint32()
+       return nil
+}
+
+// Nat44EiShowRunningConfig defines message 'nat44_ei_show_running_config'.
+// InProgress: the message form may change in the future versions
+type Nat44EiShowRunningConfig struct{}
+
+func (m *Nat44EiShowRunningConfig) Reset()               { *m = Nat44EiShowRunningConfig{} }
+func (*Nat44EiShowRunningConfig) GetMessageName() string { return "nat44_ei_show_running_config" }
+func (*Nat44EiShowRunningConfig) GetCrcString() string   { return "51077d14" }
+func (*Nat44EiShowRunningConfig) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiShowRunningConfig) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat44EiShowRunningConfig) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiShowRunningConfig) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Nat44EiShowRunningConfigReply defines message 'nat44_ei_show_running_config_reply'.
+// InProgress: the message form may change in the future versions
+type Nat44EiShowRunningConfigReply struct {
+       Retval              int32                 `binapi:"i32,name=retval" json:"retval,omitempty"`
+       InsideVrf           uint32                `binapi:"u32,name=inside_vrf" json:"inside_vrf,omitempty"`
+       OutsideVrf          uint32                `binapi:"u32,name=outside_vrf" json:"outside_vrf,omitempty"`
+       Users               uint32                `binapi:"u32,name=users" json:"users,omitempty"`
+       Sessions            uint32                `binapi:"u32,name=sessions" json:"sessions,omitempty"`
+       UserSessions        uint32                `binapi:"u32,name=user_sessions" json:"user_sessions,omitempty"`
+       UserBuckets         uint32                `binapi:"u32,name=user_buckets" json:"user_buckets,omitempty"`
+       TranslationBuckets  uint32                `binapi:"u32,name=translation_buckets" json:"translation_buckets,omitempty"`
+       ForwardingEnabled   bool                  `binapi:"bool,name=forwarding_enabled" json:"forwarding_enabled,omitempty"`
+       IpfixLoggingEnabled bool                  `binapi:"bool,name=ipfix_logging_enabled" json:"ipfix_logging_enabled,omitempty"`
+       Timeouts            nat_types.NatTimeouts `binapi:"nat_timeouts,name=timeouts" json:"timeouts,omitempty"`
+       LogLevel            nat_types.NatLogLevel `binapi:"nat_log_level,name=log_level" json:"log_level,omitempty"`
+       Flags               Nat44EiConfigFlags    `binapi:"nat44_ei_config_flags,name=flags" json:"flags,omitempty"`
+}
+
+func (m *Nat44EiShowRunningConfigReply) Reset() { *m = Nat44EiShowRunningConfigReply{} }
+func (*Nat44EiShowRunningConfigReply) GetMessageName() string {
+       return "nat44_ei_show_running_config_reply"
+}
+func (*Nat44EiShowRunningConfigReply) GetCrcString() string { return "41b66a81" }
+func (*Nat44EiShowRunningConfigReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiShowRunningConfigReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.InsideVrf
+       size += 4 // m.OutsideVrf
+       size += 4 // m.Users
+       size += 4 // m.Sessions
+       size += 4 // m.UserSessions
+       size += 4 // m.UserBuckets
+       size += 4 // m.TranslationBuckets
+       size += 1 // m.ForwardingEnabled
+       size += 1 // m.IpfixLoggingEnabled
+       size += 4 // m.Timeouts.UDP
+       size += 4 // m.Timeouts.TCPEstablished
+       size += 4 // m.Timeouts.TCPTransitory
+       size += 4 // m.Timeouts.ICMP
+       size += 1 // m.LogLevel
+       size += 1 // m.Flags
+       return size
+}
+func (m *Nat44EiShowRunningConfigReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.InsideVrf)
+       buf.EncodeUint32(m.OutsideVrf)
+       buf.EncodeUint32(m.Users)
+       buf.EncodeUint32(m.Sessions)
+       buf.EncodeUint32(m.UserSessions)
+       buf.EncodeUint32(m.UserBuckets)
+       buf.EncodeUint32(m.TranslationBuckets)
+       buf.EncodeBool(m.ForwardingEnabled)
+       buf.EncodeBool(m.IpfixLoggingEnabled)
+       buf.EncodeUint32(m.Timeouts.UDP)
+       buf.EncodeUint32(m.Timeouts.TCPEstablished)
+       buf.EncodeUint32(m.Timeouts.TCPTransitory)
+       buf.EncodeUint32(m.Timeouts.ICMP)
+       buf.EncodeUint8(uint8(m.LogLevel))
+       buf.EncodeUint8(uint8(m.Flags))
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiShowRunningConfigReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.InsideVrf = buf.DecodeUint32()
+       m.OutsideVrf = buf.DecodeUint32()
+       m.Users = buf.DecodeUint32()
+       m.Sessions = buf.DecodeUint32()
+       m.UserSessions = buf.DecodeUint32()
+       m.UserBuckets = buf.DecodeUint32()
+       m.TranslationBuckets = buf.DecodeUint32()
+       m.ForwardingEnabled = buf.DecodeBool()
+       m.IpfixLoggingEnabled = buf.DecodeBool()
+       m.Timeouts.UDP = buf.DecodeUint32()
+       m.Timeouts.TCPEstablished = buf.DecodeUint32()
+       m.Timeouts.TCPTransitory = buf.DecodeUint32()
+       m.Timeouts.ICMP = buf.DecodeUint32()
+       m.LogLevel = nat_types.NatLogLevel(buf.DecodeUint8())
+       m.Flags = Nat44EiConfigFlags(buf.DecodeUint8())
+       return nil
+}
+
+// Nat44EiStaticMappingDetails defines message 'nat44_ei_static_mapping_details'.
+// InProgress: the message form may change in the future versions
+type Nat44EiStaticMappingDetails struct {
+       Flags             Nat44EiConfigFlags             `binapi:"nat44_ei_config_flags,name=flags" json:"flags,omitempty"`
+       LocalIPAddress    ip_types.IP4Address            `binapi:"ip4_address,name=local_ip_address" json:"local_ip_address,omitempty"`
+       ExternalIPAddress ip_types.IP4Address            `binapi:"ip4_address,name=external_ip_address" json:"external_ip_address,omitempty"`
+       Protocol          uint8                          `binapi:"u8,name=protocol" json:"protocol,omitempty"`
+       LocalPort         uint16                         `binapi:"u16,name=local_port" json:"local_port,omitempty"`
+       ExternalPort      uint16                         `binapi:"u16,name=external_port" json:"external_port,omitempty"`
+       ExternalSwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=external_sw_if_index" json:"external_sw_if_index,omitempty"`
+       VrfID             uint32                         `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+       Tag               string                         `binapi:"string[64],name=tag" json:"tag,omitempty"`
+}
+
+func (m *Nat44EiStaticMappingDetails) Reset()               { *m = Nat44EiStaticMappingDetails{} }
+func (*Nat44EiStaticMappingDetails) GetMessageName() string { return "nat44_ei_static_mapping_details" }
+func (*Nat44EiStaticMappingDetails) GetCrcString() string   { return "6b51ca6e" }
+func (*Nat44EiStaticMappingDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiStaticMappingDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1     // m.Flags
+       size += 1 * 4 // m.LocalIPAddress
+       size += 1 * 4 // m.ExternalIPAddress
+       size += 1     // m.Protocol
+       size += 2     // m.LocalPort
+       size += 2     // m.ExternalPort
+       size += 4     // m.ExternalSwIfIndex
+       size += 4     // m.VrfID
+       size += 64    // m.Tag
+       return size
+}
+func (m *Nat44EiStaticMappingDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(uint8(m.Flags))
+       buf.EncodeBytes(m.LocalIPAddress[:], 4)
+       buf.EncodeBytes(m.ExternalIPAddress[:], 4)
+       buf.EncodeUint8(m.Protocol)
+       buf.EncodeUint16(m.LocalPort)
+       buf.EncodeUint16(m.ExternalPort)
+       buf.EncodeUint32(uint32(m.ExternalSwIfIndex))
+       buf.EncodeUint32(m.VrfID)
+       buf.EncodeString(m.Tag, 64)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiStaticMappingDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Flags = Nat44EiConfigFlags(buf.DecodeUint8())
+       copy(m.LocalIPAddress[:], buf.DecodeBytes(4))
+       copy(m.ExternalIPAddress[:], buf.DecodeBytes(4))
+       m.Protocol = buf.DecodeUint8()
+       m.LocalPort = buf.DecodeUint16()
+       m.ExternalPort = buf.DecodeUint16()
+       m.ExternalSwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.VrfID = buf.DecodeUint32()
+       m.Tag = buf.DecodeString(64)
+       return nil
+}
+
+// Nat44EiStaticMappingDump defines message 'nat44_ei_static_mapping_dump'.
+// InProgress: the message form may change in the future versions
+type Nat44EiStaticMappingDump struct{}
+
+func (m *Nat44EiStaticMappingDump) Reset()               { *m = Nat44EiStaticMappingDump{} }
+func (*Nat44EiStaticMappingDump) GetMessageName() string { return "nat44_ei_static_mapping_dump" }
+func (*Nat44EiStaticMappingDump) GetCrcString() string   { return "51077d14" }
+func (*Nat44EiStaticMappingDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiStaticMappingDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat44EiStaticMappingDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiStaticMappingDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Nat44EiUserDetails defines message 'nat44_ei_user_details'.
+// InProgress: the message form may change in the future versions
+type Nat44EiUserDetails struct {
+       VrfID           uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+       IPAddress       ip_types.IP4Address `binapi:"ip4_address,name=ip_address" json:"ip_address,omitempty"`
+       Nsessions       uint32              `binapi:"u32,name=nsessions" json:"nsessions,omitempty"`
+       Nstaticsessions uint32              `binapi:"u32,name=nstaticsessions" json:"nstaticsessions,omitempty"`
+}
+
+func (m *Nat44EiUserDetails) Reset()               { *m = Nat44EiUserDetails{} }
+func (*Nat44EiUserDetails) GetMessageName() string { return "nat44_ei_user_details" }
+func (*Nat44EiUserDetails) GetCrcString() string   { return "355896c2" }
+func (*Nat44EiUserDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiUserDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4     // m.VrfID
+       size += 1 * 4 // m.IPAddress
+       size += 4     // m.Nsessions
+       size += 4     // m.Nstaticsessions
+       return size
+}
+func (m *Nat44EiUserDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.VrfID)
+       buf.EncodeBytes(m.IPAddress[:], 4)
+       buf.EncodeUint32(m.Nsessions)
+       buf.EncodeUint32(m.Nstaticsessions)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiUserDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.VrfID = buf.DecodeUint32()
+       copy(m.IPAddress[:], buf.DecodeBytes(4))
+       m.Nsessions = buf.DecodeUint32()
+       m.Nstaticsessions = buf.DecodeUint32()
+       return nil
+}
+
+// Nat44EiUserDump defines message 'nat44_ei_user_dump'.
+// InProgress: the message form may change in the future versions
+type Nat44EiUserDump struct{}
+
+func (m *Nat44EiUserDump) Reset()               { *m = Nat44EiUserDump{} }
+func (*Nat44EiUserDump) GetMessageName() string { return "nat44_ei_user_dump" }
+func (*Nat44EiUserDump) GetCrcString() string   { return "51077d14" }
+func (*Nat44EiUserDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiUserDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat44EiUserDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiUserDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Nat44EiUserSessionDetails defines message 'nat44_ei_user_session_details'.
+// InProgress: the message form may change in the future versions
+type Nat44EiUserSessionDetails struct {
+       OutsideIPAddress ip_types.IP4Address `binapi:"ip4_address,name=outside_ip_address" json:"outside_ip_address,omitempty"`
+       OutsidePort      uint16              `binapi:"u16,name=outside_port" json:"outside_port,omitempty"`
+       InsideIPAddress  ip_types.IP4Address `binapi:"ip4_address,name=inside_ip_address" json:"inside_ip_address,omitempty"`
+       InsidePort       uint16              `binapi:"u16,name=inside_port" json:"inside_port,omitempty"`
+       Protocol         uint16              `binapi:"u16,name=protocol" json:"protocol,omitempty"`
+       Flags            Nat44EiConfigFlags  `binapi:"nat44_ei_config_flags,name=flags" json:"flags,omitempty"`
+       LastHeard        uint64              `binapi:"u64,name=last_heard" json:"last_heard,omitempty"`
+       TotalBytes       uint64              `binapi:"u64,name=total_bytes" json:"total_bytes,omitempty"`
+       TotalPkts        uint32              `binapi:"u32,name=total_pkts" json:"total_pkts,omitempty"`
+       ExtHostAddress   ip_types.IP4Address `binapi:"ip4_address,name=ext_host_address" json:"ext_host_address,omitempty"`
+       ExtHostPort      uint16              `binapi:"u16,name=ext_host_port" json:"ext_host_port,omitempty"`
+}
+
+func (m *Nat44EiUserSessionDetails) Reset()               { *m = Nat44EiUserSessionDetails{} }
+func (*Nat44EiUserSessionDetails) GetMessageName() string { return "nat44_ei_user_session_details" }
+func (*Nat44EiUserSessionDetails) GetCrcString() string   { return "19b7c0ac" }
+func (*Nat44EiUserSessionDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiUserSessionDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4 // m.OutsideIPAddress
+       size += 2     // m.OutsidePort
+       size += 1 * 4 // m.InsideIPAddress
+       size += 2     // m.InsidePort
+       size += 2     // m.Protocol
+       size += 1     // m.Flags
+       size += 8     // m.LastHeard
+       size += 8     // m.TotalBytes
+       size += 4     // m.TotalPkts
+       size += 1 * 4 // m.ExtHostAddress
+       size += 2     // m.ExtHostPort
+       return size
+}
+func (m *Nat44EiUserSessionDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.OutsideIPAddress[:], 4)
+       buf.EncodeUint16(m.OutsidePort)
+       buf.EncodeBytes(m.InsideIPAddress[:], 4)
+       buf.EncodeUint16(m.InsidePort)
+       buf.EncodeUint16(m.Protocol)
+       buf.EncodeUint8(uint8(m.Flags))
+       buf.EncodeUint64(m.LastHeard)
+       buf.EncodeUint64(m.TotalBytes)
+       buf.EncodeUint32(m.TotalPkts)
+       buf.EncodeBytes(m.ExtHostAddress[:], 4)
+       buf.EncodeUint16(m.ExtHostPort)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiUserSessionDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.OutsideIPAddress[:], buf.DecodeBytes(4))
+       m.OutsidePort = buf.DecodeUint16()
+       copy(m.InsideIPAddress[:], buf.DecodeBytes(4))
+       m.InsidePort = buf.DecodeUint16()
+       m.Protocol = buf.DecodeUint16()
+       m.Flags = Nat44EiConfigFlags(buf.DecodeUint8())
+       m.LastHeard = buf.DecodeUint64()
+       m.TotalBytes = buf.DecodeUint64()
+       m.TotalPkts = buf.DecodeUint32()
+       copy(m.ExtHostAddress[:], buf.DecodeBytes(4))
+       m.ExtHostPort = buf.DecodeUint16()
+       return nil
+}
+
+// Nat44EiUserSessionDump defines message 'nat44_ei_user_session_dump'.
+// InProgress: the message form may change in the future versions
+type Nat44EiUserSessionDump struct {
+       IPAddress ip_types.IP4Address `binapi:"ip4_address,name=ip_address" json:"ip_address,omitempty"`
+       VrfID     uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+}
+
+func (m *Nat44EiUserSessionDump) Reset()               { *m = Nat44EiUserSessionDump{} }
+func (*Nat44EiUserSessionDump) GetMessageName() string { return "nat44_ei_user_session_dump" }
+func (*Nat44EiUserSessionDump) GetCrcString() string   { return "e1899c98" }
+func (*Nat44EiUserSessionDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiUserSessionDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4 // m.IPAddress
+       size += 4     // m.VrfID
+       return size
+}
+func (m *Nat44EiUserSessionDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.IPAddress[:], 4)
+       buf.EncodeUint32(m.VrfID)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiUserSessionDump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.IPAddress[:], buf.DecodeBytes(4))
+       m.VrfID = buf.DecodeUint32()
+       return nil
+}
+
+// Nat44EiWorkerDetails defines message 'nat44_ei_worker_details'.
+// InProgress: the message form may change in the future versions
+type Nat44EiWorkerDetails struct {
+       WorkerIndex uint32 `binapi:"u32,name=worker_index" json:"worker_index,omitempty"`
+       LcoreID     uint32 `binapi:"u32,name=lcore_id" json:"lcore_id,omitempty"`
+       Name        string `binapi:"string[64],name=name" json:"name,omitempty"`
+}
+
+func (m *Nat44EiWorkerDetails) Reset()               { *m = Nat44EiWorkerDetails{} }
+func (*Nat44EiWorkerDetails) GetMessageName() string { return "nat44_ei_worker_details" }
+func (*Nat44EiWorkerDetails) GetCrcString() string   { return "84bf06fc" }
+func (*Nat44EiWorkerDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat44EiWorkerDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4  // m.WorkerIndex
+       size += 4  // m.LcoreID
+       size += 64 // m.Name
+       return size
+}
+func (m *Nat44EiWorkerDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.WorkerIndex)
+       buf.EncodeUint32(m.LcoreID)
+       buf.EncodeString(m.Name, 64)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiWorkerDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.WorkerIndex = buf.DecodeUint32()
+       m.LcoreID = buf.DecodeUint32()
+       m.Name = buf.DecodeString(64)
+       return nil
+}
+
+// Nat44EiWorkerDump defines message 'nat44_ei_worker_dump'.
+// InProgress: the message form may change in the future versions
+type Nat44EiWorkerDump struct{}
+
+func (m *Nat44EiWorkerDump) Reset()               { *m = Nat44EiWorkerDump{} }
+func (*Nat44EiWorkerDump) GetMessageName() string { return "nat44_ei_worker_dump" }
+func (*Nat44EiWorkerDump) GetCrcString() string   { return "51077d14" }
+func (*Nat44EiWorkerDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat44EiWorkerDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat44EiWorkerDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat44EiWorkerDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+func init() { file_nat44_ei_binapi_init() }
+func file_nat44_ei_binapi_init() {
+       api.RegisterMessage((*Nat44EiAddDelAddressRange)(nil), "nat44_ei_add_del_address_range_35f21abc")
+       api.RegisterMessage((*Nat44EiAddDelAddressRangeReply)(nil), "nat44_ei_add_del_address_range_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EiAddDelIdentityMapping)(nil), "nat44_ei_add_del_identity_mapping_cb8606b9")
+       api.RegisterMessage((*Nat44EiAddDelIdentityMappingReply)(nil), "nat44_ei_add_del_identity_mapping_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EiAddDelInterfaceAddr)(nil), "nat44_ei_add_del_interface_addr_883abbcc")
+       api.RegisterMessage((*Nat44EiAddDelInterfaceAddrReply)(nil), "nat44_ei_add_del_interface_addr_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EiAddDelStaticMapping)(nil), "nat44_ei_add_del_static_mapping_b404b7fe")
+       api.RegisterMessage((*Nat44EiAddDelStaticMappingReply)(nil), "nat44_ei_add_del_static_mapping_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EiAddressDetails)(nil), "nat44_ei_address_details_318f1202")
+       api.RegisterMessage((*Nat44EiAddressDump)(nil), "nat44_ei_address_dump_51077d14")
+       api.RegisterMessage((*Nat44EiDelSession)(nil), "nat44_ei_del_session_74969ffe")
+       api.RegisterMessage((*Nat44EiDelSessionReply)(nil), "nat44_ei_del_session_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EiDelUser)(nil), "nat44_ei_del_user_99a9f998")
+       api.RegisterMessage((*Nat44EiDelUserReply)(nil), "nat44_ei_del_user_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EiForwardingEnableDisable)(nil), "nat44_ei_forwarding_enable_disable_b3e225d2")
+       api.RegisterMessage((*Nat44EiForwardingEnableDisableReply)(nil), "nat44_ei_forwarding_enable_disable_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EiGetAddrAndPortAllocAlg)(nil), "nat44_ei_get_addr_and_port_alloc_alg_51077d14")
+       api.RegisterMessage((*Nat44EiGetAddrAndPortAllocAlgReply)(nil), "nat44_ei_get_addr_and_port_alloc_alg_reply_3607a7d0")
+       api.RegisterMessage((*Nat44EiGetMssClamping)(nil), "nat44_ei_get_mss_clamping_51077d14")
+       api.RegisterMessage((*Nat44EiGetMssClampingReply)(nil), "nat44_ei_get_mss_clamping_reply_1c0b2a78")
+       api.RegisterMessage((*Nat44EiHaFlush)(nil), "nat44_ei_ha_flush_51077d14")
+       api.RegisterMessage((*Nat44EiHaFlushReply)(nil), "nat44_ei_ha_flush_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EiHaGetFailover)(nil), "nat44_ei_ha_get_failover_51077d14")
+       api.RegisterMessage((*Nat44EiHaGetFailoverReply)(nil), "nat44_ei_ha_get_failover_reply_a67d8752")
+       api.RegisterMessage((*Nat44EiHaGetListener)(nil), "nat44_ei_ha_get_listener_51077d14")
+       api.RegisterMessage((*Nat44EiHaGetListenerReply)(nil), "nat44_ei_ha_get_listener_reply_123ea41f")
+       api.RegisterMessage((*Nat44EiHaResync)(nil), "nat44_ei_ha_resync_c8ab9e03")
+       api.RegisterMessage((*Nat44EiHaResyncCompletedEvent)(nil), "nat44_ei_ha_resync_completed_event_fdc598fb")
+       api.RegisterMessage((*Nat44EiHaResyncReply)(nil), "nat44_ei_ha_resync_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EiHaSetFailover)(nil), "nat44_ei_ha_set_failover_718246af")
+       api.RegisterMessage((*Nat44EiHaSetFailoverReply)(nil), "nat44_ei_ha_set_failover_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EiHaSetListener)(nil), "nat44_ei_ha_set_listener_e4a8cb4e")
+       api.RegisterMessage((*Nat44EiHaSetListenerReply)(nil), "nat44_ei_ha_set_listener_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EiIdentityMappingDetails)(nil), "nat44_ei_identity_mapping_details_30d53e26")
+       api.RegisterMessage((*Nat44EiIdentityMappingDump)(nil), "nat44_ei_identity_mapping_dump_51077d14")
+       api.RegisterMessage((*Nat44EiInterfaceAddDelFeature)(nil), "nat44_ei_interface_add_del_feature_63a2db8b")
+       api.RegisterMessage((*Nat44EiInterfaceAddDelFeatureReply)(nil), "nat44_ei_interface_add_del_feature_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EiInterfaceAddDelOutputFeature)(nil), "nat44_ei_interface_add_del_output_feature_63a2db8b")
+       api.RegisterMessage((*Nat44EiInterfaceAddDelOutputFeatureReply)(nil), "nat44_ei_interface_add_del_output_feature_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EiInterfaceAddrDetails)(nil), "nat44_ei_interface_addr_details_0b45011c")
+       api.RegisterMessage((*Nat44EiInterfaceAddrDump)(nil), "nat44_ei_interface_addr_dump_51077d14")
+       api.RegisterMessage((*Nat44EiInterfaceDetails)(nil), "nat44_ei_interface_details_f446e508")
+       api.RegisterMessage((*Nat44EiInterfaceDump)(nil), "nat44_ei_interface_dump_51077d14")
+       api.RegisterMessage((*Nat44EiInterfaceOutputFeatureDetails)(nil), "nat44_ei_interface_output_feature_details_f446e508")
+       api.RegisterMessage((*Nat44EiInterfaceOutputFeatureDump)(nil), "nat44_ei_interface_output_feature_dump_51077d14")
+       api.RegisterMessage((*Nat44EiIpfixEnableDisable)(nil), "nat44_ei_ipfix_enable_disable_9af4a2d2")
+       api.RegisterMessage((*Nat44EiIpfixEnableDisableReply)(nil), "nat44_ei_ipfix_enable_disable_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EiPluginEnableDisable)(nil), "nat44_ei_plugin_enable_disable_bf692144")
+       api.RegisterMessage((*Nat44EiPluginEnableDisableReply)(nil), "nat44_ei_plugin_enable_disable_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EiSetAddrAndPortAllocAlg)(nil), "nat44_ei_set_addr_and_port_alloc_alg_deeb746f")
+       api.RegisterMessage((*Nat44EiSetAddrAndPortAllocAlgReply)(nil), "nat44_ei_set_addr_and_port_alloc_alg_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EiSetFqOptions)(nil), "nat44_ei_set_fq_options_2399bd71")
+       api.RegisterMessage((*Nat44EiSetFqOptionsReply)(nil), "nat44_ei_set_fq_options_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EiSetLogLevel)(nil), "nat44_ei_set_log_level_70076bfe")
+       api.RegisterMessage((*Nat44EiSetLogLevelReply)(nil), "nat44_ei_set_log_level_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EiSetMssClamping)(nil), "nat44_ei_set_mss_clamping_25e90abb")
+       api.RegisterMessage((*Nat44EiSetMssClampingReply)(nil), "nat44_ei_set_mss_clamping_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EiSetTimeouts)(nil), "nat44_ei_set_timeouts_d4746b16")
+       api.RegisterMessage((*Nat44EiSetTimeoutsReply)(nil), "nat44_ei_set_timeouts_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EiSetWorkers)(nil), "nat44_ei_set_workers_da926638")
+       api.RegisterMessage((*Nat44EiSetWorkersReply)(nil), "nat44_ei_set_workers_reply_e8d4e804")
+       api.RegisterMessage((*Nat44EiShowFqOptions)(nil), "nat44_ei_show_fq_options_51077d14")
+       api.RegisterMessage((*Nat44EiShowFqOptionsReply)(nil), "nat44_ei_show_fq_options_reply_7213b545")
+       api.RegisterMessage((*Nat44EiShowRunningConfig)(nil), "nat44_ei_show_running_config_51077d14")
+       api.RegisterMessage((*Nat44EiShowRunningConfigReply)(nil), "nat44_ei_show_running_config_reply_41b66a81")
+       api.RegisterMessage((*Nat44EiStaticMappingDetails)(nil), "nat44_ei_static_mapping_details_6b51ca6e")
+       api.RegisterMessage((*Nat44EiStaticMappingDump)(nil), "nat44_ei_static_mapping_dump_51077d14")
+       api.RegisterMessage((*Nat44EiUserDetails)(nil), "nat44_ei_user_details_355896c2")
+       api.RegisterMessage((*Nat44EiUserDump)(nil), "nat44_ei_user_dump_51077d14")
+       api.RegisterMessage((*Nat44EiUserSessionDetails)(nil), "nat44_ei_user_session_details_19b7c0ac")
+       api.RegisterMessage((*Nat44EiUserSessionDump)(nil), "nat44_ei_user_session_dump_e1899c98")
+       api.RegisterMessage((*Nat44EiWorkerDetails)(nil), "nat44_ei_worker_details_84bf06fc")
+       api.RegisterMessage((*Nat44EiWorkerDump)(nil), "nat44_ei_worker_dump_51077d14")
+}
+
+// Messages returns list of all messages in this module.
+func AllMessages() []api.Message {
+       return []api.Message{
+               (*Nat44EiAddDelAddressRange)(nil),
+               (*Nat44EiAddDelAddressRangeReply)(nil),
+               (*Nat44EiAddDelIdentityMapping)(nil),
+               (*Nat44EiAddDelIdentityMappingReply)(nil),
+               (*Nat44EiAddDelInterfaceAddr)(nil),
+               (*Nat44EiAddDelInterfaceAddrReply)(nil),
+               (*Nat44EiAddDelStaticMapping)(nil),
+               (*Nat44EiAddDelStaticMappingReply)(nil),
+               (*Nat44EiAddressDetails)(nil),
+               (*Nat44EiAddressDump)(nil),
+               (*Nat44EiDelSession)(nil),
+               (*Nat44EiDelSessionReply)(nil),
+               (*Nat44EiDelUser)(nil),
+               (*Nat44EiDelUserReply)(nil),
+               (*Nat44EiForwardingEnableDisable)(nil),
+               (*Nat44EiForwardingEnableDisableReply)(nil),
+               (*Nat44EiGetAddrAndPortAllocAlg)(nil),
+               (*Nat44EiGetAddrAndPortAllocAlgReply)(nil),
+               (*Nat44EiGetMssClamping)(nil),
+               (*Nat44EiGetMssClampingReply)(nil),
+               (*Nat44EiHaFlush)(nil),
+               (*Nat44EiHaFlushReply)(nil),
+               (*Nat44EiHaGetFailover)(nil),
+               (*Nat44EiHaGetFailoverReply)(nil),
+               (*Nat44EiHaGetListener)(nil),
+               (*Nat44EiHaGetListenerReply)(nil),
+               (*Nat44EiHaResync)(nil),
+               (*Nat44EiHaResyncCompletedEvent)(nil),
+               (*Nat44EiHaResyncReply)(nil),
+               (*Nat44EiHaSetFailover)(nil),
+               (*Nat44EiHaSetFailoverReply)(nil),
+               (*Nat44EiHaSetListener)(nil),
+               (*Nat44EiHaSetListenerReply)(nil),
+               (*Nat44EiIdentityMappingDetails)(nil),
+               (*Nat44EiIdentityMappingDump)(nil),
+               (*Nat44EiInterfaceAddDelFeature)(nil),
+               (*Nat44EiInterfaceAddDelFeatureReply)(nil),
+               (*Nat44EiInterfaceAddDelOutputFeature)(nil),
+               (*Nat44EiInterfaceAddDelOutputFeatureReply)(nil),
+               (*Nat44EiInterfaceAddrDetails)(nil),
+               (*Nat44EiInterfaceAddrDump)(nil),
+               (*Nat44EiInterfaceDetails)(nil),
+               (*Nat44EiInterfaceDump)(nil),
+               (*Nat44EiInterfaceOutputFeatureDetails)(nil),
+               (*Nat44EiInterfaceOutputFeatureDump)(nil),
+               (*Nat44EiIpfixEnableDisable)(nil),
+               (*Nat44EiIpfixEnableDisableReply)(nil),
+               (*Nat44EiPluginEnableDisable)(nil),
+               (*Nat44EiPluginEnableDisableReply)(nil),
+               (*Nat44EiSetAddrAndPortAllocAlg)(nil),
+               (*Nat44EiSetAddrAndPortAllocAlgReply)(nil),
+               (*Nat44EiSetFqOptions)(nil),
+               (*Nat44EiSetFqOptionsReply)(nil),
+               (*Nat44EiSetLogLevel)(nil),
+               (*Nat44EiSetLogLevelReply)(nil),
+               (*Nat44EiSetMssClamping)(nil),
+               (*Nat44EiSetMssClampingReply)(nil),
+               (*Nat44EiSetTimeouts)(nil),
+               (*Nat44EiSetTimeoutsReply)(nil),
+               (*Nat44EiSetWorkers)(nil),
+               (*Nat44EiSetWorkersReply)(nil),
+               (*Nat44EiShowFqOptions)(nil),
+               (*Nat44EiShowFqOptionsReply)(nil),
+               (*Nat44EiShowRunningConfig)(nil),
+               (*Nat44EiShowRunningConfigReply)(nil),
+               (*Nat44EiStaticMappingDetails)(nil),
+               (*Nat44EiStaticMappingDump)(nil),
+               (*Nat44EiUserDetails)(nil),
+               (*Nat44EiUserDump)(nil),
+               (*Nat44EiUserSessionDetails)(nil),
+               (*Nat44EiUserSessionDump)(nil),
+               (*Nat44EiWorkerDetails)(nil),
+               (*Nat44EiWorkerDump)(nil),
+       }
+}
diff --git a/binapi/nat44_ei/nat44_ei_rpc.ba.go b/binapi/nat44_ei/nat44_ei_rpc.ba.go
new file mode 100644 (file)
index 0000000..d225dab
--- /dev/null
@@ -0,0 +1,654 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+
+package nat44_ei
+
+import (
+       "context"
+       "fmt"
+       "io"
+
+       api "git.fd.io/govpp.git/api"
+       vpe "git.fd.io/govpp.git/binapi/vpe"
+)
+
+// RPCService defines RPC service nat44_ei.
+type RPCService interface {
+       Nat44EiAddDelAddressRange(ctx context.Context, in *Nat44EiAddDelAddressRange) (*Nat44EiAddDelAddressRangeReply, error)
+       Nat44EiAddDelIdentityMapping(ctx context.Context, in *Nat44EiAddDelIdentityMapping) (*Nat44EiAddDelIdentityMappingReply, error)
+       Nat44EiAddDelInterfaceAddr(ctx context.Context, in *Nat44EiAddDelInterfaceAddr) (*Nat44EiAddDelInterfaceAddrReply, error)
+       Nat44EiAddDelStaticMapping(ctx context.Context, in *Nat44EiAddDelStaticMapping) (*Nat44EiAddDelStaticMappingReply, error)
+       Nat44EiAddressDump(ctx context.Context, in *Nat44EiAddressDump) (RPCService_Nat44EiAddressDumpClient, error)
+       Nat44EiDelSession(ctx context.Context, in *Nat44EiDelSession) (*Nat44EiDelSessionReply, error)
+       Nat44EiDelUser(ctx context.Context, in *Nat44EiDelUser) (*Nat44EiDelUserReply, error)
+       Nat44EiForwardingEnableDisable(ctx context.Context, in *Nat44EiForwardingEnableDisable) (*Nat44EiForwardingEnableDisableReply, error)
+       Nat44EiGetAddrAndPortAllocAlg(ctx context.Context, in *Nat44EiGetAddrAndPortAllocAlg) (*Nat44EiGetAddrAndPortAllocAlgReply, error)
+       Nat44EiGetMssClamping(ctx context.Context, in *Nat44EiGetMssClamping) (*Nat44EiGetMssClampingReply, error)
+       Nat44EiHaFlush(ctx context.Context, in *Nat44EiHaFlush) (*Nat44EiHaFlushReply, error)
+       Nat44EiHaGetFailover(ctx context.Context, in *Nat44EiHaGetFailover) (*Nat44EiHaGetFailoverReply, error)
+       Nat44EiHaGetListener(ctx context.Context, in *Nat44EiHaGetListener) (*Nat44EiHaGetListenerReply, error)
+       Nat44EiHaResync(ctx context.Context, in *Nat44EiHaResync) (*Nat44EiHaResyncReply, error)
+       Nat44EiHaSetFailover(ctx context.Context, in *Nat44EiHaSetFailover) (*Nat44EiHaSetFailoverReply, error)
+       Nat44EiHaSetListener(ctx context.Context, in *Nat44EiHaSetListener) (*Nat44EiHaSetListenerReply, error)
+       Nat44EiIdentityMappingDump(ctx context.Context, in *Nat44EiIdentityMappingDump) (RPCService_Nat44EiIdentityMappingDumpClient, error)
+       Nat44EiInterfaceAddDelFeature(ctx context.Context, in *Nat44EiInterfaceAddDelFeature) (*Nat44EiInterfaceAddDelFeatureReply, error)
+       Nat44EiInterfaceAddDelOutputFeature(ctx context.Context, in *Nat44EiInterfaceAddDelOutputFeature) (*Nat44EiInterfaceAddDelOutputFeatureReply, error)
+       Nat44EiInterfaceAddrDump(ctx context.Context, in *Nat44EiInterfaceAddrDump) (RPCService_Nat44EiInterfaceAddrDumpClient, error)
+       Nat44EiInterfaceDump(ctx context.Context, in *Nat44EiInterfaceDump) (RPCService_Nat44EiInterfaceDumpClient, error)
+       Nat44EiInterfaceOutputFeatureDump(ctx context.Context, in *Nat44EiInterfaceOutputFeatureDump) (RPCService_Nat44EiInterfaceOutputFeatureDumpClient, error)
+       Nat44EiIpfixEnableDisable(ctx context.Context, in *Nat44EiIpfixEnableDisable) (*Nat44EiIpfixEnableDisableReply, error)
+       Nat44EiPluginEnableDisable(ctx context.Context, in *Nat44EiPluginEnableDisable) (*Nat44EiPluginEnableDisableReply, error)
+       Nat44EiSetAddrAndPortAllocAlg(ctx context.Context, in *Nat44EiSetAddrAndPortAllocAlg) (*Nat44EiSetAddrAndPortAllocAlgReply, error)
+       Nat44EiSetFqOptions(ctx context.Context, in *Nat44EiSetFqOptions) (*Nat44EiSetFqOptionsReply, error)
+       Nat44EiSetLogLevel(ctx context.Context, in *Nat44EiSetLogLevel) (*Nat44EiSetLogLevelReply, error)
+       Nat44EiSetMssClamping(ctx context.Context, in *Nat44EiSetMssClamping) (*Nat44EiSetMssClampingReply, error)
+       Nat44EiSetTimeouts(ctx context.Context, in *Nat44EiSetTimeouts) (*Nat44EiSetTimeoutsReply, error)
+       Nat44EiSetWorkers(ctx context.Context, in *Nat44EiSetWorkers) (*Nat44EiSetWorkersReply, error)
+       Nat44EiShowFqOptions(ctx context.Context, in *Nat44EiShowFqOptions) (*Nat44EiShowFqOptionsReply, error)
+       Nat44EiShowRunningConfig(ctx context.Context, in *Nat44EiShowRunningConfig) (*Nat44EiShowRunningConfigReply, error)
+       Nat44EiStaticMappingDump(ctx context.Context, in *Nat44EiStaticMappingDump) (RPCService_Nat44EiStaticMappingDumpClient, error)
+       Nat44EiUserDump(ctx context.Context, in *Nat44EiUserDump) (RPCService_Nat44EiUserDumpClient, error)
+       Nat44EiUserSessionDump(ctx context.Context, in *Nat44EiUserSessionDump) (RPCService_Nat44EiUserSessionDumpClient, error)
+       Nat44EiWorkerDump(ctx context.Context, in *Nat44EiWorkerDump) (RPCService_Nat44EiWorkerDumpClient, error)
+}
+
+type serviceClient struct {
+       conn api.Connection
+}
+
+func NewServiceClient(conn api.Connection) RPCService {
+       return &serviceClient{conn}
+}
+
+func (c *serviceClient) Nat44EiAddDelAddressRange(ctx context.Context, in *Nat44EiAddDelAddressRange) (*Nat44EiAddDelAddressRangeReply, error) {
+       out := new(Nat44EiAddDelAddressRangeReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiAddDelIdentityMapping(ctx context.Context, in *Nat44EiAddDelIdentityMapping) (*Nat44EiAddDelIdentityMappingReply, error) {
+       out := new(Nat44EiAddDelIdentityMappingReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiAddDelInterfaceAddr(ctx context.Context, in *Nat44EiAddDelInterfaceAddr) (*Nat44EiAddDelInterfaceAddrReply, error) {
+       out := new(Nat44EiAddDelInterfaceAddrReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiAddDelStaticMapping(ctx context.Context, in *Nat44EiAddDelStaticMapping) (*Nat44EiAddDelStaticMappingReply, error) {
+       out := new(Nat44EiAddDelStaticMappingReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiAddressDump(ctx context.Context, in *Nat44EiAddressDump) (RPCService_Nat44EiAddressDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Nat44EiAddressDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Nat44EiAddressDumpClient interface {
+       Recv() (*Nat44EiAddressDetails, error)
+       api.Stream
+}
+
+type serviceClient_Nat44EiAddressDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Nat44EiAddressDumpClient) Recv() (*Nat44EiAddressDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Nat44EiAddressDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) Nat44EiDelSession(ctx context.Context, in *Nat44EiDelSession) (*Nat44EiDelSessionReply, error) {
+       out := new(Nat44EiDelSessionReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiDelUser(ctx context.Context, in *Nat44EiDelUser) (*Nat44EiDelUserReply, error) {
+       out := new(Nat44EiDelUserReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiForwardingEnableDisable(ctx context.Context, in *Nat44EiForwardingEnableDisable) (*Nat44EiForwardingEnableDisableReply, error) {
+       out := new(Nat44EiForwardingEnableDisableReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiGetAddrAndPortAllocAlg(ctx context.Context, in *Nat44EiGetAddrAndPortAllocAlg) (*Nat44EiGetAddrAndPortAllocAlgReply, error) {
+       out := new(Nat44EiGetAddrAndPortAllocAlgReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiGetMssClamping(ctx context.Context, in *Nat44EiGetMssClamping) (*Nat44EiGetMssClampingReply, error) {
+       out := new(Nat44EiGetMssClampingReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiHaFlush(ctx context.Context, in *Nat44EiHaFlush) (*Nat44EiHaFlushReply, error) {
+       out := new(Nat44EiHaFlushReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiHaGetFailover(ctx context.Context, in *Nat44EiHaGetFailover) (*Nat44EiHaGetFailoverReply, error) {
+       out := new(Nat44EiHaGetFailoverReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiHaGetListener(ctx context.Context, in *Nat44EiHaGetListener) (*Nat44EiHaGetListenerReply, error) {
+       out := new(Nat44EiHaGetListenerReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiHaResync(ctx context.Context, in *Nat44EiHaResync) (*Nat44EiHaResyncReply, error) {
+       out := new(Nat44EiHaResyncReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiHaSetFailover(ctx context.Context, in *Nat44EiHaSetFailover) (*Nat44EiHaSetFailoverReply, error) {
+       out := new(Nat44EiHaSetFailoverReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiHaSetListener(ctx context.Context, in *Nat44EiHaSetListener) (*Nat44EiHaSetListenerReply, error) {
+       out := new(Nat44EiHaSetListenerReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiIdentityMappingDump(ctx context.Context, in *Nat44EiIdentityMappingDump) (RPCService_Nat44EiIdentityMappingDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Nat44EiIdentityMappingDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Nat44EiIdentityMappingDumpClient interface {
+       Recv() (*Nat44EiIdentityMappingDetails, error)
+       api.Stream
+}
+
+type serviceClient_Nat44EiIdentityMappingDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Nat44EiIdentityMappingDumpClient) Recv() (*Nat44EiIdentityMappingDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Nat44EiIdentityMappingDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) Nat44EiInterfaceAddDelFeature(ctx context.Context, in *Nat44EiInterfaceAddDelFeature) (*Nat44EiInterfaceAddDelFeatureReply, error) {
+       out := new(Nat44EiInterfaceAddDelFeatureReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiInterfaceAddDelOutputFeature(ctx context.Context, in *Nat44EiInterfaceAddDelOutputFeature) (*Nat44EiInterfaceAddDelOutputFeatureReply, error) {
+       out := new(Nat44EiInterfaceAddDelOutputFeatureReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiInterfaceAddrDump(ctx context.Context, in *Nat44EiInterfaceAddrDump) (RPCService_Nat44EiInterfaceAddrDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Nat44EiInterfaceAddrDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Nat44EiInterfaceAddrDumpClient interface {
+       Recv() (*Nat44EiInterfaceAddrDetails, error)
+       api.Stream
+}
+
+type serviceClient_Nat44EiInterfaceAddrDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Nat44EiInterfaceAddrDumpClient) Recv() (*Nat44EiInterfaceAddrDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Nat44EiInterfaceAddrDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) Nat44EiInterfaceDump(ctx context.Context, in *Nat44EiInterfaceDump) (RPCService_Nat44EiInterfaceDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Nat44EiInterfaceDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Nat44EiInterfaceDumpClient interface {
+       Recv() (*Nat44EiInterfaceDetails, error)
+       api.Stream
+}
+
+type serviceClient_Nat44EiInterfaceDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Nat44EiInterfaceDumpClient) Recv() (*Nat44EiInterfaceDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Nat44EiInterfaceDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) Nat44EiInterfaceOutputFeatureDump(ctx context.Context, in *Nat44EiInterfaceOutputFeatureDump) (RPCService_Nat44EiInterfaceOutputFeatureDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Nat44EiInterfaceOutputFeatureDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Nat44EiInterfaceOutputFeatureDumpClient interface {
+       Recv() (*Nat44EiInterfaceOutputFeatureDetails, error)
+       api.Stream
+}
+
+type serviceClient_Nat44EiInterfaceOutputFeatureDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Nat44EiInterfaceOutputFeatureDumpClient) Recv() (*Nat44EiInterfaceOutputFeatureDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Nat44EiInterfaceOutputFeatureDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) Nat44EiIpfixEnableDisable(ctx context.Context, in *Nat44EiIpfixEnableDisable) (*Nat44EiIpfixEnableDisableReply, error) {
+       out := new(Nat44EiIpfixEnableDisableReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiPluginEnableDisable(ctx context.Context, in *Nat44EiPluginEnableDisable) (*Nat44EiPluginEnableDisableReply, error) {
+       out := new(Nat44EiPluginEnableDisableReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiSetAddrAndPortAllocAlg(ctx context.Context, in *Nat44EiSetAddrAndPortAllocAlg) (*Nat44EiSetAddrAndPortAllocAlgReply, error) {
+       out := new(Nat44EiSetAddrAndPortAllocAlgReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiSetFqOptions(ctx context.Context, in *Nat44EiSetFqOptions) (*Nat44EiSetFqOptionsReply, error) {
+       out := new(Nat44EiSetFqOptionsReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiSetLogLevel(ctx context.Context, in *Nat44EiSetLogLevel) (*Nat44EiSetLogLevelReply, error) {
+       out := new(Nat44EiSetLogLevelReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiSetMssClamping(ctx context.Context, in *Nat44EiSetMssClamping) (*Nat44EiSetMssClampingReply, error) {
+       out := new(Nat44EiSetMssClampingReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiSetTimeouts(ctx context.Context, in *Nat44EiSetTimeouts) (*Nat44EiSetTimeoutsReply, error) {
+       out := new(Nat44EiSetTimeoutsReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiSetWorkers(ctx context.Context, in *Nat44EiSetWorkers) (*Nat44EiSetWorkersReply, error) {
+       out := new(Nat44EiSetWorkersReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiShowFqOptions(ctx context.Context, in *Nat44EiShowFqOptions) (*Nat44EiShowFqOptionsReply, error) {
+       out := new(Nat44EiShowFqOptionsReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiShowRunningConfig(ctx context.Context, in *Nat44EiShowRunningConfig) (*Nat44EiShowRunningConfigReply, error) {
+       out := new(Nat44EiShowRunningConfigReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat44EiStaticMappingDump(ctx context.Context, in *Nat44EiStaticMappingDump) (RPCService_Nat44EiStaticMappingDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Nat44EiStaticMappingDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Nat44EiStaticMappingDumpClient interface {
+       Recv() (*Nat44EiStaticMappingDetails, error)
+       api.Stream
+}
+
+type serviceClient_Nat44EiStaticMappingDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Nat44EiStaticMappingDumpClient) Recv() (*Nat44EiStaticMappingDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Nat44EiStaticMappingDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) Nat44EiUserDump(ctx context.Context, in *Nat44EiUserDump) (RPCService_Nat44EiUserDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Nat44EiUserDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Nat44EiUserDumpClient interface {
+       Recv() (*Nat44EiUserDetails, error)
+       api.Stream
+}
+
+type serviceClient_Nat44EiUserDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Nat44EiUserDumpClient) Recv() (*Nat44EiUserDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Nat44EiUserDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) Nat44EiUserSessionDump(ctx context.Context, in *Nat44EiUserSessionDump) (RPCService_Nat44EiUserSessionDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Nat44EiUserSessionDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Nat44EiUserSessionDumpClient interface {
+       Recv() (*Nat44EiUserSessionDetails, error)
+       api.Stream
+}
+
+type serviceClient_Nat44EiUserSessionDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Nat44EiUserSessionDumpClient) Recv() (*Nat44EiUserSessionDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Nat44EiUserSessionDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) Nat44EiWorkerDump(ctx context.Context, in *Nat44EiWorkerDump) (RPCService_Nat44EiWorkerDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Nat44EiWorkerDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Nat44EiWorkerDumpClient interface {
+       Recv() (*Nat44EiWorkerDetails, error)
+       api.Stream
+}
+
+type serviceClient_Nat44EiWorkerDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Nat44EiWorkerDumpClient) Recv() (*Nat44EiWorkerDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Nat44EiWorkerDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
diff --git a/binapi/nat64/nat64.ba.go b/binapi/nat64/nat64.ba.go
new file mode 100644 (file)
index 0000000..c7c813b
--- /dev/null
@@ -0,0 +1,1114 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/nat64.api.json
+
+// Package nat64 contains generated bindings for API file nat64.api.
+//
+// Contents:
+//  26 messages
+//
+package nat64
+
+import (
+       api "git.fd.io/govpp.git/api"
+       interface_types "git.fd.io/govpp.git/binapi/interface_types"
+       ip_types "git.fd.io/govpp.git/binapi/ip_types"
+       nat_types "git.fd.io/govpp.git/binapi/nat_types"
+       codec "git.fd.io/govpp.git/codec"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+const (
+       APIFile    = "nat64"
+       APIVersion = "1.0.0"
+       VersionCrc = 0xfbd06e33
+)
+
+// Nat64AddDelInterface defines message 'nat64_add_del_interface'.
+type Nat64AddDelInterface struct {
+       IsAdd     bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       Flags     nat_types.NatConfigFlags       `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *Nat64AddDelInterface) Reset()               { *m = Nat64AddDelInterface{} }
+func (*Nat64AddDelInterface) GetMessageName() string { return "nat64_add_del_interface" }
+func (*Nat64AddDelInterface) GetCrcString() string   { return "f3699b83" }
+func (*Nat64AddDelInterface) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat64AddDelInterface) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.IsAdd
+       size += 1 // m.Flags
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *Nat64AddDelInterface) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsAdd)
+       buf.EncodeUint8(uint8(m.Flags))
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *Nat64AddDelInterface) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeBool()
+       m.Flags = nat_types.NatConfigFlags(buf.DecodeUint8())
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// Nat64AddDelInterfaceAddr defines message 'nat64_add_del_interface_addr'.
+type Nat64AddDelInterfaceAddr struct {
+       IsAdd     bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *Nat64AddDelInterfaceAddr) Reset()               { *m = Nat64AddDelInterfaceAddr{} }
+func (*Nat64AddDelInterfaceAddr) GetMessageName() string { return "nat64_add_del_interface_addr" }
+func (*Nat64AddDelInterfaceAddr) GetCrcString() string   { return "47d6e753" }
+func (*Nat64AddDelInterfaceAddr) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat64AddDelInterfaceAddr) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.IsAdd
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *Nat64AddDelInterfaceAddr) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsAdd)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *Nat64AddDelInterfaceAddr) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeBool()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// Nat64AddDelInterfaceAddrReply defines message 'nat64_add_del_interface_addr_reply'.
+type Nat64AddDelInterfaceAddrReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat64AddDelInterfaceAddrReply) Reset() { *m = Nat64AddDelInterfaceAddrReply{} }
+func (*Nat64AddDelInterfaceAddrReply) GetMessageName() string {
+       return "nat64_add_del_interface_addr_reply"
+}
+func (*Nat64AddDelInterfaceAddrReply) GetCrcString() string { return "e8d4e804" }
+func (*Nat64AddDelInterfaceAddrReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat64AddDelInterfaceAddrReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat64AddDelInterfaceAddrReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat64AddDelInterfaceAddrReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat64AddDelInterfaceReply defines message 'nat64_add_del_interface_reply'.
+type Nat64AddDelInterfaceReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat64AddDelInterfaceReply) Reset()               { *m = Nat64AddDelInterfaceReply{} }
+func (*Nat64AddDelInterfaceReply) GetMessageName() string { return "nat64_add_del_interface_reply" }
+func (*Nat64AddDelInterfaceReply) GetCrcString() string   { return "e8d4e804" }
+func (*Nat64AddDelInterfaceReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat64AddDelInterfaceReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat64AddDelInterfaceReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat64AddDelInterfaceReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat64AddDelPoolAddrRange defines message 'nat64_add_del_pool_addr_range'.
+type Nat64AddDelPoolAddrRange struct {
+       StartAddr ip_types.IP4Address `binapi:"ip4_address,name=start_addr" json:"start_addr,omitempty"`
+       EndAddr   ip_types.IP4Address `binapi:"ip4_address,name=end_addr" json:"end_addr,omitempty"`
+       VrfID     uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+       IsAdd     bool                `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+}
+
+func (m *Nat64AddDelPoolAddrRange) Reset()               { *m = Nat64AddDelPoolAddrRange{} }
+func (*Nat64AddDelPoolAddrRange) GetMessageName() string { return "nat64_add_del_pool_addr_range" }
+func (*Nat64AddDelPoolAddrRange) GetCrcString() string   { return "a3b944e3" }
+func (*Nat64AddDelPoolAddrRange) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat64AddDelPoolAddrRange) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4 // m.StartAddr
+       size += 1 * 4 // m.EndAddr
+       size += 4     // m.VrfID
+       size += 1     // m.IsAdd
+       return size
+}
+func (m *Nat64AddDelPoolAddrRange) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.StartAddr[:], 4)
+       buf.EncodeBytes(m.EndAddr[:], 4)
+       buf.EncodeUint32(m.VrfID)
+       buf.EncodeBool(m.IsAdd)
+       return buf.Bytes(), nil
+}
+func (m *Nat64AddDelPoolAddrRange) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.StartAddr[:], buf.DecodeBytes(4))
+       copy(m.EndAddr[:], buf.DecodeBytes(4))
+       m.VrfID = buf.DecodeUint32()
+       m.IsAdd = buf.DecodeBool()
+       return nil
+}
+
+// Nat64AddDelPoolAddrRangeReply defines message 'nat64_add_del_pool_addr_range_reply'.
+type Nat64AddDelPoolAddrRangeReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat64AddDelPoolAddrRangeReply) Reset() { *m = Nat64AddDelPoolAddrRangeReply{} }
+func (*Nat64AddDelPoolAddrRangeReply) GetMessageName() string {
+       return "nat64_add_del_pool_addr_range_reply"
+}
+func (*Nat64AddDelPoolAddrRangeReply) GetCrcString() string { return "e8d4e804" }
+func (*Nat64AddDelPoolAddrRangeReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat64AddDelPoolAddrRangeReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat64AddDelPoolAddrRangeReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat64AddDelPoolAddrRangeReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat64AddDelPrefix defines message 'nat64_add_del_prefix'.
+type Nat64AddDelPrefix struct {
+       Prefix ip_types.IP6Prefix `binapi:"ip6_prefix,name=prefix" json:"prefix,omitempty"`
+       VrfID  uint32             `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+       IsAdd  bool               `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+}
+
+func (m *Nat64AddDelPrefix) Reset()               { *m = Nat64AddDelPrefix{} }
+func (*Nat64AddDelPrefix) GetMessageName() string { return "nat64_add_del_prefix" }
+func (*Nat64AddDelPrefix) GetCrcString() string   { return "727b2f4c" }
+func (*Nat64AddDelPrefix) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat64AddDelPrefix) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 16 // m.Prefix.Address
+       size += 1      // m.Prefix.Len
+       size += 4      // m.VrfID
+       size += 1      // m.IsAdd
+       return size
+}
+func (m *Nat64AddDelPrefix) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.Prefix.Address[:], 16)
+       buf.EncodeUint8(m.Prefix.Len)
+       buf.EncodeUint32(m.VrfID)
+       buf.EncodeBool(m.IsAdd)
+       return buf.Bytes(), nil
+}
+func (m *Nat64AddDelPrefix) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.Prefix.Address[:], buf.DecodeBytes(16))
+       m.Prefix.Len = buf.DecodeUint8()
+       m.VrfID = buf.DecodeUint32()
+       m.IsAdd = buf.DecodeBool()
+       return nil
+}
+
+// Nat64AddDelPrefixReply defines message 'nat64_add_del_prefix_reply'.
+type Nat64AddDelPrefixReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat64AddDelPrefixReply) Reset()               { *m = Nat64AddDelPrefixReply{} }
+func (*Nat64AddDelPrefixReply) GetMessageName() string { return "nat64_add_del_prefix_reply" }
+func (*Nat64AddDelPrefixReply) GetCrcString() string   { return "e8d4e804" }
+func (*Nat64AddDelPrefixReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat64AddDelPrefixReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat64AddDelPrefixReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat64AddDelPrefixReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat64AddDelStaticBib defines message 'nat64_add_del_static_bib'.
+type Nat64AddDelStaticBib struct {
+       IAddr ip_types.IP6Address `binapi:"ip6_address,name=i_addr" json:"i_addr,omitempty"`
+       OAddr ip_types.IP4Address `binapi:"ip4_address,name=o_addr" json:"o_addr,omitempty"`
+       IPort uint16              `binapi:"u16,name=i_port" json:"i_port,omitempty"`
+       OPort uint16              `binapi:"u16,name=o_port" json:"o_port,omitempty"`
+       VrfID uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+       Proto uint8               `binapi:"u8,name=proto" json:"proto,omitempty"`
+       IsAdd bool                `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+}
+
+func (m *Nat64AddDelStaticBib) Reset()               { *m = Nat64AddDelStaticBib{} }
+func (*Nat64AddDelStaticBib) GetMessageName() string { return "nat64_add_del_static_bib" }
+func (*Nat64AddDelStaticBib) GetCrcString() string   { return "1c404de5" }
+func (*Nat64AddDelStaticBib) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat64AddDelStaticBib) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 16 // m.IAddr
+       size += 1 * 4  // m.OAddr
+       size += 2      // m.IPort
+       size += 2      // m.OPort
+       size += 4      // m.VrfID
+       size += 1      // m.Proto
+       size += 1      // m.IsAdd
+       return size
+}
+func (m *Nat64AddDelStaticBib) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.IAddr[:], 16)
+       buf.EncodeBytes(m.OAddr[:], 4)
+       buf.EncodeUint16(m.IPort)
+       buf.EncodeUint16(m.OPort)
+       buf.EncodeUint32(m.VrfID)
+       buf.EncodeUint8(m.Proto)
+       buf.EncodeBool(m.IsAdd)
+       return buf.Bytes(), nil
+}
+func (m *Nat64AddDelStaticBib) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.IAddr[:], buf.DecodeBytes(16))
+       copy(m.OAddr[:], buf.DecodeBytes(4))
+       m.IPort = buf.DecodeUint16()
+       m.OPort = buf.DecodeUint16()
+       m.VrfID = buf.DecodeUint32()
+       m.Proto = buf.DecodeUint8()
+       m.IsAdd = buf.DecodeBool()
+       return nil
+}
+
+// Nat64AddDelStaticBibReply defines message 'nat64_add_del_static_bib_reply'.
+type Nat64AddDelStaticBibReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat64AddDelStaticBibReply) Reset()               { *m = Nat64AddDelStaticBibReply{} }
+func (*Nat64AddDelStaticBibReply) GetMessageName() string { return "nat64_add_del_static_bib_reply" }
+func (*Nat64AddDelStaticBibReply) GetCrcString() string   { return "e8d4e804" }
+func (*Nat64AddDelStaticBibReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat64AddDelStaticBibReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat64AddDelStaticBibReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat64AddDelStaticBibReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat64BibDetails defines message 'nat64_bib_details'.
+type Nat64BibDetails struct {
+       IAddr  ip_types.IP6Address      `binapi:"ip6_address,name=i_addr" json:"i_addr,omitempty"`
+       OAddr  ip_types.IP4Address      `binapi:"ip4_address,name=o_addr" json:"o_addr,omitempty"`
+       IPort  uint16                   `binapi:"u16,name=i_port" json:"i_port,omitempty"`
+       OPort  uint16                   `binapi:"u16,name=o_port" json:"o_port,omitempty"`
+       VrfID  uint32                   `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+       Proto  uint8                    `binapi:"u8,name=proto" json:"proto,omitempty"`
+       Flags  nat_types.NatConfigFlags `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
+       SesNum uint32                   `binapi:"u32,name=ses_num" json:"ses_num,omitempty"`
+}
+
+func (m *Nat64BibDetails) Reset()               { *m = Nat64BibDetails{} }
+func (*Nat64BibDetails) GetMessageName() string { return "nat64_bib_details" }
+func (*Nat64BibDetails) GetCrcString() string   { return "43bc3ddf" }
+func (*Nat64BibDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat64BibDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 16 // m.IAddr
+       size += 1 * 4  // m.OAddr
+       size += 2      // m.IPort
+       size += 2      // m.OPort
+       size += 4      // m.VrfID
+       size += 1      // m.Proto
+       size += 1      // m.Flags
+       size += 4      // m.SesNum
+       return size
+}
+func (m *Nat64BibDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.IAddr[:], 16)
+       buf.EncodeBytes(m.OAddr[:], 4)
+       buf.EncodeUint16(m.IPort)
+       buf.EncodeUint16(m.OPort)
+       buf.EncodeUint32(m.VrfID)
+       buf.EncodeUint8(m.Proto)
+       buf.EncodeUint8(uint8(m.Flags))
+       buf.EncodeUint32(m.SesNum)
+       return buf.Bytes(), nil
+}
+func (m *Nat64BibDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.IAddr[:], buf.DecodeBytes(16))
+       copy(m.OAddr[:], buf.DecodeBytes(4))
+       m.IPort = buf.DecodeUint16()
+       m.OPort = buf.DecodeUint16()
+       m.VrfID = buf.DecodeUint32()
+       m.Proto = buf.DecodeUint8()
+       m.Flags = nat_types.NatConfigFlags(buf.DecodeUint8())
+       m.SesNum = buf.DecodeUint32()
+       return nil
+}
+
+// Nat64BibDump defines message 'nat64_bib_dump'.
+type Nat64BibDump struct {
+       Proto uint8 `binapi:"u8,name=proto" json:"proto,omitempty"`
+}
+
+func (m *Nat64BibDump) Reset()               { *m = Nat64BibDump{} }
+func (*Nat64BibDump) GetMessageName() string { return "nat64_bib_dump" }
+func (*Nat64BibDump) GetCrcString() string   { return "cfcb6b75" }
+func (*Nat64BibDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat64BibDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.Proto
+       return size
+}
+func (m *Nat64BibDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(m.Proto)
+       return buf.Bytes(), nil
+}
+func (m *Nat64BibDump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Proto = buf.DecodeUint8()
+       return nil
+}
+
+// Nat64GetTimeouts defines message 'nat64_get_timeouts'.
+type Nat64GetTimeouts struct{}
+
+func (m *Nat64GetTimeouts) Reset()               { *m = Nat64GetTimeouts{} }
+func (*Nat64GetTimeouts) GetMessageName() string { return "nat64_get_timeouts" }
+func (*Nat64GetTimeouts) GetCrcString() string   { return "51077d14" }
+func (*Nat64GetTimeouts) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat64GetTimeouts) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat64GetTimeouts) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat64GetTimeouts) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Nat64GetTimeoutsReply defines message 'nat64_get_timeouts_reply'.
+type Nat64GetTimeoutsReply struct {
+       Retval         int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       UDP            uint32 `binapi:"u32,name=udp" json:"udp,omitempty"`
+       TCPEstablished uint32 `binapi:"u32,name=tcp_established" json:"tcp_established,omitempty"`
+       TCPTransitory  uint32 `binapi:"u32,name=tcp_transitory" json:"tcp_transitory,omitempty"`
+       ICMP           uint32 `binapi:"u32,name=icmp" json:"icmp,omitempty"`
+}
+
+func (m *Nat64GetTimeoutsReply) Reset()               { *m = Nat64GetTimeoutsReply{} }
+func (*Nat64GetTimeoutsReply) GetMessageName() string { return "nat64_get_timeouts_reply" }
+func (*Nat64GetTimeoutsReply) GetCrcString() string   { return "3c4df4e1" }
+func (*Nat64GetTimeoutsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat64GetTimeoutsReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.UDP
+       size += 4 // m.TCPEstablished
+       size += 4 // m.TCPTransitory
+       size += 4 // m.ICMP
+       return size
+}
+func (m *Nat64GetTimeoutsReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.UDP)
+       buf.EncodeUint32(m.TCPEstablished)
+       buf.EncodeUint32(m.TCPTransitory)
+       buf.EncodeUint32(m.ICMP)
+       return buf.Bytes(), nil
+}
+func (m *Nat64GetTimeoutsReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.UDP = buf.DecodeUint32()
+       m.TCPEstablished = buf.DecodeUint32()
+       m.TCPTransitory = buf.DecodeUint32()
+       m.ICMP = buf.DecodeUint32()
+       return nil
+}
+
+// Nat64InterfaceDetails defines message 'nat64_interface_details'.
+type Nat64InterfaceDetails struct {
+       Flags     nat_types.NatConfigFlags       `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *Nat64InterfaceDetails) Reset()               { *m = Nat64InterfaceDetails{} }
+func (*Nat64InterfaceDetails) GetMessageName() string { return "nat64_interface_details" }
+func (*Nat64InterfaceDetails) GetCrcString() string   { return "5d286289" }
+func (*Nat64InterfaceDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat64InterfaceDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.Flags
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *Nat64InterfaceDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(uint8(m.Flags))
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *Nat64InterfaceDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Flags = nat_types.NatConfigFlags(buf.DecodeUint8())
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// Nat64InterfaceDump defines message 'nat64_interface_dump'.
+type Nat64InterfaceDump struct{}
+
+func (m *Nat64InterfaceDump) Reset()               { *m = Nat64InterfaceDump{} }
+func (*Nat64InterfaceDump) GetMessageName() string { return "nat64_interface_dump" }
+func (*Nat64InterfaceDump) GetCrcString() string   { return "51077d14" }
+func (*Nat64InterfaceDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat64InterfaceDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat64InterfaceDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat64InterfaceDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Nat64PluginEnableDisable defines message 'nat64_plugin_enable_disable'.
+// InProgress: the message form may change in the future versions
+type Nat64PluginEnableDisable struct {
+       BibBuckets    uint32 `binapi:"u32,name=bib_buckets" json:"bib_buckets,omitempty"`
+       BibMemorySize uint32 `binapi:"u32,name=bib_memory_size" json:"bib_memory_size,omitempty"`
+       StBuckets     uint32 `binapi:"u32,name=st_buckets" json:"st_buckets,omitempty"`
+       StMemorySize  uint32 `binapi:"u32,name=st_memory_size" json:"st_memory_size,omitempty"`
+       Enable        bool   `binapi:"bool,name=enable" json:"enable,omitempty"`
+}
+
+func (m *Nat64PluginEnableDisable) Reset()               { *m = Nat64PluginEnableDisable{} }
+func (*Nat64PluginEnableDisable) GetMessageName() string { return "nat64_plugin_enable_disable" }
+func (*Nat64PluginEnableDisable) GetCrcString() string   { return "45948b90" }
+func (*Nat64PluginEnableDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat64PluginEnableDisable) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.BibBuckets
+       size += 4 // m.BibMemorySize
+       size += 4 // m.StBuckets
+       size += 4 // m.StMemorySize
+       size += 1 // m.Enable
+       return size
+}
+func (m *Nat64PluginEnableDisable) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.BibBuckets)
+       buf.EncodeUint32(m.BibMemorySize)
+       buf.EncodeUint32(m.StBuckets)
+       buf.EncodeUint32(m.StMemorySize)
+       buf.EncodeBool(m.Enable)
+       return buf.Bytes(), nil
+}
+func (m *Nat64PluginEnableDisable) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.BibBuckets = buf.DecodeUint32()
+       m.BibMemorySize = buf.DecodeUint32()
+       m.StBuckets = buf.DecodeUint32()
+       m.StMemorySize = buf.DecodeUint32()
+       m.Enable = buf.DecodeBool()
+       return nil
+}
+
+// Nat64PluginEnableDisableReply defines message 'nat64_plugin_enable_disable_reply'.
+// InProgress: the message form may change in the future versions
+type Nat64PluginEnableDisableReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat64PluginEnableDisableReply) Reset() { *m = Nat64PluginEnableDisableReply{} }
+func (*Nat64PluginEnableDisableReply) GetMessageName() string {
+       return "nat64_plugin_enable_disable_reply"
+}
+func (*Nat64PluginEnableDisableReply) GetCrcString() string { return "e8d4e804" }
+func (*Nat64PluginEnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat64PluginEnableDisableReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat64PluginEnableDisableReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat64PluginEnableDisableReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat64PoolAddrDetails defines message 'nat64_pool_addr_details'.
+type Nat64PoolAddrDetails struct {
+       Address ip_types.IP4Address `binapi:"ip4_address,name=address" json:"address,omitempty"`
+       VrfID   uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+}
+
+func (m *Nat64PoolAddrDetails) Reset()               { *m = Nat64PoolAddrDetails{} }
+func (*Nat64PoolAddrDetails) GetMessageName() string { return "nat64_pool_addr_details" }
+func (*Nat64PoolAddrDetails) GetCrcString() string   { return "9bb99cdb" }
+func (*Nat64PoolAddrDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat64PoolAddrDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4 // m.Address
+       size += 4     // m.VrfID
+       return size
+}
+func (m *Nat64PoolAddrDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.Address[:], 4)
+       buf.EncodeUint32(m.VrfID)
+       return buf.Bytes(), nil
+}
+func (m *Nat64PoolAddrDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.Address[:], buf.DecodeBytes(4))
+       m.VrfID = buf.DecodeUint32()
+       return nil
+}
+
+// Nat64PoolAddrDump defines message 'nat64_pool_addr_dump'.
+type Nat64PoolAddrDump struct{}
+
+func (m *Nat64PoolAddrDump) Reset()               { *m = Nat64PoolAddrDump{} }
+func (*Nat64PoolAddrDump) GetMessageName() string { return "nat64_pool_addr_dump" }
+func (*Nat64PoolAddrDump) GetCrcString() string   { return "51077d14" }
+func (*Nat64PoolAddrDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat64PoolAddrDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat64PoolAddrDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat64PoolAddrDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Nat64PrefixDetails defines message 'nat64_prefix_details'.
+type Nat64PrefixDetails struct {
+       Prefix ip_types.IP6Prefix `binapi:"ip6_prefix,name=prefix" json:"prefix,omitempty"`
+       VrfID  uint32             `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+}
+
+func (m *Nat64PrefixDetails) Reset()               { *m = Nat64PrefixDetails{} }
+func (*Nat64PrefixDetails) GetMessageName() string { return "nat64_prefix_details" }
+func (*Nat64PrefixDetails) GetCrcString() string   { return "20568de3" }
+func (*Nat64PrefixDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat64PrefixDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 16 // m.Prefix.Address
+       size += 1      // m.Prefix.Len
+       size += 4      // m.VrfID
+       return size
+}
+func (m *Nat64PrefixDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.Prefix.Address[:], 16)
+       buf.EncodeUint8(m.Prefix.Len)
+       buf.EncodeUint32(m.VrfID)
+       return buf.Bytes(), nil
+}
+func (m *Nat64PrefixDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.Prefix.Address[:], buf.DecodeBytes(16))
+       m.Prefix.Len = buf.DecodeUint8()
+       m.VrfID = buf.DecodeUint32()
+       return nil
+}
+
+// Nat64PrefixDump defines message 'nat64_prefix_dump'.
+type Nat64PrefixDump struct{}
+
+func (m *Nat64PrefixDump) Reset()               { *m = Nat64PrefixDump{} }
+func (*Nat64PrefixDump) GetMessageName() string { return "nat64_prefix_dump" }
+func (*Nat64PrefixDump) GetCrcString() string   { return "51077d14" }
+func (*Nat64PrefixDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat64PrefixDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat64PrefixDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat64PrefixDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Nat64SetTimeouts defines message 'nat64_set_timeouts'.
+type Nat64SetTimeouts struct {
+       UDP            uint32 `binapi:"u32,name=udp" json:"udp,omitempty"`
+       TCPEstablished uint32 `binapi:"u32,name=tcp_established" json:"tcp_established,omitempty"`
+       TCPTransitory  uint32 `binapi:"u32,name=tcp_transitory" json:"tcp_transitory,omitempty"`
+       ICMP           uint32 `binapi:"u32,name=icmp" json:"icmp,omitempty"`
+}
+
+func (m *Nat64SetTimeouts) Reset()               { *m = Nat64SetTimeouts{} }
+func (*Nat64SetTimeouts) GetMessageName() string { return "nat64_set_timeouts" }
+func (*Nat64SetTimeouts) GetCrcString() string   { return "d4746b16" }
+func (*Nat64SetTimeouts) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat64SetTimeouts) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.UDP
+       size += 4 // m.TCPEstablished
+       size += 4 // m.TCPTransitory
+       size += 4 // m.ICMP
+       return size
+}
+func (m *Nat64SetTimeouts) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.UDP)
+       buf.EncodeUint32(m.TCPEstablished)
+       buf.EncodeUint32(m.TCPTransitory)
+       buf.EncodeUint32(m.ICMP)
+       return buf.Bytes(), nil
+}
+func (m *Nat64SetTimeouts) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.UDP = buf.DecodeUint32()
+       m.TCPEstablished = buf.DecodeUint32()
+       m.TCPTransitory = buf.DecodeUint32()
+       m.ICMP = buf.DecodeUint32()
+       return nil
+}
+
+// Nat64SetTimeoutsReply defines message 'nat64_set_timeouts_reply'.
+type Nat64SetTimeoutsReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat64SetTimeoutsReply) Reset()               { *m = Nat64SetTimeoutsReply{} }
+func (*Nat64SetTimeoutsReply) GetMessageName() string { return "nat64_set_timeouts_reply" }
+func (*Nat64SetTimeoutsReply) GetCrcString() string   { return "e8d4e804" }
+func (*Nat64SetTimeoutsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat64SetTimeoutsReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat64SetTimeoutsReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat64SetTimeoutsReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat64StDetails defines message 'nat64_st_details'.
+type Nat64StDetails struct {
+       IlAddr ip_types.IP6Address `binapi:"ip6_address,name=il_addr" json:"il_addr,omitempty"`
+       OlAddr ip_types.IP4Address `binapi:"ip4_address,name=ol_addr" json:"ol_addr,omitempty"`
+       IlPort uint16              `binapi:"u16,name=il_port" json:"il_port,omitempty"`
+       OlPort uint16              `binapi:"u16,name=ol_port" json:"ol_port,omitempty"`
+       IrAddr ip_types.IP6Address `binapi:"ip6_address,name=ir_addr" json:"ir_addr,omitempty"`
+       OrAddr ip_types.IP4Address `binapi:"ip4_address,name=or_addr" json:"or_addr,omitempty"`
+       RPort  uint16              `binapi:"u16,name=r_port" json:"r_port,omitempty"`
+       VrfID  uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+       Proto  uint8               `binapi:"u8,name=proto" json:"proto,omitempty"`
+}
+
+func (m *Nat64StDetails) Reset()               { *m = Nat64StDetails{} }
+func (*Nat64StDetails) GetMessageName() string { return "nat64_st_details" }
+func (*Nat64StDetails) GetCrcString() string   { return "dd3361ed" }
+func (*Nat64StDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat64StDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 16 // m.IlAddr
+       size += 1 * 4  // m.OlAddr
+       size += 2      // m.IlPort
+       size += 2      // m.OlPort
+       size += 1 * 16 // m.IrAddr
+       size += 1 * 4  // m.OrAddr
+       size += 2      // m.RPort
+       size += 4      // m.VrfID
+       size += 1      // m.Proto
+       return size
+}
+func (m *Nat64StDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.IlAddr[:], 16)
+       buf.EncodeBytes(m.OlAddr[:], 4)
+       buf.EncodeUint16(m.IlPort)
+       buf.EncodeUint16(m.OlPort)
+       buf.EncodeBytes(m.IrAddr[:], 16)
+       buf.EncodeBytes(m.OrAddr[:], 4)
+       buf.EncodeUint16(m.RPort)
+       buf.EncodeUint32(m.VrfID)
+       buf.EncodeUint8(m.Proto)
+       return buf.Bytes(), nil
+}
+func (m *Nat64StDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.IlAddr[:], buf.DecodeBytes(16))
+       copy(m.OlAddr[:], buf.DecodeBytes(4))
+       m.IlPort = buf.DecodeUint16()
+       m.OlPort = buf.DecodeUint16()
+       copy(m.IrAddr[:], buf.DecodeBytes(16))
+       copy(m.OrAddr[:], buf.DecodeBytes(4))
+       m.RPort = buf.DecodeUint16()
+       m.VrfID = buf.DecodeUint32()
+       m.Proto = buf.DecodeUint8()
+       return nil
+}
+
+// Nat64StDump defines message 'nat64_st_dump'.
+type Nat64StDump struct {
+       Proto uint8 `binapi:"u8,name=proto" json:"proto,omitempty"`
+}
+
+func (m *Nat64StDump) Reset()               { *m = Nat64StDump{} }
+func (*Nat64StDump) GetMessageName() string { return "nat64_st_dump" }
+func (*Nat64StDump) GetCrcString() string   { return "cfcb6b75" }
+func (*Nat64StDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat64StDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.Proto
+       return size
+}
+func (m *Nat64StDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(m.Proto)
+       return buf.Bytes(), nil
+}
+func (m *Nat64StDump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Proto = buf.DecodeUint8()
+       return nil
+}
+
+func init() { file_nat64_binapi_init() }
+func file_nat64_binapi_init() {
+       api.RegisterMessage((*Nat64AddDelInterface)(nil), "nat64_add_del_interface_f3699b83")
+       api.RegisterMessage((*Nat64AddDelInterfaceAddr)(nil), "nat64_add_del_interface_addr_47d6e753")
+       api.RegisterMessage((*Nat64AddDelInterfaceAddrReply)(nil), "nat64_add_del_interface_addr_reply_e8d4e804")
+       api.RegisterMessage((*Nat64AddDelInterfaceReply)(nil), "nat64_add_del_interface_reply_e8d4e804")
+       api.RegisterMessage((*Nat64AddDelPoolAddrRange)(nil), "nat64_add_del_pool_addr_range_a3b944e3")
+       api.RegisterMessage((*Nat64AddDelPoolAddrRangeReply)(nil), "nat64_add_del_pool_addr_range_reply_e8d4e804")
+       api.RegisterMessage((*Nat64AddDelPrefix)(nil), "nat64_add_del_prefix_727b2f4c")
+       api.RegisterMessage((*Nat64AddDelPrefixReply)(nil), "nat64_add_del_prefix_reply_e8d4e804")
+       api.RegisterMessage((*Nat64AddDelStaticBib)(nil), "nat64_add_del_static_bib_1c404de5")
+       api.RegisterMessage((*Nat64AddDelStaticBibReply)(nil), "nat64_add_del_static_bib_reply_e8d4e804")
+       api.RegisterMessage((*Nat64BibDetails)(nil), "nat64_bib_details_43bc3ddf")
+       api.RegisterMessage((*Nat64BibDump)(nil), "nat64_bib_dump_cfcb6b75")
+       api.RegisterMessage((*Nat64GetTimeouts)(nil), "nat64_get_timeouts_51077d14")
+       api.RegisterMessage((*Nat64GetTimeoutsReply)(nil), "nat64_get_timeouts_reply_3c4df4e1")
+       api.RegisterMessage((*Nat64InterfaceDetails)(nil), "nat64_interface_details_5d286289")
+       api.RegisterMessage((*Nat64InterfaceDump)(nil), "nat64_interface_dump_51077d14")
+       api.RegisterMessage((*Nat64PluginEnableDisable)(nil), "nat64_plugin_enable_disable_45948b90")
+       api.RegisterMessage((*Nat64PluginEnableDisableReply)(nil), "nat64_plugin_enable_disable_reply_e8d4e804")
+       api.RegisterMessage((*Nat64PoolAddrDetails)(nil), "nat64_pool_addr_details_9bb99cdb")
+       api.RegisterMessage((*Nat64PoolAddrDump)(nil), "nat64_pool_addr_dump_51077d14")
+       api.RegisterMessage((*Nat64PrefixDetails)(nil), "nat64_prefix_details_20568de3")
+       api.RegisterMessage((*Nat64PrefixDump)(nil), "nat64_prefix_dump_51077d14")
+       api.RegisterMessage((*Nat64SetTimeouts)(nil), "nat64_set_timeouts_d4746b16")
+       api.RegisterMessage((*Nat64SetTimeoutsReply)(nil), "nat64_set_timeouts_reply_e8d4e804")
+       api.RegisterMessage((*Nat64StDetails)(nil), "nat64_st_details_dd3361ed")
+       api.RegisterMessage((*Nat64StDump)(nil), "nat64_st_dump_cfcb6b75")
+}
+
+// Messages returns list of all messages in this module.
+func AllMessages() []api.Message {
+       return []api.Message{
+               (*Nat64AddDelInterface)(nil),
+               (*Nat64AddDelInterfaceAddr)(nil),
+               (*Nat64AddDelInterfaceAddrReply)(nil),
+               (*Nat64AddDelInterfaceReply)(nil),
+               (*Nat64AddDelPoolAddrRange)(nil),
+               (*Nat64AddDelPoolAddrRangeReply)(nil),
+               (*Nat64AddDelPrefix)(nil),
+               (*Nat64AddDelPrefixReply)(nil),
+               (*Nat64AddDelStaticBib)(nil),
+               (*Nat64AddDelStaticBibReply)(nil),
+               (*Nat64BibDetails)(nil),
+               (*Nat64BibDump)(nil),
+               (*Nat64GetTimeouts)(nil),
+               (*Nat64GetTimeoutsReply)(nil),
+               (*Nat64InterfaceDetails)(nil),
+               (*Nat64InterfaceDump)(nil),
+               (*Nat64PluginEnableDisable)(nil),
+               (*Nat64PluginEnableDisableReply)(nil),
+               (*Nat64PoolAddrDetails)(nil),
+               (*Nat64PoolAddrDump)(nil),
+               (*Nat64PrefixDetails)(nil),
+               (*Nat64PrefixDump)(nil),
+               (*Nat64SetTimeouts)(nil),
+               (*Nat64SetTimeoutsReply)(nil),
+               (*Nat64StDetails)(nil),
+               (*Nat64StDump)(nil),
+       }
+}
diff --git a/binapi/nat64/nat64_rpc.ba.go b/binapi/nat64/nat64_rpc.ba.go
new file mode 100644 (file)
index 0000000..e103890
--- /dev/null
@@ -0,0 +1,304 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+
+package nat64
+
+import (
+       "context"
+       "fmt"
+       "io"
+
+       api "git.fd.io/govpp.git/api"
+       vpe "git.fd.io/govpp.git/binapi/vpe"
+)
+
+// RPCService defines RPC service nat64.
+type RPCService interface {
+       Nat64AddDelInterface(ctx context.Context, in *Nat64AddDelInterface) (*Nat64AddDelInterfaceReply, error)
+       Nat64AddDelInterfaceAddr(ctx context.Context, in *Nat64AddDelInterfaceAddr) (*Nat64AddDelInterfaceAddrReply, error)
+       Nat64AddDelPoolAddrRange(ctx context.Context, in *Nat64AddDelPoolAddrRange) (*Nat64AddDelPoolAddrRangeReply, error)
+       Nat64AddDelPrefix(ctx context.Context, in *Nat64AddDelPrefix) (*Nat64AddDelPrefixReply, error)
+       Nat64AddDelStaticBib(ctx context.Context, in *Nat64AddDelStaticBib) (*Nat64AddDelStaticBibReply, error)
+       Nat64BibDump(ctx context.Context, in *Nat64BibDump) (RPCService_Nat64BibDumpClient, error)
+       Nat64GetTimeouts(ctx context.Context, in *Nat64GetTimeouts) (*Nat64GetTimeoutsReply, error)
+       Nat64InterfaceDump(ctx context.Context, in *Nat64InterfaceDump) (RPCService_Nat64InterfaceDumpClient, error)
+       Nat64PluginEnableDisable(ctx context.Context, in *Nat64PluginEnableDisable) (*Nat64PluginEnableDisableReply, error)
+       Nat64PoolAddrDump(ctx context.Context, in *Nat64PoolAddrDump) (RPCService_Nat64PoolAddrDumpClient, error)
+       Nat64PrefixDump(ctx context.Context, in *Nat64PrefixDump) (RPCService_Nat64PrefixDumpClient, error)
+       Nat64SetTimeouts(ctx context.Context, in *Nat64SetTimeouts) (*Nat64SetTimeoutsReply, error)
+       Nat64StDump(ctx context.Context, in *Nat64StDump) (RPCService_Nat64StDumpClient, error)
+}
+
+type serviceClient struct {
+       conn api.Connection
+}
+
+func NewServiceClient(conn api.Connection) RPCService {
+       return &serviceClient{conn}
+}
+
+func (c *serviceClient) Nat64AddDelInterface(ctx context.Context, in *Nat64AddDelInterface) (*Nat64AddDelInterfaceReply, error) {
+       out := new(Nat64AddDelInterfaceReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat64AddDelInterfaceAddr(ctx context.Context, in *Nat64AddDelInterfaceAddr) (*Nat64AddDelInterfaceAddrReply, error) {
+       out := new(Nat64AddDelInterfaceAddrReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat64AddDelPoolAddrRange(ctx context.Context, in *Nat64AddDelPoolAddrRange) (*Nat64AddDelPoolAddrRangeReply, error) {
+       out := new(Nat64AddDelPoolAddrRangeReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat64AddDelPrefix(ctx context.Context, in *Nat64AddDelPrefix) (*Nat64AddDelPrefixReply, error) {
+       out := new(Nat64AddDelPrefixReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat64AddDelStaticBib(ctx context.Context, in *Nat64AddDelStaticBib) (*Nat64AddDelStaticBibReply, error) {
+       out := new(Nat64AddDelStaticBibReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat64BibDump(ctx context.Context, in *Nat64BibDump) (RPCService_Nat64BibDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Nat64BibDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Nat64BibDumpClient interface {
+       Recv() (*Nat64BibDetails, error)
+       api.Stream
+}
+
+type serviceClient_Nat64BibDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Nat64BibDumpClient) Recv() (*Nat64BibDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Nat64BibDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) Nat64GetTimeouts(ctx context.Context, in *Nat64GetTimeouts) (*Nat64GetTimeoutsReply, error) {
+       out := new(Nat64GetTimeoutsReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat64InterfaceDump(ctx context.Context, in *Nat64InterfaceDump) (RPCService_Nat64InterfaceDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Nat64InterfaceDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Nat64InterfaceDumpClient interface {
+       Recv() (*Nat64InterfaceDetails, error)
+       api.Stream
+}
+
+type serviceClient_Nat64InterfaceDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Nat64InterfaceDumpClient) Recv() (*Nat64InterfaceDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Nat64InterfaceDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) Nat64PluginEnableDisable(ctx context.Context, in *Nat64PluginEnableDisable) (*Nat64PluginEnableDisableReply, error) {
+       out := new(Nat64PluginEnableDisableReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat64PoolAddrDump(ctx context.Context, in *Nat64PoolAddrDump) (RPCService_Nat64PoolAddrDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Nat64PoolAddrDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Nat64PoolAddrDumpClient interface {
+       Recv() (*Nat64PoolAddrDetails, error)
+       api.Stream
+}
+
+type serviceClient_Nat64PoolAddrDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Nat64PoolAddrDumpClient) Recv() (*Nat64PoolAddrDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Nat64PoolAddrDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) Nat64PrefixDump(ctx context.Context, in *Nat64PrefixDump) (RPCService_Nat64PrefixDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Nat64PrefixDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Nat64PrefixDumpClient interface {
+       Recv() (*Nat64PrefixDetails, error)
+       api.Stream
+}
+
+type serviceClient_Nat64PrefixDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Nat64PrefixDumpClient) Recv() (*Nat64PrefixDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Nat64PrefixDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) Nat64SetTimeouts(ctx context.Context, in *Nat64SetTimeouts) (*Nat64SetTimeoutsReply, error) {
+       out := new(Nat64SetTimeoutsReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat64StDump(ctx context.Context, in *Nat64StDump) (RPCService_Nat64StDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Nat64StDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Nat64StDumpClient interface {
+       Recv() (*Nat64StDetails, error)
+       api.Stream
+}
+
+type serviceClient_Nat64StDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Nat64StDumpClient) Recv() (*Nat64StDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Nat64StDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
diff --git a/binapi/nat66/nat66.ba.go b/binapi/nat66/nat66.ba.go
new file mode 100644 (file)
index 0000000..fd5e5e7
--- /dev/null
@@ -0,0 +1,428 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/nat66.api.json
+
+// Package nat66 contains generated bindings for API file nat66.api.
+//
+// Contents:
+//  10 messages
+//
+package nat66
+
+import (
+       api "git.fd.io/govpp.git/api"
+       interface_types "git.fd.io/govpp.git/binapi/interface_types"
+       ip_types "git.fd.io/govpp.git/binapi/ip_types"
+       nat_types "git.fd.io/govpp.git/binapi/nat_types"
+       codec "git.fd.io/govpp.git/codec"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+const (
+       APIFile    = "nat66"
+       APIVersion = "1.0.0"
+       VersionCrc = 0xa6343f71
+)
+
+// Nat66AddDelInterface defines message 'nat66_add_del_interface'.
+type Nat66AddDelInterface struct {
+       IsAdd     bool                           `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       Flags     nat_types.NatConfigFlags       `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *Nat66AddDelInterface) Reset()               { *m = Nat66AddDelInterface{} }
+func (*Nat66AddDelInterface) GetMessageName() string { return "nat66_add_del_interface" }
+func (*Nat66AddDelInterface) GetCrcString() string   { return "f3699b83" }
+func (*Nat66AddDelInterface) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat66AddDelInterface) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.IsAdd
+       size += 1 // m.Flags
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *Nat66AddDelInterface) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsAdd)
+       buf.EncodeUint8(uint8(m.Flags))
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *Nat66AddDelInterface) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeBool()
+       m.Flags = nat_types.NatConfigFlags(buf.DecodeUint8())
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// Nat66AddDelInterfaceReply defines message 'nat66_add_del_interface_reply'.
+type Nat66AddDelInterfaceReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat66AddDelInterfaceReply) Reset()               { *m = Nat66AddDelInterfaceReply{} }
+func (*Nat66AddDelInterfaceReply) GetMessageName() string { return "nat66_add_del_interface_reply" }
+func (*Nat66AddDelInterfaceReply) GetCrcString() string   { return "e8d4e804" }
+func (*Nat66AddDelInterfaceReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat66AddDelInterfaceReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat66AddDelInterfaceReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat66AddDelInterfaceReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat66AddDelStaticMapping defines message 'nat66_add_del_static_mapping'.
+type Nat66AddDelStaticMapping struct {
+       IsAdd             bool                `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       LocalIPAddress    ip_types.IP6Address `binapi:"ip6_address,name=local_ip_address" json:"local_ip_address,omitempty"`
+       ExternalIPAddress ip_types.IP6Address `binapi:"ip6_address,name=external_ip_address" json:"external_ip_address,omitempty"`
+       VrfID             uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+}
+
+func (m *Nat66AddDelStaticMapping) Reset()               { *m = Nat66AddDelStaticMapping{} }
+func (*Nat66AddDelStaticMapping) GetMessageName() string { return "nat66_add_del_static_mapping" }
+func (*Nat66AddDelStaticMapping) GetCrcString() string   { return "3ed88f71" }
+func (*Nat66AddDelStaticMapping) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat66AddDelStaticMapping) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1      // m.IsAdd
+       size += 1 * 16 // m.LocalIPAddress
+       size += 1 * 16 // m.ExternalIPAddress
+       size += 4      // m.VrfID
+       return size
+}
+func (m *Nat66AddDelStaticMapping) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsAdd)
+       buf.EncodeBytes(m.LocalIPAddress[:], 16)
+       buf.EncodeBytes(m.ExternalIPAddress[:], 16)
+       buf.EncodeUint32(m.VrfID)
+       return buf.Bytes(), nil
+}
+func (m *Nat66AddDelStaticMapping) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeBool()
+       copy(m.LocalIPAddress[:], buf.DecodeBytes(16))
+       copy(m.ExternalIPAddress[:], buf.DecodeBytes(16))
+       m.VrfID = buf.DecodeUint32()
+       return nil
+}
+
+// Nat66AddDelStaticMappingReply defines message 'nat66_add_del_static_mapping_reply'.
+type Nat66AddDelStaticMappingReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat66AddDelStaticMappingReply) Reset() { *m = Nat66AddDelStaticMappingReply{} }
+func (*Nat66AddDelStaticMappingReply) GetMessageName() string {
+       return "nat66_add_del_static_mapping_reply"
+}
+func (*Nat66AddDelStaticMappingReply) GetCrcString() string { return "e8d4e804" }
+func (*Nat66AddDelStaticMappingReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat66AddDelStaticMappingReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat66AddDelStaticMappingReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat66AddDelStaticMappingReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat66InterfaceDetails defines message 'nat66_interface_details'.
+type Nat66InterfaceDetails struct {
+       Flags     nat_types.NatConfigFlags       `binapi:"nat_config_flags,name=flags" json:"flags,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *Nat66InterfaceDetails) Reset()               { *m = Nat66InterfaceDetails{} }
+func (*Nat66InterfaceDetails) GetMessageName() string { return "nat66_interface_details" }
+func (*Nat66InterfaceDetails) GetCrcString() string   { return "5d286289" }
+func (*Nat66InterfaceDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat66InterfaceDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.Flags
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *Nat66InterfaceDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(uint8(m.Flags))
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *Nat66InterfaceDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Flags = nat_types.NatConfigFlags(buf.DecodeUint8())
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// Nat66InterfaceDump defines message 'nat66_interface_dump'.
+type Nat66InterfaceDump struct{}
+
+func (m *Nat66InterfaceDump) Reset()               { *m = Nat66InterfaceDump{} }
+func (*Nat66InterfaceDump) GetMessageName() string { return "nat66_interface_dump" }
+func (*Nat66InterfaceDump) GetCrcString() string   { return "51077d14" }
+func (*Nat66InterfaceDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat66InterfaceDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat66InterfaceDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat66InterfaceDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+// Nat66PluginEnableDisable defines message 'nat66_plugin_enable_disable'.
+type Nat66PluginEnableDisable struct {
+       OutsideVrf uint32 `binapi:"u32,name=outside_vrf" json:"outside_vrf,omitempty"`
+       Enable     bool   `binapi:"bool,name=enable" json:"enable,omitempty"`
+}
+
+func (m *Nat66PluginEnableDisable) Reset()               { *m = Nat66PluginEnableDisable{} }
+func (*Nat66PluginEnableDisable) GetMessageName() string { return "nat66_plugin_enable_disable" }
+func (*Nat66PluginEnableDisable) GetCrcString() string   { return "56f2f83b" }
+func (*Nat66PluginEnableDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat66PluginEnableDisable) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.OutsideVrf
+       size += 1 // m.Enable
+       return size
+}
+func (m *Nat66PluginEnableDisable) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.OutsideVrf)
+       buf.EncodeBool(m.Enable)
+       return buf.Bytes(), nil
+}
+func (m *Nat66PluginEnableDisable) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.OutsideVrf = buf.DecodeUint32()
+       m.Enable = buf.DecodeBool()
+       return nil
+}
+
+// Nat66PluginEnableDisableReply defines message 'nat66_plugin_enable_disable_reply'.
+type Nat66PluginEnableDisableReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *Nat66PluginEnableDisableReply) Reset() { *m = Nat66PluginEnableDisableReply{} }
+func (*Nat66PluginEnableDisableReply) GetMessageName() string {
+       return "nat66_plugin_enable_disable_reply"
+}
+func (*Nat66PluginEnableDisableReply) GetCrcString() string { return "e8d4e804" }
+func (*Nat66PluginEnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat66PluginEnableDisableReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *Nat66PluginEnableDisableReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *Nat66PluginEnableDisableReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// Nat66StaticMappingDetails defines message 'nat66_static_mapping_details'.
+type Nat66StaticMappingDetails struct {
+       LocalIPAddress    ip_types.IP6Address `binapi:"ip6_address,name=local_ip_address" json:"local_ip_address,omitempty"`
+       ExternalIPAddress ip_types.IP6Address `binapi:"ip6_address,name=external_ip_address" json:"external_ip_address,omitempty"`
+       VrfID             uint32              `binapi:"u32,name=vrf_id" json:"vrf_id,omitempty"`
+       TotalBytes        uint64              `binapi:"u64,name=total_bytes" json:"total_bytes,omitempty"`
+       TotalPkts         uint64              `binapi:"u64,name=total_pkts" json:"total_pkts,omitempty"`
+}
+
+func (m *Nat66StaticMappingDetails) Reset()               { *m = Nat66StaticMappingDetails{} }
+func (*Nat66StaticMappingDetails) GetMessageName() string { return "nat66_static_mapping_details" }
+func (*Nat66StaticMappingDetails) GetCrcString() string   { return "df39654b" }
+func (*Nat66StaticMappingDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *Nat66StaticMappingDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 16 // m.LocalIPAddress
+       size += 1 * 16 // m.ExternalIPAddress
+       size += 4      // m.VrfID
+       size += 8      // m.TotalBytes
+       size += 8      // m.TotalPkts
+       return size
+}
+func (m *Nat66StaticMappingDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.LocalIPAddress[:], 16)
+       buf.EncodeBytes(m.ExternalIPAddress[:], 16)
+       buf.EncodeUint32(m.VrfID)
+       buf.EncodeUint64(m.TotalBytes)
+       buf.EncodeUint64(m.TotalPkts)
+       return buf.Bytes(), nil
+}
+func (m *Nat66StaticMappingDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.LocalIPAddress[:], buf.DecodeBytes(16))
+       copy(m.ExternalIPAddress[:], buf.DecodeBytes(16))
+       m.VrfID = buf.DecodeUint32()
+       m.TotalBytes = buf.DecodeUint64()
+       m.TotalPkts = buf.DecodeUint64()
+       return nil
+}
+
+// Nat66StaticMappingDump defines message 'nat66_static_mapping_dump'.
+type Nat66StaticMappingDump struct{}
+
+func (m *Nat66StaticMappingDump) Reset()               { *m = Nat66StaticMappingDump{} }
+func (*Nat66StaticMappingDump) GetMessageName() string { return "nat66_static_mapping_dump" }
+func (*Nat66StaticMappingDump) GetCrcString() string   { return "51077d14" }
+func (*Nat66StaticMappingDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *Nat66StaticMappingDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *Nat66StaticMappingDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *Nat66StaticMappingDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+func init() { file_nat66_binapi_init() }
+func file_nat66_binapi_init() {
+       api.RegisterMessage((*Nat66AddDelInterface)(nil), "nat66_add_del_interface_f3699b83")
+       api.RegisterMessage((*Nat66AddDelInterfaceReply)(nil), "nat66_add_del_interface_reply_e8d4e804")
+       api.RegisterMessage((*Nat66AddDelStaticMapping)(nil), "nat66_add_del_static_mapping_3ed88f71")
+       api.RegisterMessage((*Nat66AddDelStaticMappingReply)(nil), "nat66_add_del_static_mapping_reply_e8d4e804")
+       api.RegisterMessage((*Nat66InterfaceDetails)(nil), "nat66_interface_details_5d286289")
+       api.RegisterMessage((*Nat66InterfaceDump)(nil), "nat66_interface_dump_51077d14")
+       api.RegisterMessage((*Nat66PluginEnableDisable)(nil), "nat66_plugin_enable_disable_56f2f83b")
+       api.RegisterMessage((*Nat66PluginEnableDisableReply)(nil), "nat66_plugin_enable_disable_reply_e8d4e804")
+       api.RegisterMessage((*Nat66StaticMappingDetails)(nil), "nat66_static_mapping_details_df39654b")
+       api.RegisterMessage((*Nat66StaticMappingDump)(nil), "nat66_static_mapping_dump_51077d14")
+}
+
+// Messages returns list of all messages in this module.
+func AllMessages() []api.Message {
+       return []api.Message{
+               (*Nat66AddDelInterface)(nil),
+               (*Nat66AddDelInterfaceReply)(nil),
+               (*Nat66AddDelStaticMapping)(nil),
+               (*Nat66AddDelStaticMappingReply)(nil),
+               (*Nat66InterfaceDetails)(nil),
+               (*Nat66InterfaceDump)(nil),
+               (*Nat66PluginEnableDisable)(nil),
+               (*Nat66PluginEnableDisableReply)(nil),
+               (*Nat66StaticMappingDetails)(nil),
+               (*Nat66StaticMappingDump)(nil),
+       }
+}
diff --git a/binapi/nat66/nat66_rpc.ba.go b/binapi/nat66/nat66_rpc.ba.go
new file mode 100644 (file)
index 0000000..5d4f938
--- /dev/null
@@ -0,0 +1,134 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+
+package nat66
+
+import (
+       "context"
+       "fmt"
+       "io"
+
+       api "git.fd.io/govpp.git/api"
+       vpe "git.fd.io/govpp.git/binapi/vpe"
+)
+
+// RPCService defines RPC service nat66.
+type RPCService interface {
+       Nat66AddDelInterface(ctx context.Context, in *Nat66AddDelInterface) (*Nat66AddDelInterfaceReply, error)
+       Nat66AddDelStaticMapping(ctx context.Context, in *Nat66AddDelStaticMapping) (*Nat66AddDelStaticMappingReply, error)
+       Nat66InterfaceDump(ctx context.Context, in *Nat66InterfaceDump) (RPCService_Nat66InterfaceDumpClient, error)
+       Nat66PluginEnableDisable(ctx context.Context, in *Nat66PluginEnableDisable) (*Nat66PluginEnableDisableReply, error)
+       Nat66StaticMappingDump(ctx context.Context, in *Nat66StaticMappingDump) (RPCService_Nat66StaticMappingDumpClient, error)
+}
+
+type serviceClient struct {
+       conn api.Connection
+}
+
+func NewServiceClient(conn api.Connection) RPCService {
+       return &serviceClient{conn}
+}
+
+func (c *serviceClient) Nat66AddDelInterface(ctx context.Context, in *Nat66AddDelInterface) (*Nat66AddDelInterfaceReply, error) {
+       out := new(Nat66AddDelInterfaceReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat66AddDelStaticMapping(ctx context.Context, in *Nat66AddDelStaticMapping) (*Nat66AddDelStaticMappingReply, error) {
+       out := new(Nat66AddDelStaticMappingReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat66InterfaceDump(ctx context.Context, in *Nat66InterfaceDump) (RPCService_Nat66InterfaceDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Nat66InterfaceDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Nat66InterfaceDumpClient interface {
+       Recv() (*Nat66InterfaceDetails, error)
+       api.Stream
+}
+
+type serviceClient_Nat66InterfaceDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Nat66InterfaceDumpClient) Recv() (*Nat66InterfaceDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Nat66InterfaceDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) Nat66PluginEnableDisable(ctx context.Context, in *Nat66PluginEnableDisable) (*Nat66PluginEnableDisableReply, error) {
+       out := new(Nat66PluginEnableDisableReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) Nat66StaticMappingDump(ctx context.Context, in *Nat66StaticMappingDump) (RPCService_Nat66StaticMappingDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_Nat66StaticMappingDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_Nat66StaticMappingDumpClient interface {
+       Recv() (*Nat66StaticMappingDetails, error)
+       api.Stream
+}
+
+type serviceClient_Nat66StaticMappingDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_Nat66StaticMappingDumpClient) Recv() (*Nat66StaticMappingDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *Nat66StaticMappingDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
diff --git a/binapi/nat_types/nat_types.ba.go b/binapi/nat_types/nat_types.ba.go
new file mode 100644 (file)
index 0000000..324e8fc
--- /dev/null
@@ -0,0 +1,139 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/nat_types.api.json
+
+// Package nat_types contains generated bindings for API file nat_types.api.
+//
+// Contents:
+//   2 enums
+//   1 struct
+//
+package nat_types
+
+import (
+       "strconv"
+
+       api "git.fd.io/govpp.git/api"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+// NatConfigFlags defines enum 'nat_config_flags'.
+type NatConfigFlags uint8
+
+const (
+       NAT_IS_NONE           NatConfigFlags = 0
+       NAT_IS_TWICE_NAT      NatConfigFlags = 1
+       NAT_IS_SELF_TWICE_NAT NatConfigFlags = 2
+       NAT_IS_OUT2IN_ONLY    NatConfigFlags = 4
+       NAT_IS_ADDR_ONLY      NatConfigFlags = 8
+       NAT_IS_OUTSIDE        NatConfigFlags = 16
+       NAT_IS_INSIDE         NatConfigFlags = 32
+       NAT_IS_STATIC         NatConfigFlags = 64
+       NAT_IS_EXT_HOST_VALID NatConfigFlags = 128
+)
+
+var (
+       NatConfigFlags_name = map[uint8]string{
+               0:   "NAT_IS_NONE",
+               1:   "NAT_IS_TWICE_NAT",
+               2:   "NAT_IS_SELF_TWICE_NAT",
+               4:   "NAT_IS_OUT2IN_ONLY",
+               8:   "NAT_IS_ADDR_ONLY",
+               16:  "NAT_IS_OUTSIDE",
+               32:  "NAT_IS_INSIDE",
+               64:  "NAT_IS_STATIC",
+               128: "NAT_IS_EXT_HOST_VALID",
+       }
+       NatConfigFlags_value = map[string]uint8{
+               "NAT_IS_NONE":           0,
+               "NAT_IS_TWICE_NAT":      1,
+               "NAT_IS_SELF_TWICE_NAT": 2,
+               "NAT_IS_OUT2IN_ONLY":    4,
+               "NAT_IS_ADDR_ONLY":      8,
+               "NAT_IS_OUTSIDE":        16,
+               "NAT_IS_INSIDE":         32,
+               "NAT_IS_STATIC":         64,
+               "NAT_IS_EXT_HOST_VALID": 128,
+       }
+)
+
+func (x NatConfigFlags) String() string {
+       s, ok := NatConfigFlags_name[uint8(x)]
+       if ok {
+               return s
+       }
+       str := func(n uint8) string {
+               s, ok := NatConfigFlags_name[uint8(n)]
+               if ok {
+                       return s
+               }
+               return "NatConfigFlags(" + strconv.Itoa(int(n)) + ")"
+       }
+       for i := uint8(0); i <= 8; i++ {
+               val := uint8(x)
+               if val&(1<<i) != 0 {
+                       if s != "" {
+                               s += "|"
+                       }
+                       s += str(1 << i)
+               }
+       }
+       if s == "" {
+               return str(uint8(x))
+       }
+       return s
+}
+
+// NatLogLevel defines enum 'nat_log_level'.
+type NatLogLevel uint8
+
+const (
+       NAT_LOG_NONE    NatLogLevel = 0
+       NAT_LOG_ERROR   NatLogLevel = 1
+       NAT_LOG_WARNING NatLogLevel = 2
+       NAT_LOG_NOTICE  NatLogLevel = 3
+       NAT_LOG_INFO    NatLogLevel = 4
+       NAT_LOG_DEBUG   NatLogLevel = 5
+)
+
+var (
+       NatLogLevel_name = map[uint8]string{
+               0: "NAT_LOG_NONE",
+               1: "NAT_LOG_ERROR",
+               2: "NAT_LOG_WARNING",
+               3: "NAT_LOG_NOTICE",
+               4: "NAT_LOG_INFO",
+               5: "NAT_LOG_DEBUG",
+       }
+       NatLogLevel_value = map[string]uint8{
+               "NAT_LOG_NONE":    0,
+               "NAT_LOG_ERROR":   1,
+               "NAT_LOG_WARNING": 2,
+               "NAT_LOG_NOTICE":  3,
+               "NAT_LOG_INFO":    4,
+               "NAT_LOG_DEBUG":   5,
+       }
+)
+
+func (x NatLogLevel) String() string {
+       s, ok := NatLogLevel_name[uint8(x)]
+       if ok {
+               return s
+       }
+       return "NatLogLevel(" + strconv.Itoa(int(x)) + ")"
+}
+
+// NatTimeouts defines type 'nat_timeouts'.
+type NatTimeouts struct {
+       UDP            uint32 `binapi:"u32,name=udp" json:"udp,omitempty"`
+       TCPEstablished uint32 `binapi:"u32,name=tcp_established" json:"tcp_established,omitempty"`
+       TCPTransitory  uint32 `binapi:"u32,name=tcp_transitory" json:"tcp_transitory,omitempty"`
+       ICMP           uint32 `binapi:"u32,name=icmp" json:"icmp,omitempty"`
+}
index 5113a82..539ac69 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/nsh.api.json
 
 // Package nsh contains generated bindings for API file nsh.api.
@@ -26,7 +26,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "nsh"
        APIVersion = "1.0.0"
-       VersionCrc = 0x43be6707
+       VersionCrc = 0xc2f3127d
 )
 
 // NshAddDelEntry defines message 'nsh_add_del_entry'.
@@ -161,7 +161,7 @@ type NshAddDelMap struct {
 
 func (m *NshAddDelMap) Reset()               { *m = NshAddDelMap{} }
 func (*NshAddDelMap) GetMessageName() string { return "nsh_add_del_map" }
-func (*NshAddDelMap) GetCrcString() string   { return "898d857d" }
+func (*NshAddDelMap) GetCrcString() string   { return "0a0f42b0" }
 func (*NshAddDelMap) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -370,7 +370,7 @@ type NshMapDetails struct {
 
 func (m *NshMapDetails) Reset()               { *m = NshMapDetails{} }
 func (*NshMapDetails) GetMessageName() string { return "nsh_map_details" }
-func (*NshMapDetails) GetCrcString() string   { return "b34ac8a1" }
+func (*NshMapDetails) GetCrcString() string   { return "2fefcf49" }
 func (*NshMapDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -451,11 +451,11 @@ func init() { file_nsh_binapi_init() }
 func file_nsh_binapi_init() {
        api.RegisterMessage((*NshAddDelEntry)(nil), "nsh_add_del_entry_7dea480b")
        api.RegisterMessage((*NshAddDelEntryReply)(nil), "nsh_add_del_entry_reply_6296a9eb")
-       api.RegisterMessage((*NshAddDelMap)(nil), "nsh_add_del_map_898d857d")
+       api.RegisterMessage((*NshAddDelMap)(nil), "nsh_add_del_map_0a0f42b0")
        api.RegisterMessage((*NshAddDelMapReply)(nil), "nsh_add_del_map_reply_b2b127ef")
        api.RegisterMessage((*NshEntryDetails)(nil), "nsh_entry_details_046fb556")
        api.RegisterMessage((*NshEntryDump)(nil), "nsh_entry_dump_cdaf8ccb")
-       api.RegisterMessage((*NshMapDetails)(nil), "nsh_map_details_b34ac8a1")
+       api.RegisterMessage((*NshMapDetails)(nil), "nsh_map_details_2fefcf49")
        api.RegisterMessage((*NshMapDump)(nil), "nsh_map_dump_8fc06b82")
 }
 
index 1f23c79..5a193a3 100644 (file)
@@ -1,13 +1,13 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/nsim.api.json
 
 // Package nsim contains generated bindings for API file nsim.api.
 //
 // Contents:
-//   6 messages
+//   8 messages
 //
 package nsim
 
@@ -25,11 +25,12 @@ const _ = api.GoVppAPIPackageIsVersion2
 
 const (
        APIFile    = "nsim"
-       APIVersion = "2.1.1"
-       VersionCrc = 0xcd5b42e8
+       APIVersion = "2.2.1"
+       VersionCrc = 0x3b179b8f
 )
 
 // NsimConfigure defines message 'nsim_configure'.
+// Deprecated: the message will be removed in the future versions
 type NsimConfigure struct {
        DelayInUsec              uint32 `binapi:"u32,name=delay_in_usec" json:"delay_in_usec,omitempty"`
        AveragePacketSize        uint32 `binapi:"u32,name=average_packet_size" json:"average_packet_size,omitempty"`
@@ -74,7 +75,90 @@ func (m *NsimConfigure) Unmarshal(b []byte) error {
        return nil
 }
 
+// NsimConfigure2 defines message 'nsim_configure2'.
+type NsimConfigure2 struct {
+       DelayInUsec              uint32 `binapi:"u32,name=delay_in_usec" json:"delay_in_usec,omitempty"`
+       AveragePacketSize        uint32 `binapi:"u32,name=average_packet_size" json:"average_packet_size,omitempty"`
+       BandwidthInBitsPerSecond uint64 `binapi:"u64,name=bandwidth_in_bits_per_second" json:"bandwidth_in_bits_per_second,omitempty"`
+       PacketsPerDrop           uint32 `binapi:"u32,name=packets_per_drop" json:"packets_per_drop,omitempty"`
+       PacketsPerReorder        uint32 `binapi:"u32,name=packets_per_reorder" json:"packets_per_reorder,omitempty"`
+}
+
+func (m *NsimConfigure2) Reset()               { *m = NsimConfigure2{} }
+func (*NsimConfigure2) GetMessageName() string { return "nsim_configure2" }
+func (*NsimConfigure2) GetCrcString() string   { return "64de8ed3" }
+func (*NsimConfigure2) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *NsimConfigure2) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.DelayInUsec
+       size += 4 // m.AveragePacketSize
+       size += 8 // m.BandwidthInBitsPerSecond
+       size += 4 // m.PacketsPerDrop
+       size += 4 // m.PacketsPerReorder
+       return size
+}
+func (m *NsimConfigure2) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.DelayInUsec)
+       buf.EncodeUint32(m.AveragePacketSize)
+       buf.EncodeUint64(m.BandwidthInBitsPerSecond)
+       buf.EncodeUint32(m.PacketsPerDrop)
+       buf.EncodeUint32(m.PacketsPerReorder)
+       return buf.Bytes(), nil
+}
+func (m *NsimConfigure2) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.DelayInUsec = buf.DecodeUint32()
+       m.AveragePacketSize = buf.DecodeUint32()
+       m.BandwidthInBitsPerSecond = buf.DecodeUint64()
+       m.PacketsPerDrop = buf.DecodeUint32()
+       m.PacketsPerReorder = buf.DecodeUint32()
+       return nil
+}
+
+// NsimConfigure2Reply defines message 'nsim_configure2_reply'.
+type NsimConfigure2Reply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *NsimConfigure2Reply) Reset()               { *m = NsimConfigure2Reply{} }
+func (*NsimConfigure2Reply) GetMessageName() string { return "nsim_configure2_reply" }
+func (*NsimConfigure2Reply) GetCrcString() string   { return "e8d4e804" }
+func (*NsimConfigure2Reply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *NsimConfigure2Reply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *NsimConfigure2Reply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *NsimConfigure2Reply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
 // NsimConfigureReply defines message 'nsim_configure_reply'.
+// Deprecated: the message will be removed in the future versions
 type NsimConfigureReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -118,7 +202,7 @@ func (m *NsimCrossConnectEnableDisable) Reset() { *m = NsimCrossConnectEnableDis
 func (*NsimCrossConnectEnableDisable) GetMessageName() string {
        return "nsim_cross_connect_enable_disable"
 }
-func (*NsimCrossConnectEnableDisable) GetCrcString() string { return "16f70bdf" }
+func (*NsimCrossConnectEnableDisable) GetCrcString() string { return "9c3ead86" }
 func (*NsimCrossConnectEnableDisable) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -262,8 +346,10 @@ func (m *NsimOutputFeatureEnableDisableReply) Unmarshal(b []byte) error {
 func init() { file_nsim_binapi_init() }
 func file_nsim_binapi_init() {
        api.RegisterMessage((*NsimConfigure)(nil), "nsim_configure_16ed400f")
+       api.RegisterMessage((*NsimConfigure2)(nil), "nsim_configure2_64de8ed3")
+       api.RegisterMessage((*NsimConfigure2Reply)(nil), "nsim_configure2_reply_e8d4e804")
        api.RegisterMessage((*NsimConfigureReply)(nil), "nsim_configure_reply_e8d4e804")
-       api.RegisterMessage((*NsimCrossConnectEnableDisable)(nil), "nsim_cross_connect_enable_disable_16f70bdf")
+       api.RegisterMessage((*NsimCrossConnectEnableDisable)(nil), "nsim_cross_connect_enable_disable_9c3ead86")
        api.RegisterMessage((*NsimCrossConnectEnableDisableReply)(nil), "nsim_cross_connect_enable_disable_reply_e8d4e804")
        api.RegisterMessage((*NsimOutputFeatureEnableDisable)(nil), "nsim_output_feature_enable_disable_3865946c")
        api.RegisterMessage((*NsimOutputFeatureEnableDisableReply)(nil), "nsim_output_feature_enable_disable_reply_e8d4e804")
@@ -273,6 +359,8 @@ func file_nsim_binapi_init() {
 func AllMessages() []api.Message {
        return []api.Message{
                (*NsimConfigure)(nil),
+               (*NsimConfigure2)(nil),
+               (*NsimConfigure2Reply)(nil),
                (*NsimConfigureReply)(nil),
                (*NsimCrossConnectEnableDisable)(nil),
                (*NsimCrossConnectEnableDisableReply)(nil),
index d46b1ef..80ecdd9 100644 (file)
@@ -11,6 +11,7 @@ import (
 // RPCService defines RPC service nsim.
 type RPCService interface {
        NsimConfigure(ctx context.Context, in *NsimConfigure) (*NsimConfigureReply, error)
+       NsimConfigure2(ctx context.Context, in *NsimConfigure2) (*NsimConfigure2Reply, error)
        NsimCrossConnectEnableDisable(ctx context.Context, in *NsimCrossConnectEnableDisable) (*NsimCrossConnectEnableDisableReply, error)
        NsimOutputFeatureEnableDisable(ctx context.Context, in *NsimOutputFeatureEnableDisable) (*NsimOutputFeatureEnableDisableReply, error)
 }
@@ -32,6 +33,15 @@ func (c *serviceClient) NsimConfigure(ctx context.Context, in *NsimConfigure) (*
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) NsimConfigure2(ctx context.Context, in *NsimConfigure2) (*NsimConfigure2Reply, error) {
+       out := new(NsimConfigure2Reply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) NsimCrossConnectEnableDisable(ctx context.Context, in *NsimCrossConnectEnableDisable) (*NsimCrossConnectEnableDisableReply, error) {
        out := new(NsimCrossConnectEnableDisableReply)
        err := c.conn.Invoke(ctx, in, out)
index bfea709..64150f5 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/oddbuf.api.json
 
 // Package oddbuf contains generated bindings for API file oddbuf.api.
@@ -26,10 +26,11 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "oddbuf"
        APIVersion = "0.1.0"
-       VersionCrc = 0x95757869
+       VersionCrc = 0x3a1a2c50
 )
 
 // OddbufEnableDisable defines message 'oddbuf_enable_disable'.
+// InProgress: the message form may change in the future versions
 type OddbufEnableDisable struct {
        EnableDisable bool                           `binapi:"bool,name=enable_disable" json:"enable_disable,omitempty"`
        SwIfIndex     interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
@@ -67,6 +68,7 @@ func (m *OddbufEnableDisable) Unmarshal(b []byte) error {
 }
 
 // OddbufEnableDisableReply defines message 'oddbuf_enable_disable_reply'.
+// InProgress: the message form may change in the future versions
 type OddbufEnableDisableReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
index dc9c6ea..05557c4 100644 (file)
@@ -1,8 +1,8 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
-// source: /usr/share/vpp/api/core/one.api.json
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/one.api.json
 
 // Package one contains generated bindings for API file one.api.
 //
@@ -33,7 +33,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "one"
        APIVersion = "2.0.0"
-       VersionCrc = 0x288aaf5d
+       VersionCrc = 0x9f64600e
 )
 
 // OneFilter defines enum 'one_filter'.
@@ -121,7 +121,7 @@ type OneAddDelAdjacency struct {
 
 func (m *OneAddDelAdjacency) Reset()               { *m = OneAddDelAdjacency{} }
 func (*OneAddDelAdjacency) GetMessageName() string { return "one_add_del_adjacency" }
-func (*OneAddDelAdjacency) GetCrcString() string   { return "e48e7afe" }
+func (*OneAddDelAdjacency) GetCrcString() string   { return "9e830312" }
 func (*OneAddDelAdjacency) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -204,7 +204,7 @@ type OneAddDelL2ArpEntry struct {
 
 func (m *OneAddDelL2ArpEntry) Reset()               { *m = OneAddDelL2ArpEntry{} }
 func (*OneAddDelL2ArpEntry) GetMessageName() string { return "one_add_del_l2_arp_entry" }
-func (*OneAddDelL2ArpEntry) GetCrcString() string   { return "33209078" }
+func (*OneAddDelL2ArpEntry) GetCrcString() string   { return "1aa5e8b3" }
 func (*OneAddDelL2ArpEntry) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -283,7 +283,7 @@ type OneAddDelLocalEid struct {
 
 func (m *OneAddDelLocalEid) Reset()               { *m = OneAddDelLocalEid{} }
 func (*OneAddDelLocalEid) GetMessageName() string { return "one_add_del_local_eid" }
-func (*OneAddDelLocalEid) GetCrcString() string   { return "21f573bd" }
+func (*OneAddDelLocalEid) GetCrcString() string   { return "4e5a83a2" }
 func (*OneAddDelLocalEid) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -629,7 +629,7 @@ type OneAddDelMapResolver struct {
 
 func (m *OneAddDelMapResolver) Reset()               { *m = OneAddDelMapResolver{} }
 func (*OneAddDelMapResolver) GetMessageName() string { return "one_add_del_map_resolver" }
-func (*OneAddDelMapResolver) GetCrcString() string   { return "6598ea7c" }
+func (*OneAddDelMapResolver) GetCrcString() string   { return "ce19e32d" }
 func (*OneAddDelMapResolver) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -702,7 +702,7 @@ type OneAddDelMapServer struct {
 
 func (m *OneAddDelMapServer) Reset()               { *m = OneAddDelMapServer{} }
 func (*OneAddDelMapServer) GetMessageName() string { return "one_add_del_map_server" }
-func (*OneAddDelMapServer) GetCrcString() string   { return "6598ea7c" }
+func (*OneAddDelMapServer) GetCrcString() string   { return "ce19e32d" }
 func (*OneAddDelMapServer) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -776,7 +776,7 @@ type OneAddDelNdpEntry struct {
 
 func (m *OneAddDelNdpEntry) Reset()               { *m = OneAddDelNdpEntry{} }
 func (*OneAddDelNdpEntry) GetMessageName() string { return "one_add_del_ndp_entry" }
-func (*OneAddDelNdpEntry) GetCrcString() string   { return "d1629a2f" }
+func (*OneAddDelNdpEntry) GetCrcString() string   { return "0f8a287c" }
 func (*OneAddDelNdpEntry) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -859,7 +859,7 @@ type OneAddDelRemoteMapping struct {
 
 func (m *OneAddDelRemoteMapping) Reset()               { *m = OneAddDelRemoteMapping{} }
 func (*OneAddDelRemoteMapping) GetMessageName() string { return "one_add_del_remote_mapping" }
-func (*OneAddDelRemoteMapping) GetCrcString() string   { return "fae8ed77" }
+func (*OneAddDelRemoteMapping) GetCrcString() string   { return "6d5c789e" }
 func (*OneAddDelRemoteMapping) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1017,7 +1017,7 @@ type OneAdjacenciesGetReply struct {
 
 func (m *OneAdjacenciesGetReply) Reset()               { *m = OneAdjacenciesGetReply{} }
 func (*OneAdjacenciesGetReply) GetMessageName() string { return "one_adjacencies_get_reply" }
-func (*OneAdjacenciesGetReply) GetCrcString() string   { return "a8ed89a5" }
+func (*OneAdjacenciesGetReply) GetCrcString() string   { return "085bab89" }
 func (*OneAdjacenciesGetReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1168,7 +1168,7 @@ type OneEidTableDetails struct {
 
 func (m *OneEidTableDetails) Reset()               { *m = OneEidTableDetails{} }
 func (*OneEidTableDetails) GetMessageName() string { return "one_eid_table_details" }
-func (*OneEidTableDetails) GetCrcString() string   { return "4bc32e3a" }
+func (*OneEidTableDetails) GetCrcString() string   { return "1c29f792" }
 func (*OneEidTableDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1241,7 +1241,7 @@ type OneEidTableDump struct {
 
 func (m *OneEidTableDump) Reset()               { *m = OneEidTableDump{} }
 func (*OneEidTableDump) GetMessageName() string { return "one_eid_table_dump" }
-func (*OneEidTableDump) GetCrcString() string   { return "95151038" }
+func (*OneEidTableDump) GetCrcString() string   { return "bd190269" }
 func (*OneEidTableDump) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -1930,7 +1930,7 @@ type OneL2ArpEntriesGetReply struct {
 
 func (m *OneL2ArpEntriesGetReply) Reset()               { *m = OneL2ArpEntriesGetReply{} }
 func (*OneL2ArpEntriesGetReply) GetMessageName() string { return "one_l2_arp_entries_get_reply" }
-func (*OneL2ArpEntriesGetReply) GetCrcString() string   { return "b0a47bbe" }
+func (*OneL2ArpEntriesGetReply) GetCrcString() string   { return "b0dd200f" }
 func (*OneL2ArpEntriesGetReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1992,7 +1992,7 @@ type OneLocatorDetails struct {
 
 func (m *OneLocatorDetails) Reset()               { *m = OneLocatorDetails{} }
 func (*OneLocatorDetails) GetMessageName() string { return "one_locator_details" }
-func (*OneLocatorDetails) GetCrcString() string   { return "c0c4c2a7" }
+func (*OneLocatorDetails) GetCrcString() string   { return "2c620ffe" }
 func (*OneLocatorDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -2421,7 +2421,7 @@ type OneMapResolverDetails struct {
 
 func (m *OneMapResolverDetails) Reset()               { *m = OneMapResolverDetails{} }
 func (*OneMapResolverDetails) GetMessageName() string { return "one_map_resolver_details" }
-func (*OneMapResolverDetails) GetCrcString() string   { return "82a09deb" }
+func (*OneMapResolverDetails) GetCrcString() string   { return "3e78fc57" }
 func (*OneMapResolverDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -2484,7 +2484,7 @@ type OneMapServerDetails struct {
 
 func (m *OneMapServerDetails) Reset()               { *m = OneMapServerDetails{} }
 func (*OneMapServerDetails) GetMessageName() string { return "one_map_server_details" }
-func (*OneMapServerDetails) GetCrcString() string   { return "82a09deb" }
+func (*OneMapServerDetails) GetCrcString() string   { return "3e78fc57" }
 func (*OneMapServerDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -2659,7 +2659,7 @@ type OneNdpEntriesGetReply struct {
 
 func (m *OneNdpEntriesGetReply) Reset()               { *m = OneNdpEntriesGetReply{} }
 func (*OneNdpEntriesGetReply) GetMessageName() string { return "one_ndp_entries_get_reply" }
-func (*OneNdpEntriesGetReply) GetCrcString() string   { return "0bd34161" }
+func (*OneNdpEntriesGetReply) GetCrcString() string   { return "70719b1a" }
 func (*OneNdpEntriesGetReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -3191,7 +3191,7 @@ type OneStatsDetails struct {
 
 func (m *OneStatsDetails) Reset()               { *m = OneStatsDetails{} }
 func (*OneStatsDetails) GetMessageName() string { return "one_stats_details" }
-func (*OneStatsDetails) GetCrcString() string   { return "ff6ef238" }
+func (*OneStatsDetails) GetCrcString() string   { return "2eb74678" }
 func (*OneStatsDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -3408,7 +3408,7 @@ type OneUsePetr struct {
 
 func (m *OneUsePetr) Reset()               { *m = OneUsePetr{} }
 func (*OneUsePetr) GetMessageName() string { return "one_use_petr" }
-func (*OneUsePetr) GetCrcString() string   { return "9e141831" }
+func (*OneUsePetr) GetCrcString() string   { return "d87dbad9" }
 func (*OneUsePetr) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -4107,7 +4107,7 @@ type ShowOneUsePetrReply struct {
 
 func (m *ShowOneUsePetrReply) Reset()               { *m = ShowOneUsePetrReply{} }
 func (*ShowOneUsePetrReply) GetMessageName() string { return "show_one_use_petr_reply" }
-func (*ShowOneUsePetrReply) GetCrcString() string   { return "10e744a6" }
+func (*ShowOneUsePetrReply) GetCrcString() string   { return "84a03528" }
 func (*ShowOneUsePetrReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -4144,11 +4144,11 @@ func (m *ShowOneUsePetrReply) Unmarshal(b []byte) error {
 
 func init() { file_one_binapi_init() }
 func file_one_binapi_init() {
-       api.RegisterMessage((*OneAddDelAdjacency)(nil), "one_add_del_adjacency_e48e7afe")
+       api.RegisterMessage((*OneAddDelAdjacency)(nil), "one_add_del_adjacency_9e830312")
        api.RegisterMessage((*OneAddDelAdjacencyReply)(nil), "one_add_del_adjacency_reply_e8d4e804")
-       api.RegisterMessage((*OneAddDelL2ArpEntry)(nil), "one_add_del_l2_arp_entry_33209078")
+       api.RegisterMessage((*OneAddDelL2ArpEntry)(nil), "one_add_del_l2_arp_entry_1aa5e8b3")
        api.RegisterMessage((*OneAddDelL2ArpEntryReply)(nil), "one_add_del_l2_arp_entry_reply_e8d4e804")
-       api.RegisterMessage((*OneAddDelLocalEid)(nil), "one_add_del_local_eid_21f573bd")
+       api.RegisterMessage((*OneAddDelLocalEid)(nil), "one_add_del_local_eid_4e5a83a2")
        api.RegisterMessage((*OneAddDelLocalEidReply)(nil), "one_add_del_local_eid_reply_e8d4e804")
        api.RegisterMessage((*OneAddDelLocator)(nil), "one_add_del_locator_af4d8f13")
        api.RegisterMessage((*OneAddDelLocatorReply)(nil), "one_add_del_locator_reply_e8d4e804")
@@ -4156,20 +4156,20 @@ func file_one_binapi_init() {
        api.RegisterMessage((*OneAddDelLocatorSetReply)(nil), "one_add_del_locator_set_reply_b6666db4")
        api.RegisterMessage((*OneAddDelMapRequestItrRlocs)(nil), "one_add_del_map_request_itr_rlocs_6be88e45")
        api.RegisterMessage((*OneAddDelMapRequestItrRlocsReply)(nil), "one_add_del_map_request_itr_rlocs_reply_e8d4e804")
-       api.RegisterMessage((*OneAddDelMapResolver)(nil), "one_add_del_map_resolver_6598ea7c")
+       api.RegisterMessage((*OneAddDelMapResolver)(nil), "one_add_del_map_resolver_ce19e32d")
        api.RegisterMessage((*OneAddDelMapResolverReply)(nil), "one_add_del_map_resolver_reply_e8d4e804")
-       api.RegisterMessage((*OneAddDelMapServer)(nil), "one_add_del_map_server_6598ea7c")
+       api.RegisterMessage((*OneAddDelMapServer)(nil), "one_add_del_map_server_ce19e32d")
        api.RegisterMessage((*OneAddDelMapServerReply)(nil), "one_add_del_map_server_reply_e8d4e804")
-       api.RegisterMessage((*OneAddDelNdpEntry)(nil), "one_add_del_ndp_entry_d1629a2f")
+       api.RegisterMessage((*OneAddDelNdpEntry)(nil), "one_add_del_ndp_entry_0f8a287c")
        api.RegisterMessage((*OneAddDelNdpEntryReply)(nil), "one_add_del_ndp_entry_reply_e8d4e804")
-       api.RegisterMessage((*OneAddDelRemoteMapping)(nil), "one_add_del_remote_mapping_fae8ed77")
+       api.RegisterMessage((*OneAddDelRemoteMapping)(nil), "one_add_del_remote_mapping_6d5c789e")
        api.RegisterMessage((*OneAddDelRemoteMappingReply)(nil), "one_add_del_remote_mapping_reply_e8d4e804")
        api.RegisterMessage((*OneAdjacenciesGet)(nil), "one_adjacencies_get_8d1f2fe9")
-       api.RegisterMessage((*OneAdjacenciesGetReply)(nil), "one_adjacencies_get_reply_a8ed89a5")
+       api.RegisterMessage((*OneAdjacenciesGetReply)(nil), "one_adjacencies_get_reply_085bab89")
        api.RegisterMessage((*OneEidTableAddDelMap)(nil), "one_eid_table_add_del_map_9481416b")
        api.RegisterMessage((*OneEidTableAddDelMapReply)(nil), "one_eid_table_add_del_map_reply_e8d4e804")
-       api.RegisterMessage((*OneEidTableDetails)(nil), "one_eid_table_details_4bc32e3a")
-       api.RegisterMessage((*OneEidTableDump)(nil), "one_eid_table_dump_95151038")
+       api.RegisterMessage((*OneEidTableDetails)(nil), "one_eid_table_details_1c29f792")
+       api.RegisterMessage((*OneEidTableDump)(nil), "one_eid_table_dump_bd190269")
        api.RegisterMessage((*OneEidTableMapDetails)(nil), "one_eid_table_map_details_0b6859e2")
        api.RegisterMessage((*OneEidTableMapDump)(nil), "one_eid_table_map_dump_d6cf0c3d")
        api.RegisterMessage((*OneEidTableVniDetails)(nil), "one_eid_table_vni_details_64abc01e")
@@ -4189,8 +4189,8 @@ func file_one_binapi_init() {
        api.RegisterMessage((*OneL2ArpBdGet)(nil), "one_l2_arp_bd_get_51077d14")
        api.RegisterMessage((*OneL2ArpBdGetReply)(nil), "one_l2_arp_bd_get_reply_221ac888")
        api.RegisterMessage((*OneL2ArpEntriesGet)(nil), "one_l2_arp_entries_get_4d418cf4")
-       api.RegisterMessage((*OneL2ArpEntriesGetReply)(nil), "one_l2_arp_entries_get_reply_b0a47bbe")
-       api.RegisterMessage((*OneLocatorDetails)(nil), "one_locator_details_c0c4c2a7")
+       api.RegisterMessage((*OneL2ArpEntriesGetReply)(nil), "one_l2_arp_entries_get_reply_b0dd200f")
+       api.RegisterMessage((*OneLocatorDetails)(nil), "one_locator_details_2c620ffe")
        api.RegisterMessage((*OneLocatorDump)(nil), "one_locator_dump_9b11076c")
        api.RegisterMessage((*OneLocatorSetDetails)(nil), "one_locator_set_details_5b33a105")
        api.RegisterMessage((*OneLocatorSetDump)(nil), "one_locator_set_dump_71190768")
@@ -4202,14 +4202,14 @@ func file_one_binapi_init() {
        api.RegisterMessage((*OneMapRegisterSetTTLReply)(nil), "one_map_register_set_ttl_reply_e8d4e804")
        api.RegisterMessage((*OneMapRequestMode)(nil), "one_map_request_mode_ffa5d2f5")
        api.RegisterMessage((*OneMapRequestModeReply)(nil), "one_map_request_mode_reply_e8d4e804")
-       api.RegisterMessage((*OneMapResolverDetails)(nil), "one_map_resolver_details_82a09deb")
+       api.RegisterMessage((*OneMapResolverDetails)(nil), "one_map_resolver_details_3e78fc57")
        api.RegisterMessage((*OneMapResolverDump)(nil), "one_map_resolver_dump_51077d14")
-       api.RegisterMessage((*OneMapServerDetails)(nil), "one_map_server_details_82a09deb")
+       api.RegisterMessage((*OneMapServerDetails)(nil), "one_map_server_details_3e78fc57")
        api.RegisterMessage((*OneMapServerDump)(nil), "one_map_server_dump_51077d14")
        api.RegisterMessage((*OneNdpBdGet)(nil), "one_ndp_bd_get_51077d14")
        api.RegisterMessage((*OneNdpBdGetReply)(nil), "one_ndp_bd_get_reply_221ac888")
        api.RegisterMessage((*OneNdpEntriesGet)(nil), "one_ndp_entries_get_4d418cf4")
-       api.RegisterMessage((*OneNdpEntriesGetReply)(nil), "one_ndp_entries_get_reply_0bd34161")
+       api.RegisterMessage((*OneNdpEntriesGetReply)(nil), "one_ndp_entries_get_reply_70719b1a")
        api.RegisterMessage((*OneNshSetLocatorSet)(nil), "one_nsh_set_locator_set_486e2b76")
        api.RegisterMessage((*OneNshSetLocatorSetReply)(nil), "one_nsh_set_locator_set_reply_e8d4e804")
        api.RegisterMessage((*OnePitrSetLocatorSet)(nil), "one_pitr_set_locator_set_486e2b76")
@@ -4224,13 +4224,13 @@ func file_one_binapi_init() {
        api.RegisterMessage((*OneShowPitrModeReply)(nil), "one_show_pitr_mode_reply_f15abb16")
        api.RegisterMessage((*OneShowXtrMode)(nil), "one_show_xtr_mode_51077d14")
        api.RegisterMessage((*OneShowXtrModeReply)(nil), "one_show_xtr_mode_reply_f15abb16")
-       api.RegisterMessage((*OneStatsDetails)(nil), "one_stats_details_ff6ef238")
+       api.RegisterMessage((*OneStatsDetails)(nil), "one_stats_details_2eb74678")
        api.RegisterMessage((*OneStatsDump)(nil), "one_stats_dump_51077d14")
        api.RegisterMessage((*OneStatsEnableDisable)(nil), "one_stats_enable_disable_c264d7bf")
        api.RegisterMessage((*OneStatsEnableDisableReply)(nil), "one_stats_enable_disable_reply_e8d4e804")
        api.RegisterMessage((*OneStatsFlush)(nil), "one_stats_flush_51077d14")
        api.RegisterMessage((*OneStatsFlushReply)(nil), "one_stats_flush_reply_e8d4e804")
-       api.RegisterMessage((*OneUsePetr)(nil), "one_use_petr_9e141831")
+       api.RegisterMessage((*OneUsePetr)(nil), "one_use_petr_d87dbad9")
        api.RegisterMessage((*OneUsePetrReply)(nil), "one_use_petr_reply_e8d4e804")
        api.RegisterMessage((*ShowOneMapRegisterFallbackThreshold)(nil), "show_one_map_register_fallback_threshold_51077d14")
        api.RegisterMessage((*ShowOneMapRegisterFallbackThresholdReply)(nil), "show_one_map_register_fallback_threshold_reply_c93a9113")
@@ -4251,7 +4251,7 @@ func file_one_binapi_init() {
        api.RegisterMessage((*ShowOneStatus)(nil), "show_one_status_51077d14")
        api.RegisterMessage((*ShowOneStatusReply)(nil), "show_one_status_reply_961bb25b")
        api.RegisterMessage((*ShowOneUsePetr)(nil), "show_one_use_petr_51077d14")
-       api.RegisterMessage((*ShowOneUsePetrReply)(nil), "show_one_use_petr_reply_10e744a6")
+       api.RegisterMessage((*ShowOneUsePetrReply)(nil), "show_one_use_petr_reply_84a03528")
 }
 
 // Messages returns list of all messages in this module.
index d9f9a9c..88c2ab5 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/p2p_ethernet.api.json
 
 // Package p2p_ethernet contains generated bindings for API file p2p_ethernet.api.
@@ -27,7 +27,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "p2p_ethernet"
        APIVersion = "1.0.0"
-       VersionCrc = 0xe34f63cd
+       VersionCrc = 0x3cfe55da
 )
 
 // P2pEthernetAdd defines message 'p2p_ethernet_add'.
@@ -39,7 +39,7 @@ type P2pEthernetAdd struct {
 
 func (m *P2pEthernetAdd) Reset()               { *m = P2pEthernetAdd{} }
 func (*P2pEthernetAdd) GetMessageName() string { return "p2p_ethernet_add" }
-func (*P2pEthernetAdd) GetCrcString() string   { return "eeb8e717" }
+func (*P2pEthernetAdd) GetCrcString() string   { return "36a1a6dc" }
 func (*P2pEthernetAdd) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -116,7 +116,7 @@ type P2pEthernetDel struct {
 
 func (m *P2pEthernetDel) Reset()               { *m = P2pEthernetDel{} }
 func (*P2pEthernetDel) GetMessageName() string { return "p2p_ethernet_del" }
-func (*P2pEthernetDel) GetCrcString() string   { return "0b62c386" }
+func (*P2pEthernetDel) GetCrcString() string   { return "62f81c8c" }
 func (*P2pEthernetDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -180,9 +180,9 @@ func (m *P2pEthernetDelReply) Unmarshal(b []byte) error {
 
 func init() { file_p2p_ethernet_binapi_init() }
 func file_p2p_ethernet_binapi_init() {
-       api.RegisterMessage((*P2pEthernetAdd)(nil), "p2p_ethernet_add_eeb8e717")
+       api.RegisterMessage((*P2pEthernetAdd)(nil), "p2p_ethernet_add_36a1a6dc")
        api.RegisterMessage((*P2pEthernetAddReply)(nil), "p2p_ethernet_add_reply_5383d31f")
-       api.RegisterMessage((*P2pEthernetDel)(nil), "p2p_ethernet_del_0b62c386")
+       api.RegisterMessage((*P2pEthernetDel)(nil), "p2p_ethernet_del_62f81c8c")
        api.RegisterMessage((*P2pEthernetDelReply)(nil), "p2p_ethernet_del_reply_e8d4e804")
 }
 
index fe12ece..3096037 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/pci_types.api.json
 
 // Package pci_types contains generated bindings for API file pci_types.api.
index 5fc4efb..ea8c094 100644 (file)
@@ -1,13 +1,13 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/pg.api.json
 
 // Package pg contains generated bindings for API file pg.api.
 //
 // Contents:
-//   6 messages
+//   8 messages
 //
 package pg
 
@@ -26,7 +26,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "pg"
        APIVersion = "2.0.0"
-       VersionCrc = 0xb7fe86ae
+       VersionCrc = 0x3a037a0e
 )
 
 // PgCapture defines message 'pg_capture'.
@@ -255,6 +255,82 @@ func (m *PgEnableDisableReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// PgInterfaceEnableDisableCoalesce defines message 'pg_interface_enable_disable_coalesce'.
+// InProgress: the message form may change in the future versions
+type PgInterfaceEnableDisableCoalesce struct {
+       SwIfIndex       interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       CoalesceEnabled bool                           `binapi:"bool,name=coalesce_enabled" json:"coalesce_enabled,omitempty"`
+}
+
+func (m *PgInterfaceEnableDisableCoalesce) Reset() { *m = PgInterfaceEnableDisableCoalesce{} }
+func (*PgInterfaceEnableDisableCoalesce) GetMessageName() string {
+       return "pg_interface_enable_disable_coalesce"
+}
+func (*PgInterfaceEnableDisableCoalesce) GetCrcString() string { return "a2ef99e7" }
+func (*PgInterfaceEnableDisableCoalesce) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *PgInterfaceEnableDisableCoalesce) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       size += 1 // m.CoalesceEnabled
+       return size
+}
+func (m *PgInterfaceEnableDisableCoalesce) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeBool(m.CoalesceEnabled)
+       return buf.Bytes(), nil
+}
+func (m *PgInterfaceEnableDisableCoalesce) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.CoalesceEnabled = buf.DecodeBool()
+       return nil
+}
+
+// PgInterfaceEnableDisableCoalesceReply defines message 'pg_interface_enable_disable_coalesce_reply'.
+// InProgress: the message form may change in the future versions
+type PgInterfaceEnableDisableCoalesceReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *PgInterfaceEnableDisableCoalesceReply) Reset() { *m = PgInterfaceEnableDisableCoalesceReply{} }
+func (*PgInterfaceEnableDisableCoalesceReply) GetMessageName() string {
+       return "pg_interface_enable_disable_coalesce_reply"
+}
+func (*PgInterfaceEnableDisableCoalesceReply) GetCrcString() string { return "e8d4e804" }
+func (*PgInterfaceEnableDisableCoalesceReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *PgInterfaceEnableDisableCoalesceReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *PgInterfaceEnableDisableCoalesceReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *PgInterfaceEnableDisableCoalesceReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
 func init() { file_pg_binapi_init() }
 func file_pg_binapi_init() {
        api.RegisterMessage((*PgCapture)(nil), "pg_capture_3712fb6c")
@@ -263,6 +339,8 @@ func file_pg_binapi_init() {
        api.RegisterMessage((*PgCreateInterfaceReply)(nil), "pg_create_interface_reply_5383d31f")
        api.RegisterMessage((*PgEnableDisable)(nil), "pg_enable_disable_01f94f3a")
        api.RegisterMessage((*PgEnableDisableReply)(nil), "pg_enable_disable_reply_e8d4e804")
+       api.RegisterMessage((*PgInterfaceEnableDisableCoalesce)(nil), "pg_interface_enable_disable_coalesce_a2ef99e7")
+       api.RegisterMessage((*PgInterfaceEnableDisableCoalesceReply)(nil), "pg_interface_enable_disable_coalesce_reply_e8d4e804")
 }
 
 // Messages returns list of all messages in this module.
@@ -274,5 +352,7 @@ func AllMessages() []api.Message {
                (*PgCreateInterfaceReply)(nil),
                (*PgEnableDisable)(nil),
                (*PgEnableDisableReply)(nil),
+               (*PgInterfaceEnableDisableCoalesce)(nil),
+               (*PgInterfaceEnableDisableCoalesceReply)(nil),
        }
 }
index 697f684..1a46cc3 100644 (file)
@@ -13,6 +13,7 @@ type RPCService interface {
        PgCapture(ctx context.Context, in *PgCapture) (*PgCaptureReply, error)
        PgCreateInterface(ctx context.Context, in *PgCreateInterface) (*PgCreateInterfaceReply, error)
        PgEnableDisable(ctx context.Context, in *PgEnableDisable) (*PgEnableDisableReply, error)
+       PgInterfaceEnableDisableCoalesce(ctx context.Context, in *PgInterfaceEnableDisableCoalesce) (*PgInterfaceEnableDisableCoalesceReply, error)
 }
 
 type serviceClient struct {
@@ -49,3 +50,12 @@ func (c *serviceClient) PgEnableDisable(ctx context.Context, in *PgEnableDisable
        }
        return out, api.RetvalToVPPApiError(out.Retval)
 }
+
+func (c *serviceClient) PgInterfaceEnableDisableCoalesce(ctx context.Context, in *PgInterfaceEnableDisableCoalesce) (*PgInterfaceEnableDisableCoalesceReply, error) {
+       out := new(PgInterfaceEnableDisableCoalesceReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
index f50db2a..ffba695 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/pipe.api.json
 
 // Package pipe contains generated bindings for API file pipe.api.
@@ -26,7 +26,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "pipe"
        APIVersion = "1.0.1"
-       VersionCrc = 0xd22736c9
+       VersionCrc = 0xc159134a
 )
 
 // PipeCreate defines message 'pipe_create'.
@@ -75,7 +75,7 @@ type PipeCreateReply struct {
 
 func (m *PipeCreateReply) Reset()               { *m = PipeCreateReply{} }
 func (*PipeCreateReply) GetMessageName() string { return "pipe_create_reply" }
-func (*PipeCreateReply) GetCrcString() string   { return "d4c2c2b3" }
+func (*PipeCreateReply) GetCrcString() string   { return "b7ce310c" }
 func (*PipeCreateReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -188,7 +188,7 @@ type PipeDetails struct {
 
 func (m *PipeDetails) Reset()               { *m = PipeDetails{} }
 func (*PipeDetails) GetMessageName() string { return "pipe_details" }
-func (*PipeDetails) GetCrcString() string   { return "43ac107a" }
+func (*PipeDetails) GetCrcString() string   { return "c52b799d" }
 func (*PipeDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -256,10 +256,10 @@ func (m *PipeDump) Unmarshal(b []byte) error {
 func init() { file_pipe_binapi_init() }
 func file_pipe_binapi_init() {
        api.RegisterMessage((*PipeCreate)(nil), "pipe_create_bb263bd3")
-       api.RegisterMessage((*PipeCreateReply)(nil), "pipe_create_reply_d4c2c2b3")
+       api.RegisterMessage((*PipeCreateReply)(nil), "pipe_create_reply_b7ce310c")
        api.RegisterMessage((*PipeDelete)(nil), "pipe_delete_f9e6675e")
        api.RegisterMessage((*PipeDeleteReply)(nil), "pipe_delete_reply_e8d4e804")
-       api.RegisterMessage((*PipeDetails)(nil), "pipe_details_43ac107a")
+       api.RegisterMessage((*PipeDetails)(nil), "pipe_details_c52b799d")
        api.RegisterMessage((*PipeDump)(nil), "pipe_dump_51077d14")
 }
 
diff --git a/binapi/pnat/pnat.ba.go b/binapi/pnat/pnat.ba.go
new file mode 100644 (file)
index 0000000..47163a0
--- /dev/null
@@ -0,0 +1,771 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/pnat.api.json
+
+// Package pnat contains generated bindings for API file pnat.api.
+//
+// Contents:
+//   2 enums
+//   2 structs
+//  14 messages
+//
+package pnat
+
+import (
+       "strconv"
+
+       api "git.fd.io/govpp.git/api"
+       interface_types "git.fd.io/govpp.git/binapi/interface_types"
+       ip_types "git.fd.io/govpp.git/binapi/ip_types"
+       codec "git.fd.io/govpp.git/codec"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+const (
+       APIFile    = "pnat"
+       APIVersion = "0.1.1"
+       VersionCrc = 0x108d3b87
+)
+
+// PnatAttachmentPoint defines enum 'pnat_attachment_point'.
+type PnatAttachmentPoint uint32
+
+const (
+       PNAT_IP4_INPUT            PnatAttachmentPoint = 0
+       PNAT_IP4_OUTPUT           PnatAttachmentPoint = 1
+       PNAT_ATTACHMENT_POINT_MAX PnatAttachmentPoint = 2
+)
+
+var (
+       PnatAttachmentPoint_name = map[uint32]string{
+               0: "PNAT_IP4_INPUT",
+               1: "PNAT_IP4_OUTPUT",
+               2: "PNAT_ATTACHMENT_POINT_MAX",
+       }
+       PnatAttachmentPoint_value = map[string]uint32{
+               "PNAT_IP4_INPUT":            0,
+               "PNAT_IP4_OUTPUT":           1,
+               "PNAT_ATTACHMENT_POINT_MAX": 2,
+       }
+)
+
+func (x PnatAttachmentPoint) String() string {
+       s, ok := PnatAttachmentPoint_name[uint32(x)]
+       if ok {
+               return s
+       }
+       return "PnatAttachmentPoint(" + strconv.Itoa(int(x)) + ")"
+}
+
+// PnatMask defines enum 'pnat_mask'.
+type PnatMask uint32
+
+const (
+       PNAT_SA         PnatMask = 1
+       PNAT_DA         PnatMask = 2
+       PNAT_SPORT      PnatMask = 4
+       PNAT_DPORT      PnatMask = 8
+       PNAT_COPY_BYTE  PnatMask = 16
+       PNAT_CLEAR_BYTE PnatMask = 32
+)
+
+var (
+       PnatMask_name = map[uint32]string{
+               1:  "PNAT_SA",
+               2:  "PNAT_DA",
+               4:  "PNAT_SPORT",
+               8:  "PNAT_DPORT",
+               16: "PNAT_COPY_BYTE",
+               32: "PNAT_CLEAR_BYTE",
+       }
+       PnatMask_value = map[string]uint32{
+               "PNAT_SA":         1,
+               "PNAT_DA":         2,
+               "PNAT_SPORT":      4,
+               "PNAT_DPORT":      8,
+               "PNAT_COPY_BYTE":  16,
+               "PNAT_CLEAR_BYTE": 32,
+       }
+)
+
+func (x PnatMask) String() string {
+       s, ok := PnatMask_name[uint32(x)]
+       if ok {
+               return s
+       }
+       return "PnatMask(" + strconv.Itoa(int(x)) + ")"
+}
+
+// PnatMatchTuple defines type 'pnat_match_tuple'.
+type PnatMatchTuple struct {
+       Src   ip_types.IP4Address `binapi:"ip4_address,name=src" json:"src,omitempty"`
+       Dst   ip_types.IP4Address `binapi:"ip4_address,name=dst" json:"dst,omitempty"`
+       Proto ip_types.IPProto    `binapi:"ip_proto,name=proto" json:"proto,omitempty"`
+       Sport uint16              `binapi:"u16,name=sport" json:"sport,omitempty"`
+       Dport uint16              `binapi:"u16,name=dport" json:"dport,omitempty"`
+       Mask  PnatMask            `binapi:"pnat_mask,name=mask" json:"mask,omitempty"`
+}
+
+// PnatRewriteTuple defines type 'pnat_rewrite_tuple'.
+type PnatRewriteTuple struct {
+       Src         ip_types.IP4Address `binapi:"ip4_address,name=src" json:"src,omitempty"`
+       Dst         ip_types.IP4Address `binapi:"ip4_address,name=dst" json:"dst,omitempty"`
+       Sport       uint16              `binapi:"u16,name=sport" json:"sport,omitempty"`
+       Dport       uint16              `binapi:"u16,name=dport" json:"dport,omitempty"`
+       Mask        PnatMask            `binapi:"pnat_mask,name=mask" json:"mask,omitempty"`
+       FromOffset  uint8               `binapi:"u8,name=from_offset" json:"from_offset,omitempty"`
+       ToOffset    uint8               `binapi:"u8,name=to_offset" json:"to_offset,omitempty"`
+       ClearOffset uint8               `binapi:"u8,name=clear_offset" json:"clear_offset,omitempty"`
+}
+
+// PnatBindingAdd defines message 'pnat_binding_add'.
+// InProgress: the message form may change in the future versions
+type PnatBindingAdd struct {
+       Match   PnatMatchTuple   `binapi:"pnat_match_tuple,name=match" json:"match,omitempty"`
+       Rewrite PnatRewriteTuple `binapi:"pnat_rewrite_tuple,name=rewrite" json:"rewrite,omitempty"`
+}
+
+func (m *PnatBindingAdd) Reset()               { *m = PnatBindingAdd{} }
+func (*PnatBindingAdd) GetMessageName() string { return "pnat_binding_add" }
+func (*PnatBindingAdd) GetCrcString() string   { return "f00f79aa" }
+func (*PnatBindingAdd) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *PnatBindingAdd) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4 // m.Match.Src
+       size += 1 * 4 // m.Match.Dst
+       size += 1     // m.Match.Proto
+       size += 2     // m.Match.Sport
+       size += 2     // m.Match.Dport
+       size += 4     // m.Match.Mask
+       size += 1 * 4 // m.Rewrite.Src
+       size += 1 * 4 // m.Rewrite.Dst
+       size += 2     // m.Rewrite.Sport
+       size += 2     // m.Rewrite.Dport
+       size += 4     // m.Rewrite.Mask
+       size += 1     // m.Rewrite.FromOffset
+       size += 1     // m.Rewrite.ToOffset
+       size += 1     // m.Rewrite.ClearOffset
+       return size
+}
+func (m *PnatBindingAdd) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.Match.Src[:], 4)
+       buf.EncodeBytes(m.Match.Dst[:], 4)
+       buf.EncodeUint8(uint8(m.Match.Proto))
+       buf.EncodeUint16(m.Match.Sport)
+       buf.EncodeUint16(m.Match.Dport)
+       buf.EncodeUint32(uint32(m.Match.Mask))
+       buf.EncodeBytes(m.Rewrite.Src[:], 4)
+       buf.EncodeBytes(m.Rewrite.Dst[:], 4)
+       buf.EncodeUint16(m.Rewrite.Sport)
+       buf.EncodeUint16(m.Rewrite.Dport)
+       buf.EncodeUint32(uint32(m.Rewrite.Mask))
+       buf.EncodeUint8(m.Rewrite.FromOffset)
+       buf.EncodeUint8(m.Rewrite.ToOffset)
+       buf.EncodeUint8(m.Rewrite.ClearOffset)
+       return buf.Bytes(), nil
+}
+func (m *PnatBindingAdd) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.Match.Src[:], buf.DecodeBytes(4))
+       copy(m.Match.Dst[:], buf.DecodeBytes(4))
+       m.Match.Proto = ip_types.IPProto(buf.DecodeUint8())
+       m.Match.Sport = buf.DecodeUint16()
+       m.Match.Dport = buf.DecodeUint16()
+       m.Match.Mask = PnatMask(buf.DecodeUint32())
+       copy(m.Rewrite.Src[:], buf.DecodeBytes(4))
+       copy(m.Rewrite.Dst[:], buf.DecodeBytes(4))
+       m.Rewrite.Sport = buf.DecodeUint16()
+       m.Rewrite.Dport = buf.DecodeUint16()
+       m.Rewrite.Mask = PnatMask(buf.DecodeUint32())
+       m.Rewrite.FromOffset = buf.DecodeUint8()
+       m.Rewrite.ToOffset = buf.DecodeUint8()
+       m.Rewrite.ClearOffset = buf.DecodeUint8()
+       return nil
+}
+
+// PnatBindingAddReply defines message 'pnat_binding_add_reply'.
+// InProgress: the message form may change in the future versions
+type PnatBindingAddReply struct {
+       Retval       int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       BindingIndex uint32 `binapi:"u32,name=binding_index" json:"binding_index,omitempty"`
+}
+
+func (m *PnatBindingAddReply) Reset()               { *m = PnatBindingAddReply{} }
+func (*PnatBindingAddReply) GetMessageName() string { return "pnat_binding_add_reply" }
+func (*PnatBindingAddReply) GetCrcString() string   { return "4cd980a7" }
+func (*PnatBindingAddReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *PnatBindingAddReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.BindingIndex
+       return size
+}
+func (m *PnatBindingAddReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.BindingIndex)
+       return buf.Bytes(), nil
+}
+func (m *PnatBindingAddReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.BindingIndex = buf.DecodeUint32()
+       return nil
+}
+
+// PnatBindingAttach defines message 'pnat_binding_attach'.
+// InProgress: the message form may change in the future versions
+type PnatBindingAttach struct {
+       SwIfIndex    interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       Attachment   PnatAttachmentPoint            `binapi:"pnat_attachment_point,name=attachment" json:"attachment,omitempty"`
+       BindingIndex uint32                         `binapi:"u32,name=binding_index" json:"binding_index,omitempty"`
+}
+
+func (m *PnatBindingAttach) Reset()               { *m = PnatBindingAttach{} }
+func (*PnatBindingAttach) GetMessageName() string { return "pnat_binding_attach" }
+func (*PnatBindingAttach) GetCrcString() string   { return "6e074232" }
+func (*PnatBindingAttach) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *PnatBindingAttach) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       size += 4 // m.Attachment
+       size += 4 // m.BindingIndex
+       return size
+}
+func (m *PnatBindingAttach) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint32(uint32(m.Attachment))
+       buf.EncodeUint32(m.BindingIndex)
+       return buf.Bytes(), nil
+}
+func (m *PnatBindingAttach) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Attachment = PnatAttachmentPoint(buf.DecodeUint32())
+       m.BindingIndex = buf.DecodeUint32()
+       return nil
+}
+
+// PnatBindingAttachReply defines message 'pnat_binding_attach_reply'.
+// InProgress: the message form may change in the future versions
+type PnatBindingAttachReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *PnatBindingAttachReply) Reset()               { *m = PnatBindingAttachReply{} }
+func (*PnatBindingAttachReply) GetMessageName() string { return "pnat_binding_attach_reply" }
+func (*PnatBindingAttachReply) GetCrcString() string   { return "e8d4e804" }
+func (*PnatBindingAttachReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *PnatBindingAttachReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *PnatBindingAttachReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *PnatBindingAttachReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// PnatBindingDel defines message 'pnat_binding_del'.
+// InProgress: the message form may change in the future versions
+type PnatBindingDel struct {
+       BindingIndex uint32 `binapi:"u32,name=binding_index" json:"binding_index,omitempty"`
+}
+
+func (m *PnatBindingDel) Reset()               { *m = PnatBindingDel{} }
+func (*PnatBindingDel) GetMessageName() string { return "pnat_binding_del" }
+func (*PnatBindingDel) GetCrcString() string   { return "9259df7b" }
+func (*PnatBindingDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *PnatBindingDel) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.BindingIndex
+       return size
+}
+func (m *PnatBindingDel) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.BindingIndex)
+       return buf.Bytes(), nil
+}
+func (m *PnatBindingDel) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.BindingIndex = buf.DecodeUint32()
+       return nil
+}
+
+// PnatBindingDelReply defines message 'pnat_binding_del_reply'.
+// InProgress: the message form may change in the future versions
+type PnatBindingDelReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *PnatBindingDelReply) Reset()               { *m = PnatBindingDelReply{} }
+func (*PnatBindingDelReply) GetMessageName() string { return "pnat_binding_del_reply" }
+func (*PnatBindingDelReply) GetCrcString() string   { return "e8d4e804" }
+func (*PnatBindingDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *PnatBindingDelReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *PnatBindingDelReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *PnatBindingDelReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// PnatBindingDetach defines message 'pnat_binding_detach'.
+// InProgress: the message form may change in the future versions
+type PnatBindingDetach struct {
+       SwIfIndex    interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       Attachment   PnatAttachmentPoint            `binapi:"pnat_attachment_point,name=attachment" json:"attachment,omitempty"`
+       BindingIndex uint32                         `binapi:"u32,name=binding_index" json:"binding_index,omitempty"`
+}
+
+func (m *PnatBindingDetach) Reset()               { *m = PnatBindingDetach{} }
+func (*PnatBindingDetach) GetMessageName() string { return "pnat_binding_detach" }
+func (*PnatBindingDetach) GetCrcString() string   { return "6e074232" }
+func (*PnatBindingDetach) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *PnatBindingDetach) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       size += 4 // m.Attachment
+       size += 4 // m.BindingIndex
+       return size
+}
+func (m *PnatBindingDetach) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint32(uint32(m.Attachment))
+       buf.EncodeUint32(m.BindingIndex)
+       return buf.Bytes(), nil
+}
+func (m *PnatBindingDetach) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Attachment = PnatAttachmentPoint(buf.DecodeUint32())
+       m.BindingIndex = buf.DecodeUint32()
+       return nil
+}
+
+// PnatBindingDetachReply defines message 'pnat_binding_detach_reply'.
+// InProgress: the message form may change in the future versions
+type PnatBindingDetachReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *PnatBindingDetachReply) Reset()               { *m = PnatBindingDetachReply{} }
+func (*PnatBindingDetachReply) GetMessageName() string { return "pnat_binding_detach_reply" }
+func (*PnatBindingDetachReply) GetCrcString() string   { return "e8d4e804" }
+func (*PnatBindingDetachReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *PnatBindingDetachReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *PnatBindingDetachReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *PnatBindingDetachReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// PnatBindingsDetails defines message 'pnat_bindings_details'.
+// InProgress: the message form may change in the future versions
+type PnatBindingsDetails struct {
+       Match   PnatMatchTuple   `binapi:"pnat_match_tuple,name=match" json:"match,omitempty"`
+       Rewrite PnatRewriteTuple `binapi:"pnat_rewrite_tuple,name=rewrite" json:"rewrite,omitempty"`
+}
+
+func (m *PnatBindingsDetails) Reset()               { *m = PnatBindingsDetails{} }
+func (*PnatBindingsDetails) GetMessageName() string { return "pnat_bindings_details" }
+func (*PnatBindingsDetails) GetCrcString() string   { return "78267a35" }
+func (*PnatBindingsDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *PnatBindingsDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 4 // m.Match.Src
+       size += 1 * 4 // m.Match.Dst
+       size += 1     // m.Match.Proto
+       size += 2     // m.Match.Sport
+       size += 2     // m.Match.Dport
+       size += 4     // m.Match.Mask
+       size += 1 * 4 // m.Rewrite.Src
+       size += 1 * 4 // m.Rewrite.Dst
+       size += 2     // m.Rewrite.Sport
+       size += 2     // m.Rewrite.Dport
+       size += 4     // m.Rewrite.Mask
+       size += 1     // m.Rewrite.FromOffset
+       size += 1     // m.Rewrite.ToOffset
+       size += 1     // m.Rewrite.ClearOffset
+       return size
+}
+func (m *PnatBindingsDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.Match.Src[:], 4)
+       buf.EncodeBytes(m.Match.Dst[:], 4)
+       buf.EncodeUint8(uint8(m.Match.Proto))
+       buf.EncodeUint16(m.Match.Sport)
+       buf.EncodeUint16(m.Match.Dport)
+       buf.EncodeUint32(uint32(m.Match.Mask))
+       buf.EncodeBytes(m.Rewrite.Src[:], 4)
+       buf.EncodeBytes(m.Rewrite.Dst[:], 4)
+       buf.EncodeUint16(m.Rewrite.Sport)
+       buf.EncodeUint16(m.Rewrite.Dport)
+       buf.EncodeUint32(uint32(m.Rewrite.Mask))
+       buf.EncodeUint8(m.Rewrite.FromOffset)
+       buf.EncodeUint8(m.Rewrite.ToOffset)
+       buf.EncodeUint8(m.Rewrite.ClearOffset)
+       return buf.Bytes(), nil
+}
+func (m *PnatBindingsDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.Match.Src[:], buf.DecodeBytes(4))
+       copy(m.Match.Dst[:], buf.DecodeBytes(4))
+       m.Match.Proto = ip_types.IPProto(buf.DecodeUint8())
+       m.Match.Sport = buf.DecodeUint16()
+       m.Match.Dport = buf.DecodeUint16()
+       m.Match.Mask = PnatMask(buf.DecodeUint32())
+       copy(m.Rewrite.Src[:], buf.DecodeBytes(4))
+       copy(m.Rewrite.Dst[:], buf.DecodeBytes(4))
+       m.Rewrite.Sport = buf.DecodeUint16()
+       m.Rewrite.Dport = buf.DecodeUint16()
+       m.Rewrite.Mask = PnatMask(buf.DecodeUint32())
+       m.Rewrite.FromOffset = buf.DecodeUint8()
+       m.Rewrite.ToOffset = buf.DecodeUint8()
+       m.Rewrite.ClearOffset = buf.DecodeUint8()
+       return nil
+}
+
+// PnatBindingsGet defines message 'pnat_bindings_get'.
+// InProgress: the message form may change in the future versions
+type PnatBindingsGet struct {
+       Cursor uint32 `binapi:"u32,name=cursor" json:"cursor,omitempty"`
+}
+
+func (m *PnatBindingsGet) Reset()               { *m = PnatBindingsGet{} }
+func (*PnatBindingsGet) GetMessageName() string { return "pnat_bindings_get" }
+func (*PnatBindingsGet) GetCrcString() string   { return "f75ba505" }
+func (*PnatBindingsGet) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *PnatBindingsGet) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Cursor
+       return size
+}
+func (m *PnatBindingsGet) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.Cursor)
+       return buf.Bytes(), nil
+}
+func (m *PnatBindingsGet) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Cursor = buf.DecodeUint32()
+       return nil
+}
+
+// PnatBindingsGetReply defines message 'pnat_bindings_get_reply'.
+// InProgress: the message form may change in the future versions
+type PnatBindingsGetReply struct {
+       Retval int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       Cursor uint32 `binapi:"u32,name=cursor" json:"cursor,omitempty"`
+}
+
+func (m *PnatBindingsGetReply) Reset()               { *m = PnatBindingsGetReply{} }
+func (*PnatBindingsGetReply) GetMessageName() string { return "pnat_bindings_get_reply" }
+func (*PnatBindingsGetReply) GetCrcString() string   { return "53b48f5d" }
+func (*PnatBindingsGetReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *PnatBindingsGetReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.Cursor
+       return size
+}
+func (m *PnatBindingsGetReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.Cursor)
+       return buf.Bytes(), nil
+}
+func (m *PnatBindingsGetReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.Cursor = buf.DecodeUint32()
+       return nil
+}
+
+// PnatInterfacesDetails defines message 'pnat_interfaces_details'.
+// InProgress: the message form may change in the future versions
+type PnatInterfacesDetails struct {
+       SwIfIndex  interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       Enabled    []bool                         `binapi:"bool[2],name=enabled" json:"enabled,omitempty"`
+       LookupMask [2]PnatMask                    `binapi:"pnat_mask[2],name=lookup_mask" json:"lookup_mask,omitempty"`
+}
+
+func (m *PnatInterfacesDetails) Reset()               { *m = PnatInterfacesDetails{} }
+func (*PnatInterfacesDetails) GetMessageName() string { return "pnat_interfaces_details" }
+func (*PnatInterfacesDetails) GetCrcString() string   { return "c7b0c4c0" }
+func (*PnatInterfacesDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *PnatInterfacesDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4     // m.SwIfIndex
+       size += 1 * 2 // m.Enabled
+       for j1 := 0; j1 < 2; j1++ {
+               size += 4 // m.LookupMask[j1]
+       }
+       return size
+}
+func (m *PnatInterfacesDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       for i := 0; i < 2; i++ {
+               var x bool
+               if i < len(m.Enabled) {
+                       x = bool(m.Enabled[i])
+               }
+               buf.EncodeBool(x)
+       }
+       for j0 := 0; j0 < 2; j0++ {
+               buf.EncodeUint32(uint32(m.LookupMask[j0]))
+       }
+       return buf.Bytes(), nil
+}
+func (m *PnatInterfacesDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Enabled = make([]bool, 2)
+       for i := 0; i < len(m.Enabled); i++ {
+               m.Enabled[i] = buf.DecodeBool()
+       }
+       for j0 := 0; j0 < 2; j0++ {
+               m.LookupMask[j0] = PnatMask(buf.DecodeUint32())
+       }
+       return nil
+}
+
+// PnatInterfacesGet defines message 'pnat_interfaces_get'.
+// InProgress: the message form may change in the future versions
+type PnatInterfacesGet struct {
+       Cursor uint32 `binapi:"u32,name=cursor" json:"cursor,omitempty"`
+}
+
+func (m *PnatInterfacesGet) Reset()               { *m = PnatInterfacesGet{} }
+func (*PnatInterfacesGet) GetMessageName() string { return "pnat_interfaces_get" }
+func (*PnatInterfacesGet) GetCrcString() string   { return "f75ba505" }
+func (*PnatInterfacesGet) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *PnatInterfacesGet) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Cursor
+       return size
+}
+func (m *PnatInterfacesGet) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.Cursor)
+       return buf.Bytes(), nil
+}
+func (m *PnatInterfacesGet) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Cursor = buf.DecodeUint32()
+       return nil
+}
+
+// PnatInterfacesGetReply defines message 'pnat_interfaces_get_reply'.
+// InProgress: the message form may change in the future versions
+type PnatInterfacesGetReply struct {
+       Retval int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       Cursor uint32 `binapi:"u32,name=cursor" json:"cursor,omitempty"`
+}
+
+func (m *PnatInterfacesGetReply) Reset()               { *m = PnatInterfacesGetReply{} }
+func (*PnatInterfacesGetReply) GetMessageName() string { return "pnat_interfaces_get_reply" }
+func (*PnatInterfacesGetReply) GetCrcString() string   { return "53b48f5d" }
+func (*PnatInterfacesGetReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *PnatInterfacesGetReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.Cursor
+       return size
+}
+func (m *PnatInterfacesGetReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.Cursor)
+       return buf.Bytes(), nil
+}
+func (m *PnatInterfacesGetReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.Cursor = buf.DecodeUint32()
+       return nil
+}
+
+func init() { file_pnat_binapi_init() }
+func file_pnat_binapi_init() {
+       api.RegisterMessage((*PnatBindingAdd)(nil), "pnat_binding_add_f00f79aa")
+       api.RegisterMessage((*PnatBindingAddReply)(nil), "pnat_binding_add_reply_4cd980a7")
+       api.RegisterMessage((*PnatBindingAttach)(nil), "pnat_binding_attach_6e074232")
+       api.RegisterMessage((*PnatBindingAttachReply)(nil), "pnat_binding_attach_reply_e8d4e804")
+       api.RegisterMessage((*PnatBindingDel)(nil), "pnat_binding_del_9259df7b")
+       api.RegisterMessage((*PnatBindingDelReply)(nil), "pnat_binding_del_reply_e8d4e804")
+       api.RegisterMessage((*PnatBindingDetach)(nil), "pnat_binding_detach_6e074232")
+       api.RegisterMessage((*PnatBindingDetachReply)(nil), "pnat_binding_detach_reply_e8d4e804")
+       api.RegisterMessage((*PnatBindingsDetails)(nil), "pnat_bindings_details_78267a35")
+       api.RegisterMessage((*PnatBindingsGet)(nil), "pnat_bindings_get_f75ba505")
+       api.RegisterMessage((*PnatBindingsGetReply)(nil), "pnat_bindings_get_reply_53b48f5d")
+       api.RegisterMessage((*PnatInterfacesDetails)(nil), "pnat_interfaces_details_c7b0c4c0")
+       api.RegisterMessage((*PnatInterfacesGet)(nil), "pnat_interfaces_get_f75ba505")
+       api.RegisterMessage((*PnatInterfacesGetReply)(nil), "pnat_interfaces_get_reply_53b48f5d")
+}
+
+// Messages returns list of all messages in this module.
+func AllMessages() []api.Message {
+       return []api.Message{
+               (*PnatBindingAdd)(nil),
+               (*PnatBindingAddReply)(nil),
+               (*PnatBindingAttach)(nil),
+               (*PnatBindingAttachReply)(nil),
+               (*PnatBindingDel)(nil),
+               (*PnatBindingDelReply)(nil),
+               (*PnatBindingDetach)(nil),
+               (*PnatBindingDetachReply)(nil),
+               (*PnatBindingsDetails)(nil),
+               (*PnatBindingsGet)(nil),
+               (*PnatBindingsGetReply)(nil),
+               (*PnatInterfacesDetails)(nil),
+               (*PnatInterfacesGet)(nil),
+               (*PnatInterfacesGetReply)(nil),
+       }
+}
diff --git a/binapi/pnat/pnat_rpc.ba.go b/binapi/pnat/pnat_rpc.ba.go
new file mode 100644 (file)
index 0000000..036861a
--- /dev/null
@@ -0,0 +1,137 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+
+package pnat
+
+import (
+       "context"
+       "fmt"
+       "io"
+
+       api "git.fd.io/govpp.git/api"
+)
+
+// RPCService defines RPC service pnat.
+type RPCService interface {
+       PnatBindingAdd(ctx context.Context, in *PnatBindingAdd) (*PnatBindingAddReply, error)
+       PnatBindingAttach(ctx context.Context, in *PnatBindingAttach) (*PnatBindingAttachReply, error)
+       PnatBindingDel(ctx context.Context, in *PnatBindingDel) (*PnatBindingDelReply, error)
+       PnatBindingDetach(ctx context.Context, in *PnatBindingDetach) (*PnatBindingDetachReply, error)
+       PnatBindingsGet(ctx context.Context, in *PnatBindingsGet) (RPCService_PnatBindingsGetClient, error)
+       PnatInterfacesGet(ctx context.Context, in *PnatInterfacesGet) (RPCService_PnatInterfacesGetClient, error)
+}
+
+type serviceClient struct {
+       conn api.Connection
+}
+
+func NewServiceClient(conn api.Connection) RPCService {
+       return &serviceClient{conn}
+}
+
+func (c *serviceClient) PnatBindingAdd(ctx context.Context, in *PnatBindingAdd) (*PnatBindingAddReply, error) {
+       out := new(PnatBindingAddReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) PnatBindingAttach(ctx context.Context, in *PnatBindingAttach) (*PnatBindingAttachReply, error) {
+       out := new(PnatBindingAttachReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) PnatBindingDel(ctx context.Context, in *PnatBindingDel) (*PnatBindingDelReply, error) {
+       out := new(PnatBindingDelReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) PnatBindingDetach(ctx context.Context, in *PnatBindingDetach) (*PnatBindingDetachReply, error) {
+       out := new(PnatBindingDetachReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) PnatBindingsGet(ctx context.Context, in *PnatBindingsGet) (RPCService_PnatBindingsGetClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_PnatBindingsGetClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_PnatBindingsGetClient interface {
+       Recv() (*PnatBindingsDetails, error)
+       api.Stream
+}
+
+type serviceClient_PnatBindingsGetClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_PnatBindingsGetClient) Recv() (*PnatBindingsDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *PnatBindingsDetails:
+               return m, nil
+       case *PnatBindingsGetReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) PnatInterfacesGet(ctx context.Context, in *PnatInterfacesGet) (RPCService_PnatInterfacesGetClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_PnatInterfacesGetClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_PnatInterfacesGetClient interface {
+       Recv() (*PnatInterfacesDetails, error)
+       api.Stream
+}
+
+type serviceClient_PnatInterfacesGetClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_PnatInterfacesGetClient) Recv() (*PnatInterfacesDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *PnatInterfacesDetails:
+               return m, nil
+       case *PnatInterfacesGetReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
index 525abb8..afab15b 100644 (file)
@@ -1,18 +1,19 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/policer.api.json
 
 // Package policer contains generated bindings for API file policer.api.
 //
 // Contents:
-//   4 messages
+//   8 messages
 //
 package policer
 
 import (
        api "git.fd.io/govpp.git/api"
+       interface_types "git.fd.io/govpp.git/binapi/interface_types"
        policer_types "git.fd.io/govpp.git/binapi/policer_types"
        codec "git.fd.io/govpp.git/codec"
 )
@@ -26,7 +27,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "policer"
        APIVersion = "2.0.0"
-       VersionCrc = 0xd9188811
+       VersionCrc = 0xf14848c
 )
 
 // PolicerAddDel defines message 'policer_add_del'.
@@ -48,7 +49,7 @@ type PolicerAddDel struct {
 
 func (m *PolicerAddDel) Reset()               { *m = PolicerAddDel{} }
 func (*PolicerAddDel) GetMessageName() string { return "policer_add_del" }
-func (*PolicerAddDel) GetCrcString() string   { return "cb948f6e" }
+func (*PolicerAddDel) GetCrcString() string   { return "2b31dd38" }
 func (*PolicerAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -156,6 +157,80 @@ func (m *PolicerAddDelReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// PolicerBind defines message 'policer_bind'.
+type PolicerBind struct {
+       Name        string `binapi:"string[64],name=name" json:"name,omitempty"`
+       WorkerIndex uint32 `binapi:"u32,name=worker_index" json:"worker_index,omitempty"`
+       BindEnable  bool   `binapi:"bool,name=bind_enable" json:"bind_enable,omitempty"`
+}
+
+func (m *PolicerBind) Reset()               { *m = PolicerBind{} }
+func (*PolicerBind) GetMessageName() string { return "policer_bind" }
+func (*PolicerBind) GetCrcString() string   { return "dcf516f9" }
+func (*PolicerBind) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *PolicerBind) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 64 // m.Name
+       size += 4  // m.WorkerIndex
+       size += 1  // m.BindEnable
+       return size
+}
+func (m *PolicerBind) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeString(m.Name, 64)
+       buf.EncodeUint32(m.WorkerIndex)
+       buf.EncodeBool(m.BindEnable)
+       return buf.Bytes(), nil
+}
+func (m *PolicerBind) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Name = buf.DecodeString(64)
+       m.WorkerIndex = buf.DecodeUint32()
+       m.BindEnable = buf.DecodeBool()
+       return nil
+}
+
+// PolicerBindReply defines message 'policer_bind_reply'.
+type PolicerBindReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *PolicerBindReply) Reset()               { *m = PolicerBindReply{} }
+func (*PolicerBindReply) GetMessageName() string { return "policer_bind_reply" }
+func (*PolicerBindReply) GetCrcString() string   { return "e8d4e804" }
+func (*PolicerBindReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *PolicerBindReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *PolicerBindReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *PolicerBindReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
 // PolicerDetails defines message 'policer_details'.
 type PolicerDetails struct {
        Name               string                           `binapi:"string[64],name=name" json:"name,omitempty"`
@@ -183,7 +258,7 @@ type PolicerDetails struct {
 
 func (m *PolicerDetails) Reset()               { *m = PolicerDetails{} }
 func (*PolicerDetails) GetMessageName() string { return "policer_details" }
-func (*PolicerDetails) GetCrcString() string   { return "a43f781a" }
+func (*PolicerDetails) GetCrcString() string   { return "72d0e248" }
 func (*PolicerDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -315,12 +390,90 @@ func (m *PolicerDump) Unmarshal(b []byte) error {
        return nil
 }
 
+// PolicerInput defines message 'policer_input'.
+type PolicerInput struct {
+       Name      string                         `binapi:"string[64],name=name" json:"name,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       Apply     bool                           `binapi:"bool,name=apply" json:"apply,omitempty"`
+}
+
+func (m *PolicerInput) Reset()               { *m = PolicerInput{} }
+func (*PolicerInput) GetMessageName() string { return "policer_input" }
+func (*PolicerInput) GetCrcString() string   { return "233f0ef5" }
+func (*PolicerInput) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *PolicerInput) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 64 // m.Name
+       size += 4  // m.SwIfIndex
+       size += 1  // m.Apply
+       return size
+}
+func (m *PolicerInput) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeString(m.Name, 64)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeBool(m.Apply)
+       return buf.Bytes(), nil
+}
+func (m *PolicerInput) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Name = buf.DecodeString(64)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Apply = buf.DecodeBool()
+       return nil
+}
+
+// PolicerInputReply defines message 'policer_input_reply'.
+type PolicerInputReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *PolicerInputReply) Reset()               { *m = PolicerInputReply{} }
+func (*PolicerInputReply) GetMessageName() string { return "policer_input_reply" }
+func (*PolicerInputReply) GetCrcString() string   { return "e8d4e804" }
+func (*PolicerInputReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *PolicerInputReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *PolicerInputReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *PolicerInputReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
 func init() { file_policer_binapi_init() }
 func file_policer_binapi_init() {
-       api.RegisterMessage((*PolicerAddDel)(nil), "policer_add_del_cb948f6e")
+       api.RegisterMessage((*PolicerAddDel)(nil), "policer_add_del_2b31dd38")
        api.RegisterMessage((*PolicerAddDelReply)(nil), "policer_add_del_reply_a177cef2")
-       api.RegisterMessage((*PolicerDetails)(nil), "policer_details_a43f781a")
+       api.RegisterMessage((*PolicerBind)(nil), "policer_bind_dcf516f9")
+       api.RegisterMessage((*PolicerBindReply)(nil), "policer_bind_reply_e8d4e804")
+       api.RegisterMessage((*PolicerDetails)(nil), "policer_details_72d0e248")
        api.RegisterMessage((*PolicerDump)(nil), "policer_dump_35f1ae0f")
+       api.RegisterMessage((*PolicerInput)(nil), "policer_input_233f0ef5")
+       api.RegisterMessage((*PolicerInputReply)(nil), "policer_input_reply_e8d4e804")
 }
 
 // Messages returns list of all messages in this module.
@@ -328,7 +481,11 @@ func AllMessages() []api.Message {
        return []api.Message{
                (*PolicerAddDel)(nil),
                (*PolicerAddDelReply)(nil),
+               (*PolicerBind)(nil),
+               (*PolicerBindReply)(nil),
                (*PolicerDetails)(nil),
                (*PolicerDump)(nil),
+               (*PolicerInput)(nil),
+               (*PolicerInputReply)(nil),
        }
 }
index 85c55ca..7ae3a0e 100644 (file)
@@ -14,7 +14,9 @@ import (
 // RPCService defines RPC service policer.
 type RPCService interface {
        PolicerAddDel(ctx context.Context, in *PolicerAddDel) (*PolicerAddDelReply, error)
+       PolicerBind(ctx context.Context, in *PolicerBind) (*PolicerBindReply, error)
        PolicerDump(ctx context.Context, in *PolicerDump) (RPCService_PolicerDumpClient, error)
+       PolicerInput(ctx context.Context, in *PolicerInput) (*PolicerInputReply, error)
 }
 
 type serviceClient struct {
@@ -34,6 +36,15 @@ func (c *serviceClient) PolicerAddDel(ctx context.Context, in *PolicerAddDel) (*
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) PolicerBind(ctx context.Context, in *PolicerBind) (*PolicerBindReply, error) {
+       out := new(PolicerBindReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) PolicerDump(ctx context.Context, in *PolicerDump) (RPCService_PolicerDumpClient, error) {
        stream, err := c.conn.NewStream(ctx)
        if err != nil {
@@ -72,3 +83,12 @@ func (c *serviceClient_PolicerDumpClient) Recv() (*PolicerDetails, error) {
                return nil, fmt.Errorf("unexpected message: %T %v", m, m)
        }
 }
+
+func (c *serviceClient) PolicerInput(ctx context.Context, in *PolicerInput) (*PolicerInputReply, error) {
+       out := new(PolicerInputReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
index 24cc191..48e33d8 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/policer_types.api.json
 
 // Package policer_types contains generated bindings for API file policer_types.api.
index 5edf20f..fe937ba 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/pot.api.json
 
 // Package pot contains generated bindings for API file pot.api.
index 277ee86..7b19cae 100644 (file)
@@ -1,13 +1,13 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/pppoe.api.json
 
 // Package pppoe contains generated bindings for API file pppoe.api.
 //
 // Contents:
-//   4 messages
+//   6 messages
 //
 package pppoe
 
@@ -28,9 +28,79 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "pppoe"
        APIVersion = "2.0.0"
-       VersionCrc = 0x24ebf557
+       VersionCrc = 0xec9e86bf
 )
 
+// PppoeAddDelCp defines message 'pppoe_add_del_cp'.
+type PppoeAddDelCp struct {
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       IsAdd     uint8                          `binapi:"u8,name=is_add" json:"is_add,omitempty"`
+}
+
+func (m *PppoeAddDelCp) Reset()               { *m = PppoeAddDelCp{} }
+func (*PppoeAddDelCp) GetMessageName() string { return "pppoe_add_del_cp" }
+func (*PppoeAddDelCp) GetCrcString() string   { return "eacd9aaa" }
+func (*PppoeAddDelCp) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *PppoeAddDelCp) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       size += 1 // m.IsAdd
+       return size
+}
+func (m *PppoeAddDelCp) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint8(m.IsAdd)
+       return buf.Bytes(), nil
+}
+func (m *PppoeAddDelCp) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.IsAdd = buf.DecodeUint8()
+       return nil
+}
+
+// PppoeAddDelCpReply defines message 'pppoe_add_del_cp_reply'.
+type PppoeAddDelCpReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *PppoeAddDelCpReply) Reset()               { *m = PppoeAddDelCpReply{} }
+func (*PppoeAddDelCpReply) GetMessageName() string { return "pppoe_add_del_cp_reply" }
+func (*PppoeAddDelCpReply) GetCrcString() string   { return "e8d4e804" }
+func (*PppoeAddDelCpReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *PppoeAddDelCpReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *PppoeAddDelCpReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *PppoeAddDelCpReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
 // PppoeAddDelSession defines message 'pppoe_add_del_session'.
 type PppoeAddDelSession struct {
        IsAdd      bool                      `binapi:"bool,name=is_add" json:"is_add,omitempty"`
@@ -42,7 +112,7 @@ type PppoeAddDelSession struct {
 
 func (m *PppoeAddDelSession) Reset()               { *m = PppoeAddDelSession{} }
 func (*PppoeAddDelSession) GetMessageName() string { return "pppoe_add_del_session" }
-func (*PppoeAddDelSession) GetCrcString() string   { return "46ace853" }
+func (*PppoeAddDelSession) GetCrcString() string   { return "f6fd759e" }
 func (*PppoeAddDelSession) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -133,7 +203,7 @@ type PppoeSessionDetails struct {
 
 func (m *PppoeSessionDetails) Reset()               { *m = PppoeSessionDetails{} }
 func (*PppoeSessionDetails) GetMessageName() string { return "pppoe_session_details" }
-func (*PppoeSessionDetails) GetCrcString() string   { return "332bc742" }
+func (*PppoeSessionDetails) GetCrcString() string   { return "4b8e8a4a" }
 func (*PppoeSessionDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -215,15 +285,19 @@ func (m *PppoeSessionDump) Unmarshal(b []byte) error {
 
 func init() { file_pppoe_binapi_init() }
 func file_pppoe_binapi_init() {
-       api.RegisterMessage((*PppoeAddDelSession)(nil), "pppoe_add_del_session_46ace853")
+       api.RegisterMessage((*PppoeAddDelCp)(nil), "pppoe_add_del_cp_eacd9aaa")
+       api.RegisterMessage((*PppoeAddDelCpReply)(nil), "pppoe_add_del_cp_reply_e8d4e804")
+       api.RegisterMessage((*PppoeAddDelSession)(nil), "pppoe_add_del_session_f6fd759e")
        api.RegisterMessage((*PppoeAddDelSessionReply)(nil), "pppoe_add_del_session_reply_5383d31f")
-       api.RegisterMessage((*PppoeSessionDetails)(nil), "pppoe_session_details_332bc742")
+       api.RegisterMessage((*PppoeSessionDetails)(nil), "pppoe_session_details_4b8e8a4a")
        api.RegisterMessage((*PppoeSessionDump)(nil), "pppoe_session_dump_f9e6675e")
 }
 
 // Messages returns list of all messages in this module.
 func AllMessages() []api.Message {
        return []api.Message{
+               (*PppoeAddDelCp)(nil),
+               (*PppoeAddDelCpReply)(nil),
                (*PppoeAddDelSession)(nil),
                (*PppoeAddDelSessionReply)(nil),
                (*PppoeSessionDetails)(nil),
index 075803f..778e7a7 100644 (file)
@@ -13,6 +13,7 @@ import (
 
 // RPCService defines RPC service pppoe.
 type RPCService interface {
+       PppoeAddDelCp(ctx context.Context, in *PppoeAddDelCp) (*PppoeAddDelCpReply, error)
        PppoeAddDelSession(ctx context.Context, in *PppoeAddDelSession) (*PppoeAddDelSessionReply, error)
        PppoeSessionDump(ctx context.Context, in *PppoeSessionDump) (RPCService_PppoeSessionDumpClient, error)
 }
@@ -25,6 +26,15 @@ func NewServiceClient(conn api.Connection) RPCService {
        return &serviceClient{conn}
 }
 
+func (c *serviceClient) PppoeAddDelCp(ctx context.Context, in *PppoeAddDelCp) (*PppoeAddDelCpReply, error) {
+       out := new(PppoeAddDelCpReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) PppoeAddDelSession(ctx context.Context, in *PppoeAddDelSession) (*PppoeAddDelSessionReply, error) {
        out := new(PppoeAddDelSessionReply)
        err := c.conn.Invoke(ctx, in, out)
index 158672a..cee4393 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/punt.api.json
 
 // Package punt contains generated bindings for API file punt.api.
@@ -31,7 +31,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "punt"
        APIVersion = "2.2.1"
-       VersionCrc = 0x31354154
+       VersionCrc = 0xee63b6c7
 )
 
 // PuntType defines enum 'punt_type'.
@@ -230,7 +230,7 @@ type PuntSocketDeregister struct {
 
 func (m *PuntSocketDeregister) Reset()               { *m = PuntSocketDeregister{} }
 func (*PuntSocketDeregister) GetMessageName() string { return "punt_socket_deregister" }
-func (*PuntSocketDeregister) GetCrcString() string   { return "98a444f4" }
+func (*PuntSocketDeregister) GetCrcString() string   { return "98fc9102" }
 func (*PuntSocketDeregister) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -300,7 +300,7 @@ type PuntSocketDetails struct {
 
 func (m *PuntSocketDetails) Reset()               { *m = PuntSocketDetails{} }
 func (*PuntSocketDetails) GetMessageName() string { return "punt_socket_details" }
-func (*PuntSocketDetails) GetCrcString() string   { return "1de0ce75" }
+func (*PuntSocketDetails) GetCrcString() string   { return "de575080" }
 func (*PuntSocketDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -374,7 +374,7 @@ type PuntSocketRegister struct {
 
 func (m *PuntSocketRegister) Reset()               { *m = PuntSocketRegister{} }
 func (*PuntSocketRegister) GetMessageName() string { return "punt_socket_register" }
-func (*PuntSocketRegister) GetCrcString() string   { return "c8cd10fa" }
+func (*PuntSocketRegister) GetCrcString() string   { return "95268cbf" }
 func (*PuntSocketRegister) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -454,7 +454,7 @@ type SetPunt struct {
 
 func (m *SetPunt) Reset()               { *m = SetPunt{} }
 func (*SetPunt) GetMessageName() string { return "set_punt" }
-func (*SetPunt) GetCrcString() string   { return "83799618" }
+func (*SetPunt) GetCrcString() string   { return "aa83d523" }
 func (*SetPunt) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -523,13 +523,13 @@ func init() { file_punt_binapi_init() }
 func file_punt_binapi_init() {
        api.RegisterMessage((*PuntReasonDetails)(nil), "punt_reason_details_2c9d4a40")
        api.RegisterMessage((*PuntReasonDump)(nil), "punt_reason_dump_5c0dd4fe")
-       api.RegisterMessage((*PuntSocketDeregister)(nil), "punt_socket_deregister_98a444f4")
+       api.RegisterMessage((*PuntSocketDeregister)(nil), "punt_socket_deregister_98fc9102")
        api.RegisterMessage((*PuntSocketDeregisterReply)(nil), "punt_socket_deregister_reply_e8d4e804")
-       api.RegisterMessage((*PuntSocketDetails)(nil), "punt_socket_details_1de0ce75")
+       api.RegisterMessage((*PuntSocketDetails)(nil), "punt_socket_details_de575080")
        api.RegisterMessage((*PuntSocketDump)(nil), "punt_socket_dump_52974935")
-       api.RegisterMessage((*PuntSocketRegister)(nil), "punt_socket_register_c8cd10fa")
+       api.RegisterMessage((*PuntSocketRegister)(nil), "punt_socket_register_95268cbf")
        api.RegisterMessage((*PuntSocketRegisterReply)(nil), "punt_socket_register_reply_bd30ae90")
-       api.RegisterMessage((*SetPunt)(nil), "set_punt_83799618")
+       api.RegisterMessage((*SetPunt)(nil), "set_punt_aa83d523")
        api.RegisterMessage((*SetPuntReply)(nil), "set_punt_reply_e8d4e804")
 }
 
index 27aaf6b..f5fbe43 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/qos.api.json
 
 // Package qos contains generated bindings for API file qos.api.
@@ -31,7 +31,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "qos"
        APIVersion = "1.1.1"
-       VersionCrc = 0x1749d12c
+       VersionCrc = 0x7b7b5955
 )
 
 // QosSource defines enum 'qos_source'.
@@ -498,7 +498,7 @@ type QosRecordDetails struct {
 
 func (m *QosRecordDetails) Reset()               { *m = QosRecordDetails{} }
 func (*QosRecordDetails) GetMessageName() string { return "qos_record_details" }
-func (*QosRecordDetails) GetCrcString() string   { return "4956ccdd" }
+func (*QosRecordDetails) GetCrcString() string   { return "a425d4d3" }
 func (*QosRecordDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -562,7 +562,7 @@ type QosRecordEnableDisable struct {
 
 func (m *QosRecordEnableDisable) Reset()               { *m = QosRecordEnableDisable{} }
 func (*QosRecordEnableDisable) GetMessageName() string { return "qos_record_enable_disable" }
-func (*QosRecordEnableDisable) GetCrcString() string   { return "25b33f88" }
+func (*QosRecordEnableDisable) GetCrcString() string   { return "2f1a4a38" }
 func (*QosRecordEnableDisable) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -634,7 +634,7 @@ type QosStoreDetails struct {
 
 func (m *QosStoreDetails) Reset()               { *m = QosStoreDetails{} }
 func (*QosStoreDetails) GetMessageName() string { return "qos_store_details" }
-func (*QosStoreDetails) GetCrcString() string   { return "038a6d48" }
+func (*QosStoreDetails) GetCrcString() string   { return "3ee0aad7" }
 func (*QosStoreDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -701,7 +701,7 @@ type QosStoreEnableDisable struct {
 
 func (m *QosStoreEnableDisable) Reset()               { *m = QosStoreEnableDisable{} }
 func (*QosStoreEnableDisable) GetMessageName() string { return "qos_store_enable_disable" }
-func (*QosStoreEnableDisable) GetCrcString() string   { return "3507235e" }
+func (*QosStoreEnableDisable) GetCrcString() string   { return "f3abcc8b" }
 func (*QosStoreEnableDisable) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -782,13 +782,13 @@ func file_qos_binapi_init() {
        api.RegisterMessage((*QosMarkDump)(nil), "qos_mark_dump_f9e6675e")
        api.RegisterMessage((*QosMarkEnableDisable)(nil), "qos_mark_enable_disable_1a010f74")
        api.RegisterMessage((*QosMarkEnableDisableReply)(nil), "qos_mark_enable_disable_reply_e8d4e804")
-       api.RegisterMessage((*QosRecordDetails)(nil), "qos_record_details_4956ccdd")
+       api.RegisterMessage((*QosRecordDetails)(nil), "qos_record_details_a425d4d3")
        api.RegisterMessage((*QosRecordDump)(nil), "qos_record_dump_51077d14")
-       api.RegisterMessage((*QosRecordEnableDisable)(nil), "qos_record_enable_disable_25b33f88")
+       api.RegisterMessage((*QosRecordEnableDisable)(nil), "qos_record_enable_disable_2f1a4a38")
        api.RegisterMessage((*QosRecordEnableDisableReply)(nil), "qos_record_enable_disable_reply_e8d4e804")
-       api.RegisterMessage((*QosStoreDetails)(nil), "qos_store_details_038a6d48")
+       api.RegisterMessage((*QosStoreDetails)(nil), "qos_store_details_3ee0aad7")
        api.RegisterMessage((*QosStoreDump)(nil), "qos_store_dump_51077d14")
-       api.RegisterMessage((*QosStoreEnableDisable)(nil), "qos_store_enable_disable_3507235e")
+       api.RegisterMessage((*QosStoreEnableDisable)(nil), "qos_store_enable_disable_f3abcc8b")
        api.RegisterMessage((*QosStoreEnableDisableReply)(nil), "qos_store_enable_disable_reply_e8d4e804")
 }
 
index 5db01b4..4484184 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/rd_cp.api.json
 
 // Package rd_cp contains generated bindings for API file rd_cp.api.
@@ -26,7 +26,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "rd_cp"
        APIVersion = "1.0.1"
-       VersionCrc = 0x2caa616
+       VersionCrc = 0x871c3bee
 )
 
 // IP6NdAddressAutoconfig defines message 'ip6_nd_address_autoconfig'.
index cb56007..c5d54f0 100644 (file)
@@ -1,14 +1,14 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/rdma.api.json
 
 // Package rdma contains generated bindings for API file rdma.api.
 //
 // Contents:
-//   1 enum
-//   4 messages
+//   3 enums
+//   8 messages
 //
 package rdma
 
@@ -28,8 +28,8 @@ const _ = api.GoVppAPIPackageIsVersion2
 
 const (
        APIFile    = "rdma"
-       APIVersion = "1.0.0"
-       VersionCrc = 0x8b33158c
+       APIVersion = "3.0.0"
+       VersionCrc = 0xdab70fa9
 )
 
 // RdmaMode defines enum 'rdma_mode'.
@@ -62,7 +62,74 @@ func (x RdmaMode) String() string {
        return "RdmaMode(" + strconv.Itoa(int(x)) + ")"
 }
 
+// RdmaRss4 defines enum 'rdma_rss4'.
+type RdmaRss4 uint32
+
+const (
+       RDMA_API_RSS4_AUTO   RdmaRss4 = 0
+       RDMA_API_RSS4_IP     RdmaRss4 = 1
+       RDMA_API_RSS4_IP_UDP RdmaRss4 = 2
+       RDMA_API_RSS4_IP_TCP RdmaRss4 = 3
+)
+
+var (
+       RdmaRss4_name = map[uint32]string{
+               0: "RDMA_API_RSS4_AUTO",
+               1: "RDMA_API_RSS4_IP",
+               2: "RDMA_API_RSS4_IP_UDP",
+               3: "RDMA_API_RSS4_IP_TCP",
+       }
+       RdmaRss4_value = map[string]uint32{
+               "RDMA_API_RSS4_AUTO":   0,
+               "RDMA_API_RSS4_IP":     1,
+               "RDMA_API_RSS4_IP_UDP": 2,
+               "RDMA_API_RSS4_IP_TCP": 3,
+       }
+)
+
+func (x RdmaRss4) String() string {
+       s, ok := RdmaRss4_name[uint32(x)]
+       if ok {
+               return s
+       }
+       return "RdmaRss4(" + strconv.Itoa(int(x)) + ")"
+}
+
+// RdmaRss6 defines enum 'rdma_rss6'.
+type RdmaRss6 uint32
+
+const (
+       RDMA_API_RSS6_AUTO   RdmaRss6 = 0
+       RDMA_API_RSS6_IP     RdmaRss6 = 1
+       RDMA_API_RSS6_IP_UDP RdmaRss6 = 2
+       RDMA_API_RSS6_IP_TCP RdmaRss6 = 3
+)
+
+var (
+       RdmaRss6_name = map[uint32]string{
+               0: "RDMA_API_RSS6_AUTO",
+               1: "RDMA_API_RSS6_IP",
+               2: "RDMA_API_RSS6_IP_UDP",
+               3: "RDMA_API_RSS6_IP_TCP",
+       }
+       RdmaRss6_value = map[string]uint32{
+               "RDMA_API_RSS6_AUTO":   0,
+               "RDMA_API_RSS6_IP":     1,
+               "RDMA_API_RSS6_IP_UDP": 2,
+               "RDMA_API_RSS6_IP_TCP": 3,
+       }
+)
+
+func (x RdmaRss6) String() string {
+       s, ok := RdmaRss6_name[uint32(x)]
+       if ok {
+               return s
+       }
+       return "RdmaRss6(" + strconv.Itoa(int(x)) + ")"
+}
+
 // RdmaCreate defines message 'rdma_create'.
+// Deprecated: 21.01
 type RdmaCreate struct {
        HostIf  string   `binapi:"string[64],name=host_if" json:"host_if,omitempty"`
        Name    string   `binapi:"string[64],name=name" json:"name,omitempty"`
@@ -152,6 +219,211 @@ func (m *RdmaCreateReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// RdmaCreateV2 defines message 'rdma_create_v2'.
+// Deprecated: the message will be removed in the future versions
+type RdmaCreateV2 struct {
+       HostIf     string   `binapi:"string[64],name=host_if" json:"host_if,omitempty"`
+       Name       string   `binapi:"string[64],name=name" json:"name,omitempty"`
+       RxqNum     uint16   `binapi:"u16,name=rxq_num,default=1" json:"rxq_num,omitempty"`
+       RxqSize    uint16   `binapi:"u16,name=rxq_size,default=1024" json:"rxq_size,omitempty"`
+       TxqSize    uint16   `binapi:"u16,name=txq_size,default=1024" json:"txq_size,omitempty"`
+       Mode       RdmaMode `binapi:"rdma_mode,name=mode,default=0" json:"mode,omitempty"`
+       NoMultiSeg bool     `binapi:"bool,name=no_multi_seg,default=0" json:"no_multi_seg,omitempty"`
+       MaxPktlen  uint16   `binapi:"u16,name=max_pktlen,default=0" json:"max_pktlen,omitempty"`
+}
+
+func (m *RdmaCreateV2) Reset()               { *m = RdmaCreateV2{} }
+func (*RdmaCreateV2) GetMessageName() string { return "rdma_create_v2" }
+func (*RdmaCreateV2) GetCrcString() string   { return "5826a4f3" }
+func (*RdmaCreateV2) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *RdmaCreateV2) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 64 // m.HostIf
+       size += 64 // m.Name
+       size += 2  // m.RxqNum
+       size += 2  // m.RxqSize
+       size += 2  // m.TxqSize
+       size += 4  // m.Mode
+       size += 1  // m.NoMultiSeg
+       size += 2  // m.MaxPktlen
+       return size
+}
+func (m *RdmaCreateV2) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeString(m.HostIf, 64)
+       buf.EncodeString(m.Name, 64)
+       buf.EncodeUint16(m.RxqNum)
+       buf.EncodeUint16(m.RxqSize)
+       buf.EncodeUint16(m.TxqSize)
+       buf.EncodeUint32(uint32(m.Mode))
+       buf.EncodeBool(m.NoMultiSeg)
+       buf.EncodeUint16(m.MaxPktlen)
+       return buf.Bytes(), nil
+}
+func (m *RdmaCreateV2) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.HostIf = buf.DecodeString(64)
+       m.Name = buf.DecodeString(64)
+       m.RxqNum = buf.DecodeUint16()
+       m.RxqSize = buf.DecodeUint16()
+       m.TxqSize = buf.DecodeUint16()
+       m.Mode = RdmaMode(buf.DecodeUint32())
+       m.NoMultiSeg = buf.DecodeBool()
+       m.MaxPktlen = buf.DecodeUint16()
+       return nil
+}
+
+// RdmaCreateV2Reply defines message 'rdma_create_v2_reply'.
+type RdmaCreateV2Reply struct {
+       Retval    int32                          `binapi:"i32,name=retval" json:"retval,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *RdmaCreateV2Reply) Reset()               { *m = RdmaCreateV2Reply{} }
+func (*RdmaCreateV2Reply) GetMessageName() string { return "rdma_create_v2_reply" }
+func (*RdmaCreateV2Reply) GetCrcString() string   { return "5383d31f" }
+func (*RdmaCreateV2Reply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *RdmaCreateV2Reply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *RdmaCreateV2Reply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *RdmaCreateV2Reply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// RdmaCreateV3 defines message 'rdma_create_v3'.
+type RdmaCreateV3 struct {
+       HostIf     string   `binapi:"string[64],name=host_if" json:"host_if,omitempty"`
+       Name       string   `binapi:"string[64],name=name" json:"name,omitempty"`
+       RxqNum     uint16   `binapi:"u16,name=rxq_num,default=1" json:"rxq_num,omitempty"`
+       RxqSize    uint16   `binapi:"u16,name=rxq_size,default=1024" json:"rxq_size,omitempty"`
+       TxqSize    uint16   `binapi:"u16,name=txq_size,default=1024" json:"txq_size,omitempty"`
+       Mode       RdmaMode `binapi:"rdma_mode,name=mode,default=0" json:"mode,omitempty"`
+       NoMultiSeg bool     `binapi:"bool,name=no_multi_seg,default=0" json:"no_multi_seg,omitempty"`
+       MaxPktlen  uint16   `binapi:"u16,name=max_pktlen,default=0" json:"max_pktlen,omitempty"`
+       Rss4       RdmaRss4 `binapi:"rdma_rss4,name=rss4,default=0" json:"rss4,omitempty"`
+       Rss6       RdmaRss6 `binapi:"rdma_rss6,name=rss6,default=0" json:"rss6,omitempty"`
+}
+
+func (m *RdmaCreateV3) Reset()               { *m = RdmaCreateV3{} }
+func (*RdmaCreateV3) GetMessageName() string { return "rdma_create_v3" }
+func (*RdmaCreateV3) GetCrcString() string   { return "c6287ea8" }
+func (*RdmaCreateV3) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *RdmaCreateV3) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 64 // m.HostIf
+       size += 64 // m.Name
+       size += 2  // m.RxqNum
+       size += 2  // m.RxqSize
+       size += 2  // m.TxqSize
+       size += 4  // m.Mode
+       size += 1  // m.NoMultiSeg
+       size += 2  // m.MaxPktlen
+       size += 4  // m.Rss4
+       size += 4  // m.Rss6
+       return size
+}
+func (m *RdmaCreateV3) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeString(m.HostIf, 64)
+       buf.EncodeString(m.Name, 64)
+       buf.EncodeUint16(m.RxqNum)
+       buf.EncodeUint16(m.RxqSize)
+       buf.EncodeUint16(m.TxqSize)
+       buf.EncodeUint32(uint32(m.Mode))
+       buf.EncodeBool(m.NoMultiSeg)
+       buf.EncodeUint16(m.MaxPktlen)
+       buf.EncodeUint32(uint32(m.Rss4))
+       buf.EncodeUint32(uint32(m.Rss6))
+       return buf.Bytes(), nil
+}
+func (m *RdmaCreateV3) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.HostIf = buf.DecodeString(64)
+       m.Name = buf.DecodeString(64)
+       m.RxqNum = buf.DecodeUint16()
+       m.RxqSize = buf.DecodeUint16()
+       m.TxqSize = buf.DecodeUint16()
+       m.Mode = RdmaMode(buf.DecodeUint32())
+       m.NoMultiSeg = buf.DecodeBool()
+       m.MaxPktlen = buf.DecodeUint16()
+       m.Rss4 = RdmaRss4(buf.DecodeUint32())
+       m.Rss6 = RdmaRss6(buf.DecodeUint32())
+       return nil
+}
+
+// RdmaCreateV3Reply defines message 'rdma_create_v3_reply'.
+type RdmaCreateV3Reply struct {
+       Retval    int32                          `binapi:"i32,name=retval" json:"retval,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *RdmaCreateV3Reply) Reset()               { *m = RdmaCreateV3Reply{} }
+func (*RdmaCreateV3Reply) GetMessageName() string { return "rdma_create_v3_reply" }
+func (*RdmaCreateV3Reply) GetCrcString() string   { return "5383d31f" }
+func (*RdmaCreateV3Reply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *RdmaCreateV3Reply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *RdmaCreateV3Reply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *RdmaCreateV3Reply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
 // RdmaDelete defines message 'rdma_delete'.
 type RdmaDelete struct {
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
@@ -222,6 +494,10 @@ func init() { file_rdma_binapi_init() }
 func file_rdma_binapi_init() {
        api.RegisterMessage((*RdmaCreate)(nil), "rdma_create_076fe418")
        api.RegisterMessage((*RdmaCreateReply)(nil), "rdma_create_reply_5383d31f")
+       api.RegisterMessage((*RdmaCreateV2)(nil), "rdma_create_v2_5826a4f3")
+       api.RegisterMessage((*RdmaCreateV2Reply)(nil), "rdma_create_v2_reply_5383d31f")
+       api.RegisterMessage((*RdmaCreateV3)(nil), "rdma_create_v3_c6287ea8")
+       api.RegisterMessage((*RdmaCreateV3Reply)(nil), "rdma_create_v3_reply_5383d31f")
        api.RegisterMessage((*RdmaDelete)(nil), "rdma_delete_f9e6675e")
        api.RegisterMessage((*RdmaDeleteReply)(nil), "rdma_delete_reply_e8d4e804")
 }
@@ -231,6 +507,10 @@ func AllMessages() []api.Message {
        return []api.Message{
                (*RdmaCreate)(nil),
                (*RdmaCreateReply)(nil),
+               (*RdmaCreateV2)(nil),
+               (*RdmaCreateV2Reply)(nil),
+               (*RdmaCreateV3)(nil),
+               (*RdmaCreateV3Reply)(nil),
                (*RdmaDelete)(nil),
                (*RdmaDeleteReply)(nil),
        }
index 489297d..883c906 100644 (file)
@@ -11,6 +11,8 @@ import (
 // RPCService defines RPC service rdma.
 type RPCService interface {
        RdmaCreate(ctx context.Context, in *RdmaCreate) (*RdmaCreateReply, error)
+       RdmaCreateV2(ctx context.Context, in *RdmaCreateV2) (*RdmaCreateV2Reply, error)
+       RdmaCreateV3(ctx context.Context, in *RdmaCreateV3) (*RdmaCreateV3Reply, error)
        RdmaDelete(ctx context.Context, in *RdmaDelete) (*RdmaDeleteReply, error)
 }
 
@@ -31,6 +33,24 @@ func (c *serviceClient) RdmaCreate(ctx context.Context, in *RdmaCreate) (*RdmaCr
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) RdmaCreateV2(ctx context.Context, in *RdmaCreateV2) (*RdmaCreateV2Reply, error) {
+       out := new(RdmaCreateV2Reply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) RdmaCreateV3(ctx context.Context, in *RdmaCreateV3) (*RdmaCreateV3Reply, error) {
+       out := new(RdmaCreateV3Reply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) RdmaDelete(ctx context.Context, in *RdmaDelete) (*RdmaDeleteReply, error) {
        out := new(RdmaDeleteReply)
        err := c.conn.Invoke(ctx, in, out)
index 6bb20b8..a53915c 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/session.api.json
 
 // Package session contains generated bindings for API file session.api.
@@ -29,8 +29,8 @@ const _ = api.GoVppAPIPackageIsVersion2
 
 const (
        APIFile    = "session"
-       APIVersion = "3.2.0"
-       VersionCrc = 0x9aa0ebc0
+       APIVersion = "4.0.0"
+       VersionCrc = 0x32fe1c77
 )
 
 // SessionRuleScope defines enum 'session_rule_scope'.
@@ -608,6 +608,7 @@ func (m *ApplicationDetachReply) Unmarshal(b []byte) error {
 }
 
 // ApplicationTLSCertAdd defines message 'application_tls_cert_add'.
+// Deprecated: to be removed post 21.06
 type ApplicationTLSCertAdd struct {
        AppIndex uint32 `binapi:"u32,name=app_index" json:"app_index,omitempty"`
        CertLen  uint16 `binapi:"u16,name=cert_len" json:"-"`
@@ -650,6 +651,7 @@ func (m *ApplicationTLSCertAdd) Unmarshal(b []byte) error {
 }
 
 // ApplicationTLSCertAddReply defines message 'application_tls_cert_add_reply'.
+// Deprecated: to be removed post 21.06
 type ApplicationTLSCertAddReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -683,6 +685,7 @@ func (m *ApplicationTLSCertAddReply) Unmarshal(b []byte) error {
 }
 
 // ApplicationTLSKeyAdd defines message 'application_tls_key_add'.
+// Deprecated: to be removed post 21.06
 type ApplicationTLSKeyAdd struct {
        AppIndex uint32 `binapi:"u32,name=app_index" json:"app_index,omitempty"`
        KeyLen   uint16 `binapi:"u16,name=key_len" json:"-"`
@@ -725,6 +728,7 @@ func (m *ApplicationTLSKeyAdd) Unmarshal(b []byte) error {
 }
 
 // ApplicationTLSKeyAddReply defines message 'application_tls_key_add_reply'.
+// Deprecated: to be removed post 21.06
 type ApplicationTLSKeyAddReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -839,7 +843,7 @@ type SessionRuleAddDel struct {
 
 func (m *SessionRuleAddDel) Reset()               { *m = SessionRuleAddDel{} }
 func (*SessionRuleAddDel) GetMessageName() string { return "session_rule_add_del" }
-func (*SessionRuleAddDel) GetCrcString() string   { return "e31f9443" }
+func (*SessionRuleAddDel) GetCrcString() string   { return "e4895422" }
 func (*SessionRuleAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -952,7 +956,7 @@ type SessionRulesDetails struct {
 
 func (m *SessionRulesDetails) Reset()               { *m = SessionRulesDetails{} }
 func (*SessionRulesDetails) GetMessageName() string { return "session_rules_details" }
-func (*SessionRulesDetails) GetCrcString() string   { return "304b91f0" }
+func (*SessionRulesDetails) GetCrcString() string   { return "28d71830" }
 func (*SessionRulesDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1061,9 +1065,9 @@ func file_session_binapi_init() {
        api.RegisterMessage((*ApplicationTLSKeyAddReply)(nil), "application_tls_key_add_reply_e8d4e804")
        api.RegisterMessage((*SessionEnableDisable)(nil), "session_enable_disable_c264d7bf")
        api.RegisterMessage((*SessionEnableDisableReply)(nil), "session_enable_disable_reply_e8d4e804")
-       api.RegisterMessage((*SessionRuleAddDel)(nil), "session_rule_add_del_e31f9443")
+       api.RegisterMessage((*SessionRuleAddDel)(nil), "session_rule_add_del_e4895422")
        api.RegisterMessage((*SessionRuleAddDelReply)(nil), "session_rule_add_del_reply_e8d4e804")
-       api.RegisterMessage((*SessionRulesDetails)(nil), "session_rules_details_304b91f0")
+       api.RegisterMessage((*SessionRulesDetails)(nil), "session_rules_details_28d71830")
        api.RegisterMessage((*SessionRulesDump)(nil), "session_rules_dump_51077d14")
 }
 
index 5cc7fe2..437ab7f 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/span.api.json
 
 // Package span contains generated bindings for API file span.api.
@@ -29,7 +29,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "span"
        APIVersion = "2.0.0"
-       VersionCrc = 0x9f4dec7c
+       VersionCrc = 0x34ee02b
 )
 
 // SpanState defines enum 'span_state'.
@@ -75,7 +75,7 @@ type SwInterfaceSpanDetails struct {
 
 func (m *SwInterfaceSpanDetails) Reset()               { *m = SwInterfaceSpanDetails{} }
 func (*SwInterfaceSpanDetails) GetMessageName() string { return "sw_interface_span_details" }
-func (*SwInterfaceSpanDetails) GetCrcString() string   { return "055643fc" }
+func (*SwInterfaceSpanDetails) GetCrcString() string   { return "8a20e79f" }
 func (*SwInterfaceSpanDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -155,7 +155,7 @@ func (m *SwInterfaceSpanEnableDisable) Reset() { *m = SwInterfaceSpanEnableDisab
 func (*SwInterfaceSpanEnableDisable) GetMessageName() string {
        return "sw_interface_span_enable_disable"
 }
-func (*SwInterfaceSpanEnableDisable) GetCrcString() string { return "acc8fea1" }
+func (*SwInterfaceSpanEnableDisable) GetCrcString() string { return "23ddd96b" }
 func (*SwInterfaceSpanEnableDisable) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -227,9 +227,9 @@ func (m *SwInterfaceSpanEnableDisableReply) Unmarshal(b []byte) error {
 
 func init() { file_span_binapi_init() }
 func file_span_binapi_init() {
-       api.RegisterMessage((*SwInterfaceSpanDetails)(nil), "sw_interface_span_details_055643fc")
+       api.RegisterMessage((*SwInterfaceSpanDetails)(nil), "sw_interface_span_details_8a20e79f")
        api.RegisterMessage((*SwInterfaceSpanDump)(nil), "sw_interface_span_dump_d6cf0c3d")
-       api.RegisterMessage((*SwInterfaceSpanEnableDisable)(nil), "sw_interface_span_enable_disable_acc8fea1")
+       api.RegisterMessage((*SwInterfaceSpanEnableDisable)(nil), "sw_interface_span_enable_disable_23ddd96b")
        api.RegisterMessage((*SwInterfaceSpanEnableDisableReply)(nil), "sw_interface_span_enable_disable_reply_e8d4e804")
 }
 
index 4b883d2..514031d 100644 (file)
@@ -1,14 +1,14 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/sr.api.json
 
 // Package sr contains generated bindings for API file sr.api.
 //
 // Contents:
-//   1 struct
-//  20 messages
+//   2 structs
+//  22 messages
 //
 package sr
 
@@ -29,7 +29,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "sr"
        APIVersion = "2.0.0"
-       VersionCrc = 0xd85c77ca
+       VersionCrc = 0xb17a64be
 )
 
 // Srv6SidList defines type 'srv6_sid_list'.
@@ -39,6 +39,14 @@ type Srv6SidList struct {
        Sids    [16]ip_types.IP6Address `binapi:"ip6_address[16],name=sids" json:"sids,omitempty"`
 }
 
+// Srv6SidListWithSlIndex defines type 'srv6_sid_list_with_sl_index'.
+type Srv6SidListWithSlIndex struct {
+       NumSids uint8                   `binapi:"u8,name=num_sids" json:"num_sids,omitempty"`
+       Weight  uint32                  `binapi:"u32,name=weight" json:"weight,omitempty"`
+       SlIndex uint32                  `binapi:"u32,name=sl_index" json:"sl_index,omitempty"`
+       Sids    [16]ip_types.IP6Address `binapi:"ip6_address[16],name=sids" json:"sids,omitempty"`
+}
+
 // SrLocalsidAddDel defines message 'sr_localsid_add_del'.
 type SrLocalsidAddDel struct {
        IsDel     bool                           `binapi:"bool,name=is_del,default=false" json:"is_del,omitempty"`
@@ -53,7 +61,7 @@ type SrLocalsidAddDel struct {
 
 func (m *SrLocalsidAddDel) Reset()               { *m = SrLocalsidAddDel{} }
 func (*SrLocalsidAddDel) GetMessageName() string { return "sr_localsid_add_del" }
-func (*SrLocalsidAddDel) GetCrcString() string   { return "26fa3309" }
+func (*SrLocalsidAddDel) GetCrcString() string   { return "5a36c324" }
 func (*SrLocalsidAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -149,7 +157,7 @@ type SrLocalsidsDetails struct {
 
 func (m *SrLocalsidsDetails) Reset()               { *m = SrLocalsidsDetails{} }
 func (*SrLocalsidsDetails) GetMessageName() string { return "sr_localsids_details" }
-func (*SrLocalsidsDetails) GetCrcString() string   { return "6a6c0265" }
+func (*SrLocalsidsDetails) GetCrcString() string   { return "2e9221b9" }
 func (*SrLocalsidsDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -235,7 +243,7 @@ type SrPoliciesDetails struct {
 
 func (m *SrPoliciesDetails) Reset()               { *m = SrPoliciesDetails{} }
 func (*SrPoliciesDetails) GetMessageName() string { return "sr_policies_details" }
-func (*SrPoliciesDetails) GetCrcString() string   { return "07ec2d93" }
+func (*SrPoliciesDetails) GetCrcString() string   { return "db6ff2a1" }
 func (*SrPoliciesDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -331,6 +339,121 @@ func (m *SrPoliciesDump) Unmarshal(b []byte) error {
        return nil
 }
 
+// SrPoliciesWithSlIndexDetails defines message 'sr_policies_with_sl_index_details'.
+// InProgress: the message form may change in the future versions
+type SrPoliciesWithSlIndexDetails struct {
+       Bsid        ip_types.IP6Address      `binapi:"ip6_address,name=bsid" json:"bsid,omitempty"`
+       IsSpray     bool                     `binapi:"bool,name=is_spray" json:"is_spray,omitempty"`
+       IsEncap     bool                     `binapi:"bool,name=is_encap" json:"is_encap,omitempty"`
+       FibTable    uint32                   `binapi:"u32,name=fib_table" json:"fib_table,omitempty"`
+       NumSidLists uint8                    `binapi:"u8,name=num_sid_lists" json:"-"`
+       SidLists    []Srv6SidListWithSlIndex `binapi:"srv6_sid_list_with_sl_index[num_sid_lists],name=sid_lists" json:"sid_lists,omitempty"`
+}
+
+func (m *SrPoliciesWithSlIndexDetails) Reset() { *m = SrPoliciesWithSlIndexDetails{} }
+func (*SrPoliciesWithSlIndexDetails) GetMessageName() string {
+       return "sr_policies_with_sl_index_details"
+}
+func (*SrPoliciesWithSlIndexDetails) GetCrcString() string { return "ca2e9bc8" }
+func (*SrPoliciesWithSlIndexDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *SrPoliciesWithSlIndexDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 16 // m.Bsid
+       size += 1      // m.IsSpray
+       size += 1      // m.IsEncap
+       size += 4      // m.FibTable
+       size += 1      // m.NumSidLists
+       for j1 := 0; j1 < len(m.SidLists); j1++ {
+               var s1 Srv6SidListWithSlIndex
+               _ = s1
+               if j1 < len(m.SidLists) {
+                       s1 = m.SidLists[j1]
+               }
+               size += 1 // s1.NumSids
+               size += 4 // s1.Weight
+               size += 4 // s1.SlIndex
+               for j2 := 0; j2 < 16; j2++ {
+                       size += 1 * 16 // s1.Sids[j2]
+               }
+       }
+       return size
+}
+func (m *SrPoliciesWithSlIndexDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.Bsid[:], 16)
+       buf.EncodeBool(m.IsSpray)
+       buf.EncodeBool(m.IsEncap)
+       buf.EncodeUint32(m.FibTable)
+       buf.EncodeUint8(uint8(len(m.SidLists)))
+       for j0 := 0; j0 < len(m.SidLists); j0++ {
+               var v0 Srv6SidListWithSlIndex // SidLists
+               if j0 < len(m.SidLists) {
+                       v0 = m.SidLists[j0]
+               }
+               buf.EncodeUint8(v0.NumSids)
+               buf.EncodeUint32(v0.Weight)
+               buf.EncodeUint32(v0.SlIndex)
+               for j1 := 0; j1 < 16; j1++ {
+                       buf.EncodeBytes(v0.Sids[j1][:], 16)
+               }
+       }
+       return buf.Bytes(), nil
+}
+func (m *SrPoliciesWithSlIndexDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.Bsid[:], buf.DecodeBytes(16))
+       m.IsSpray = buf.DecodeBool()
+       m.IsEncap = buf.DecodeBool()
+       m.FibTable = buf.DecodeUint32()
+       m.NumSidLists = buf.DecodeUint8()
+       m.SidLists = make([]Srv6SidListWithSlIndex, m.NumSidLists)
+       for j0 := 0; j0 < len(m.SidLists); j0++ {
+               m.SidLists[j0].NumSids = buf.DecodeUint8()
+               m.SidLists[j0].Weight = buf.DecodeUint32()
+               m.SidLists[j0].SlIndex = buf.DecodeUint32()
+               for j1 := 0; j1 < 16; j1++ {
+                       copy(m.SidLists[j0].Sids[j1][:], buf.DecodeBytes(16))
+               }
+       }
+       return nil
+}
+
+// SrPoliciesWithSlIndexDump defines message 'sr_policies_with_sl_index_dump'.
+// InProgress: the message form may change in the future versions
+type SrPoliciesWithSlIndexDump struct{}
+
+func (m *SrPoliciesWithSlIndexDump) Reset()               { *m = SrPoliciesWithSlIndexDump{} }
+func (*SrPoliciesWithSlIndexDump) GetMessageName() string { return "sr_policies_with_sl_index_dump" }
+func (*SrPoliciesWithSlIndexDump) GetCrcString() string   { return "51077d14" }
+func (*SrPoliciesWithSlIndexDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *SrPoliciesWithSlIndexDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *SrPoliciesWithSlIndexDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *SrPoliciesWithSlIndexDump) Unmarshal(b []byte) error {
+       return nil
+}
+
 // SrPolicyAdd defines message 'sr_policy_add'.
 type SrPolicyAdd struct {
        BsidAddr ip_types.IP6Address `binapi:"ip6_address,name=bsid_addr" json:"bsid_addr,omitempty"`
@@ -343,7 +466,7 @@ type SrPolicyAdd struct {
 
 func (m *SrPolicyAdd) Reset()               { *m = SrPolicyAdd{} }
 func (*SrPolicyAdd) GetMessageName() string { return "sr_policy_add" }
-func (*SrPolicyAdd) GetCrcString() string   { return "ec79ee6a" }
+func (*SrPolicyAdd) GetCrcString() string   { return "44ac92e8" }
 func (*SrPolicyAdd) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -512,7 +635,7 @@ type SrPolicyMod struct {
 
 func (m *SrPolicyMod) Reset()               { *m = SrPolicyMod{} }
 func (*SrPolicyMod) GetMessageName() string { return "sr_policy_mod" }
-func (*SrPolicyMod) GetCrcString() string   { return "e531a102" }
+func (*SrPolicyMod) GetCrcString() string   { return "b97bb56e" }
 func (*SrPolicyMod) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -746,7 +869,7 @@ type SrSteeringAddDel struct {
 
 func (m *SrSteeringAddDel) Reset()               { *m = SrSteeringAddDel{} }
 func (*SrSteeringAddDel) GetMessageName() string { return "sr_steering_add_del" }
-func (*SrSteeringAddDel) GetCrcString() string   { return "3711dace" }
+func (*SrSteeringAddDel) GetCrcString() string   { return "e46b0a0f" }
 func (*SrSteeringAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -840,7 +963,7 @@ type SrSteeringPolDetails struct {
 
 func (m *SrSteeringPolDetails) Reset()               { *m = SrSteeringPolDetails{} }
 func (*SrSteeringPolDetails) GetMessageName() string { return "sr_steering_pol_details" }
-func (*SrSteeringPolDetails) GetCrcString() string   { return "1c1ee786" }
+func (*SrSteeringPolDetails) GetCrcString() string   { return "d41258c9" }
 func (*SrSteeringPolDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -913,25 +1036,27 @@ func (m *SrSteeringPolDump) Unmarshal(b []byte) error {
 
 func init() { file_sr_binapi_init() }
 func file_sr_binapi_init() {
-       api.RegisterMessage((*SrLocalsidAddDel)(nil), "sr_localsid_add_del_26fa3309")
+       api.RegisterMessage((*SrLocalsidAddDel)(nil), "sr_localsid_add_del_5a36c324")
        api.RegisterMessage((*SrLocalsidAddDelReply)(nil), "sr_localsid_add_del_reply_e8d4e804")
-       api.RegisterMessage((*SrLocalsidsDetails)(nil), "sr_localsids_details_6a6c0265")
+       api.RegisterMessage((*SrLocalsidsDetails)(nil), "sr_localsids_details_2e9221b9")
        api.RegisterMessage((*SrLocalsidsDump)(nil), "sr_localsids_dump_51077d14")
-       api.RegisterMessage((*SrPoliciesDetails)(nil), "sr_policies_details_07ec2d93")
+       api.RegisterMessage((*SrPoliciesDetails)(nil), "sr_policies_details_db6ff2a1")
        api.RegisterMessage((*SrPoliciesDump)(nil), "sr_policies_dump_51077d14")
-       api.RegisterMessage((*SrPolicyAdd)(nil), "sr_policy_add_ec79ee6a")
+       api.RegisterMessage((*SrPoliciesWithSlIndexDetails)(nil), "sr_policies_with_sl_index_details_ca2e9bc8")
+       api.RegisterMessage((*SrPoliciesWithSlIndexDump)(nil), "sr_policies_with_sl_index_dump_51077d14")
+       api.RegisterMessage((*SrPolicyAdd)(nil), "sr_policy_add_44ac92e8")
        api.RegisterMessage((*SrPolicyAddReply)(nil), "sr_policy_add_reply_e8d4e804")
        api.RegisterMessage((*SrPolicyDel)(nil), "sr_policy_del_cb4d48d5")
        api.RegisterMessage((*SrPolicyDelReply)(nil), "sr_policy_del_reply_e8d4e804")
-       api.RegisterMessage((*SrPolicyMod)(nil), "sr_policy_mod_e531a102")
+       api.RegisterMessage((*SrPolicyMod)(nil), "sr_policy_mod_b97bb56e")
        api.RegisterMessage((*SrPolicyModReply)(nil), "sr_policy_mod_reply_e8d4e804")
        api.RegisterMessage((*SrSetEncapHopLimit)(nil), "sr_set_encap_hop_limit_aa75d7d0")
        api.RegisterMessage((*SrSetEncapHopLimitReply)(nil), "sr_set_encap_hop_limit_reply_e8d4e804")
        api.RegisterMessage((*SrSetEncapSource)(nil), "sr_set_encap_source_d3bad5e1")
        api.RegisterMessage((*SrSetEncapSourceReply)(nil), "sr_set_encap_source_reply_e8d4e804")
-       api.RegisterMessage((*SrSteeringAddDel)(nil), "sr_steering_add_del_3711dace")
+       api.RegisterMessage((*SrSteeringAddDel)(nil), "sr_steering_add_del_e46b0a0f")
        api.RegisterMessage((*SrSteeringAddDelReply)(nil), "sr_steering_add_del_reply_e8d4e804")
-       api.RegisterMessage((*SrSteeringPolDetails)(nil), "sr_steering_pol_details_1c1ee786")
+       api.RegisterMessage((*SrSteeringPolDetails)(nil), "sr_steering_pol_details_d41258c9")
        api.RegisterMessage((*SrSteeringPolDump)(nil), "sr_steering_pol_dump_51077d14")
 }
 
@@ -944,6 +1069,8 @@ func AllMessages() []api.Message {
                (*SrLocalsidsDump)(nil),
                (*SrPoliciesDetails)(nil),
                (*SrPoliciesDump)(nil),
+               (*SrPoliciesWithSlIndexDetails)(nil),
+               (*SrPoliciesWithSlIndexDump)(nil),
                (*SrPolicyAdd)(nil),
                (*SrPolicyAddReply)(nil),
                (*SrPolicyDel)(nil),
index 7bbfff1..a47b8a4 100644 (file)
@@ -16,6 +16,7 @@ type RPCService interface {
        SrLocalsidAddDel(ctx context.Context, in *SrLocalsidAddDel) (*SrLocalsidAddDelReply, error)
        SrLocalsidsDump(ctx context.Context, in *SrLocalsidsDump) (RPCService_SrLocalsidsDumpClient, error)
        SrPoliciesDump(ctx context.Context, in *SrPoliciesDump) (RPCService_SrPoliciesDumpClient, error)
+       SrPoliciesWithSlIndexDump(ctx context.Context, in *SrPoliciesWithSlIndexDump) (RPCService_SrPoliciesWithSlIndexDumpClient, error)
        SrPolicyAdd(ctx context.Context, in *SrPolicyAdd) (*SrPolicyAddReply, error)
        SrPolicyDel(ctx context.Context, in *SrPolicyDel) (*SrPolicyDelReply, error)
        SrPolicyMod(ctx context.Context, in *SrPolicyMod) (*SrPolicyModReply, error)
@@ -120,6 +121,45 @@ func (c *serviceClient_SrPoliciesDumpClient) Recv() (*SrPoliciesDetails, error)
        }
 }
 
+func (c *serviceClient) SrPoliciesWithSlIndexDump(ctx context.Context, in *SrPoliciesWithSlIndexDump) (RPCService_SrPoliciesWithSlIndexDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_SrPoliciesWithSlIndexDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_SrPoliciesWithSlIndexDumpClient interface {
+       Recv() (*SrPoliciesWithSlIndexDetails, error)
+       api.Stream
+}
+
+type serviceClient_SrPoliciesWithSlIndexDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_SrPoliciesWithSlIndexDumpClient) Recv() (*SrPoliciesWithSlIndexDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *SrPoliciesWithSlIndexDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
 func (c *serviceClient) SrPolicyAdd(ctx context.Context, in *SrPolicyAdd) (*SrPolicyAddReply, error) {
        out := new(SrPolicyAddReply)
        err := c.conn.Invoke(ctx, in, out)
index 62ef1a6..fb1ab1c 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/sr_mpls.api.json
 
 // Package sr_mpls contains generated bindings for API file sr_mpls.api.
@@ -28,7 +28,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "sr_mpls"
        APIVersion = "3.0.0"
-       VersionCrc = 0xaf471151
+       VersionCrc = 0x156edb17
 )
 
 // SrMplsPolicyAdd defines message 'sr_mpls_policy_add'.
@@ -133,7 +133,7 @@ func (m *SrMplsPolicyAssignEndpointColor) Reset() { *m = SrMplsPolicyAssignEndpo
 func (*SrMplsPolicyAssignEndpointColor) GetMessageName() string {
        return "sr_mpls_policy_assign_endpoint_color"
 }
-func (*SrMplsPolicyAssignEndpointColor) GetCrcString() string { return "5e1c5c13" }
+func (*SrMplsPolicyAssignEndpointColor) GetCrcString() string { return "0e7eb978" }
 func (*SrMplsPolicyAssignEndpointColor) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -379,7 +379,7 @@ type SrMplsSteeringAddDel struct {
 
 func (m *SrMplsSteeringAddDel) Reset()               { *m = SrMplsSteeringAddDel{} }
 func (*SrMplsSteeringAddDel) GetMessageName() string { return "sr_mpls_steering_add_del" }
-func (*SrMplsSteeringAddDel) GetCrcString() string   { return "7d1b0a0b" }
+func (*SrMplsSteeringAddDel) GetCrcString() string   { return "64acff63" }
 func (*SrMplsSteeringAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -475,13 +475,13 @@ func init() { file_sr_mpls_binapi_init() }
 func file_sr_mpls_binapi_init() {
        api.RegisterMessage((*SrMplsPolicyAdd)(nil), "sr_mpls_policy_add_a1a70c70")
        api.RegisterMessage((*SrMplsPolicyAddReply)(nil), "sr_mpls_policy_add_reply_e8d4e804")
-       api.RegisterMessage((*SrMplsPolicyAssignEndpointColor)(nil), "sr_mpls_policy_assign_endpoint_color_5e1c5c13")
+       api.RegisterMessage((*SrMplsPolicyAssignEndpointColor)(nil), "sr_mpls_policy_assign_endpoint_color_0e7eb978")
        api.RegisterMessage((*SrMplsPolicyAssignEndpointColorReply)(nil), "sr_mpls_policy_assign_endpoint_color_reply_e8d4e804")
        api.RegisterMessage((*SrMplsPolicyDel)(nil), "sr_mpls_policy_del_e29d34fa")
        api.RegisterMessage((*SrMplsPolicyDelReply)(nil), "sr_mpls_policy_del_reply_e8d4e804")
        api.RegisterMessage((*SrMplsPolicyMod)(nil), "sr_mpls_policy_mod_88482c17")
        api.RegisterMessage((*SrMplsPolicyModReply)(nil), "sr_mpls_policy_mod_reply_e8d4e804")
-       api.RegisterMessage((*SrMplsSteeringAddDel)(nil), "sr_mpls_steering_add_del_7d1b0a0b")
+       api.RegisterMessage((*SrMplsSteeringAddDel)(nil), "sr_mpls_steering_add_del_64acff63")
        api.RegisterMessage((*SrMplsSteeringAddDelReply)(nil), "sr_mpls_steering_add_del_reply_e8d4e804")
 }
 
index 1b3ee75..fb5ec11 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/sr_types.api.json
 
 // Package sr_types contains generated bindings for API file sr_types.api.
index dbdf0ca..58dd14e 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/stn.api.json
 
 // Package stn contains generated bindings for API file stn.api.
@@ -27,7 +27,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "stn"
        APIVersion = "2.0.0"
-       VersionCrc = 0x5a5079cd
+       VersionCrc = 0x9cfaef64
 )
 
 // StnAddDelRule defines message 'stn_add_del_rule'.
@@ -39,7 +39,7 @@ type StnAddDelRule struct {
 
 func (m *StnAddDelRule) Reset()               { *m = StnAddDelRule{} }
 func (*StnAddDelRule) GetMessageName() string { return "stn_add_del_rule" }
-func (*StnAddDelRule) GetCrcString() string   { return "53f751e6" }
+func (*StnAddDelRule) GetCrcString() string   { return "224c6edd" }
 func (*StnAddDelRule) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -115,7 +115,7 @@ type StnRulesDetails struct {
 
 func (m *StnRulesDetails) Reset()               { *m = StnRulesDetails{} }
 func (*StnRulesDetails) GetMessageName() string { return "stn_rules_details" }
-func (*StnRulesDetails) GetCrcString() string   { return "b0f6606c" }
+func (*StnRulesDetails) GetCrcString() string   { return "a51935a6" }
 func (*StnRulesDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -176,9 +176,9 @@ func (m *StnRulesDump) Unmarshal(b []byte) error {
 
 func init() { file_stn_binapi_init() }
 func file_stn_binapi_init() {
-       api.RegisterMessage((*StnAddDelRule)(nil), "stn_add_del_rule_53f751e6")
+       api.RegisterMessage((*StnAddDelRule)(nil), "stn_add_del_rule_224c6edd")
        api.RegisterMessage((*StnAddDelRuleReply)(nil), "stn_add_del_rule_reply_e8d4e804")
-       api.RegisterMessage((*StnRulesDetails)(nil), "stn_rules_details_b0f6606c")
+       api.RegisterMessage((*StnRulesDetails)(nil), "stn_rules_details_a51935a6")
        api.RegisterMessage((*StnRulesDump)(nil), "stn_rules_dump_51077d14")
 }
 
index 1f65a76..c55307f 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/svs.api.json
 
 // Package svs contains generated bindings for API file svs.api.
@@ -27,7 +27,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "svs"
        APIVersion = "1.0.0"
-       VersionCrc = 0x1644b2d6
+       VersionCrc = 0x816cf275
 )
 
 // SvsDetails defines message 'svs_details'.
@@ -39,7 +39,7 @@ type SvsDetails struct {
 
 func (m *SvsDetails) Reset()               { *m = SvsDetails{} }
 func (*SvsDetails) GetMessageName() string { return "svs_details" }
-func (*SvsDetails) GetCrcString() string   { return "b8523d64" }
+func (*SvsDetails) GetCrcString() string   { return "6282cd55" }
 func (*SvsDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -250,7 +250,7 @@ type SvsRouteAddDel struct {
 
 func (m *SvsRouteAddDel) Reset()               { *m = SvsRouteAddDel{} }
 func (*SvsRouteAddDel) GetMessageName() string { return "svs_route_add_del" }
-func (*SvsRouteAddDel) GetCrcString() string   { return "d39e31fc" }
+func (*SvsRouteAddDel) GetCrcString() string   { return "e49bc63c" }
 func (*SvsRouteAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -400,13 +400,13 @@ func (m *SvsTableAddDelReply) Unmarshal(b []byte) error {
 
 func init() { file_svs_binapi_init() }
 func file_svs_binapi_init() {
-       api.RegisterMessage((*SvsDetails)(nil), "svs_details_b8523d64")
+       api.RegisterMessage((*SvsDetails)(nil), "svs_details_6282cd55")
        api.RegisterMessage((*SvsDump)(nil), "svs_dump_51077d14")
        api.RegisterMessage((*SvsEnableDisable)(nil), "svs_enable_disable_634b89d2")
        api.RegisterMessage((*SvsEnableDisableReply)(nil), "svs_enable_disable_reply_e8d4e804")
        api.RegisterMessage((*SvsPluginGetVersion)(nil), "svs_plugin_get_version_51077d14")
        api.RegisterMessage((*SvsPluginGetVersionReply)(nil), "svs_plugin_get_version_reply_9b32cf86")
-       api.RegisterMessage((*SvsRouteAddDel)(nil), "svs_route_add_del_d39e31fc")
+       api.RegisterMessage((*SvsRouteAddDel)(nil), "svs_route_add_del_e49bc63c")
        api.RegisterMessage((*SvsRouteAddDelReply)(nil), "svs_route_add_del_reply_e8d4e804")
        api.RegisterMessage((*SvsTableAddDel)(nil), "svs_table_add_del_7d21cb2a")
        api.RegisterMessage((*SvsTableAddDelReply)(nil), "svs_table_add_del_reply_e8d4e804")
index e3b7ef5..db84f1d 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/syslog.api.json
 
 // Package syslog contains generated bindings for API file syslog.api.
@@ -29,7 +29,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "syslog"
        APIVersion = "1.0.0"
-       VersionCrc = 0x95b7380f
+       VersionCrc = 0x5ad12a74
 )
 
 // SyslogSeverity defines enum 'syslog_severity'.
@@ -180,7 +180,7 @@ type SyslogGetSenderReply struct {
 
 func (m *SyslogGetSenderReply) Reset()               { *m = SyslogGetSenderReply{} }
 func (*SyslogGetSenderReply) GetMessageName() string { return "syslog_get_sender_reply" }
-func (*SyslogGetSenderReply) GetCrcString() string   { return "d3da60ac" }
+func (*SyslogGetSenderReply) GetCrcString() string   { return "424cfa4e" }
 func (*SyslogGetSenderReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -298,7 +298,7 @@ type SyslogSetSender struct {
 
 func (m *SyslogSetSender) Reset()               { *m = SyslogSetSender{} }
 func (*SyslogSetSender) GetMessageName() string { return "syslog_set_sender" }
-func (*SyslogSetSender) GetCrcString() string   { return "bb641285" }
+func (*SyslogSetSender) GetCrcString() string   { return "b8011d0b" }
 func (*SyslogSetSender) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -374,10 +374,10 @@ func file_syslog_binapi_init() {
        api.RegisterMessage((*SyslogGetFilter)(nil), "syslog_get_filter_51077d14")
        api.RegisterMessage((*SyslogGetFilterReply)(nil), "syslog_get_filter_reply_eb1833f8")
        api.RegisterMessage((*SyslogGetSender)(nil), "syslog_get_sender_51077d14")
-       api.RegisterMessage((*SyslogGetSenderReply)(nil), "syslog_get_sender_reply_d3da60ac")
+       api.RegisterMessage((*SyslogGetSenderReply)(nil), "syslog_get_sender_reply_424cfa4e")
        api.RegisterMessage((*SyslogSetFilter)(nil), "syslog_set_filter_571348c3")
        api.RegisterMessage((*SyslogSetFilterReply)(nil), "syslog_set_filter_reply_e8d4e804")
-       api.RegisterMessage((*SyslogSetSender)(nil), "syslog_set_sender_bb641285")
+       api.RegisterMessage((*SyslogSetSender)(nil), "syslog_set_sender_b8011d0b")
        api.RegisterMessage((*SyslogSetSenderReply)(nil), "syslog_set_sender_reply_e8d4e804")
 }
 
index db9f4ba..c281080 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/tapv2.api.json
 
 // Package tapv2 contains generated bindings for API file tapv2.api.
@@ -31,7 +31,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "tapv2"
        APIVersion = "4.0.0"
-       VersionCrc = 0x3ed7c42d
+       VersionCrc = 0xc20c291f
 )
 
 // TapFlags defines enum 'tap_flags'.
@@ -44,16 +44,20 @@ const (
        TAP_API_FLAG_ATTACH       TapFlags = 8
        TAP_API_FLAG_TUN          TapFlags = 16
        TAP_API_FLAG_GRO_COALESCE TapFlags = 32
+       TAP_API_FLAG_PACKED       TapFlags = 64
+       TAP_API_FLAG_IN_ORDER     TapFlags = 128
 )
 
 var (
        TapFlags_name = map[uint32]string{
-               1:  "TAP_API_FLAG_GSO",
-               2:  "TAP_API_FLAG_CSUM_OFFLOAD",
-               4:  "TAP_API_FLAG_PERSIST",
-               8:  "TAP_API_FLAG_ATTACH",
-               16: "TAP_API_FLAG_TUN",
-               32: "TAP_API_FLAG_GRO_COALESCE",
+               1:   "TAP_API_FLAG_GSO",
+               2:   "TAP_API_FLAG_CSUM_OFFLOAD",
+               4:   "TAP_API_FLAG_PERSIST",
+               8:   "TAP_API_FLAG_ATTACH",
+               16:  "TAP_API_FLAG_TUN",
+               32:  "TAP_API_FLAG_GRO_COALESCE",
+               64:  "TAP_API_FLAG_PACKED",
+               128: "TAP_API_FLAG_IN_ORDER",
        }
        TapFlags_value = map[string]uint32{
                "TAP_API_FLAG_GSO":          1,
@@ -62,6 +66,8 @@ var (
                "TAP_API_FLAG_ATTACH":       8,
                "TAP_API_FLAG_TUN":          16,
                "TAP_API_FLAG_GRO_COALESCE": 32,
+               "TAP_API_FLAG_PACKED":       64,
+               "TAP_API_FLAG_IN_ORDER":     128,
        }
 )
 
@@ -111,7 +117,7 @@ type SwInterfaceTapV2Details struct {
 
 func (m *SwInterfaceTapV2Details) Reset()               { *m = SwInterfaceTapV2Details{} }
 func (*SwInterfaceTapV2Details) GetMessageName() string { return "sw_interface_tap_v2_details" }
-func (*SwInterfaceTapV2Details) GetCrcString() string   { return "e53c16de" }
+func (*SwInterfaceTapV2Details) GetCrcString() string   { return "1e2b2a47" }
 func (*SwInterfaceTapV2Details) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -244,7 +250,7 @@ type TapCreateV2 struct {
 
 func (m *TapCreateV2) Reset()               { *m = TapCreateV2{} }
 func (*TapCreateV2) GetMessageName() string { return "tap_create_v2" }
-func (*TapCreateV2) GetCrcString() string   { return "445835fd" }
+func (*TapCreateV2) GetCrcString() string   { return "2d0d6570" }
 func (*TapCreateV2) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -456,9 +462,9 @@ func (m *TapDeleteV2Reply) Unmarshal(b []byte) error {
 
 func init() { file_tapv2_binapi_init() }
 func file_tapv2_binapi_init() {
-       api.RegisterMessage((*SwInterfaceTapV2Details)(nil), "sw_interface_tap_v2_details_e53c16de")
+       api.RegisterMessage((*SwInterfaceTapV2Details)(nil), "sw_interface_tap_v2_details_1e2b2a47")
        api.RegisterMessage((*SwInterfaceTapV2Dump)(nil), "sw_interface_tap_v2_dump_f9e6675e")
-       api.RegisterMessage((*TapCreateV2)(nil), "tap_create_v2_445835fd")
+       api.RegisterMessage((*TapCreateV2)(nil), "tap_create_v2_2d0d6570")
        api.RegisterMessage((*TapCreateV2Reply)(nil), "tap_create_v2_reply_5383d31f")
        api.RegisterMessage((*TapDeleteV2)(nil), "tap_delete_v2_f9e6675e")
        api.RegisterMessage((*TapDeleteV2Reply)(nil), "tap_delete_v2_reply_e8d4e804")
index bfa9df7..211790f 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/tcp.api.json
 
 // Package tcp contains generated bindings for API file tcp.api.
@@ -26,7 +26,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "tcp"
        APIVersion = "2.0.0"
-       VersionCrc = 0xf586c9ba
+       VersionCrc = 0x93d07485
 )
 
 // TCPConfigureSrcAddresses defines message 'tcp_configure_src_addresses'.
@@ -38,7 +38,7 @@ type TCPConfigureSrcAddresses struct {
 
 func (m *TCPConfigureSrcAddresses) Reset()               { *m = TCPConfigureSrcAddresses{} }
 func (*TCPConfigureSrcAddresses) GetMessageName() string { return "tcp_configure_src_addresses" }
-func (*TCPConfigureSrcAddresses) GetCrcString() string   { return "4b02b946" }
+func (*TCPConfigureSrcAddresses) GetCrcString() string   { return "67eede0d" }
 func (*TCPConfigureSrcAddresses) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -113,7 +113,7 @@ func (m *TCPConfigureSrcAddressesReply) Unmarshal(b []byte) error {
 
 func init() { file_tcp_binapi_init() }
 func file_tcp_binapi_init() {
-       api.RegisterMessage((*TCPConfigureSrcAddresses)(nil), "tcp_configure_src_addresses_4b02b946")
+       api.RegisterMessage((*TCPConfigureSrcAddresses)(nil), "tcp_configure_src_addresses_67eede0d")
        api.RegisterMessage((*TCPConfigureSrcAddressesReply)(nil), "tcp_configure_src_addresses_reply_e8d4e804")
 }
 
index 6a10688..9bb3f0a 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/teib.api.json
 
 // Package teib contains generated bindings for API file teib.api.
@@ -28,7 +28,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "teib"
        APIVersion = "1.0.0"
-       VersionCrc = 0xaac93c17
+       VersionCrc = 0x14ded985
 )
 
 // TeibEntry defines type 'teib_entry'.
@@ -46,7 +46,7 @@ type TeibDetails struct {
 
 func (m *TeibDetails) Reset()               { *m = TeibDetails{} }
 func (*TeibDetails) GetMessageName() string { return "teib_details" }
-func (*TeibDetails) GetCrcString() string   { return "e3b6a503" }
+func (*TeibDetails) GetCrcString() string   { return "981ee1a1" }
 func (*TeibDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -122,7 +122,7 @@ type TeibEntryAddDel struct {
 
 func (m *TeibEntryAddDel) Reset()               { *m = TeibEntryAddDel{} }
 func (*TeibEntryAddDel) GetMessageName() string { return "teib_entry_add_del" }
-func (*TeibEntryAddDel) GetCrcString() string   { return "5aa0a538" }
+func (*TeibEntryAddDel) GetCrcString() string   { return "8016cfd2" }
 func (*TeibEntryAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -201,9 +201,9 @@ func (m *TeibEntryAddDelReply) Unmarshal(b []byte) error {
 
 func init() { file_teib_binapi_init() }
 func file_teib_binapi_init() {
-       api.RegisterMessage((*TeibDetails)(nil), "teib_details_e3b6a503")
+       api.RegisterMessage((*TeibDetails)(nil), "teib_details_981ee1a1")
        api.RegisterMessage((*TeibDump)(nil), "teib_dump_51077d14")
-       api.RegisterMessage((*TeibEntryAddDel)(nil), "teib_entry_add_del_5aa0a538")
+       api.RegisterMessage((*TeibEntryAddDel)(nil), "teib_entry_add_del_8016cfd2")
        api.RegisterMessage((*TeibEntryAddDelReply)(nil), "teib_entry_add_del_reply_e8d4e804")
 }
 
index 5a406b0..19b5861 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/tls_openssl.api.json
 
 // Package tls_openssl contains generated bindings for API file tls_openssl.api.
index a789b4f..a5327d0 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/trace.api.json
 
 // Package trace contains generated bindings for API file trace.api.
diff --git a/binapi/tracedump/tracedump.ba.go b/binapi/tracedump/tracedump.ba.go
new file mode 100644 (file)
index 0000000..e6f1552
--- /dev/null
@@ -0,0 +1,484 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/tracedump.api.json
+
+// Package tracedump contains generated bindings for API file tracedump.api.
+//
+// Contents:
+//   1 enum
+//   9 messages
+//
+package tracedump
+
+import (
+       "strconv"
+
+       api "git.fd.io/govpp.git/api"
+       codec "git.fd.io/govpp.git/codec"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+const (
+       APIFile    = "tracedump"
+       APIVersion = "0.1.0"
+       VersionCrc = 0x691543d5
+)
+
+// TraceFilterFlag defines enum 'trace_filter_flag'.
+type TraceFilterFlag uint32
+
+const (
+       TRACE_FF_NONE               TraceFilterFlag = 0
+       TRACE_FF_INCLUDE_NODE       TraceFilterFlag = 1
+       TRACE_FF_EXCLUDE_NODE       TraceFilterFlag = 2
+       TRACE_FF_INCLUDE_CLASSIFIER TraceFilterFlag = 3
+       TRACE_FF_EXCLUDE_CLASSIFIER TraceFilterFlag = 4
+)
+
+var (
+       TraceFilterFlag_name = map[uint32]string{
+               0: "TRACE_FF_NONE",
+               1: "TRACE_FF_INCLUDE_NODE",
+               2: "TRACE_FF_EXCLUDE_NODE",
+               3: "TRACE_FF_INCLUDE_CLASSIFIER",
+               4: "TRACE_FF_EXCLUDE_CLASSIFIER",
+       }
+       TraceFilterFlag_value = map[string]uint32{
+               "TRACE_FF_NONE":               0,
+               "TRACE_FF_INCLUDE_NODE":       1,
+               "TRACE_FF_EXCLUDE_NODE":       2,
+               "TRACE_FF_INCLUDE_CLASSIFIER": 3,
+               "TRACE_FF_EXCLUDE_CLASSIFIER": 4,
+       }
+)
+
+func (x TraceFilterFlag) String() string {
+       s, ok := TraceFilterFlag_name[uint32(x)]
+       if ok {
+               return s
+       }
+       return "TraceFilterFlag(" + strconv.Itoa(int(x)) + ")"
+}
+
+// TraceCapturePackets defines message 'trace_capture_packets'.
+// InProgress: the message form may change in the future versions
+type TraceCapturePackets struct {
+       NodeIndex       uint32 `binapi:"u32,name=node_index" json:"node_index,omitempty"`
+       MaxPackets      uint32 `binapi:"u32,name=max_packets" json:"max_packets,omitempty"`
+       UseFilter       bool   `binapi:"bool,name=use_filter" json:"use_filter,omitempty"`
+       Verbose         bool   `binapi:"bool,name=verbose" json:"verbose,omitempty"`
+       PreCaptureClear bool   `binapi:"bool,name=pre_capture_clear" json:"pre_capture_clear,omitempty"`
+}
+
+func (m *TraceCapturePackets) Reset()               { *m = TraceCapturePackets{} }
+func (*TraceCapturePackets) GetMessageName() string { return "trace_capture_packets" }
+func (*TraceCapturePackets) GetCrcString() string   { return "9e791a9b" }
+func (*TraceCapturePackets) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *TraceCapturePackets) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.NodeIndex
+       size += 4 // m.MaxPackets
+       size += 1 // m.UseFilter
+       size += 1 // m.Verbose
+       size += 1 // m.PreCaptureClear
+       return size
+}
+func (m *TraceCapturePackets) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.NodeIndex)
+       buf.EncodeUint32(m.MaxPackets)
+       buf.EncodeBool(m.UseFilter)
+       buf.EncodeBool(m.Verbose)
+       buf.EncodeBool(m.PreCaptureClear)
+       return buf.Bytes(), nil
+}
+func (m *TraceCapturePackets) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.NodeIndex = buf.DecodeUint32()
+       m.MaxPackets = buf.DecodeUint32()
+       m.UseFilter = buf.DecodeBool()
+       m.Verbose = buf.DecodeBool()
+       m.PreCaptureClear = buf.DecodeBool()
+       return nil
+}
+
+// TraceCapturePacketsReply defines message 'trace_capture_packets_reply'.
+// InProgress: the message form may change in the future versions
+type TraceCapturePacketsReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *TraceCapturePacketsReply) Reset()               { *m = TraceCapturePacketsReply{} }
+func (*TraceCapturePacketsReply) GetMessageName() string { return "trace_capture_packets_reply" }
+func (*TraceCapturePacketsReply) GetCrcString() string   { return "e8d4e804" }
+func (*TraceCapturePacketsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *TraceCapturePacketsReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *TraceCapturePacketsReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *TraceCapturePacketsReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// TraceClearCapture defines message 'trace_clear_capture'.
+// InProgress: the message form may change in the future versions
+type TraceClearCapture struct{}
+
+func (m *TraceClearCapture) Reset()               { *m = TraceClearCapture{} }
+func (*TraceClearCapture) GetMessageName() string { return "trace_clear_capture" }
+func (*TraceClearCapture) GetCrcString() string   { return "51077d14" }
+func (*TraceClearCapture) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *TraceClearCapture) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *TraceClearCapture) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *TraceClearCapture) Unmarshal(b []byte) error {
+       return nil
+}
+
+// TraceClearCaptureReply defines message 'trace_clear_capture_reply'.
+// InProgress: the message form may change in the future versions
+type TraceClearCaptureReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *TraceClearCaptureReply) Reset()               { *m = TraceClearCaptureReply{} }
+func (*TraceClearCaptureReply) GetMessageName() string { return "trace_clear_capture_reply" }
+func (*TraceClearCaptureReply) GetCrcString() string   { return "e8d4e804" }
+func (*TraceClearCaptureReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *TraceClearCaptureReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *TraceClearCaptureReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *TraceClearCaptureReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// TraceDetails defines message 'trace_details'.
+// InProgress: the message form may change in the future versions
+type TraceDetails struct {
+       ThreadID       uint32 `binapi:"u32,name=thread_id" json:"thread_id,omitempty"`
+       Position       uint32 `binapi:"u32,name=position" json:"position,omitempty"`
+       MoreThisThread uint8  `binapi:"u8,name=more_this_thread" json:"more_this_thread,omitempty"`
+       MoreThreads    uint8  `binapi:"u8,name=more_threads" json:"more_threads,omitempty"`
+       Done           uint8  `binapi:"u8,name=done" json:"done,omitempty"`
+       PacketNumber   uint32 `binapi:"u32,name=packet_number" json:"packet_number,omitempty"`
+       TraceData      string `binapi:"string[],name=trace_data" json:"trace_data,omitempty"`
+}
+
+func (m *TraceDetails) Reset()               { *m = TraceDetails{} }
+func (*TraceDetails) GetMessageName() string { return "trace_details" }
+func (*TraceDetails) GetCrcString() string   { return "1553e9eb" }
+func (*TraceDetails) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *TraceDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4                    // m.ThreadID
+       size += 4                    // m.Position
+       size += 1                    // m.MoreThisThread
+       size += 1                    // m.MoreThreads
+       size += 1                    // m.Done
+       size += 4                    // m.PacketNumber
+       size += 4 + len(m.TraceData) // m.TraceData
+       return size
+}
+func (m *TraceDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.ThreadID)
+       buf.EncodeUint32(m.Position)
+       buf.EncodeUint8(m.MoreThisThread)
+       buf.EncodeUint8(m.MoreThreads)
+       buf.EncodeUint8(m.Done)
+       buf.EncodeUint32(m.PacketNumber)
+       buf.EncodeString(m.TraceData, 0)
+       return buf.Bytes(), nil
+}
+func (m *TraceDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.ThreadID = buf.DecodeUint32()
+       m.Position = buf.DecodeUint32()
+       m.MoreThisThread = buf.DecodeUint8()
+       m.MoreThreads = buf.DecodeUint8()
+       m.Done = buf.DecodeUint8()
+       m.PacketNumber = buf.DecodeUint32()
+       m.TraceData = buf.DecodeString(0)
+       return nil
+}
+
+// TraceDump defines message 'trace_dump'.
+// InProgress: the message form may change in the future versions
+type TraceDump struct {
+       ClearCache uint8  `binapi:"u8,name=clear_cache" json:"clear_cache,omitempty"`
+       ThreadID   uint32 `binapi:"u32,name=thread_id" json:"thread_id,omitempty"`
+       Position   uint32 `binapi:"u32,name=position" json:"position,omitempty"`
+       MaxRecords uint32 `binapi:"u32,name=max_records" json:"max_records,omitempty"`
+}
+
+func (m *TraceDump) Reset()               { *m = TraceDump{} }
+func (*TraceDump) GetMessageName() string { return "trace_dump" }
+func (*TraceDump) GetCrcString() string   { return "c7d6681f" }
+func (*TraceDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *TraceDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.ClearCache
+       size += 4 // m.ThreadID
+       size += 4 // m.Position
+       size += 4 // m.MaxRecords
+       return size
+}
+func (m *TraceDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(m.ClearCache)
+       buf.EncodeUint32(m.ThreadID)
+       buf.EncodeUint32(m.Position)
+       buf.EncodeUint32(m.MaxRecords)
+       return buf.Bytes(), nil
+}
+func (m *TraceDump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.ClearCache = buf.DecodeUint8()
+       m.ThreadID = buf.DecodeUint32()
+       m.Position = buf.DecodeUint32()
+       m.MaxRecords = buf.DecodeUint32()
+       return nil
+}
+
+// TraceDumpReply defines message 'trace_dump_reply'.
+// InProgress: the message form may change in the future versions
+type TraceDumpReply struct {
+       Retval         int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       LastThreadID   uint32 `binapi:"u32,name=last_thread_id" json:"last_thread_id,omitempty"`
+       LastPosition   uint32 `binapi:"u32,name=last_position" json:"last_position,omitempty"`
+       MoreThisThread uint8  `binapi:"u8,name=more_this_thread" json:"more_this_thread,omitempty"`
+       MoreThreads    uint8  `binapi:"u8,name=more_threads" json:"more_threads,omitempty"`
+       FlushOnly      uint8  `binapi:"u8,name=flush_only" json:"flush_only,omitempty"`
+       Done           uint8  `binapi:"u8,name=done" json:"done,omitempty"`
+}
+
+func (m *TraceDumpReply) Reset()               { *m = TraceDumpReply{} }
+func (*TraceDumpReply) GetMessageName() string { return "trace_dump_reply" }
+func (*TraceDumpReply) GetCrcString() string   { return "e0e87f9d" }
+func (*TraceDumpReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *TraceDumpReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.LastThreadID
+       size += 4 // m.LastPosition
+       size += 1 // m.MoreThisThread
+       size += 1 // m.MoreThreads
+       size += 1 // m.FlushOnly
+       size += 1 // m.Done
+       return size
+}
+func (m *TraceDumpReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.LastThreadID)
+       buf.EncodeUint32(m.LastPosition)
+       buf.EncodeUint8(m.MoreThisThread)
+       buf.EncodeUint8(m.MoreThreads)
+       buf.EncodeUint8(m.FlushOnly)
+       buf.EncodeUint8(m.Done)
+       return buf.Bytes(), nil
+}
+func (m *TraceDumpReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.LastThreadID = buf.DecodeUint32()
+       m.LastPosition = buf.DecodeUint32()
+       m.MoreThisThread = buf.DecodeUint8()
+       m.MoreThreads = buf.DecodeUint8()
+       m.FlushOnly = buf.DecodeUint8()
+       m.Done = buf.DecodeUint8()
+       return nil
+}
+
+// TraceSetFilters defines message 'trace_set_filters'.
+// InProgress: the message form may change in the future versions
+type TraceSetFilters struct {
+       Flag                 TraceFilterFlag `binapi:"trace_filter_flag,name=flag" json:"flag,omitempty"`
+       Count                uint32          `binapi:"u32,name=count" json:"count,omitempty"`
+       NodeIndex            uint32          `binapi:"u32,name=node_index,default=4294967295" json:"node_index,omitempty"`
+       ClassifierTableIndex uint32          `binapi:"u32,name=classifier_table_index,default=4294967295" json:"classifier_table_index,omitempty"`
+}
+
+func (m *TraceSetFilters) Reset()               { *m = TraceSetFilters{} }
+func (*TraceSetFilters) GetMessageName() string { return "trace_set_filters" }
+func (*TraceSetFilters) GetCrcString() string   { return "f522b44a" }
+func (*TraceSetFilters) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *TraceSetFilters) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Flag
+       size += 4 // m.Count
+       size += 4 // m.NodeIndex
+       size += 4 // m.ClassifierTableIndex
+       return size
+}
+func (m *TraceSetFilters) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.Flag))
+       buf.EncodeUint32(m.Count)
+       buf.EncodeUint32(m.NodeIndex)
+       buf.EncodeUint32(m.ClassifierTableIndex)
+       return buf.Bytes(), nil
+}
+func (m *TraceSetFilters) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Flag = TraceFilterFlag(buf.DecodeUint32())
+       m.Count = buf.DecodeUint32()
+       m.NodeIndex = buf.DecodeUint32()
+       m.ClassifierTableIndex = buf.DecodeUint32()
+       return nil
+}
+
+// TraceSetFiltersReply defines message 'trace_set_filters_reply'.
+// InProgress: the message form may change in the future versions
+type TraceSetFiltersReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *TraceSetFiltersReply) Reset()               { *m = TraceSetFiltersReply{} }
+func (*TraceSetFiltersReply) GetMessageName() string { return "trace_set_filters_reply" }
+func (*TraceSetFiltersReply) GetCrcString() string   { return "e8d4e804" }
+func (*TraceSetFiltersReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *TraceSetFiltersReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *TraceSetFiltersReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *TraceSetFiltersReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+func init() { file_tracedump_binapi_init() }
+func file_tracedump_binapi_init() {
+       api.RegisterMessage((*TraceCapturePackets)(nil), "trace_capture_packets_9e791a9b")
+       api.RegisterMessage((*TraceCapturePacketsReply)(nil), "trace_capture_packets_reply_e8d4e804")
+       api.RegisterMessage((*TraceClearCapture)(nil), "trace_clear_capture_51077d14")
+       api.RegisterMessage((*TraceClearCaptureReply)(nil), "trace_clear_capture_reply_e8d4e804")
+       api.RegisterMessage((*TraceDetails)(nil), "trace_details_1553e9eb")
+       api.RegisterMessage((*TraceDump)(nil), "trace_dump_c7d6681f")
+       api.RegisterMessage((*TraceDumpReply)(nil), "trace_dump_reply_e0e87f9d")
+       api.RegisterMessage((*TraceSetFilters)(nil), "trace_set_filters_f522b44a")
+       api.RegisterMessage((*TraceSetFiltersReply)(nil), "trace_set_filters_reply_e8d4e804")
+}
+
+// Messages returns list of all messages in this module.
+func AllMessages() []api.Message {
+       return []api.Message{
+               (*TraceCapturePackets)(nil),
+               (*TraceCapturePacketsReply)(nil),
+               (*TraceClearCapture)(nil),
+               (*TraceClearCaptureReply)(nil),
+               (*TraceDetails)(nil),
+               (*TraceDump)(nil),
+               (*TraceDumpReply)(nil),
+               (*TraceSetFilters)(nil),
+               (*TraceSetFiltersReply)(nil),
+       }
+}
diff --git a/binapi/tracedump/tracedump_rpc.ba.go b/binapi/tracedump/tracedump_rpc.ba.go
new file mode 100644 (file)
index 0000000..07be1af
--- /dev/null
@@ -0,0 +1,90 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+
+package tracedump
+
+import (
+       "context"
+       "fmt"
+       "io"
+
+       api "git.fd.io/govpp.git/api"
+)
+
+// RPCService defines RPC service tracedump.
+type RPCService interface {
+       TraceCapturePackets(ctx context.Context, in *TraceCapturePackets) (*TraceCapturePacketsReply, error)
+       TraceClearCapture(ctx context.Context, in *TraceClearCapture) (*TraceClearCaptureReply, error)
+       TraceDump(ctx context.Context, in *TraceDump) (RPCService_TraceDumpClient, error)
+       TraceSetFilters(ctx context.Context, in *TraceSetFilters) (*TraceSetFiltersReply, error)
+}
+
+type serviceClient struct {
+       conn api.Connection
+}
+
+func NewServiceClient(conn api.Connection) RPCService {
+       return &serviceClient{conn}
+}
+
+func (c *serviceClient) TraceCapturePackets(ctx context.Context, in *TraceCapturePackets) (*TraceCapturePacketsReply, error) {
+       out := new(TraceCapturePacketsReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) TraceClearCapture(ctx context.Context, in *TraceClearCapture) (*TraceClearCaptureReply, error) {
+       out := new(TraceClearCaptureReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) TraceDump(ctx context.Context, in *TraceDump) (RPCService_TraceDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_TraceDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_TraceDumpClient interface {
+       Recv() (*TraceDetails, error)
+       api.Stream
+}
+
+type serviceClient_TraceDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_TraceDumpClient) Recv() (*TraceDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *TraceDetails:
+               return m, nil
+       case *TraceDumpReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) TraceSetFilters(ctx context.Context, in *TraceSetFilters) (*TraceSetFiltersReply, error) {
+       out := new(TraceSetFiltersReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
index 3fff34c..5c009e7 100644 (file)
@@ -1,13 +1,14 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/tunnel_types.api.json
 
 // Package tunnel_types contains generated bindings for API file tunnel_types.api.
 //
 // Contents:
-//   2 enums
+//   3 enums
+//   1 struct
 //
 package tunnel_types
 
@@ -15,6 +16,8 @@ import (
        "strconv"
 
        api "git.fd.io/govpp.git/api"
+       interface_types "git.fd.io/govpp.git/binapi/interface_types"
+       ip_types "git.fd.io/govpp.git/binapi/ip_types"
 )
 
 // This is a compile-time assertion to ensure that this generated file
@@ -27,30 +30,39 @@ const _ = api.GoVppAPIPackageIsVersion2
 type TunnelEncapDecapFlags uint8
 
 const (
-       TUNNEL_API_ENCAP_DECAP_FLAG_NONE            TunnelEncapDecapFlags = 0
-       TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_DF   TunnelEncapDecapFlags = 1
-       TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_SET_DF    TunnelEncapDecapFlags = 2
-       TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_DSCP TunnelEncapDecapFlags = 4
-       TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_ECN  TunnelEncapDecapFlags = 8
-       TUNNEL_API_ENCAP_DECAP_FLAG_DECAP_COPY_ECN  TunnelEncapDecapFlags = 16
+       TUNNEL_API_ENCAP_DECAP_FLAG_NONE                  TunnelEncapDecapFlags = 0
+       TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_DF         TunnelEncapDecapFlags = 1
+       TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_SET_DF          TunnelEncapDecapFlags = 2
+       TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_DSCP       TunnelEncapDecapFlags = 4
+       TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_ECN        TunnelEncapDecapFlags = 8
+       TUNNEL_API_ENCAP_DECAP_FLAG_DECAP_COPY_ECN        TunnelEncapDecapFlags = 16
+       TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_INNER_HASH      TunnelEncapDecapFlags = 32
+       TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_HOP_LIMIT  TunnelEncapDecapFlags = 64
+       TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_FLOW_LABEL TunnelEncapDecapFlags = 128
 )
 
 var (
        TunnelEncapDecapFlags_name = map[uint8]string{
-               0:  "TUNNEL_API_ENCAP_DECAP_FLAG_NONE",
-               1:  "TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_DF",
-               2:  "TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_SET_DF",
-               4:  "TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_DSCP",
-               8:  "TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_ECN",
-               16: "TUNNEL_API_ENCAP_DECAP_FLAG_DECAP_COPY_ECN",
+               0:   "TUNNEL_API_ENCAP_DECAP_FLAG_NONE",
+               1:   "TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_DF",
+               2:   "TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_SET_DF",
+               4:   "TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_DSCP",
+               8:   "TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_ECN",
+               16:  "TUNNEL_API_ENCAP_DECAP_FLAG_DECAP_COPY_ECN",
+               32:  "TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_INNER_HASH",
+               64:  "TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_HOP_LIMIT",
+               128: "TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_FLOW_LABEL",
        }
        TunnelEncapDecapFlags_value = map[string]uint8{
-               "TUNNEL_API_ENCAP_DECAP_FLAG_NONE":            0,
-               "TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_DF":   1,
-               "TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_SET_DF":    2,
-               "TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_DSCP": 4,
-               "TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_ECN":  8,
-               "TUNNEL_API_ENCAP_DECAP_FLAG_DECAP_COPY_ECN":  16,
+               "TUNNEL_API_ENCAP_DECAP_FLAG_NONE":                  0,
+               "TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_DF":         1,
+               "TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_SET_DF":          2,
+               "TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_DSCP":       4,
+               "TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_ECN":        8,
+               "TUNNEL_API_ENCAP_DECAP_FLAG_DECAP_COPY_ECN":        16,
+               "TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_INNER_HASH":      32,
+               "TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_HOP_LIMIT":  64,
+               "TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_FLOW_LABEL": 128,
        }
 )
 
@@ -107,3 +119,60 @@ func (x TunnelMode) String() string {
        }
        return "TunnelMode(" + strconv.Itoa(int(x)) + ")"
 }
+
+// TunnelFlags defines enum 'tunnel_flags'.
+type TunnelFlags uint8
+
+const (
+       TUNNEL_API_FLAG_TRACK_MTU TunnelFlags = 1
+)
+
+var (
+       TunnelFlags_name = map[uint8]string{
+               1: "TUNNEL_API_FLAG_TRACK_MTU",
+       }
+       TunnelFlags_value = map[string]uint8{
+               "TUNNEL_API_FLAG_TRACK_MTU": 1,
+       }
+)
+
+func (x TunnelFlags) String() string {
+       s, ok := TunnelFlags_name[uint8(x)]
+       if ok {
+               return s
+       }
+       str := func(n uint8) string {
+               s, ok := TunnelFlags_name[uint8(n)]
+               if ok {
+                       return s
+               }
+               return "TunnelFlags(" + strconv.Itoa(int(n)) + ")"
+       }
+       for i := uint8(0); i <= 8; i++ {
+               val := uint8(x)
+               if val&(1<<i) != 0 {
+                       if s != "" {
+                               s += "|"
+                       }
+                       s += str(1 << i)
+               }
+       }
+       if s == "" {
+               return str(uint8(x))
+       }
+       return s
+}
+
+// Tunnel defines type 'tunnel'.
+type Tunnel struct {
+       Instance        uint32                         `binapi:"u32,name=instance" json:"instance,omitempty"`
+       Src             ip_types.Address               `binapi:"address,name=src" json:"src,omitempty"`
+       Dst             ip_types.Address               `binapi:"address,name=dst" json:"dst,omitempty"`
+       SwIfIndex       interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       TableID         uint32                         `binapi:"u32,name=table_id" json:"table_id,omitempty"`
+       EncapDecapFlags TunnelEncapDecapFlags          `binapi:"tunnel_encap_decap_flags,name=encap_decap_flags" json:"encap_decap_flags,omitempty"`
+       Mode            TunnelMode                     `binapi:"tunnel_mode,name=mode" json:"mode,omitempty"`
+       Flags           TunnelFlags                    `binapi:"tunnel_flags,name=flags" json:"flags,omitempty"`
+       Dscp            ip_types.IPDscp                `binapi:"ip_dscp,name=dscp" json:"dscp,omitempty"`
+       HopLimit        uint8                          `binapi:"u8,name=hop_limit" json:"hop_limit,omitempty"`
+}
index bb2924c..bc4fd87 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/udp.api.json
 
 // Package udp contains generated bindings for API file udp.api.
@@ -27,7 +27,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "udp"
        APIVersion = "1.1.0"
-       VersionCrc = 0xb827bf4f
+       VersionCrc = 0x65e4a4b3
 )
 
 // UDPEncap defines type 'udp_encap'.
@@ -47,7 +47,7 @@ type UDPEncapAdd struct {
 
 func (m *UDPEncapAdd) Reset()               { *m = UDPEncapAdd{} }
 func (*UDPEncapAdd) GetMessageName() string { return "udp_encap_add" }
-func (*UDPEncapAdd) GetCrcString() string   { return "61d5fc48" }
+func (*UDPEncapAdd) GetCrcString() string   { return "f74a60b1" }
 func (*UDPEncapAdd) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -204,7 +204,7 @@ type UDPEncapDetails struct {
 
 func (m *UDPEncapDetails) Reset()               { *m = UDPEncapDetails{} }
 func (*UDPEncapDetails) GetMessageName() string { return "udp_encap_details" }
-func (*UDPEncapDetails) GetCrcString() string   { return "87c82821" }
+func (*UDPEncapDetails) GetCrcString() string   { return "8cfb9c76" }
 func (*UDPEncapDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -280,11 +280,11 @@ func (m *UDPEncapDump) Unmarshal(b []byte) error {
 
 func init() { file_udp_binapi_init() }
 func file_udp_binapi_init() {
-       api.RegisterMessage((*UDPEncapAdd)(nil), "udp_encap_add_61d5fc48")
+       api.RegisterMessage((*UDPEncapAdd)(nil), "udp_encap_add_f74a60b1")
        api.RegisterMessage((*UDPEncapAddReply)(nil), "udp_encap_add_reply_e2fc8294")
        api.RegisterMessage((*UDPEncapDel)(nil), "udp_encap_del_3a91bde5")
        api.RegisterMessage((*UDPEncapDelReply)(nil), "udp_encap_del_reply_e8d4e804")
-       api.RegisterMessage((*UDPEncapDetails)(nil), "udp_encap_details_87c82821")
+       api.RegisterMessage((*UDPEncapDetails)(nil), "udp_encap_details_8cfb9c76")
        api.RegisterMessage((*UDPEncapDump)(nil), "udp_encap_dump_51077d14")
 }
 
index a568fce..9d014df 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/udp_ping.api.json
 
 // Package udp_ping contains generated bindings for API file udp_ping.api.
@@ -26,7 +26,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "udp_ping"
        APIVersion = "3.0.0"
-       VersionCrc = 0x3b2c67de
+       VersionCrc = 0x16d961db
 )
 
 // UDPPingAddDel defines message 'udp_ping_add_del'.
@@ -45,7 +45,7 @@ type UDPPingAddDel struct {
 
 func (m *UDPPingAddDel) Reset()               { *m = UDPPingAddDel{} }
 func (*UDPPingAddDel) GetMessageName() string { return "udp_ping_add_del" }
-func (*UDPPingAddDel) GetCrcString() string   { return "c692b188" }
+func (*UDPPingAddDel) GetCrcString() string   { return "fa2628fc" }
 func (*UDPPingAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -206,7 +206,7 @@ func (m *UDPPingExportReply) Unmarshal(b []byte) error {
 
 func init() { file_udp_ping_binapi_init() }
 func file_udp_ping_binapi_init() {
-       api.RegisterMessage((*UDPPingAddDel)(nil), "udp_ping_add_del_c692b188")
+       api.RegisterMessage((*UDPPingAddDel)(nil), "udp_ping_add_del_fa2628fc")
        api.RegisterMessage((*UDPPingAddDelReply)(nil), "udp_ping_add_del_reply_e8d4e804")
        api.RegisterMessage((*UDPPingExport)(nil), "udp_ping_export_b3e225d2")
        api.RegisterMessage((*UDPPingExportReply)(nil), "udp_ping_export_reply_e8d4e804")
index 62a335c..fffe5b5 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/urpf.api.json
 
 // Package urpf contains generated bindings for API file urpf.api.
@@ -31,7 +31,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "urpf"
        APIVersion = "1.0.0"
-       VersionCrc = 0x3e2ebd8a
+       VersionCrc = 0xb2bfd2c4
 )
 
 // UrpfMode defines enum 'urpf_mode'.
index f5fbdd5..79e4525 100644 (file)
@@ -1,13 +1,13 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/vhost_user.api.json
 
 // Package vhost_user contains generated bindings for API file vhost_user.api.
 //
 // Contents:
-//   8 messages
+//  12 messages
 //
 package vhost_user
 
@@ -27,11 +27,12 @@ const _ = api.GoVppAPIPackageIsVersion2
 
 const (
        APIFile    = "vhost_user"
-       APIVersion = "4.0.1"
-       VersionCrc = 0x3df14dfe
+       APIVersion = "4.1.1"
+       VersionCrc = 0xd49ae8cd
 )
 
 // CreateVhostUserIf defines message 'create_vhost_user_if'.
+// Deprecated: the message will be removed in the future versions
 type CreateVhostUserIf struct {
        IsServer            bool                      `binapi:"bool,name=is_server" json:"is_server,omitempty"`
        SockFilename        string                    `binapi:"string[256],name=sock_filename" json:"sock_filename,omitempty"`
@@ -105,6 +106,7 @@ func (m *CreateVhostUserIf) Unmarshal(b []byte) error {
 }
 
 // CreateVhostUserIfReply defines message 'create_vhost_user_if_reply'.
+// Deprecated: the message will be removed in the future versions
 type CreateVhostUserIfReply struct {
        Retval    int32                          `binapi:"i32,name=retval" json:"retval,omitempty"`
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
@@ -141,6 +143,120 @@ func (m *CreateVhostUserIfReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// CreateVhostUserIfV2 defines message 'create_vhost_user_if_v2'.
+type CreateVhostUserIfV2 struct {
+       IsServer            bool                      `binapi:"bool,name=is_server" json:"is_server,omitempty"`
+       SockFilename        string                    `binapi:"string[256],name=sock_filename" json:"sock_filename,omitempty"`
+       Renumber            bool                      `binapi:"bool,name=renumber" json:"renumber,omitempty"`
+       DisableMrgRxbuf     bool                      `binapi:"bool,name=disable_mrg_rxbuf" json:"disable_mrg_rxbuf,omitempty"`
+       DisableIndirectDesc bool                      `binapi:"bool,name=disable_indirect_desc" json:"disable_indirect_desc,omitempty"`
+       EnableGso           bool                      `binapi:"bool,name=enable_gso" json:"enable_gso,omitempty"`
+       EnablePacked        bool                      `binapi:"bool,name=enable_packed" json:"enable_packed,omitempty"`
+       EnableEventIdx      bool                      `binapi:"bool,name=enable_event_idx" json:"enable_event_idx,omitempty"`
+       CustomDevInstance   uint32                    `binapi:"u32,name=custom_dev_instance" json:"custom_dev_instance,omitempty"`
+       UseCustomMac        bool                      `binapi:"bool,name=use_custom_mac" json:"use_custom_mac,omitempty"`
+       MacAddress          ethernet_types.MacAddress `binapi:"mac_address,name=mac_address" json:"mac_address,omitempty"`
+       Tag                 string                    `binapi:"string[64],name=tag" json:"tag,omitempty"`
+}
+
+func (m *CreateVhostUserIfV2) Reset()               { *m = CreateVhostUserIfV2{} }
+func (*CreateVhostUserIfV2) GetMessageName() string { return "create_vhost_user_if_v2" }
+func (*CreateVhostUserIfV2) GetCrcString() string   { return "dba1cc1d" }
+func (*CreateVhostUserIfV2) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *CreateVhostUserIfV2) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1     // m.IsServer
+       size += 256   // m.SockFilename
+       size += 1     // m.Renumber
+       size += 1     // m.DisableMrgRxbuf
+       size += 1     // m.DisableIndirectDesc
+       size += 1     // m.EnableGso
+       size += 1     // m.EnablePacked
+       size += 1     // m.EnableEventIdx
+       size += 4     // m.CustomDevInstance
+       size += 1     // m.UseCustomMac
+       size += 1 * 6 // m.MacAddress
+       size += 64    // m.Tag
+       return size
+}
+func (m *CreateVhostUserIfV2) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsServer)
+       buf.EncodeString(m.SockFilename, 256)
+       buf.EncodeBool(m.Renumber)
+       buf.EncodeBool(m.DisableMrgRxbuf)
+       buf.EncodeBool(m.DisableIndirectDesc)
+       buf.EncodeBool(m.EnableGso)
+       buf.EncodeBool(m.EnablePacked)
+       buf.EncodeBool(m.EnableEventIdx)
+       buf.EncodeUint32(m.CustomDevInstance)
+       buf.EncodeBool(m.UseCustomMac)
+       buf.EncodeBytes(m.MacAddress[:], 6)
+       buf.EncodeString(m.Tag, 64)
+       return buf.Bytes(), nil
+}
+func (m *CreateVhostUserIfV2) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsServer = buf.DecodeBool()
+       m.SockFilename = buf.DecodeString(256)
+       m.Renumber = buf.DecodeBool()
+       m.DisableMrgRxbuf = buf.DecodeBool()
+       m.DisableIndirectDesc = buf.DecodeBool()
+       m.EnableGso = buf.DecodeBool()
+       m.EnablePacked = buf.DecodeBool()
+       m.EnableEventIdx = buf.DecodeBool()
+       m.CustomDevInstance = buf.DecodeUint32()
+       m.UseCustomMac = buf.DecodeBool()
+       copy(m.MacAddress[:], buf.DecodeBytes(6))
+       m.Tag = buf.DecodeString(64)
+       return nil
+}
+
+// CreateVhostUserIfV2Reply defines message 'create_vhost_user_if_v2_reply'.
+type CreateVhostUserIfV2Reply struct {
+       Retval    int32                          `binapi:"i32,name=retval" json:"retval,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *CreateVhostUserIfV2Reply) Reset()               { *m = CreateVhostUserIfV2Reply{} }
+func (*CreateVhostUserIfV2Reply) GetMessageName() string { return "create_vhost_user_if_v2_reply" }
+func (*CreateVhostUserIfV2Reply) GetCrcString() string   { return "5383d31f" }
+func (*CreateVhostUserIfV2Reply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *CreateVhostUserIfV2Reply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *CreateVhostUserIfV2Reply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *CreateVhostUserIfV2Reply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
 // DeleteVhostUserIf defines message 'delete_vhost_user_if'.
 type DeleteVhostUserIf struct {
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
@@ -208,6 +324,7 @@ func (m *DeleteVhostUserIfReply) Unmarshal(b []byte) error {
 }
 
 // ModifyVhostUserIf defines message 'modify_vhost_user_if'.
+// Deprecated: the message will be removed in the future versions
 type ModifyVhostUserIf struct {
        SwIfIndex         interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
        IsServer          bool                           `binapi:"bool,name=is_server" json:"is_server,omitempty"`
@@ -265,6 +382,7 @@ func (m *ModifyVhostUserIf) Unmarshal(b []byte) error {
 }
 
 // ModifyVhostUserIfReply defines message 'modify_vhost_user_if_reply'.
+// Deprecated: the message will be removed in the future versions
 type ModifyVhostUserIfReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -297,6 +415,100 @@ func (m *ModifyVhostUserIfReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// ModifyVhostUserIfV2 defines message 'modify_vhost_user_if_v2'.
+type ModifyVhostUserIfV2 struct {
+       SwIfIndex         interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       IsServer          bool                           `binapi:"bool,name=is_server" json:"is_server,omitempty"`
+       SockFilename      string                         `binapi:"string[256],name=sock_filename" json:"sock_filename,omitempty"`
+       Renumber          bool                           `binapi:"bool,name=renumber" json:"renumber,omitempty"`
+       EnableGso         bool                           `binapi:"bool,name=enable_gso" json:"enable_gso,omitempty"`
+       EnablePacked      bool                           `binapi:"bool,name=enable_packed" json:"enable_packed,omitempty"`
+       EnableEventIdx    bool                           `binapi:"bool,name=enable_event_idx" json:"enable_event_idx,omitempty"`
+       CustomDevInstance uint32                         `binapi:"u32,name=custom_dev_instance" json:"custom_dev_instance,omitempty"`
+}
+
+func (m *ModifyVhostUserIfV2) Reset()               { *m = ModifyVhostUserIfV2{} }
+func (*ModifyVhostUserIfV2) GetMessageName() string { return "modify_vhost_user_if_v2" }
+func (*ModifyVhostUserIfV2) GetCrcString() string   { return "b2483771" }
+func (*ModifyVhostUserIfV2) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *ModifyVhostUserIfV2) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4   // m.SwIfIndex
+       size += 1   // m.IsServer
+       size += 256 // m.SockFilename
+       size += 1   // m.Renumber
+       size += 1   // m.EnableGso
+       size += 1   // m.EnablePacked
+       size += 1   // m.EnableEventIdx
+       size += 4   // m.CustomDevInstance
+       return size
+}
+func (m *ModifyVhostUserIfV2) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeBool(m.IsServer)
+       buf.EncodeString(m.SockFilename, 256)
+       buf.EncodeBool(m.Renumber)
+       buf.EncodeBool(m.EnableGso)
+       buf.EncodeBool(m.EnablePacked)
+       buf.EncodeBool(m.EnableEventIdx)
+       buf.EncodeUint32(m.CustomDevInstance)
+       return buf.Bytes(), nil
+}
+func (m *ModifyVhostUserIfV2) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.IsServer = buf.DecodeBool()
+       m.SockFilename = buf.DecodeString(256)
+       m.Renumber = buf.DecodeBool()
+       m.EnableGso = buf.DecodeBool()
+       m.EnablePacked = buf.DecodeBool()
+       m.EnableEventIdx = buf.DecodeBool()
+       m.CustomDevInstance = buf.DecodeUint32()
+       return nil
+}
+
+// ModifyVhostUserIfV2Reply defines message 'modify_vhost_user_if_v2_reply'.
+type ModifyVhostUserIfV2Reply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *ModifyVhostUserIfV2Reply) Reset()               { *m = ModifyVhostUserIfV2Reply{} }
+func (*ModifyVhostUserIfV2Reply) GetMessageName() string { return "modify_vhost_user_if_v2_reply" }
+func (*ModifyVhostUserIfV2Reply) GetCrcString() string   { return "e8d4e804" }
+func (*ModifyVhostUserIfV2Reply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *ModifyVhostUserIfV2Reply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *ModifyVhostUserIfV2Reply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *ModifyVhostUserIfV2Reply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
 // SwInterfaceVhostUserDetails defines message 'sw_interface_vhost_user_details'.
 type SwInterfaceVhostUserDetails struct {
        SwIfIndex       interface_types.InterfaceIndex        `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
@@ -312,7 +524,7 @@ type SwInterfaceVhostUserDetails struct {
 
 func (m *SwInterfaceVhostUserDetails) Reset()               { *m = SwInterfaceVhostUserDetails{} }
 func (*SwInterfaceVhostUserDetails) GetMessageName() string { return "sw_interface_vhost_user_details" }
-func (*SwInterfaceVhostUserDetails) GetCrcString() string   { return "98530df1" }
+func (*SwInterfaceVhostUserDetails) GetCrcString() string   { return "0cee1e53" }
 func (*SwInterfaceVhostUserDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -399,11 +611,15 @@ func init() { file_vhost_user_binapi_init() }
 func file_vhost_user_binapi_init() {
        api.RegisterMessage((*CreateVhostUserIf)(nil), "create_vhost_user_if_c785c6fc")
        api.RegisterMessage((*CreateVhostUserIfReply)(nil), "create_vhost_user_if_reply_5383d31f")
+       api.RegisterMessage((*CreateVhostUserIfV2)(nil), "create_vhost_user_if_v2_dba1cc1d")
+       api.RegisterMessage((*CreateVhostUserIfV2Reply)(nil), "create_vhost_user_if_v2_reply_5383d31f")
        api.RegisterMessage((*DeleteVhostUserIf)(nil), "delete_vhost_user_if_f9e6675e")
        api.RegisterMessage((*DeleteVhostUserIfReply)(nil), "delete_vhost_user_if_reply_e8d4e804")
        api.RegisterMessage((*ModifyVhostUserIf)(nil), "modify_vhost_user_if_0e71d40b")
        api.RegisterMessage((*ModifyVhostUserIfReply)(nil), "modify_vhost_user_if_reply_e8d4e804")
-       api.RegisterMessage((*SwInterfaceVhostUserDetails)(nil), "sw_interface_vhost_user_details_98530df1")
+       api.RegisterMessage((*ModifyVhostUserIfV2)(nil), "modify_vhost_user_if_v2_b2483771")
+       api.RegisterMessage((*ModifyVhostUserIfV2Reply)(nil), "modify_vhost_user_if_v2_reply_e8d4e804")
+       api.RegisterMessage((*SwInterfaceVhostUserDetails)(nil), "sw_interface_vhost_user_details_0cee1e53")
        api.RegisterMessage((*SwInterfaceVhostUserDump)(nil), "sw_interface_vhost_user_dump_f9e6675e")
 }
 
@@ -412,10 +628,14 @@ func AllMessages() []api.Message {
        return []api.Message{
                (*CreateVhostUserIf)(nil),
                (*CreateVhostUserIfReply)(nil),
+               (*CreateVhostUserIfV2)(nil),
+               (*CreateVhostUserIfV2Reply)(nil),
                (*DeleteVhostUserIf)(nil),
                (*DeleteVhostUserIfReply)(nil),
                (*ModifyVhostUserIf)(nil),
                (*ModifyVhostUserIfReply)(nil),
+               (*ModifyVhostUserIfV2)(nil),
+               (*ModifyVhostUserIfV2Reply)(nil),
                (*SwInterfaceVhostUserDetails)(nil),
                (*SwInterfaceVhostUserDump)(nil),
        }
index 445e2eb..5c7531f 100644 (file)
@@ -14,8 +14,10 @@ import (
 // RPCService defines RPC service vhost_user.
 type RPCService interface {
        CreateVhostUserIf(ctx context.Context, in *CreateVhostUserIf) (*CreateVhostUserIfReply, error)
+       CreateVhostUserIfV2(ctx context.Context, in *CreateVhostUserIfV2) (*CreateVhostUserIfV2Reply, error)
        DeleteVhostUserIf(ctx context.Context, in *DeleteVhostUserIf) (*DeleteVhostUserIfReply, error)
        ModifyVhostUserIf(ctx context.Context, in *ModifyVhostUserIf) (*ModifyVhostUserIfReply, error)
+       ModifyVhostUserIfV2(ctx context.Context, in *ModifyVhostUserIfV2) (*ModifyVhostUserIfV2Reply, error)
        SwInterfaceVhostUserDump(ctx context.Context, in *SwInterfaceVhostUserDump) (RPCService_SwInterfaceVhostUserDumpClient, error)
 }
 
@@ -36,6 +38,15 @@ func (c *serviceClient) CreateVhostUserIf(ctx context.Context, in *CreateVhostUs
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) CreateVhostUserIfV2(ctx context.Context, in *CreateVhostUserIfV2) (*CreateVhostUserIfV2Reply, error) {
+       out := new(CreateVhostUserIfV2Reply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) DeleteVhostUserIf(ctx context.Context, in *DeleteVhostUserIf) (*DeleteVhostUserIfReply, error) {
        out := new(DeleteVhostUserIfReply)
        err := c.conn.Invoke(ctx, in, out)
@@ -54,6 +65,15 @@ func (c *serviceClient) ModifyVhostUserIf(ctx context.Context, in *ModifyVhostUs
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) ModifyVhostUserIfV2(ctx context.Context, in *ModifyVhostUserIfV2) (*ModifyVhostUserIfV2Reply, error) {
+       out := new(ModifyVhostUserIfV2Reply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) SwInterfaceVhostUserDump(ctx context.Context, in *SwInterfaceVhostUserDump) (RPCService_SwInterfaceVhostUserDumpClient, error) {
        stream, err := c.conn.NewStream(ctx)
        if err != nil {
index 6234a17..3124aef 100644 (file)
@@ -1,17 +1,20 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/virtio.api.json
 
 // Package virtio contains generated bindings for API file virtio.api.
 //
 // Contents:
-//   6 messages
+//   1 enum
+//   8 messages
 //
 package virtio
 
 import (
+       "strconv"
+
        api "git.fd.io/govpp.git/api"
        ethernet_types "git.fd.io/govpp.git/binapi/ethernet_types"
        interface_types "git.fd.io/govpp.git/binapi/interface_types"
@@ -27,10 +30,68 @@ const _ = api.GoVppAPIPackageIsVersion2
 
 const (
        APIFile    = "virtio"
-       APIVersion = "2.0.0"
-       VersionCrc = 0x601b1fdc
+       APIVersion = "3.0.0"
+       VersionCrc = 0xa507d784
+)
+
+// VirtioFlags defines enum 'virtio_flags'.
+type VirtioFlags uint32
+
+const (
+       VIRTIO_API_FLAG_GSO          VirtioFlags = 1
+       VIRTIO_API_FLAG_CSUM_OFFLOAD VirtioFlags = 2
+       VIRTIO_API_FLAG_GRO_COALESCE VirtioFlags = 4
+       VIRTIO_API_FLAG_PACKED       VirtioFlags = 8
+       VIRTIO_API_FLAG_IN_ORDER     VirtioFlags = 16
+       VIRTIO_API_FLAG_BUFFERING    VirtioFlags = 32
 )
 
+var (
+       VirtioFlags_name = map[uint32]string{
+               1:  "VIRTIO_API_FLAG_GSO",
+               2:  "VIRTIO_API_FLAG_CSUM_OFFLOAD",
+               4:  "VIRTIO_API_FLAG_GRO_COALESCE",
+               8:  "VIRTIO_API_FLAG_PACKED",
+               16: "VIRTIO_API_FLAG_IN_ORDER",
+               32: "VIRTIO_API_FLAG_BUFFERING",
+       }
+       VirtioFlags_value = map[string]uint32{
+               "VIRTIO_API_FLAG_GSO":          1,
+               "VIRTIO_API_FLAG_CSUM_OFFLOAD": 2,
+               "VIRTIO_API_FLAG_GRO_COALESCE": 4,
+               "VIRTIO_API_FLAG_PACKED":       8,
+               "VIRTIO_API_FLAG_IN_ORDER":     16,
+               "VIRTIO_API_FLAG_BUFFERING":    32,
+       }
+)
+
+func (x VirtioFlags) String() string {
+       s, ok := VirtioFlags_name[uint32(x)]
+       if ok {
+               return s
+       }
+       str := func(n uint32) string {
+               s, ok := VirtioFlags_name[uint32(n)]
+               if ok {
+                       return s
+               }
+               return "VirtioFlags(" + strconv.Itoa(int(n)) + ")"
+       }
+       for i := uint32(0); i <= 32; i++ {
+               val := uint32(x)
+               if val&(1<<i) != 0 {
+                       if s != "" {
+                               s += "|"
+                       }
+                       s += str(1 << i)
+               }
+       }
+       if s == "" {
+               return str(uint32(x))
+       }
+       return s
+}
+
 // SwInterfaceVirtioPciDetails defines message 'sw_interface_virtio_pci_details'.
 type SwInterfaceVirtioPciDetails struct {
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
@@ -43,7 +104,7 @@ type SwInterfaceVirtioPciDetails struct {
 
 func (m *SwInterfaceVirtioPciDetails) Reset()               { *m = SwInterfaceVirtioPciDetails{} }
 func (*SwInterfaceVirtioPciDetails) GetMessageName() string { return "sw_interface_virtio_pci_details" }
-func (*SwInterfaceVirtioPciDetails) GetCrcString() string   { return "16187f3a" }
+func (*SwInterfaceVirtioPciDetails) GetCrcString() string   { return "6ca9c167" }
 func (*SwInterfaceVirtioPciDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -121,6 +182,7 @@ func (m *SwInterfaceVirtioPciDump) Unmarshal(b []byte) error {
 }
 
 // VirtioPciCreate defines message 'virtio_pci_create'.
+// Deprecated: the message will be removed in the future versions
 type VirtioPciCreate struct {
        PciAddr                pci_types.PciAddress      `binapi:"pci_address,name=pci_addr" json:"pci_addr,omitempty"`
        UseRandomMac           bool                      `binapi:"bool,name=use_random_mac" json:"use_random_mac,omitempty"`
@@ -132,7 +194,7 @@ type VirtioPciCreate struct {
 
 func (m *VirtioPciCreate) Reset()               { *m = VirtioPciCreate{} }
 func (*VirtioPciCreate) GetMessageName() string { return "virtio_pci_create" }
-func (*VirtioPciCreate) GetCrcString() string   { return "a9f1370c" }
+func (*VirtioPciCreate) GetCrcString() string   { return "1944f8db" }
 func (*VirtioPciCreate) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -183,6 +245,7 @@ func (m *VirtioPciCreate) Unmarshal(b []byte) error {
 }
 
 // VirtioPciCreateReply defines message 'virtio_pci_create_reply'.
+// Deprecated: the message will be removed in the future versions
 type VirtioPciCreateReply struct {
        Retval    int32                          `binapi:"i32,name=retval" json:"retval,omitempty"`
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
@@ -219,6 +282,101 @@ func (m *VirtioPciCreateReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// VirtioPciCreateV2 defines message 'virtio_pci_create_v2'.
+type VirtioPciCreateV2 struct {
+       PciAddr      pci_types.PciAddress      `binapi:"pci_address,name=pci_addr" json:"pci_addr,omitempty"`
+       UseRandomMac bool                      `binapi:"bool,name=use_random_mac" json:"use_random_mac,omitempty"`
+       MacAddress   ethernet_types.MacAddress `binapi:"mac_address,name=mac_address" json:"mac_address,omitempty"`
+       VirtioFlags  VirtioFlags               `binapi:"virtio_flags,name=virtio_flags" json:"virtio_flags,omitempty"`
+       Features     uint64                    `binapi:"u64,name=features" json:"features,omitempty"`
+}
+
+func (m *VirtioPciCreateV2) Reset()               { *m = VirtioPciCreateV2{} }
+func (*VirtioPciCreateV2) GetMessageName() string { return "virtio_pci_create_v2" }
+func (*VirtioPciCreateV2) GetCrcString() string   { return "5d096e1a" }
+func (*VirtioPciCreateV2) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *VirtioPciCreateV2) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 2     // m.PciAddr.Domain
+       size += 1     // m.PciAddr.Bus
+       size += 1     // m.PciAddr.Slot
+       size += 1     // m.PciAddr.Function
+       size += 1     // m.UseRandomMac
+       size += 1 * 6 // m.MacAddress
+       size += 4     // m.VirtioFlags
+       size += 8     // m.Features
+       return size
+}
+func (m *VirtioPciCreateV2) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint16(m.PciAddr.Domain)
+       buf.EncodeUint8(m.PciAddr.Bus)
+       buf.EncodeUint8(m.PciAddr.Slot)
+       buf.EncodeUint8(m.PciAddr.Function)
+       buf.EncodeBool(m.UseRandomMac)
+       buf.EncodeBytes(m.MacAddress[:], 6)
+       buf.EncodeUint32(uint32(m.VirtioFlags))
+       buf.EncodeUint64(m.Features)
+       return buf.Bytes(), nil
+}
+func (m *VirtioPciCreateV2) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.PciAddr.Domain = buf.DecodeUint16()
+       m.PciAddr.Bus = buf.DecodeUint8()
+       m.PciAddr.Slot = buf.DecodeUint8()
+       m.PciAddr.Function = buf.DecodeUint8()
+       m.UseRandomMac = buf.DecodeBool()
+       copy(m.MacAddress[:], buf.DecodeBytes(6))
+       m.VirtioFlags = VirtioFlags(buf.DecodeUint32())
+       m.Features = buf.DecodeUint64()
+       return nil
+}
+
+// VirtioPciCreateV2Reply defines message 'virtio_pci_create_v2_reply'.
+type VirtioPciCreateV2Reply struct {
+       Retval    int32                          `binapi:"i32,name=retval" json:"retval,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *VirtioPciCreateV2Reply) Reset()               { *m = VirtioPciCreateV2Reply{} }
+func (*VirtioPciCreateV2Reply) GetMessageName() string { return "virtio_pci_create_v2_reply" }
+func (*VirtioPciCreateV2Reply) GetCrcString() string   { return "5383d31f" }
+func (*VirtioPciCreateV2Reply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *VirtioPciCreateV2Reply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *VirtioPciCreateV2Reply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *VirtioPciCreateV2Reply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
 // VirtioPciDelete defines message 'virtio_pci_delete'.
 type VirtioPciDelete struct {
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
@@ -287,10 +445,12 @@ func (m *VirtioPciDeleteReply) Unmarshal(b []byte) error {
 
 func init() { file_virtio_binapi_init() }
 func file_virtio_binapi_init() {
-       api.RegisterMessage((*SwInterfaceVirtioPciDetails)(nil), "sw_interface_virtio_pci_details_16187f3a")
+       api.RegisterMessage((*SwInterfaceVirtioPciDetails)(nil), "sw_interface_virtio_pci_details_6ca9c167")
        api.RegisterMessage((*SwInterfaceVirtioPciDump)(nil), "sw_interface_virtio_pci_dump_51077d14")
-       api.RegisterMessage((*VirtioPciCreate)(nil), "virtio_pci_create_a9f1370c")
+       api.RegisterMessage((*VirtioPciCreate)(nil), "virtio_pci_create_1944f8db")
        api.RegisterMessage((*VirtioPciCreateReply)(nil), "virtio_pci_create_reply_5383d31f")
+       api.RegisterMessage((*VirtioPciCreateV2)(nil), "virtio_pci_create_v2_5d096e1a")
+       api.RegisterMessage((*VirtioPciCreateV2Reply)(nil), "virtio_pci_create_v2_reply_5383d31f")
        api.RegisterMessage((*VirtioPciDelete)(nil), "virtio_pci_delete_f9e6675e")
        api.RegisterMessage((*VirtioPciDeleteReply)(nil), "virtio_pci_delete_reply_e8d4e804")
 }
@@ -302,6 +462,8 @@ func AllMessages() []api.Message {
                (*SwInterfaceVirtioPciDump)(nil),
                (*VirtioPciCreate)(nil),
                (*VirtioPciCreateReply)(nil),
+               (*VirtioPciCreateV2)(nil),
+               (*VirtioPciCreateV2Reply)(nil),
                (*VirtioPciDelete)(nil),
                (*VirtioPciDeleteReply)(nil),
        }
index 4ee8ff7..22716e1 100644 (file)
@@ -15,6 +15,7 @@ import (
 type RPCService interface {
        SwInterfaceVirtioPciDump(ctx context.Context, in *SwInterfaceVirtioPciDump) (RPCService_SwInterfaceVirtioPciDumpClient, error)
        VirtioPciCreate(ctx context.Context, in *VirtioPciCreate) (*VirtioPciCreateReply, error)
+       VirtioPciCreateV2(ctx context.Context, in *VirtioPciCreateV2) (*VirtioPciCreateV2Reply, error)
        VirtioPciDelete(ctx context.Context, in *VirtioPciDelete) (*VirtioPciDeleteReply, error)
 }
 
@@ -74,6 +75,15 @@ func (c *serviceClient) VirtioPciCreate(ctx context.Context, in *VirtioPciCreate
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) VirtioPciCreateV2(ctx context.Context, in *VirtioPciCreateV2) (*VirtioPciCreateV2Reply, error) {
+       out := new(VirtioPciCreateV2Reply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) VirtioPciDelete(ctx context.Context, in *VirtioPciDelete) (*VirtioPciDeleteReply, error) {
        out := new(VirtioPciDeleteReply)
        err := c.conn.Invoke(ctx, in, out)
index 587d7c5..884f129 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/virtio_types.api.json
 
 // Package virtio_types contains generated bindings for API file virtio_types.api.
index 5aca3c9..0ddcb0d 100644 (file)
@@ -1,14 +1,14 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/vmxnet3.api.json
 
 // Package vmxnet3 contains generated bindings for API file vmxnet3.api.
 //
 // Contents:
 //   2 structs
-//   6 messages
+//   8 messages
 //
 package vmxnet3
 
@@ -27,8 +27,8 @@ const _ = api.GoVppAPIPackageIsVersion2
 
 const (
        APIFile    = "vmxnet3"
-       APIVersion = "1.1.0"
-       VersionCrc = 0x38928311
+       APIVersion = "1.2.0"
+       VersionCrc = 0x609454ea
 )
 
 // Vmxnet3RxList defines type 'vmxnet3_rx_list'.
@@ -48,6 +48,168 @@ type Vmxnet3TxList struct {
        TxConsume uint16 `binapi:"u16,name=tx_consume" json:"tx_consume,omitempty"`
 }
 
+// SwVmxnet3InterfaceDetails defines message 'sw_vmxnet3_interface_details'.
+type SwVmxnet3InterfaceDetails struct {
+       SwIfIndex   interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       IfName      string                         `binapi:"string[64],name=if_name" json:"if_name,omitempty"`
+       HwAddr      ethernet_types.MacAddress      `binapi:"mac_address,name=hw_addr" json:"hw_addr,omitempty"`
+       PciAddr     uint32                         `binapi:"u32,name=pci_addr" json:"pci_addr,omitempty"`
+       Version     uint8                          `binapi:"u8,name=version" json:"version,omitempty"`
+       AdminUpDown bool                           `binapi:"bool,name=admin_up_down" json:"admin_up_down,omitempty"`
+       RxCount     uint8                          `binapi:"u8,name=rx_count" json:"rx_count,omitempty"`
+       RxList      [16]Vmxnet3RxList              `binapi:"vmxnet3_rx_list[16],name=rx_list" json:"rx_list,omitempty"`
+       TxCount     uint8                          `binapi:"u8,name=tx_count" json:"tx_count,omitempty"`
+       TxList      [8]Vmxnet3TxList               `binapi:"vmxnet3_tx_list[8],name=tx_list" json:"tx_list,omitempty"`
+}
+
+func (m *SwVmxnet3InterfaceDetails) Reset()               { *m = SwVmxnet3InterfaceDetails{} }
+func (*SwVmxnet3InterfaceDetails) GetMessageName() string { return "sw_vmxnet3_interface_details" }
+func (*SwVmxnet3InterfaceDetails) GetCrcString() string   { return "6a1a5498" }
+func (*SwVmxnet3InterfaceDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *SwVmxnet3InterfaceDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4     // m.SwIfIndex
+       size += 64    // m.IfName
+       size += 1 * 6 // m.HwAddr
+       size += 4     // m.PciAddr
+       size += 1     // m.Version
+       size += 1     // m.AdminUpDown
+       size += 1     // m.RxCount
+       for j1 := 0; j1 < 16; j1++ {
+               size += 2     // m.RxList[j1].RxQsize
+               size += 2 * 2 // m.RxList[j1].RxFill
+               size += 2     // m.RxList[j1].RxNext
+               size += 2 * 2 // m.RxList[j1].RxProduce
+               size += 2 * 2 // m.RxList[j1].RxConsume
+       }
+       size += 1 // m.TxCount
+       for j1 := 0; j1 < 8; j1++ {
+               size += 2 // m.TxList[j1].TxQsize
+               size += 2 // m.TxList[j1].TxNext
+               size += 2 // m.TxList[j1].TxProduce
+               size += 2 // m.TxList[j1].TxConsume
+       }
+       return size
+}
+func (m *SwVmxnet3InterfaceDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeString(m.IfName, 64)
+       buf.EncodeBytes(m.HwAddr[:], 6)
+       buf.EncodeUint32(m.PciAddr)
+       buf.EncodeUint8(m.Version)
+       buf.EncodeBool(m.AdminUpDown)
+       buf.EncodeUint8(m.RxCount)
+       for j0 := 0; j0 < 16; j0++ {
+               buf.EncodeUint16(m.RxList[j0].RxQsize)
+               for i := 0; i < 2; i++ {
+                       var x uint16
+                       if i < len(m.RxList[j0].RxFill) {
+                               x = uint16(m.RxList[j0].RxFill[i])
+                       }
+                       buf.EncodeUint16(x)
+               }
+               buf.EncodeUint16(m.RxList[j0].RxNext)
+               for i := 0; i < 2; i++ {
+                       var x uint16
+                       if i < len(m.RxList[j0].RxProduce) {
+                               x = uint16(m.RxList[j0].RxProduce[i])
+                       }
+                       buf.EncodeUint16(x)
+               }
+               for i := 0; i < 2; i++ {
+                       var x uint16
+                       if i < len(m.RxList[j0].RxConsume) {
+                               x = uint16(m.RxList[j0].RxConsume[i])
+                       }
+                       buf.EncodeUint16(x)
+               }
+       }
+       buf.EncodeUint8(m.TxCount)
+       for j0 := 0; j0 < 8; j0++ {
+               buf.EncodeUint16(m.TxList[j0].TxQsize)
+               buf.EncodeUint16(m.TxList[j0].TxNext)
+               buf.EncodeUint16(m.TxList[j0].TxProduce)
+               buf.EncodeUint16(m.TxList[j0].TxConsume)
+       }
+       return buf.Bytes(), nil
+}
+func (m *SwVmxnet3InterfaceDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.IfName = buf.DecodeString(64)
+       copy(m.HwAddr[:], buf.DecodeBytes(6))
+       m.PciAddr = buf.DecodeUint32()
+       m.Version = buf.DecodeUint8()
+       m.AdminUpDown = buf.DecodeBool()
+       m.RxCount = buf.DecodeUint8()
+       for j0 := 0; j0 < 16; j0++ {
+               m.RxList[j0].RxQsize = buf.DecodeUint16()
+               m.RxList[j0].RxFill = make([]uint16, 2)
+               for i := 0; i < len(m.RxList[j0].RxFill); i++ {
+                       m.RxList[j0].RxFill[i] = buf.DecodeUint16()
+               }
+               m.RxList[j0].RxNext = buf.DecodeUint16()
+               m.RxList[j0].RxProduce = make([]uint16, 2)
+               for i := 0; i < len(m.RxList[j0].RxProduce); i++ {
+                       m.RxList[j0].RxProduce[i] = buf.DecodeUint16()
+               }
+               m.RxList[j0].RxConsume = make([]uint16, 2)
+               for i := 0; i < len(m.RxList[j0].RxConsume); i++ {
+                       m.RxList[j0].RxConsume[i] = buf.DecodeUint16()
+               }
+       }
+       m.TxCount = buf.DecodeUint8()
+       for j0 := 0; j0 < 8; j0++ {
+               m.TxList[j0].TxQsize = buf.DecodeUint16()
+               m.TxList[j0].TxNext = buf.DecodeUint16()
+               m.TxList[j0].TxProduce = buf.DecodeUint16()
+               m.TxList[j0].TxConsume = buf.DecodeUint16()
+       }
+       return nil
+}
+
+// SwVmxnet3InterfaceDump defines message 'sw_vmxnet3_interface_dump'.
+type SwVmxnet3InterfaceDump struct {
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index,default=4294967295" json:"sw_if_index,omitempty"`
+}
+
+func (m *SwVmxnet3InterfaceDump) Reset()               { *m = SwVmxnet3InterfaceDump{} }
+func (*SwVmxnet3InterfaceDump) GetMessageName() string { return "sw_vmxnet3_interface_dump" }
+func (*SwVmxnet3InterfaceDump) GetCrcString() string   { return "f9e6675e" }
+func (*SwVmxnet3InterfaceDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *SwVmxnet3InterfaceDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *SwVmxnet3InterfaceDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *SwVmxnet3InterfaceDump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
 // Vmxnet3Create defines message 'vmxnet3_create'.
 type Vmxnet3Create struct {
        PciAddr    uint32 `binapi:"u32,name=pci_addr" json:"pci_addr,omitempty"`
@@ -228,7 +390,7 @@ type Vmxnet3Details struct {
 
 func (m *Vmxnet3Details) Reset()               { *m = Vmxnet3Details{} }
 func (*Vmxnet3Details) GetMessageName() string { return "vmxnet3_details" }
-func (*Vmxnet3Details) GetCrcString() string   { return "829ba055" }
+func (*Vmxnet3Details) GetCrcString() string   { return "6a1a5498" }
 func (*Vmxnet3Details) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -342,6 +504,7 @@ func (m *Vmxnet3Details) Unmarshal(b []byte) error {
 }
 
 // Vmxnet3Dump defines message 'vmxnet3_dump'.
+// Deprecated: the message will be removed in the future versions
 type Vmxnet3Dump struct{}
 
 func (m *Vmxnet3Dump) Reset()               { *m = Vmxnet3Dump{} }
@@ -370,17 +533,21 @@ func (m *Vmxnet3Dump) Unmarshal(b []byte) error {
 
 func init() { file_vmxnet3_binapi_init() }
 func file_vmxnet3_binapi_init() {
+       api.RegisterMessage((*SwVmxnet3InterfaceDetails)(nil), "sw_vmxnet3_interface_details_6a1a5498")
+       api.RegisterMessage((*SwVmxnet3InterfaceDump)(nil), "sw_vmxnet3_interface_dump_f9e6675e")
        api.RegisterMessage((*Vmxnet3Create)(nil), "vmxnet3_create_71a07314")
        api.RegisterMessage((*Vmxnet3CreateReply)(nil), "vmxnet3_create_reply_5383d31f")
        api.RegisterMessage((*Vmxnet3Delete)(nil), "vmxnet3_delete_f9e6675e")
        api.RegisterMessage((*Vmxnet3DeleteReply)(nil), "vmxnet3_delete_reply_e8d4e804")
-       api.RegisterMessage((*Vmxnet3Details)(nil), "vmxnet3_details_829ba055")
+       api.RegisterMessage((*Vmxnet3Details)(nil), "vmxnet3_details_6a1a5498")
        api.RegisterMessage((*Vmxnet3Dump)(nil), "vmxnet3_dump_51077d14")
 }
 
 // Messages returns list of all messages in this module.
 func AllMessages() []api.Message {
        return []api.Message{
+               (*SwVmxnet3InterfaceDetails)(nil),
+               (*SwVmxnet3InterfaceDump)(nil),
                (*Vmxnet3Create)(nil),
                (*Vmxnet3CreateReply)(nil),
                (*Vmxnet3Delete)(nil),
index a05819c..e8bcdc6 100644 (file)
@@ -13,6 +13,7 @@ import (
 
 // RPCService defines RPC service vmxnet3.
 type RPCService interface {
+       SwVmxnet3InterfaceDump(ctx context.Context, in *SwVmxnet3InterfaceDump) (RPCService_SwVmxnet3InterfaceDumpClient, error)
        Vmxnet3Create(ctx context.Context, in *Vmxnet3Create) (*Vmxnet3CreateReply, error)
        Vmxnet3Delete(ctx context.Context, in *Vmxnet3Delete) (*Vmxnet3DeleteReply, error)
        Vmxnet3Dump(ctx context.Context, in *Vmxnet3Dump) (RPCService_Vmxnet3DumpClient, error)
@@ -26,6 +27,45 @@ func NewServiceClient(conn api.Connection) RPCService {
        return &serviceClient{conn}
 }
 
+func (c *serviceClient) SwVmxnet3InterfaceDump(ctx context.Context, in *SwVmxnet3InterfaceDump) (RPCService_SwVmxnet3InterfaceDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_SwVmxnet3InterfaceDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_SwVmxnet3InterfaceDumpClient interface {
+       Recv() (*SwVmxnet3InterfaceDetails, error)
+       api.Stream
+}
+
+type serviceClient_SwVmxnet3InterfaceDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_SwVmxnet3InterfaceDumpClient) Recv() (*SwVmxnet3InterfaceDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *SwVmxnet3InterfaceDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
 func (c *serviceClient) Vmxnet3Create(ctx context.Context, in *Vmxnet3Create) (*Vmxnet3CreateReply, error) {
        out := new(Vmxnet3CreateReply)
        err := c.conn.Invoke(ctx, in, out)
index 656a68a..504a870 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/vpe.api.json
 
 // Package vpe contains generated bindings for API file vpe.api.
@@ -27,7 +27,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "vpe"
        APIVersion = "1.6.1"
-       VersionCrc = 0xbd2c94f4
+       VersionCrc = 0x40364e00
 )
 
 // ThreadData defines type 'thread_data'.
@@ -681,7 +681,7 @@ type LogDetails struct {
 
 func (m *LogDetails) Reset()               { *m = LogDetails{} }
 func (*LogDetails) GetMessageName() string { return "log_details" }
-func (*LogDetails) GetCrcString() string   { return "255827a1" }
+func (*LogDetails) GetCrcString() string   { return "03d61cc0" }
 func (*LogDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -1011,7 +1011,7 @@ func file_vpe_binapi_init() {
        api.RegisterMessage((*GetNodeGraphReply)(nil), "get_node_graph_reply_06d68297")
        api.RegisterMessage((*GetNodeIndex)(nil), "get_node_index_f1984c64")
        api.RegisterMessage((*GetNodeIndexReply)(nil), "get_node_index_reply_a8600b89")
-       api.RegisterMessage((*LogDetails)(nil), "log_details_255827a1")
+       api.RegisterMessage((*LogDetails)(nil), "log_details_03d61cc0")
        api.RegisterMessage((*LogDump)(nil), "log_dump_6ab31753")
        api.RegisterMessage((*ShowThreads)(nil), "show_threads_51077d14")
        api.RegisterMessage((*ShowThreadsReply)(nil), "show_threads_reply_efd78e83")
index b4d324f..f14d5ab 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/vpe_types.api.json
 
 // Package vpe_types contains generated bindings for API file vpe_types.api.
index f9f33f6..97e1d8a 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/vrrp.api.json
 
 // Package vrrp contains generated bindings for API file vrrp.api.
@@ -9,7 +9,7 @@
 // Contents:
 //   2 enums
 //   5 structs
-//  14 messages
+//  17 messages
 //
 package vrrp
 
@@ -32,7 +32,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "vrrp"
        APIVersion = "1.0.1"
-       VersionCrc = 0x1903f1f1
+       VersionCrc = 0x6a3c71cd
 )
 
 // VrrpVrFlags defines enum 'vrrp_vr_flags'.
@@ -172,7 +172,7 @@ type VrrpVrAddDel struct {
 
 func (m *VrrpVrAddDel) Reset()               { *m = VrrpVrAddDel{} }
 func (*VrrpVrAddDel) GetMessageName() string { return "vrrp_vr_add_del" }
-func (*VrrpVrAddDel) GetCrcString() string   { return "6dc4b881" }
+func (*VrrpVrAddDel) GetCrcString() string   { return "c5cf15aa" }
 func (*VrrpVrAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -281,7 +281,7 @@ type VrrpVrDetails struct {
 
 func (m *VrrpVrDetails) Reset()               { *m = VrrpVrDetails{} }
 func (*VrrpVrDetails) GetMessageName() string { return "vrrp_vr_details" }
-func (*VrrpVrDetails) GetCrcString() string   { return "0412fa71" }
+func (*VrrpVrDetails) GetCrcString() string   { return "46edcebd" }
 func (*VrrpVrDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -398,6 +398,57 @@ func (m *VrrpVrDump) Unmarshal(b []byte) error {
        return nil
 }
 
+// VrrpVrEvent defines message 'vrrp_vr_event'.
+type VrrpVrEvent struct {
+       PID      uint32      `binapi:"u32,name=pid" json:"pid,omitempty"`
+       Vr       VrrpVrKey   `binapi:"vrrp_vr_key,name=vr" json:"vr,omitempty"`
+       OldState VrrpVrState `binapi:"vrrp_vr_state,name=old_state" json:"old_state,omitempty"`
+       NewState VrrpVrState `binapi:"vrrp_vr_state,name=new_state" json:"new_state,omitempty"`
+}
+
+func (m *VrrpVrEvent) Reset()               { *m = VrrpVrEvent{} }
+func (*VrrpVrEvent) GetMessageName() string { return "vrrp_vr_event" }
+func (*VrrpVrEvent) GetCrcString() string   { return "c1fea6a5" }
+func (*VrrpVrEvent) GetMessageType() api.MessageType {
+       return api.EventMessage
+}
+
+func (m *VrrpVrEvent) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.PID
+       size += 4 // m.Vr.SwIfIndex
+       size += 1 // m.Vr.VrID
+       size += 1 // m.Vr.IsIPv6
+       size += 4 // m.OldState
+       size += 4 // m.NewState
+       return size
+}
+func (m *VrrpVrEvent) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.PID)
+       buf.EncodeUint32(uint32(m.Vr.SwIfIndex))
+       buf.EncodeUint8(m.Vr.VrID)
+       buf.EncodeUint8(m.Vr.IsIPv6)
+       buf.EncodeUint32(uint32(m.OldState))
+       buf.EncodeUint32(uint32(m.NewState))
+       return buf.Bytes(), nil
+}
+func (m *VrrpVrEvent) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.PID = buf.DecodeUint32()
+       m.Vr.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Vr.VrID = buf.DecodeUint8()
+       m.Vr.IsIPv6 = buf.DecodeUint8()
+       m.OldState = VrrpVrState(buf.DecodeUint32())
+       m.NewState = VrrpVrState(buf.DecodeUint32())
+       return nil
+}
+
 // VrrpVrPeerDetails defines message 'vrrp_vr_peer_details'.
 type VrrpVrPeerDetails struct {
        SwIfIndex  interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
@@ -409,7 +460,7 @@ type VrrpVrPeerDetails struct {
 
 func (m *VrrpVrPeerDetails) Reset()               { *m = VrrpVrPeerDetails{} }
 func (*VrrpVrPeerDetails) GetMessageName() string { return "vrrp_vr_peer_details" }
-func (*VrrpVrPeerDetails) GetCrcString() string   { return "abd9145e" }
+func (*VrrpVrPeerDetails) GetCrcString() string   { return "3d99c108" }
 func (*VrrpVrPeerDetails) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -518,7 +569,7 @@ type VrrpVrSetPeers struct {
 
 func (m *VrrpVrSetPeers) Reset()               { *m = VrrpVrSetPeers{} }
 func (*VrrpVrSetPeers) GetMessageName() string { return "vrrp_vr_set_peers" }
-func (*VrrpVrSetPeers) GetCrcString() string   { return "baa2e52b" }
+func (*VrrpVrSetPeers) GetCrcString() string   { return "20bec71f" }
 func (*VrrpVrSetPeers) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -698,7 +749,7 @@ type VrrpVrTrackIfAddDel struct {
 
 func (m *VrrpVrTrackIfAddDel) Reset()               { *m = VrrpVrTrackIfAddDel{} }
 func (*VrrpVrTrackIfAddDel) GetMessageName() string { return "vrrp_vr_track_if_add_del" }
-func (*VrrpVrTrackIfAddDel) GetCrcString() string   { return "337f4ba4" }
+func (*VrrpVrTrackIfAddDel) GetCrcString() string   { return "d67df299" }
 func (*VrrpVrTrackIfAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -802,7 +853,7 @@ type VrrpVrTrackIfDetails struct {
 
 func (m *VrrpVrTrackIfDetails) Reset()               { *m = VrrpVrTrackIfDetails{} }
 func (*VrrpVrTrackIfDetails) GetMessageName() string { return "vrrp_vr_track_if_details" }
-func (*VrrpVrTrackIfDetails) GetCrcString() string   { return "99bcca9c" }
+func (*VrrpVrTrackIfDetails) GetCrcString() string   { return "73c36f81" }
 func (*VrrpVrTrackIfDetails) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -904,22 +955,95 @@ func (m *VrrpVrTrackIfDump) Unmarshal(b []byte) error {
        return nil
 }
 
+// WantVrrpVrEvents defines message 'want_vrrp_vr_events'.
+type WantVrrpVrEvents struct {
+       EnableDisable bool   `binapi:"bool,name=enable_disable" json:"enable_disable,omitempty"`
+       PID           uint32 `binapi:"u32,name=pid" json:"pid,omitempty"`
+}
+
+func (m *WantVrrpVrEvents) Reset()               { *m = WantVrrpVrEvents{} }
+func (*WantVrrpVrEvents) GetMessageName() string { return "want_vrrp_vr_events" }
+func (*WantVrrpVrEvents) GetCrcString() string   { return "c5e2af94" }
+func (*WantVrrpVrEvents) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *WantVrrpVrEvents) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.EnableDisable
+       size += 4 // m.PID
+       return size
+}
+func (m *WantVrrpVrEvents) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.EnableDisable)
+       buf.EncodeUint32(m.PID)
+       return buf.Bytes(), nil
+}
+func (m *WantVrrpVrEvents) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.EnableDisable = buf.DecodeBool()
+       m.PID = buf.DecodeUint32()
+       return nil
+}
+
+// WantVrrpVrEventsReply defines message 'want_vrrp_vr_events_reply'.
+type WantVrrpVrEventsReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *WantVrrpVrEventsReply) Reset()               { *m = WantVrrpVrEventsReply{} }
+func (*WantVrrpVrEventsReply) GetMessageName() string { return "want_vrrp_vr_events_reply" }
+func (*WantVrrpVrEventsReply) GetCrcString() string   { return "e8d4e804" }
+func (*WantVrrpVrEventsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *WantVrrpVrEventsReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *WantVrrpVrEventsReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *WantVrrpVrEventsReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
 func init() { file_vrrp_binapi_init() }
 func file_vrrp_binapi_init() {
-       api.RegisterMessage((*VrrpVrAddDel)(nil), "vrrp_vr_add_del_6dc4b881")
+       api.RegisterMessage((*VrrpVrAddDel)(nil), "vrrp_vr_add_del_c5cf15aa")
        api.RegisterMessage((*VrrpVrAddDelReply)(nil), "vrrp_vr_add_del_reply_e8d4e804")
-       api.RegisterMessage((*VrrpVrDetails)(nil), "vrrp_vr_details_0412fa71")
+       api.RegisterMessage((*VrrpVrDetails)(nil), "vrrp_vr_details_46edcebd")
        api.RegisterMessage((*VrrpVrDump)(nil), "vrrp_vr_dump_f9e6675e")
-       api.RegisterMessage((*VrrpVrPeerDetails)(nil), "vrrp_vr_peer_details_abd9145e")
+       api.RegisterMessage((*VrrpVrEvent)(nil), "vrrp_vr_event_c1fea6a5")
+       api.RegisterMessage((*VrrpVrPeerDetails)(nil), "vrrp_vr_peer_details_3d99c108")
        api.RegisterMessage((*VrrpVrPeerDump)(nil), "vrrp_vr_peer_dump_6fa3f7c4")
-       api.RegisterMessage((*VrrpVrSetPeers)(nil), "vrrp_vr_set_peers_baa2e52b")
+       api.RegisterMessage((*VrrpVrSetPeers)(nil), "vrrp_vr_set_peers_20bec71f")
        api.RegisterMessage((*VrrpVrSetPeersReply)(nil), "vrrp_vr_set_peers_reply_e8d4e804")
        api.RegisterMessage((*VrrpVrStartStop)(nil), "vrrp_vr_start_stop_0662a3b7")
        api.RegisterMessage((*VrrpVrStartStopReply)(nil), "vrrp_vr_start_stop_reply_e8d4e804")
-       api.RegisterMessage((*VrrpVrTrackIfAddDel)(nil), "vrrp_vr_track_if_add_del_337f4ba4")
+       api.RegisterMessage((*VrrpVrTrackIfAddDel)(nil), "vrrp_vr_track_if_add_del_d67df299")
        api.RegisterMessage((*VrrpVrTrackIfAddDelReply)(nil), "vrrp_vr_track_if_add_del_reply_e8d4e804")
-       api.RegisterMessage((*VrrpVrTrackIfDetails)(nil), "vrrp_vr_track_if_details_99bcca9c")
+       api.RegisterMessage((*VrrpVrTrackIfDetails)(nil), "vrrp_vr_track_if_details_73c36f81")
        api.RegisterMessage((*VrrpVrTrackIfDump)(nil), "vrrp_vr_track_if_dump_a34dfc6d")
+       api.RegisterMessage((*WantVrrpVrEvents)(nil), "want_vrrp_vr_events_c5e2af94")
+       api.RegisterMessage((*WantVrrpVrEventsReply)(nil), "want_vrrp_vr_events_reply_e8d4e804")
 }
 
 // Messages returns list of all messages in this module.
@@ -929,6 +1053,7 @@ func AllMessages() []api.Message {
                (*VrrpVrAddDelReply)(nil),
                (*VrrpVrDetails)(nil),
                (*VrrpVrDump)(nil),
+               (*VrrpVrEvent)(nil),
                (*VrrpVrPeerDetails)(nil),
                (*VrrpVrPeerDump)(nil),
                (*VrrpVrSetPeers)(nil),
@@ -939,5 +1064,7 @@ func AllMessages() []api.Message {
                (*VrrpVrTrackIfAddDelReply)(nil),
                (*VrrpVrTrackIfDetails)(nil),
                (*VrrpVrTrackIfDump)(nil),
+               (*WantVrrpVrEvents)(nil),
+               (*WantVrrpVrEventsReply)(nil),
        }
 }
index ae19b0f..fa4f455 100644 (file)
@@ -20,6 +20,7 @@ type RPCService interface {
        VrrpVrStartStop(ctx context.Context, in *VrrpVrStartStop) (*VrrpVrStartStopReply, error)
        VrrpVrTrackIfAddDel(ctx context.Context, in *VrrpVrTrackIfAddDel) (*VrrpVrTrackIfAddDelReply, error)
        VrrpVrTrackIfDump(ctx context.Context, in *VrrpVrTrackIfDump) (RPCService_VrrpVrTrackIfDumpClient, error)
+       WantVrrpVrEvents(ctx context.Context, in *WantVrrpVrEvents) (*WantVrrpVrEventsReply, error)
 }
 
 type serviceClient struct {
@@ -182,3 +183,12 @@ func (c *serviceClient_VrrpVrTrackIfDumpClient) Recv() (*VrrpVrTrackIfDetails, e
                return nil, fmt.Errorf("unexpected message: %T %v", m, m)
        }
 }
+
+func (c *serviceClient) WantVrrpVrEvents(ctx context.Context, in *WantVrrpVrEvents) (*WantVrrpVrEventsReply, error) {
+       out := new(WantVrrpVrEventsReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
index fe7c5fb..e3c72c5 100644 (file)
@@ -1,13 +1,13 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/vxlan.api.json
 
 // Package vxlan contains generated bindings for API file vxlan.api.
 //
 // Contents:
-//   8 messages
+//  14 messages
 //
 package vxlan
 
@@ -26,8 +26,8 @@ const _ = api.GoVppAPIPackageIsVersion2
 
 const (
        APIFile    = "vxlan"
-       APIVersion = "2.0.0"
-       VersionCrc = 0xf11ad29f
+       APIVersion = "2.1.0"
+       VersionCrc = 0x95381587
 )
 
 // SwInterfaceSetVxlanBypass defines message 'sw_interface_set_vxlan_bypass'.
@@ -120,7 +120,7 @@ type VxlanAddDelTunnel struct {
 
 func (m *VxlanAddDelTunnel) Reset()               { *m = VxlanAddDelTunnel{} }
 func (*VxlanAddDelTunnel) GetMessageName() string { return "vxlan_add_del_tunnel" }
-func (*VxlanAddDelTunnel) GetCrcString() string   { return "a35dc8f5" }
+func (*VxlanAddDelTunnel) GetCrcString() string   { return "0c09dc80" }
 func (*VxlanAddDelTunnel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -210,6 +210,234 @@ func (m *VxlanAddDelTunnelReply) Unmarshal(b []byte) error {
        return nil
 }
 
+// VxlanAddDelTunnelV2 defines message 'vxlan_add_del_tunnel_v2'.
+type VxlanAddDelTunnelV2 struct {
+       IsAdd          bool                           `binapi:"bool,name=is_add,default=true" json:"is_add,omitempty"`
+       Instance       uint32                         `binapi:"u32,name=instance,default=4294967295" json:"instance,omitempty"`
+       SrcAddress     ip_types.Address               `binapi:"address,name=src_address" json:"src_address,omitempty"`
+       DstAddress     ip_types.Address               `binapi:"address,name=dst_address" json:"dst_address,omitempty"`
+       SrcPort        uint16                         `binapi:"u16,name=src_port" json:"src_port,omitempty"`
+       DstPort        uint16                         `binapi:"u16,name=dst_port" json:"dst_port,omitempty"`
+       McastSwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=mcast_sw_if_index" json:"mcast_sw_if_index,omitempty"`
+       EncapVrfID     uint32                         `binapi:"u32,name=encap_vrf_id" json:"encap_vrf_id,omitempty"`
+       DecapNextIndex uint32                         `binapi:"u32,name=decap_next_index" json:"decap_next_index,omitempty"`
+       Vni            uint32                         `binapi:"u32,name=vni" json:"vni,omitempty"`
+}
+
+func (m *VxlanAddDelTunnelV2) Reset()               { *m = VxlanAddDelTunnelV2{} }
+func (*VxlanAddDelTunnelV2) GetMessageName() string { return "vxlan_add_del_tunnel_v2" }
+func (*VxlanAddDelTunnelV2) GetCrcString() string   { return "4f223f40" }
+func (*VxlanAddDelTunnelV2) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *VxlanAddDelTunnelV2) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1      // m.IsAdd
+       size += 4      // m.Instance
+       size += 1      // m.SrcAddress.Af
+       size += 1 * 16 // m.SrcAddress.Un
+       size += 1      // m.DstAddress.Af
+       size += 1 * 16 // m.DstAddress.Un
+       size += 2      // m.SrcPort
+       size += 2      // m.DstPort
+       size += 4      // m.McastSwIfIndex
+       size += 4      // m.EncapVrfID
+       size += 4      // m.DecapNextIndex
+       size += 4      // m.Vni
+       return size
+}
+func (m *VxlanAddDelTunnelV2) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsAdd)
+       buf.EncodeUint32(m.Instance)
+       buf.EncodeUint8(uint8(m.SrcAddress.Af))
+       buf.EncodeBytes(m.SrcAddress.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(uint8(m.DstAddress.Af))
+       buf.EncodeBytes(m.DstAddress.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint16(m.SrcPort)
+       buf.EncodeUint16(m.DstPort)
+       buf.EncodeUint32(uint32(m.McastSwIfIndex))
+       buf.EncodeUint32(m.EncapVrfID)
+       buf.EncodeUint32(m.DecapNextIndex)
+       buf.EncodeUint32(m.Vni)
+       return buf.Bytes(), nil
+}
+func (m *VxlanAddDelTunnelV2) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeBool()
+       m.Instance = buf.DecodeUint32()
+       m.SrcAddress.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.SrcAddress.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.DstAddress.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.DstAddress.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.SrcPort = buf.DecodeUint16()
+       m.DstPort = buf.DecodeUint16()
+       m.McastSwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.EncapVrfID = buf.DecodeUint32()
+       m.DecapNextIndex = buf.DecodeUint32()
+       m.Vni = buf.DecodeUint32()
+       return nil
+}
+
+// VxlanAddDelTunnelV2Reply defines message 'vxlan_add_del_tunnel_v2_reply'.
+type VxlanAddDelTunnelV2Reply struct {
+       Retval    int32                          `binapi:"i32,name=retval" json:"retval,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *VxlanAddDelTunnelV2Reply) Reset()               { *m = VxlanAddDelTunnelV2Reply{} }
+func (*VxlanAddDelTunnelV2Reply) GetMessageName() string { return "vxlan_add_del_tunnel_v2_reply" }
+func (*VxlanAddDelTunnelV2Reply) GetCrcString() string   { return "5383d31f" }
+func (*VxlanAddDelTunnelV2Reply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *VxlanAddDelTunnelV2Reply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *VxlanAddDelTunnelV2Reply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *VxlanAddDelTunnelV2Reply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// VxlanAddDelTunnelV3 defines message 'vxlan_add_del_tunnel_v3'.
+type VxlanAddDelTunnelV3 struct {
+       IsAdd          bool                           `binapi:"bool,name=is_add,default=true" json:"is_add,omitempty"`
+       Instance       uint32                         `binapi:"u32,name=instance,default=4294967295" json:"instance,omitempty"`
+       SrcAddress     ip_types.Address               `binapi:"address,name=src_address" json:"src_address,omitempty"`
+       DstAddress     ip_types.Address               `binapi:"address,name=dst_address" json:"dst_address,omitempty"`
+       SrcPort        uint16                         `binapi:"u16,name=src_port" json:"src_port,omitempty"`
+       DstPort        uint16                         `binapi:"u16,name=dst_port" json:"dst_port,omitempty"`
+       McastSwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=mcast_sw_if_index" json:"mcast_sw_if_index,omitempty"`
+       EncapVrfID     uint32                         `binapi:"u32,name=encap_vrf_id" json:"encap_vrf_id,omitempty"`
+       DecapNextIndex uint32                         `binapi:"u32,name=decap_next_index" json:"decap_next_index,omitempty"`
+       Vni            uint32                         `binapi:"u32,name=vni" json:"vni,omitempty"`
+       IsL3           bool                           `binapi:"bool,name=is_l3,default=false" json:"is_l3,omitempty"`
+}
+
+func (m *VxlanAddDelTunnelV3) Reset()               { *m = VxlanAddDelTunnelV3{} }
+func (*VxlanAddDelTunnelV3) GetMessageName() string { return "vxlan_add_del_tunnel_v3" }
+func (*VxlanAddDelTunnelV3) GetCrcString() string   { return "0072b037" }
+func (*VxlanAddDelTunnelV3) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *VxlanAddDelTunnelV3) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1      // m.IsAdd
+       size += 4      // m.Instance
+       size += 1      // m.SrcAddress.Af
+       size += 1 * 16 // m.SrcAddress.Un
+       size += 1      // m.DstAddress.Af
+       size += 1 * 16 // m.DstAddress.Un
+       size += 2      // m.SrcPort
+       size += 2      // m.DstPort
+       size += 4      // m.McastSwIfIndex
+       size += 4      // m.EncapVrfID
+       size += 4      // m.DecapNextIndex
+       size += 4      // m.Vni
+       size += 1      // m.IsL3
+       return size
+}
+func (m *VxlanAddDelTunnelV3) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.IsAdd)
+       buf.EncodeUint32(m.Instance)
+       buf.EncodeUint8(uint8(m.SrcAddress.Af))
+       buf.EncodeBytes(m.SrcAddress.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(uint8(m.DstAddress.Af))
+       buf.EncodeBytes(m.DstAddress.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint16(m.SrcPort)
+       buf.EncodeUint16(m.DstPort)
+       buf.EncodeUint32(uint32(m.McastSwIfIndex))
+       buf.EncodeUint32(m.EncapVrfID)
+       buf.EncodeUint32(m.DecapNextIndex)
+       buf.EncodeUint32(m.Vni)
+       buf.EncodeBool(m.IsL3)
+       return buf.Bytes(), nil
+}
+func (m *VxlanAddDelTunnelV3) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeBool()
+       m.Instance = buf.DecodeUint32()
+       m.SrcAddress.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.SrcAddress.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.DstAddress.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.DstAddress.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.SrcPort = buf.DecodeUint16()
+       m.DstPort = buf.DecodeUint16()
+       m.McastSwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.EncapVrfID = buf.DecodeUint32()
+       m.DecapNextIndex = buf.DecodeUint32()
+       m.Vni = buf.DecodeUint32()
+       m.IsL3 = buf.DecodeBool()
+       return nil
+}
+
+// VxlanAddDelTunnelV3Reply defines message 'vxlan_add_del_tunnel_v3_reply'.
+type VxlanAddDelTunnelV3Reply struct {
+       Retval    int32                          `binapi:"i32,name=retval" json:"retval,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *VxlanAddDelTunnelV3Reply) Reset()               { *m = VxlanAddDelTunnelV3Reply{} }
+func (*VxlanAddDelTunnelV3Reply) GetMessageName() string { return "vxlan_add_del_tunnel_v3_reply" }
+func (*VxlanAddDelTunnelV3Reply) GetCrcString() string   { return "5383d31f" }
+func (*VxlanAddDelTunnelV3Reply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *VxlanAddDelTunnelV3Reply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *VxlanAddDelTunnelV3Reply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *VxlanAddDelTunnelV3Reply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
 // VxlanOffloadRx defines message 'vxlan_offload_rx'.
 type VxlanOffloadRx struct {
        HwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=hw_if_index" json:"hw_if_index,omitempty"`
@@ -219,7 +447,7 @@ type VxlanOffloadRx struct {
 
 func (m *VxlanOffloadRx) Reset()               { *m = VxlanOffloadRx{} }
 func (*VxlanOffloadRx) GetMessageName() string { return "vxlan_offload_rx" }
-func (*VxlanOffloadRx) GetCrcString() string   { return "89a1564b" }
+func (*VxlanOffloadRx) GetCrcString() string   { return "9cc95087" }
 func (*VxlanOffloadRx) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -298,7 +526,7 @@ type VxlanTunnelDetails struct {
 
 func (m *VxlanTunnelDetails) Reset()               { *m = VxlanTunnelDetails{} }
 func (*VxlanTunnelDetails) GetMessageName() string { return "vxlan_tunnel_details" }
-func (*VxlanTunnelDetails) GetCrcString() string   { return "e782f70f" }
+func (*VxlanTunnelDetails) GetCrcString() string   { return "c3916cb1" }
 func (*VxlanTunnelDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -384,16 +612,130 @@ func (m *VxlanTunnelDump) Unmarshal(b []byte) error {
        return nil
 }
 
+// VxlanTunnelV2Details defines message 'vxlan_tunnel_v2_details'.
+type VxlanTunnelV2Details struct {
+       SwIfIndex      interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       Instance       uint32                         `binapi:"u32,name=instance" json:"instance,omitempty"`
+       SrcAddress     ip_types.Address               `binapi:"address,name=src_address" json:"src_address,omitempty"`
+       DstAddress     ip_types.Address               `binapi:"address,name=dst_address" json:"dst_address,omitempty"`
+       SrcPort        uint16                         `binapi:"u16,name=src_port" json:"src_port,omitempty"`
+       DstPort        uint16                         `binapi:"u16,name=dst_port" json:"dst_port,omitempty"`
+       McastSwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=mcast_sw_if_index" json:"mcast_sw_if_index,omitempty"`
+       EncapVrfID     uint32                         `binapi:"u32,name=encap_vrf_id" json:"encap_vrf_id,omitempty"`
+       DecapNextIndex uint32                         `binapi:"u32,name=decap_next_index" json:"decap_next_index,omitempty"`
+       Vni            uint32                         `binapi:"u32,name=vni" json:"vni,omitempty"`
+}
+
+func (m *VxlanTunnelV2Details) Reset()               { *m = VxlanTunnelV2Details{} }
+func (*VxlanTunnelV2Details) GetMessageName() string { return "vxlan_tunnel_v2_details" }
+func (*VxlanTunnelV2Details) GetCrcString() string   { return "d3bdd4d9" }
+func (*VxlanTunnelV2Details) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *VxlanTunnelV2Details) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4      // m.SwIfIndex
+       size += 4      // m.Instance
+       size += 1      // m.SrcAddress.Af
+       size += 1 * 16 // m.SrcAddress.Un
+       size += 1      // m.DstAddress.Af
+       size += 1 * 16 // m.DstAddress.Un
+       size += 2      // m.SrcPort
+       size += 2      // m.DstPort
+       size += 4      // m.McastSwIfIndex
+       size += 4      // m.EncapVrfID
+       size += 4      // m.DecapNextIndex
+       size += 4      // m.Vni
+       return size
+}
+func (m *VxlanTunnelV2Details) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint32(m.Instance)
+       buf.EncodeUint8(uint8(m.SrcAddress.Af))
+       buf.EncodeBytes(m.SrcAddress.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint8(uint8(m.DstAddress.Af))
+       buf.EncodeBytes(m.DstAddress.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint16(m.SrcPort)
+       buf.EncodeUint16(m.DstPort)
+       buf.EncodeUint32(uint32(m.McastSwIfIndex))
+       buf.EncodeUint32(m.EncapVrfID)
+       buf.EncodeUint32(m.DecapNextIndex)
+       buf.EncodeUint32(m.Vni)
+       return buf.Bytes(), nil
+}
+func (m *VxlanTunnelV2Details) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Instance = buf.DecodeUint32()
+       m.SrcAddress.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.SrcAddress.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.DstAddress.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.DstAddress.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.SrcPort = buf.DecodeUint16()
+       m.DstPort = buf.DecodeUint16()
+       m.McastSwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.EncapVrfID = buf.DecodeUint32()
+       m.DecapNextIndex = buf.DecodeUint32()
+       m.Vni = buf.DecodeUint32()
+       return nil
+}
+
+// VxlanTunnelV2Dump defines message 'vxlan_tunnel_v2_dump'.
+type VxlanTunnelV2Dump struct {
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *VxlanTunnelV2Dump) Reset()               { *m = VxlanTunnelV2Dump{} }
+func (*VxlanTunnelV2Dump) GetMessageName() string { return "vxlan_tunnel_v2_dump" }
+func (*VxlanTunnelV2Dump) GetCrcString() string   { return "f9e6675e" }
+func (*VxlanTunnelV2Dump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *VxlanTunnelV2Dump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *VxlanTunnelV2Dump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *VxlanTunnelV2Dump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
 func init() { file_vxlan_binapi_init() }
 func file_vxlan_binapi_init() {
        api.RegisterMessage((*SwInterfaceSetVxlanBypass)(nil), "sw_interface_set_vxlan_bypass_65247409")
        api.RegisterMessage((*SwInterfaceSetVxlanBypassReply)(nil), "sw_interface_set_vxlan_bypass_reply_e8d4e804")
-       api.RegisterMessage((*VxlanAddDelTunnel)(nil), "vxlan_add_del_tunnel_a35dc8f5")
+       api.RegisterMessage((*VxlanAddDelTunnel)(nil), "vxlan_add_del_tunnel_0c09dc80")
        api.RegisterMessage((*VxlanAddDelTunnelReply)(nil), "vxlan_add_del_tunnel_reply_5383d31f")
-       api.RegisterMessage((*VxlanOffloadRx)(nil), "vxlan_offload_rx_89a1564b")
+       api.RegisterMessage((*VxlanAddDelTunnelV2)(nil), "vxlan_add_del_tunnel_v2_4f223f40")
+       api.RegisterMessage((*VxlanAddDelTunnelV2Reply)(nil), "vxlan_add_del_tunnel_v2_reply_5383d31f")
+       api.RegisterMessage((*VxlanAddDelTunnelV3)(nil), "vxlan_add_del_tunnel_v3_0072b037")
+       api.RegisterMessage((*VxlanAddDelTunnelV3Reply)(nil), "vxlan_add_del_tunnel_v3_reply_5383d31f")
+       api.RegisterMessage((*VxlanOffloadRx)(nil), "vxlan_offload_rx_9cc95087")
        api.RegisterMessage((*VxlanOffloadRxReply)(nil), "vxlan_offload_rx_reply_e8d4e804")
-       api.RegisterMessage((*VxlanTunnelDetails)(nil), "vxlan_tunnel_details_e782f70f")
+       api.RegisterMessage((*VxlanTunnelDetails)(nil), "vxlan_tunnel_details_c3916cb1")
        api.RegisterMessage((*VxlanTunnelDump)(nil), "vxlan_tunnel_dump_f9e6675e")
+       api.RegisterMessage((*VxlanTunnelV2Details)(nil), "vxlan_tunnel_v2_details_d3bdd4d9")
+       api.RegisterMessage((*VxlanTunnelV2Dump)(nil), "vxlan_tunnel_v2_dump_f9e6675e")
 }
 
 // Messages returns list of all messages in this module.
@@ -403,9 +745,15 @@ func AllMessages() []api.Message {
                (*SwInterfaceSetVxlanBypassReply)(nil),
                (*VxlanAddDelTunnel)(nil),
                (*VxlanAddDelTunnelReply)(nil),
+               (*VxlanAddDelTunnelV2)(nil),
+               (*VxlanAddDelTunnelV2Reply)(nil),
+               (*VxlanAddDelTunnelV3)(nil),
+               (*VxlanAddDelTunnelV3Reply)(nil),
                (*VxlanOffloadRx)(nil),
                (*VxlanOffloadRxReply)(nil),
                (*VxlanTunnelDetails)(nil),
                (*VxlanTunnelDump)(nil),
+               (*VxlanTunnelV2Details)(nil),
+               (*VxlanTunnelV2Dump)(nil),
        }
 }
index 0ae30a5..97729ba 100644 (file)
@@ -15,8 +15,11 @@ import (
 type RPCService interface {
        SwInterfaceSetVxlanBypass(ctx context.Context, in *SwInterfaceSetVxlanBypass) (*SwInterfaceSetVxlanBypassReply, error)
        VxlanAddDelTunnel(ctx context.Context, in *VxlanAddDelTunnel) (*VxlanAddDelTunnelReply, error)
+       VxlanAddDelTunnelV2(ctx context.Context, in *VxlanAddDelTunnelV2) (*VxlanAddDelTunnelV2Reply, error)
+       VxlanAddDelTunnelV3(ctx context.Context, in *VxlanAddDelTunnelV3) (*VxlanAddDelTunnelV3Reply, error)
        VxlanOffloadRx(ctx context.Context, in *VxlanOffloadRx) (*VxlanOffloadRxReply, error)
        VxlanTunnelDump(ctx context.Context, in *VxlanTunnelDump) (RPCService_VxlanTunnelDumpClient, error)
+       VxlanTunnelV2Dump(ctx context.Context, in *VxlanTunnelV2Dump) (RPCService_VxlanTunnelV2DumpClient, error)
 }
 
 type serviceClient struct {
@@ -45,6 +48,24 @@ func (c *serviceClient) VxlanAddDelTunnel(ctx context.Context, in *VxlanAddDelTu
        return out, api.RetvalToVPPApiError(out.Retval)
 }
 
+func (c *serviceClient) VxlanAddDelTunnelV2(ctx context.Context, in *VxlanAddDelTunnelV2) (*VxlanAddDelTunnelV2Reply, error) {
+       out := new(VxlanAddDelTunnelV2Reply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) VxlanAddDelTunnelV3(ctx context.Context, in *VxlanAddDelTunnelV3) (*VxlanAddDelTunnelV3Reply, error) {
+       out := new(VxlanAddDelTunnelV3Reply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
 func (c *serviceClient) VxlanOffloadRx(ctx context.Context, in *VxlanOffloadRx) (*VxlanOffloadRxReply, error) {
        out := new(VxlanOffloadRxReply)
        err := c.conn.Invoke(ctx, in, out)
@@ -92,3 +113,42 @@ func (c *serviceClient_VxlanTunnelDumpClient) Recv() (*VxlanTunnelDetails, error
                return nil, fmt.Errorf("unexpected message: %T %v", m, m)
        }
 }
+
+func (c *serviceClient) VxlanTunnelV2Dump(ctx context.Context, in *VxlanTunnelV2Dump) (RPCService_VxlanTunnelV2DumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_VxlanTunnelV2DumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_VxlanTunnelV2DumpClient interface {
+       Recv() (*VxlanTunnelV2Details, error)
+       api.Stream
+}
+
+type serviceClient_VxlanTunnelV2DumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_VxlanTunnelV2DumpClient) Recv() (*VxlanTunnelV2Details, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *VxlanTunnelV2Details:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
index bd92319..b5df3e0 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/vxlan_gbp.api.json
 
 // Package vxlan_gbp contains generated bindings for API file vxlan_gbp.api.
@@ -31,7 +31,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "vxlan_gbp"
        APIVersion = "1.1.1"
-       VersionCrc = 0xfa8aff54
+       VersionCrc = 0xb40203a1
 )
 
 // VxlanGbpAPITunnelMode defines enum 'vxlan_gbp_api_tunnel_mode'.
@@ -74,6 +74,7 @@ type VxlanGbpTunnel struct {
 }
 
 // SwInterfaceSetVxlanGbpBypass defines message 'sw_interface_set_vxlan_gbp_bypass'.
+// InProgress: the message form may change in the future versions
 type SwInterfaceSetVxlanGbpBypass struct {
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
        IsIPv6    bool                           `binapi:"bool,name=is_ipv6" json:"is_ipv6,omitempty"`
@@ -117,6 +118,7 @@ func (m *SwInterfaceSetVxlanGbpBypass) Unmarshal(b []byte) error {
 }
 
 // SwInterfaceSetVxlanGbpBypassReply defines message 'sw_interface_set_vxlan_gbp_bypass_reply'.
+// InProgress: the message form may change in the future versions
 type SwInterfaceSetVxlanGbpBypassReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -152,6 +154,7 @@ func (m *SwInterfaceSetVxlanGbpBypassReply) Unmarshal(b []byte) error {
 }
 
 // VxlanGbpTunnelAddDel defines message 'vxlan_gbp_tunnel_add_del'.
+// InProgress: the message form may change in the future versions
 type VxlanGbpTunnelAddDel struct {
        IsAdd  bool           `binapi:"bool,name=is_add,default=true" json:"is_add,omitempty"`
        Tunnel VxlanGbpTunnel `binapi:"vxlan_gbp_tunnel,name=tunnel" json:"tunnel,omitempty"`
@@ -159,7 +162,7 @@ type VxlanGbpTunnelAddDel struct {
 
 func (m *VxlanGbpTunnelAddDel) Reset()               { *m = VxlanGbpTunnelAddDel{} }
 func (*VxlanGbpTunnelAddDel) GetMessageName() string { return "vxlan_gbp_tunnel_add_del" }
-func (*VxlanGbpTunnelAddDel) GetCrcString() string   { return "8c819166" }
+func (*VxlanGbpTunnelAddDel) GetCrcString() string   { return "6c743427" }
 func (*VxlanGbpTunnelAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -216,6 +219,7 @@ func (m *VxlanGbpTunnelAddDel) Unmarshal(b []byte) error {
 }
 
 // VxlanGbpTunnelAddDelReply defines message 'vxlan_gbp_tunnel_add_del_reply'.
+// InProgress: the message form may change in the future versions
 type VxlanGbpTunnelAddDelReply struct {
        Retval    int32                          `binapi:"i32,name=retval" json:"retval,omitempty"`
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
@@ -253,13 +257,14 @@ func (m *VxlanGbpTunnelAddDelReply) Unmarshal(b []byte) error {
 }
 
 // VxlanGbpTunnelDetails defines message 'vxlan_gbp_tunnel_details'.
+// InProgress: the message form may change in the future versions
 type VxlanGbpTunnelDetails struct {
        Tunnel VxlanGbpTunnel `binapi:"vxlan_gbp_tunnel,name=tunnel" json:"tunnel,omitempty"`
 }
 
 func (m *VxlanGbpTunnelDetails) Reset()               { *m = VxlanGbpTunnelDetails{} }
 func (*VxlanGbpTunnelDetails) GetMessageName() string { return "vxlan_gbp_tunnel_details" }
-func (*VxlanGbpTunnelDetails) GetCrcString() string   { return "1da24016" }
+func (*VxlanGbpTunnelDetails) GetCrcString() string   { return "66e94a89" }
 func (*VxlanGbpTunnelDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -313,6 +318,7 @@ func (m *VxlanGbpTunnelDetails) Unmarshal(b []byte) error {
 }
 
 // VxlanGbpTunnelDump defines message 'vxlan_gbp_tunnel_dump'.
+// InProgress: the message form may change in the future versions
 type VxlanGbpTunnelDump struct {
        SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index,default=4294967295" json:"sw_if_index,omitempty"`
 }
@@ -349,9 +355,9 @@ func init() { file_vxlan_gbp_binapi_init() }
 func file_vxlan_gbp_binapi_init() {
        api.RegisterMessage((*SwInterfaceSetVxlanGbpBypass)(nil), "sw_interface_set_vxlan_gbp_bypass_65247409")
        api.RegisterMessage((*SwInterfaceSetVxlanGbpBypassReply)(nil), "sw_interface_set_vxlan_gbp_bypass_reply_e8d4e804")
-       api.RegisterMessage((*VxlanGbpTunnelAddDel)(nil), "vxlan_gbp_tunnel_add_del_8c819166")
+       api.RegisterMessage((*VxlanGbpTunnelAddDel)(nil), "vxlan_gbp_tunnel_add_del_6c743427")
        api.RegisterMessage((*VxlanGbpTunnelAddDelReply)(nil), "vxlan_gbp_tunnel_add_del_reply_5383d31f")
-       api.RegisterMessage((*VxlanGbpTunnelDetails)(nil), "vxlan_gbp_tunnel_details_1da24016")
+       api.RegisterMessage((*VxlanGbpTunnelDetails)(nil), "vxlan_gbp_tunnel_details_66e94a89")
        api.RegisterMessage((*VxlanGbpTunnelDump)(nil), "vxlan_gbp_tunnel_dump_f9e6675e")
 }
 
index f34c328..dc51a82 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/core/vxlan_gpe.api.json
 
 // Package vxlan_gpe contains generated bindings for API file vxlan_gpe.api.
@@ -27,7 +27,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "vxlan_gpe"
        APIVersion = "2.0.0"
-       VersionCrc = 0x8295f28f
+       VersionCrc = 0x7a970d0b
 )
 
 // SwInterfaceSetVxlanGpeBypass defines message 'sw_interface_set_vxlan_gpe_bypass'.
@@ -122,7 +122,7 @@ type VxlanGpeAddDelTunnel struct {
 
 func (m *VxlanGpeAddDelTunnel) Reset()               { *m = VxlanGpeAddDelTunnel{} }
 func (*VxlanGpeAddDelTunnel) GetMessageName() string { return "vxlan_gpe_add_del_tunnel" }
-func (*VxlanGpeAddDelTunnel) GetCrcString() string   { return "7c6da6ae" }
+func (*VxlanGpeAddDelTunnel) GetCrcString() string   { return "a645b2b0" }
 func (*VxlanGpeAddDelTunnel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -227,7 +227,7 @@ type VxlanGpeTunnelDetails struct {
 
 func (m *VxlanGpeTunnelDetails) Reset()               { *m = VxlanGpeTunnelDetails{} }
 func (*VxlanGpeTunnelDetails) GetMessageName() string { return "vxlan_gpe_tunnel_details" }
-func (*VxlanGpeTunnelDetails) GetCrcString() string   { return "57712346" }
+func (*VxlanGpeTunnelDetails) GetCrcString() string   { return "0968fc8b" }
 func (*VxlanGpeTunnelDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
@@ -320,9 +320,9 @@ func init() { file_vxlan_gpe_binapi_init() }
 func file_vxlan_gpe_binapi_init() {
        api.RegisterMessage((*SwInterfaceSetVxlanGpeBypass)(nil), "sw_interface_set_vxlan_gpe_bypass_65247409")
        api.RegisterMessage((*SwInterfaceSetVxlanGpeBypassReply)(nil), "sw_interface_set_vxlan_gpe_bypass_reply_e8d4e804")
-       api.RegisterMessage((*VxlanGpeAddDelTunnel)(nil), "vxlan_gpe_add_del_tunnel_7c6da6ae")
+       api.RegisterMessage((*VxlanGpeAddDelTunnel)(nil), "vxlan_gpe_add_del_tunnel_a645b2b0")
        api.RegisterMessage((*VxlanGpeAddDelTunnelReply)(nil), "vxlan_gpe_add_del_tunnel_reply_5383d31f")
-       api.RegisterMessage((*VxlanGpeTunnelDetails)(nil), "vxlan_gpe_tunnel_details_57712346")
+       api.RegisterMessage((*VxlanGpeTunnelDetails)(nil), "vxlan_gpe_tunnel_details_0968fc8b")
        api.RegisterMessage((*VxlanGpeTunnelDump)(nil), "vxlan_gpe_tunnel_dump_f9e6675e")
 }
 
index 1162b59..984d82e 100644 (file)
@@ -1,7 +1,7 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
-//  binapi-generator: v0.4.0
-//  VPP:              20.05.1-release
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
 // source: /usr/share/vpp/api/plugins/vxlan_gpe_ioam_export.api.json
 
 // Package vxlan_gpe_ioam_export contains generated bindings for API file vxlan_gpe_ioam_export.api.
@@ -26,7 +26,7 @@ const _ = api.GoVppAPIPackageIsVersion2
 const (
        APIFile    = "vxlan_gpe_ioam_export"
        APIVersion = "1.0.0"
-       VersionCrc = 0x56bd3b73
+       VersionCrc = 0x26bebf64
 )
 
 // VxlanGpeIoamExportEnableDisable defines message 'vxlan_gpe_ioam_export_enable_disable'.
@@ -40,7 +40,7 @@ func (m *VxlanGpeIoamExportEnableDisable) Reset() { *m = VxlanGpeIoamExportEnabl
 func (*VxlanGpeIoamExportEnableDisable) GetMessageName() string {
        return "vxlan_gpe_ioam_export_enable_disable"
 }
-func (*VxlanGpeIoamExportEnableDisable) GetCrcString() string { return "e4d4ebfa" }
+func (*VxlanGpeIoamExportEnableDisable) GetCrcString() string { return "d4c76d3a" }
 func (*VxlanGpeIoamExportEnableDisable) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
@@ -109,7 +109,7 @@ func (m *VxlanGpeIoamExportEnableDisableReply) Unmarshal(b []byte) error {
 
 func init() { file_vxlan_gpe_ioam_export_binapi_init() }
 func file_vxlan_gpe_ioam_export_binapi_init() {
-       api.RegisterMessage((*VxlanGpeIoamExportEnableDisable)(nil), "vxlan_gpe_ioam_export_enable_disable_e4d4ebfa")
+       api.RegisterMessage((*VxlanGpeIoamExportEnableDisable)(nil), "vxlan_gpe_ioam_export_enable_disable_d4c76d3a")
        api.RegisterMessage((*VxlanGpeIoamExportEnableDisableReply)(nil), "vxlan_gpe_ioam_export_enable_disable_reply_e8d4e804")
 }
 
diff --git a/binapi/wireguard/wireguard.ba.go b/binapi/wireguard/wireguard.ba.go
new file mode 100644 (file)
index 0000000..d8ed366
--- /dev/null
@@ -0,0 +1,697 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.3.5-56-gc0da1f2-dirty
+//  VPP:              21.06-release
+// source: /usr/share/vpp/api/plugins/wireguard.api.json
+
+// Package wireguard contains generated bindings for API file wireguard.api.
+//
+// Contents:
+//   1 enum
+//   2 structs
+//  12 messages
+//
+package wireguard
+
+import (
+       "strconv"
+
+       api "git.fd.io/govpp.git/api"
+       interface_types "git.fd.io/govpp.git/binapi/interface_types"
+       ip_types "git.fd.io/govpp.git/binapi/ip_types"
+       codec "git.fd.io/govpp.git/codec"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+const (
+       APIFile    = "wireguard"
+       APIVersion = "0.1.0"
+       VersionCrc = 0x1e1d4252
+)
+
+// WireguardPeerFlags defines enum 'wireguard_peer_flags'.
+type WireguardPeerFlags uint8
+
+const (
+       WIREGUARD_PEER_STATUS_DEAD WireguardPeerFlags = 1
+)
+
+var (
+       WireguardPeerFlags_name = map[uint8]string{
+               1: "WIREGUARD_PEER_STATUS_DEAD",
+       }
+       WireguardPeerFlags_value = map[string]uint8{
+               "WIREGUARD_PEER_STATUS_DEAD": 1,
+       }
+)
+
+func (x WireguardPeerFlags) String() string {
+       s, ok := WireguardPeerFlags_name[uint8(x)]
+       if ok {
+               return s
+       }
+       str := func(n uint8) string {
+               s, ok := WireguardPeerFlags_name[uint8(n)]
+               if ok {
+                       return s
+               }
+               return "WireguardPeerFlags(" + strconv.Itoa(int(n)) + ")"
+       }
+       for i := uint8(0); i <= 8; i++ {
+               val := uint8(x)
+               if val&(1<<i) != 0 {
+                       if s != "" {
+                               s += "|"
+                       }
+                       s += str(1 << i)
+               }
+       }
+       if s == "" {
+               return str(uint8(x))
+       }
+       return s
+}
+
+// WireguardInterface defines type 'wireguard_interface'.
+type WireguardInterface struct {
+       UserInstance uint32                         `binapi:"u32,name=user_instance,default=4294967295" json:"user_instance,omitempty"`
+       SwIfIndex    interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       PrivateKey   []byte                         `binapi:"u8[32],name=private_key" json:"private_key,omitempty"`
+       PublicKey    []byte                         `binapi:"u8[32],name=public_key" json:"public_key,omitempty"`
+       Port         uint16                         `binapi:"u16,name=port" json:"port,omitempty"`
+       SrcIP        ip_types.Address               `binapi:"address,name=src_ip" json:"src_ip,omitempty"`
+}
+
+// WireguardPeer defines type 'wireguard_peer'.
+type WireguardPeer struct {
+       PublicKey           []byte                         `binapi:"u8[32],name=public_key" json:"public_key,omitempty"`
+       Port                uint16                         `binapi:"u16,name=port" json:"port,omitempty"`
+       PersistentKeepalive uint16                         `binapi:"u16,name=persistent_keepalive" json:"persistent_keepalive,omitempty"`
+       TableID             uint32                         `binapi:"u32,name=table_id" json:"table_id,omitempty"`
+       Endpoint            ip_types.Address               `binapi:"address,name=endpoint" json:"endpoint,omitempty"`
+       SwIfIndex           interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       Flags               WireguardPeerFlags             `binapi:"wireguard_peer_flags,name=flags" json:"flags,omitempty"`
+       NAllowedIps         uint8                          `binapi:"u8,name=n_allowed_ips" json:"-"`
+       AllowedIps          []ip_types.Prefix              `binapi:"prefix[n_allowed_ips],name=allowed_ips" json:"allowed_ips,omitempty"`
+}
+
+// WireguardInterfaceCreate defines message 'wireguard_interface_create'.
+// InProgress: the message form may change in the future versions
+type WireguardInterfaceCreate struct {
+       Interface   WireguardInterface `binapi:"wireguard_interface,name=interface" json:"interface,omitempty"`
+       GenerateKey bool               `binapi:"bool,name=generate_key" json:"generate_key,omitempty"`
+}
+
+func (m *WireguardInterfaceCreate) Reset()               { *m = WireguardInterfaceCreate{} }
+func (*WireguardInterfaceCreate) GetMessageName() string { return "wireguard_interface_create" }
+func (*WireguardInterfaceCreate) GetCrcString() string   { return "a530137e" }
+func (*WireguardInterfaceCreate) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *WireguardInterfaceCreate) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4      // m.Interface.UserInstance
+       size += 4      // m.Interface.SwIfIndex
+       size += 1 * 32 // m.Interface.PrivateKey
+       size += 1 * 32 // m.Interface.PublicKey
+       size += 2      // m.Interface.Port
+       size += 1      // m.Interface.SrcIP.Af
+       size += 1 * 16 // m.Interface.SrcIP.Un
+       size += 1      // m.GenerateKey
+       return size
+}
+func (m *WireguardInterfaceCreate) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.Interface.UserInstance)
+       buf.EncodeUint32(uint32(m.Interface.SwIfIndex))
+       buf.EncodeBytes(m.Interface.PrivateKey, 32)
+       buf.EncodeBytes(m.Interface.PublicKey, 32)
+       buf.EncodeUint16(m.Interface.Port)
+       buf.EncodeUint8(uint8(m.Interface.SrcIP.Af))
+       buf.EncodeBytes(m.Interface.SrcIP.Un.XXX_UnionData[:], 16)
+       buf.EncodeBool(m.GenerateKey)
+       return buf.Bytes(), nil
+}
+func (m *WireguardInterfaceCreate) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Interface.UserInstance = buf.DecodeUint32()
+       m.Interface.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Interface.PrivateKey = make([]byte, 32)
+       copy(m.Interface.PrivateKey, buf.DecodeBytes(len(m.Interface.PrivateKey)))
+       m.Interface.PublicKey = make([]byte, 32)
+       copy(m.Interface.PublicKey, buf.DecodeBytes(len(m.Interface.PublicKey)))
+       m.Interface.Port = buf.DecodeUint16()
+       m.Interface.SrcIP.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Interface.SrcIP.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.GenerateKey = buf.DecodeBool()
+       return nil
+}
+
+// WireguardInterfaceCreateReply defines message 'wireguard_interface_create_reply'.
+// InProgress: the message form may change in the future versions
+type WireguardInterfaceCreateReply struct {
+       Retval    int32                          `binapi:"i32,name=retval" json:"retval,omitempty"`
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *WireguardInterfaceCreateReply) Reset() { *m = WireguardInterfaceCreateReply{} }
+func (*WireguardInterfaceCreateReply) GetMessageName() string {
+       return "wireguard_interface_create_reply"
+}
+func (*WireguardInterfaceCreateReply) GetCrcString() string { return "5383d31f" }
+func (*WireguardInterfaceCreateReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *WireguardInterfaceCreateReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *WireguardInterfaceCreateReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *WireguardInterfaceCreateReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// WireguardInterfaceDelete defines message 'wireguard_interface_delete'.
+// InProgress: the message form may change in the future versions
+type WireguardInterfaceDelete struct {
+       SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *WireguardInterfaceDelete) Reset()               { *m = WireguardInterfaceDelete{} }
+func (*WireguardInterfaceDelete) GetMessageName() string { return "wireguard_interface_delete" }
+func (*WireguardInterfaceDelete) GetCrcString() string   { return "f9e6675e" }
+func (*WireguardInterfaceDelete) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *WireguardInterfaceDelete) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *WireguardInterfaceDelete) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *WireguardInterfaceDelete) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// WireguardInterfaceDeleteReply defines message 'wireguard_interface_delete_reply'.
+// InProgress: the message form may change in the future versions
+type WireguardInterfaceDeleteReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *WireguardInterfaceDeleteReply) Reset() { *m = WireguardInterfaceDeleteReply{} }
+func (*WireguardInterfaceDeleteReply) GetMessageName() string {
+       return "wireguard_interface_delete_reply"
+}
+func (*WireguardInterfaceDeleteReply) GetCrcString() string { return "e8d4e804" }
+func (*WireguardInterfaceDeleteReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *WireguardInterfaceDeleteReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *WireguardInterfaceDeleteReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *WireguardInterfaceDeleteReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// WireguardInterfaceDetails defines message 'wireguard_interface_details'.
+// InProgress: the message form may change in the future versions
+type WireguardInterfaceDetails struct {
+       Interface WireguardInterface `binapi:"wireguard_interface,name=interface" json:"interface,omitempty"`
+}
+
+func (m *WireguardInterfaceDetails) Reset()               { *m = WireguardInterfaceDetails{} }
+func (*WireguardInterfaceDetails) GetMessageName() string { return "wireguard_interface_details" }
+func (*WireguardInterfaceDetails) GetCrcString() string   { return "0dd4865d" }
+func (*WireguardInterfaceDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *WireguardInterfaceDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4      // m.Interface.UserInstance
+       size += 4      // m.Interface.SwIfIndex
+       size += 1 * 32 // m.Interface.PrivateKey
+       size += 1 * 32 // m.Interface.PublicKey
+       size += 2      // m.Interface.Port
+       size += 1      // m.Interface.SrcIP.Af
+       size += 1 * 16 // m.Interface.SrcIP.Un
+       return size
+}
+func (m *WireguardInterfaceDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.Interface.UserInstance)
+       buf.EncodeUint32(uint32(m.Interface.SwIfIndex))
+       buf.EncodeBytes(m.Interface.PrivateKey, 32)
+       buf.EncodeBytes(m.Interface.PublicKey, 32)
+       buf.EncodeUint16(m.Interface.Port)
+       buf.EncodeUint8(uint8(m.Interface.SrcIP.Af))
+       buf.EncodeBytes(m.Interface.SrcIP.Un.XXX_UnionData[:], 16)
+       return buf.Bytes(), nil
+}
+func (m *WireguardInterfaceDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Interface.UserInstance = buf.DecodeUint32()
+       m.Interface.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Interface.PrivateKey = make([]byte, 32)
+       copy(m.Interface.PrivateKey, buf.DecodeBytes(len(m.Interface.PrivateKey)))
+       m.Interface.PublicKey = make([]byte, 32)
+       copy(m.Interface.PublicKey, buf.DecodeBytes(len(m.Interface.PublicKey)))
+       m.Interface.Port = buf.DecodeUint16()
+       m.Interface.SrcIP.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Interface.SrcIP.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       return nil
+}
+
+// WireguardInterfaceDump defines message 'wireguard_interface_dump'.
+// InProgress: the message form may change in the future versions
+type WireguardInterfaceDump struct {
+       ShowPrivateKey bool                           `binapi:"bool,name=show_private_key" json:"show_private_key,omitempty"`
+       SwIfIndex      interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+}
+
+func (m *WireguardInterfaceDump) Reset()               { *m = WireguardInterfaceDump{} }
+func (*WireguardInterfaceDump) GetMessageName() string { return "wireguard_interface_dump" }
+func (*WireguardInterfaceDump) GetCrcString() string   { return "2c954158" }
+func (*WireguardInterfaceDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *WireguardInterfaceDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 // m.ShowPrivateKey
+       size += 4 // m.SwIfIndex
+       return size
+}
+func (m *WireguardInterfaceDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.ShowPrivateKey)
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       return buf.Bytes(), nil
+}
+func (m *WireguardInterfaceDump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.ShowPrivateKey = buf.DecodeBool()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       return nil
+}
+
+// WireguardPeerAdd defines message 'wireguard_peer_add'.
+// InProgress: the message form may change in the future versions
+type WireguardPeerAdd struct {
+       Peer WireguardPeer `binapi:"wireguard_peer,name=peer" json:"peer,omitempty"`
+}
+
+func (m *WireguardPeerAdd) Reset()               { *m = WireguardPeerAdd{} }
+func (*WireguardPeerAdd) GetMessageName() string { return "wireguard_peer_add" }
+func (*WireguardPeerAdd) GetCrcString() string   { return "ed792326" }
+func (*WireguardPeerAdd) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *WireguardPeerAdd) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 32 // m.Peer.PublicKey
+       size += 2      // m.Peer.Port
+       size += 2      // m.Peer.PersistentKeepalive
+       size += 4      // m.Peer.TableID
+       size += 1      // m.Peer.Endpoint.Af
+       size += 1 * 16 // m.Peer.Endpoint.Un
+       size += 4      // m.Peer.SwIfIndex
+       size += 1      // m.Peer.Flags
+       size += 1      // m.Peer.NAllowedIps
+       for j2 := 0; j2 < len(m.Peer.AllowedIps); j2++ {
+               var s2 ip_types.Prefix
+               _ = s2
+               if j2 < len(m.Peer.AllowedIps) {
+                       s2 = m.Peer.AllowedIps[j2]
+               }
+               size += 1      // s2.Address.Af
+               size += 1 * 16 // s2.Address.Un
+               size += 1      // s2.Len
+       }
+       return size
+}
+func (m *WireguardPeerAdd) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.Peer.PublicKey, 32)
+       buf.EncodeUint16(m.Peer.Port)
+       buf.EncodeUint16(m.Peer.PersistentKeepalive)
+       buf.EncodeUint32(m.Peer.TableID)
+       buf.EncodeUint8(uint8(m.Peer.Endpoint.Af))
+       buf.EncodeBytes(m.Peer.Endpoint.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint32(uint32(m.Peer.SwIfIndex))
+       buf.EncodeUint8(uint8(m.Peer.Flags))
+       buf.EncodeUint8(uint8(len(m.Peer.AllowedIps)))
+       for j1 := 0; j1 < len(m.Peer.AllowedIps); j1++ {
+               var v1 ip_types.Prefix // AllowedIps
+               if j1 < len(m.Peer.AllowedIps) {
+                       v1 = m.Peer.AllowedIps[j1]
+               }
+               buf.EncodeUint8(uint8(v1.Address.Af))
+               buf.EncodeBytes(v1.Address.Un.XXX_UnionData[:], 16)
+               buf.EncodeUint8(v1.Len)
+       }
+       return buf.Bytes(), nil
+}
+func (m *WireguardPeerAdd) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Peer.PublicKey = make([]byte, 32)
+       copy(m.Peer.PublicKey, buf.DecodeBytes(len(m.Peer.PublicKey)))
+       m.Peer.Port = buf.DecodeUint16()
+       m.Peer.PersistentKeepalive = buf.DecodeUint16()
+       m.Peer.TableID = buf.DecodeUint32()
+       m.Peer.Endpoint.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Peer.Endpoint.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Peer.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Peer.Flags = WireguardPeerFlags(buf.DecodeUint8())
+       m.Peer.NAllowedIps = buf.DecodeUint8()
+       m.Peer.AllowedIps = make([]ip_types.Prefix, m.Peer.NAllowedIps)
+       for j1 := 0; j1 < len(m.Peer.AllowedIps); j1++ {
+               m.Peer.AllowedIps[j1].Address.Af = ip_types.AddressFamily(buf.DecodeUint8())
+               copy(m.Peer.AllowedIps[j1].Address.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+               m.Peer.AllowedIps[j1].Len = buf.DecodeUint8()
+       }
+       return nil
+}
+
+// WireguardPeerAddReply defines message 'wireguard_peer_add_reply'.
+// InProgress: the message form may change in the future versions
+type WireguardPeerAddReply struct {
+       Retval    int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       PeerIndex uint32 `binapi:"u32,name=peer_index" json:"peer_index,omitempty"`
+}
+
+func (m *WireguardPeerAddReply) Reset()               { *m = WireguardPeerAddReply{} }
+func (*WireguardPeerAddReply) GetMessageName() string { return "wireguard_peer_add_reply" }
+func (*WireguardPeerAddReply) GetCrcString() string   { return "084a0cd3" }
+func (*WireguardPeerAddReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *WireguardPeerAddReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       size += 4 // m.PeerIndex
+       return size
+}
+func (m *WireguardPeerAddReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.PeerIndex)
+       return buf.Bytes(), nil
+}
+func (m *WireguardPeerAddReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.PeerIndex = buf.DecodeUint32()
+       return nil
+}
+
+// WireguardPeerRemove defines message 'wireguard_peer_remove'.
+// InProgress: the message form may change in the future versions
+type WireguardPeerRemove struct {
+       PeerIndex uint32 `binapi:"u32,name=peer_index" json:"peer_index,omitempty"`
+}
+
+func (m *WireguardPeerRemove) Reset()               { *m = WireguardPeerRemove{} }
+func (*WireguardPeerRemove) GetMessageName() string { return "wireguard_peer_remove" }
+func (*WireguardPeerRemove) GetCrcString() string   { return "3b74607a" }
+func (*WireguardPeerRemove) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *WireguardPeerRemove) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.PeerIndex
+       return size
+}
+func (m *WireguardPeerRemove) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.PeerIndex)
+       return buf.Bytes(), nil
+}
+func (m *WireguardPeerRemove) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.PeerIndex = buf.DecodeUint32()
+       return nil
+}
+
+// WireguardPeerRemoveReply defines message 'wireguard_peer_remove_reply'.
+// InProgress: the message form may change in the future versions
+type WireguardPeerRemoveReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *WireguardPeerRemoveReply) Reset()               { *m = WireguardPeerRemoveReply{} }
+func (*WireguardPeerRemoveReply) GetMessageName() string { return "wireguard_peer_remove_reply" }
+func (*WireguardPeerRemoveReply) GetCrcString() string   { return "e8d4e804" }
+func (*WireguardPeerRemoveReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *WireguardPeerRemoveReply) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 4 // m.Retval
+       return size
+}
+func (m *WireguardPeerRemoveReply) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *WireguardPeerRemoveReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       return nil
+}
+
+// WireguardPeersDetails defines message 'wireguard_peers_details'.
+// InProgress: the message form may change in the future versions
+type WireguardPeersDetails struct {
+       Peer WireguardPeer `binapi:"wireguard_peer,name=peer" json:"peer,omitempty"`
+}
+
+func (m *WireguardPeersDetails) Reset()               { *m = WireguardPeersDetails{} }
+func (*WireguardPeersDetails) GetMessageName() string { return "wireguard_peers_details" }
+func (*WireguardPeersDetails) GetCrcString() string   { return "2097f740" }
+func (*WireguardPeersDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *WireguardPeersDetails) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       size += 1 * 32 // m.Peer.PublicKey
+       size += 2      // m.Peer.Port
+       size += 2      // m.Peer.PersistentKeepalive
+       size += 4      // m.Peer.TableID
+       size += 1      // m.Peer.Endpoint.Af
+       size += 1 * 16 // m.Peer.Endpoint.Un
+       size += 4      // m.Peer.SwIfIndex
+       size += 1      // m.Peer.Flags
+       size += 1      // m.Peer.NAllowedIps
+       for j2 := 0; j2 < len(m.Peer.AllowedIps); j2++ {
+               var s2 ip_types.Prefix
+               _ = s2
+               if j2 < len(m.Peer.AllowedIps) {
+                       s2 = m.Peer.AllowedIps[j2]
+               }
+               size += 1      // s2.Address.Af
+               size += 1 * 16 // s2.Address.Un
+               size += 1      // s2.Len
+       }
+       return size
+}
+func (m *WireguardPeersDetails) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.Peer.PublicKey, 32)
+       buf.EncodeUint16(m.Peer.Port)
+       buf.EncodeUint16(m.Peer.PersistentKeepalive)
+       buf.EncodeUint32(m.Peer.TableID)
+       buf.EncodeUint8(uint8(m.Peer.Endpoint.Af))
+       buf.EncodeBytes(m.Peer.Endpoint.Un.XXX_UnionData[:], 16)
+       buf.EncodeUint32(uint32(m.Peer.SwIfIndex))
+       buf.EncodeUint8(uint8(m.Peer.Flags))
+       buf.EncodeUint8(uint8(len(m.Peer.AllowedIps)))
+       for j1 := 0; j1 < len(m.Peer.AllowedIps); j1++ {
+               var v1 ip_types.Prefix // AllowedIps
+               if j1 < len(m.Peer.AllowedIps) {
+                       v1 = m.Peer.AllowedIps[j1]
+               }
+               buf.EncodeUint8(uint8(v1.Address.Af))
+               buf.EncodeBytes(v1.Address.Un.XXX_UnionData[:], 16)
+               buf.EncodeUint8(v1.Len)
+       }
+       return buf.Bytes(), nil
+}
+func (m *WireguardPeersDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Peer.PublicKey = make([]byte, 32)
+       copy(m.Peer.PublicKey, buf.DecodeBytes(len(m.Peer.PublicKey)))
+       m.Peer.Port = buf.DecodeUint16()
+       m.Peer.PersistentKeepalive = buf.DecodeUint16()
+       m.Peer.TableID = buf.DecodeUint32()
+       m.Peer.Endpoint.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Peer.Endpoint.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Peer.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Peer.Flags = WireguardPeerFlags(buf.DecodeUint8())
+       m.Peer.NAllowedIps = buf.DecodeUint8()
+       m.Peer.AllowedIps = make([]ip_types.Prefix, m.Peer.NAllowedIps)
+       for j1 := 0; j1 < len(m.Peer.AllowedIps); j1++ {
+               m.Peer.AllowedIps[j1].Address.Af = ip_types.AddressFamily(buf.DecodeUint8())
+               copy(m.Peer.AllowedIps[j1].Address.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+               m.Peer.AllowedIps[j1].Len = buf.DecodeUint8()
+       }
+       return nil
+}
+
+// WireguardPeersDump defines message 'wireguard_peers_dump'.
+// InProgress: the message form may change in the future versions
+type WireguardPeersDump struct{}
+
+func (m *WireguardPeersDump) Reset()               { *m = WireguardPeersDump{} }
+func (*WireguardPeersDump) GetMessageName() string { return "wireguard_peers_dump" }
+func (*WireguardPeersDump) GetCrcString() string   { return "51077d14" }
+func (*WireguardPeersDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *WireguardPeersDump) Size() (size int) {
+       if m == nil {
+               return 0
+       }
+       return size
+}
+func (m *WireguardPeersDump) Marshal(b []byte) ([]byte, error) {
+       if b == nil {
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
+}
+func (m *WireguardPeersDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+func init() { file_wireguard_binapi_init() }
+func file_wireguard_binapi_init() {
+       api.RegisterMessage((*WireguardInterfaceCreate)(nil), "wireguard_interface_create_a530137e")
+       api.RegisterMessage((*WireguardInterfaceCreateReply)(nil), "wireguard_interface_create_reply_5383d31f")
+       api.RegisterMessage((*WireguardInterfaceDelete)(nil), "wireguard_interface_delete_f9e6675e")
+       api.RegisterMessage((*WireguardInterfaceDeleteReply)(nil), "wireguard_interface_delete_reply_e8d4e804")
+       api.RegisterMessage((*WireguardInterfaceDetails)(nil), "wireguard_interface_details_0dd4865d")
+       api.RegisterMessage((*WireguardInterfaceDump)(nil), "wireguard_interface_dump_2c954158")
+       api.RegisterMessage((*WireguardPeerAdd)(nil), "wireguard_peer_add_ed792326")
+       api.RegisterMessage((*WireguardPeerAddReply)(nil), "wireguard_peer_add_reply_084a0cd3")
+       api.RegisterMessage((*WireguardPeerRemove)(nil), "wireguard_peer_remove_3b74607a")
+       api.RegisterMessage((*WireguardPeerRemoveReply)(nil), "wireguard_peer_remove_reply_e8d4e804")
+       api.RegisterMessage((*WireguardPeersDetails)(nil), "wireguard_peers_details_2097f740")
+       api.RegisterMessage((*WireguardPeersDump)(nil), "wireguard_peers_dump_51077d14")
+}
+
+// Messages returns list of all messages in this module.
+func AllMessages() []api.Message {
+       return []api.Message{
+               (*WireguardInterfaceCreate)(nil),
+               (*WireguardInterfaceCreateReply)(nil),
+               (*WireguardInterfaceDelete)(nil),
+               (*WireguardInterfaceDeleteReply)(nil),
+               (*WireguardInterfaceDetails)(nil),
+               (*WireguardInterfaceDump)(nil),
+               (*WireguardPeerAdd)(nil),
+               (*WireguardPeerAddReply)(nil),
+               (*WireguardPeerRemove)(nil),
+               (*WireguardPeerRemoveReply)(nil),
+               (*WireguardPeersDetails)(nil),
+               (*WireguardPeersDump)(nil),
+       }
+}
diff --git a/binapi/wireguard/wireguard_rpc.ba.go b/binapi/wireguard/wireguard_rpc.ba.go
new file mode 100644 (file)
index 0000000..77b9097
--- /dev/null
@@ -0,0 +1,144 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+
+package wireguard
+
+import (
+       "context"
+       "fmt"
+       "io"
+
+       api "git.fd.io/govpp.git/api"
+       vpe "git.fd.io/govpp.git/binapi/vpe"
+)
+
+// RPCService defines RPC service wireguard.
+type RPCService interface {
+       WireguardInterfaceCreate(ctx context.Context, in *WireguardInterfaceCreate) (*WireguardInterfaceCreateReply, error)
+       WireguardInterfaceDelete(ctx context.Context, in *WireguardInterfaceDelete) (*WireguardInterfaceDeleteReply, error)
+       WireguardInterfaceDump(ctx context.Context, in *WireguardInterfaceDump) (RPCService_WireguardInterfaceDumpClient, error)
+       WireguardPeerAdd(ctx context.Context, in *WireguardPeerAdd) (*WireguardPeerAddReply, error)
+       WireguardPeerRemove(ctx context.Context, in *WireguardPeerRemove) (*WireguardPeerRemoveReply, error)
+       WireguardPeersDump(ctx context.Context, in *WireguardPeersDump) (RPCService_WireguardPeersDumpClient, error)
+}
+
+type serviceClient struct {
+       conn api.Connection
+}
+
+func NewServiceClient(conn api.Connection) RPCService {
+       return &serviceClient{conn}
+}
+
+func (c *serviceClient) WireguardInterfaceCreate(ctx context.Context, in *WireguardInterfaceCreate) (*WireguardInterfaceCreateReply, error) {
+       out := new(WireguardInterfaceCreateReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) WireguardInterfaceDelete(ctx context.Context, in *WireguardInterfaceDelete) (*WireguardInterfaceDeleteReply, error) {
+       out := new(WireguardInterfaceDeleteReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) WireguardInterfaceDump(ctx context.Context, in *WireguardInterfaceDump) (RPCService_WireguardInterfaceDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_WireguardInterfaceDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_WireguardInterfaceDumpClient interface {
+       Recv() (*WireguardInterfaceDetails, error)
+       api.Stream
+}
+
+type serviceClient_WireguardInterfaceDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_WireguardInterfaceDumpClient) Recv() (*WireguardInterfaceDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *WireguardInterfaceDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
+func (c *serviceClient) WireguardPeerAdd(ctx context.Context, in *WireguardPeerAdd) (*WireguardPeerAddReply, error) {
+       out := new(WireguardPeerAddReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) WireguardPeerRemove(ctx context.Context, in *WireguardPeerRemove) (*WireguardPeerRemoveReply, error) {
+       out := new(WireguardPeerRemoveReply)
+       err := c.conn.Invoke(ctx, in, out)
+       if err != nil {
+               return nil, err
+       }
+       return out, api.RetvalToVPPApiError(out.Retval)
+}
+
+func (c *serviceClient) WireguardPeersDump(ctx context.Context, in *WireguardPeersDump) (RPCService_WireguardPeersDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_WireguardPeersDumpClient{stream}
+       if err := x.Stream.SendMsg(in); err != nil {
+               return nil, err
+       }
+       if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
+               return nil, err
+       }
+       return x, nil
+}
+
+type RPCService_WireguardPeersDumpClient interface {
+       Recv() (*WireguardPeersDetails, error)
+       api.Stream
+}
+
+type serviceClient_WireguardPeersDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_WireguardPeersDumpClient) Recv() (*WireguardPeersDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *WireguardPeersDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}