Refactor GoVPP
[govpp.git] / examples / bin_api / ip / ip.ba.go
similarity index 63%
rename from examples/bin_api/ip/ip.go
rename to examples/bin_api/ip/ip.ba.go
index 7a72629..c980b6a 100644 (file)
-// Code generated by govpp binapi-generator DO NOT EDIT.
-// Package ip represents the VPP binary API of the 'ip' VPP module.
-// Generated from '../../bin_api/ip.api.json'
+// Code generated by GoVPP binapi-generator. DO NOT EDIT.
+// source: ip.api.json
+
+/*
+Package ip is a generated VPP binary API of the 'ip' VPP module.
+
+It is generated from this file:
+       ip.api.json
+
+It contains these VPP binary API objects:
+       87 messages
+       8 types
+       1 enum
+       1 union
+       42 services
+*/
 package ip
 
 import "git.fd.io/govpp.git/api"
+import "github.com/lunixbochs/struc"
+import "bytes"
 
-// VlApiVersion contains version of the API.
-const VlAPIVersion = 0xb395c625
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = struc.Pack
+var _ = bytes.NewBuffer
 
-// FibPath represents the VPP binary API data type 'fib_path'.
-// Generated from '../../bin_api/ip.api.json', line 2199:
+/* Enums */
+
+// AddressFamily represents the VPP binary API enum 'address_family'.
+// Generated from 'ip.api.json', line 2727:
+//
+//            "address_family",
+//            [
+//                "ADDRESS_IP4",
+//                0
+//            ],
+//            [
+//                "ADDRESS_IP6",
+//                1
+//            ],
+//            {
+//                "enumtype": "u32"
+//            }
+//
+type AddressFamily uint32
+
+const (
+       ADDRESS_IP4 AddressFamily = 0
+       ADDRESS_IP6 AddressFamily = 1
+)
+
+/* Types */
+
+// IP4Address represents the VPP binary API type 'ip4_address'.
+// Generated from 'ip.api.json', line 2743:
+//
+//            "ip4_address",
+//            [
+//                "u8",
+//                "address",
+//                4
+//            ],
+//            {
+//                "crc": "0xfc4baa28"
+//            }
+//
+type IP4Address struct {
+       Address []byte `struc:"[4]byte"`
+}
+
+func (*IP4Address) GetTypeName() string {
+       return "ip4_address"
+}
+func (*IP4Address) GetCrcString() string {
+       return "fc4baa28"
+}
+
+// IP6Address represents the VPP binary API type 'ip6_address'.
+// Generated from 'ip.api.json', line 2754:
+//
+//            "ip6_address",
+//            [
+//                "u8",
+//                "address",
+//                16
+//            ],
+//            {
+//                "crc": "0xad99ccc2"
+//            }
+//
+type IP6Address struct {
+       Address []byte `struc:"[16]byte"`
+}
+
+func (*IP6Address) GetTypeName() string {
+       return "ip6_address"
+}
+func (*IP6Address) GetCrcString() string {
+       return "ad99ccc2"
+}
+
+// Address represents the VPP binary API type 'address'.
+// Generated from 'ip.api.json', line 2765:
+//
+//            "address",
+//            [
+//                "vl_api_address_family_t",
+//                "af"
+//            ],
+//            [
+//                "vl_api_address_union_t",
+//                "un"
+//            ],
+//            {
+//                "crc": "0x09f11671"
+//            }
+//
+type Address struct {
+       Af AddressFamily
+       Un AddressUnion
+}
+
+func (*Address) GetTypeName() string {
+       return "address"
+}
+func (*Address) GetCrcString() string {
+       return "09f11671"
+}
+
+// Prefix represents the VPP binary API type 'prefix'.
+// Generated from 'ip.api.json', line 2779:
+//
+//            "prefix",
+//            [
+//                "vl_api_address_t",
+//                "address"
+//            ],
+//            [
+//                "u8",
+//                "address_length"
+//            ],
+//            {
+//                "crc": "0x0403aebc"
+//            }
+//
+type Prefix struct {
+       Address       Address
+       AddressLength uint8
+}
+
+func (*Prefix) GetTypeName() string {
+       return "prefix"
+}
+func (*Prefix) GetCrcString() string {
+       return "0403aebc"
+}
+
+// FibMplsLabel represents the VPP binary API type 'fib_mpls_label'.
+// Generated from 'ip.api.json', line 2793:
+//
+//            "fib_mpls_label",
+//            [
+//                "u8",
+//                "is_uniform"
+//            ],
+//            [
+//                "u32",
+//                "label"
+//            ],
+//            [
+//                "u8",
+//                "ttl"
+//            ],
+//            [
+//                "u8",
+//                "exp"
+//            ],
+//            {
+//                "crc": "0xc93bf35c"
+//            }
+//
+type FibMplsLabel struct {
+       IsUniform uint8
+       Label     uint32
+       TTL       uint8
+       Exp       uint8
+}
+
+func (*FibMplsLabel) GetTypeName() string {
+       return "fib_mpls_label"
+}
+func (*FibMplsLabel) GetCrcString() string {
+       return "c93bf35c"
+}
+
+// FibPath represents the VPP binary API type 'fib_path'.
+// Generated from 'ip.api.json', line 2815:
 //
 //            "fib_path",
 //            [
@@ -38,6 +223,10 @@ const VlAPIVersion = 0xb395c625
 //            ],
 //            [
 //                "u8",
+//                "is_udp_encap"
+//            ],
+//            [
+//                "u8",
 //                "is_unreach"
 //            ],
 //            [
@@ -46,6 +235,22 @@ const VlAPIVersion = 0xb395c625
 //            ],
 //            [
 //                "u8",
+//                "is_resolve_host"
+//            ],
+//            [
+//                "u8",
+//                "is_resolve_attached"
+//            ],
+//            [
+//                "u8",
+//                "is_dvr"
+//            ],
+//            [
+//                "u8",
+//                "is_source_lookup"
+//            ],
+//            [
+//                "u8",
 //                "afi"
 //            ],
 //            [
@@ -53,32 +258,199 @@ const VlAPIVersion = 0xb395c625
 //                "next_hop",
 //                16
 //            ],
+//            [
+//                "u32",
+//                "next_hop_id"
+//            ],
+//            [
+//                "u32",
+//                "rpf_id"
+//            ],
+//            [
+//                "u32",
+//                "via_label"
+//            ],
+//            [
+//                "u8",
+//                "n_labels"
+//            ],
+//            [
+//                "vl_api_fib_mpls_label_t",
+//                "label_stack",
+//                16
+//            ],
 //            {
-//                "crc": "0xcd899e0a"
+//                "crc": "0xabe483ef"
 //            }
 //
 type FibPath struct {
-       SwIfIndex  uint32
-       TableID    uint32
-       Weight     uint8
-       Preference uint8
-       IsLocal    uint8
-       IsDrop     uint8
-       IsUnreach  uint8
-       IsProhibit uint8
-       Afi        uint8
-       NextHop    []byte `struc:"[16]byte"`
+       SwIfIndex         uint32
+       TableID           uint32
+       Weight            uint8
+       Preference        uint8
+       IsLocal           uint8
+       IsDrop            uint8
+       IsUDPEncap        uint8
+       IsUnreach         uint8
+       IsProhibit        uint8
+       IsResolveHost     uint8
+       IsResolveAttached uint8
+       IsDvr             uint8
+       IsSourceLookup    uint8
+       Afi               uint8
+       NextHop           []byte `struc:"[16]byte"`
+       NextHopID         uint32
+       RpfID             uint32
+       ViaLabel          uint32
+       NLabels           uint8
+       LabelStack        []FibMplsLabel `struc:"[16]FibMplsLabel"`
 }
 
 func (*FibPath) GetTypeName() string {
        return "fib_path"
 }
 func (*FibPath) GetCrcString() string {
-       return "cd899e0a"
+       return "abe483ef"
+}
+
+// IP6RaPrefixInfo represents the VPP binary API type 'ip6_ra_prefix_info'.
+// Generated from 'ip.api.json', line 2903:
+//
+//            "ip6_ra_prefix_info",
+//            [
+//                "u8",
+//                "dst_address",
+//                16
+//            ],
+//            [
+//                "u8",
+//                "dst_address_length"
+//            ],
+//            [
+//                "u8",
+//                "flags"
+//            ],
+//            [
+//                "u32",
+//                "valid_time"
+//            ],
+//            [
+//                "u32",
+//                "preferred_time"
+//            ],
+//            {
+//                "crc": "0x83d7c6e5"
+//            }
+//
+type IP6RaPrefixInfo struct {
+       DstAddress       []byte `struc:"[16]byte"`
+       DstAddressLength uint8
+       Flags            uint8
+       ValidTime        uint32
+       PreferredTime    uint32
+}
+
+func (*IP6RaPrefixInfo) GetTypeName() string {
+       return "ip6_ra_prefix_info"
+}
+func (*IP6RaPrefixInfo) GetCrcString() string {
+       return "83d7c6e5"
+}
+
+// ProxyArp represents the VPP binary API type 'proxy_arp'.
+// Generated from 'ip.api.json', line 2930:
+//
+//            "proxy_arp",
+//            [
+//                "u32",
+//                "vrf_id"
+//            ],
+//            [
+//                "u8",
+//                "low_address",
+//                4
+//            ],
+//            [
+//                "u8",
+//                "hi_address",
+//                4
+//            ],
+//            {
+//                "crc": "0x6d88106e"
+//            }
+//
+type ProxyArp struct {
+       VrfID      uint32
+       LowAddress []byte `struc:"[4]byte"`
+       HiAddress  []byte `struc:"[4]byte"`
+}
+
+func (*ProxyArp) GetTypeName() string {
+       return "proxy_arp"
+}
+func (*ProxyArp) GetCrcString() string {
+       return "6d88106e"
+}
+
+/* Unions */
+
+// AddressUnion represents the VPP binary API union 'address_union'.
+// Generated from 'ip.api.json', line 2562:
+//
+//            "address_union",
+//            [
+//                "vl_api_ip4_address_t",
+//                "ip4"
+//            ],
+//            [
+//                "vl_api_ip6_address_t",
+//                "ip6"
+//            ],
+//            {
+//                "crc": "0xd68a2fb4"
+//            }
+//
+type AddressUnion struct {
+       Union_data [16]byte
+}
+
+func (*AddressUnion) GetTypeName() string {
+       return "address_union"
+}
+func (*AddressUnion) GetCrcString() string {
+       return "d68a2fb4"
+}
+
+func (u *AddressUnion) SetIP4(a IP4Address) {
+       var b = new(bytes.Buffer)
+       if err := struc.Pack(b, &a); err != nil {
+               return
+       }
+       copy(u.Union_data[:], b.Bytes())
+}
+func (u *AddressUnion) GetIP4() (a IP4Address) {
+       var b = bytes.NewReader(u.Union_data[:])
+       struc.Unpack(b, &a)
+       return
+}
+
+func (u *AddressUnion) SetIP6(a IP6Address) {
+       var b = new(bytes.Buffer)
+       if err := struc.Pack(b, &a); err != nil {
+               return
+       }
+       copy(u.Union_data[:], b.Bytes())
+}
+func (u *AddressUnion) GetIP6() (a IP6Address) {
+       var b = bytes.NewReader(u.Union_data[:])
+       struc.Unpack(b, &a)
+       return
 }
 
+/* Messages */
+
 // IPTableAddDel represents the VPP binary API message 'ip_table_add_del'.
-// Generated from '../../bin_api/ip.api.json', line 187:
+// Generated from 'ip.api.json', line 4:
 //
 //            "ip_table_add_del",
 //            [
@@ -116,7 +488,7 @@ func (*FibPath) GetCrcString() string {
 //
 type IPTableAddDel struct {
        TableID uint32
-       IsIpv6  uint8
+       IsIPv6  uint8
        IsAdd   uint8
        Name    []byte `struc:"[64]byte"`
 }
@@ -124,18 +496,18 @@ type IPTableAddDel struct {
 func (*IPTableAddDel) GetMessageName() string {
        return "ip_table_add_del"
 }
-func (*IPTableAddDel) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*IPTableAddDel) GetCrcString() string {
        return "0240c89d"
 }
+func (*IPTableAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewIPTableAddDel() api.Message {
        return &IPTableAddDel{}
 }
 
 // IPTableAddDelReply represents the VPP binary API message 'ip_table_add_del_reply'.
-// Generated from '../../bin_api/ip.api.json', line 222:
+// Generated from 'ip.api.json', line 39:
 //
 //            "ip_table_add_del_reply",
 //            [
@@ -161,18 +533,18 @@ type IPTableAddDelReply struct {
 func (*IPTableAddDelReply) GetMessageName() string {
        return "ip_table_add_del_reply"
 }
-func (*IPTableAddDelReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*IPTableAddDelReply) GetCrcString() string {
        return "e8d4e804"
 }
+func (*IPTableAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewIPTableAddDelReply() api.Message {
        return &IPTableAddDelReply{}
 }
 
 // IPFibDump represents the VPP binary API message 'ip_fib_dump'.
-// Generated from '../../bin_api/ip.api.json', line 240:
+// Generated from 'ip.api.json', line 57:
 //
 //            "ip_fib_dump",
 //            [
@@ -191,24 +563,23 @@ func NewIPTableAddDelReply() api.Message {
 //                "crc": "0x51077d14"
 //            }
 //
-type IPFibDump struct {
-}
+type IPFibDump struct{}
 
 func (*IPFibDump) GetMessageName() string {
        return "ip_fib_dump"
 }
-func (*IPFibDump) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*IPFibDump) GetCrcString() string {
        return "51077d14"
 }
+func (*IPFibDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewIPFibDump() api.Message {
        return &IPFibDump{}
 }
 
 // IPFibDetails represents the VPP binary API message 'ip_fib_details'.
-// Generated from '../../bin_api/ip.api.json', line 258:
+// Generated from 'ip.api.json', line 75:
 //
 //            "ip_fib_details",
 //            [
@@ -263,18 +634,18 @@ type IPFibDetails struct {
 func (*IPFibDetails) GetMessageName() string {
        return "ip_fib_details"
 }
-func (*IPFibDetails) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*IPFibDetails) GetCrcString() string {
        return "99dfd73b"
 }
+func (*IPFibDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewIPFibDetails() api.Message {
        return &IPFibDetails{}
 }
 
 // IP6FibDump represents the VPP binary API message 'ip6_fib_dump'.
-// Generated from '../../bin_api/ip.api.json', line 300:
+// Generated from 'ip.api.json', line 117:
 //
 //            "ip6_fib_dump",
 //            [
@@ -293,24 +664,23 @@ func NewIPFibDetails() api.Message {
 //                "crc": "0x51077d14"
 //            }
 //
-type IP6FibDump struct {
-}
+type IP6FibDump struct{}
 
 func (*IP6FibDump) GetMessageName() string {
        return "ip6_fib_dump"
 }
-func (*IP6FibDump) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*IP6FibDump) GetCrcString() string {
        return "51077d14"
 }
+func (*IP6FibDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewIP6FibDump() api.Message {
        return &IP6FibDump{}
 }
 
 // IP6FibDetails represents the VPP binary API message 'ip6_fib_details'.
-// Generated from '../../bin_api/ip.api.json', line 318:
+// Generated from 'ip.api.json', line 135:
 //
 //            "ip6_fib_details",
 //            [
@@ -365,18 +735,18 @@ type IP6FibDetails struct {
 func (*IP6FibDetails) GetMessageName() string {
        return "ip6_fib_details"
 }
-func (*IP6FibDetails) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*IP6FibDetails) GetCrcString() string {
        return "abd0060e"
 }
+func (*IP6FibDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewIP6FibDetails() api.Message {
        return &IP6FibDetails{}
 }
 
 // IPNeighborDump represents the VPP binary API message 'ip_neighbor_dump'.
-// Generated from '../../bin_api/ip.api.json', line 360:
+// Generated from 'ip.api.json', line 177:
 //
 //            "ip_neighbor_dump",
 //            [
@@ -405,24 +775,24 @@ func NewIP6FibDetails() api.Message {
 //
 type IPNeighborDump struct {
        SwIfIndex uint32
-       IsIpv6    uint8
+       IsIPv6    uint8
 }
 
 func (*IPNeighborDump) GetMessageName() string {
        return "ip_neighbor_dump"
 }
-func (*IPNeighborDump) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*IPNeighborDump) GetCrcString() string {
        return "6b7bcd0a"
 }
+func (*IPNeighborDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewIPNeighborDump() api.Message {
        return &IPNeighborDump{}
 }
 
 // IPNeighborDetails represents the VPP binary API message 'ip_neighbor_details'.
-// Generated from '../../bin_api/ip.api.json', line 386:
+// Generated from 'ip.api.json', line 203:
 //
 //            "ip_neighbor_details",
 //            [
@@ -462,7 +832,7 @@ func NewIPNeighborDump() api.Message {
 type IPNeighborDetails struct {
        SwIfIndex  uint32
        IsStatic   uint8
-       IsIpv6     uint8
+       IsIPv6     uint8
        MacAddress []byte `struc:"[6]byte"`
        IPAddress  []byte `struc:"[16]byte"`
 }
@@ -470,18 +840,18 @@ type IPNeighborDetails struct {
 func (*IPNeighborDetails) GetMessageName() string {
        return "ip_neighbor_details"
 }
-func (*IPNeighborDetails) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*IPNeighborDetails) GetCrcString() string {
        return "85e32a72"
 }
+func (*IPNeighborDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewIPNeighborDetails() api.Message {
        return &IPNeighborDetails{}
 }
 
 // IPNeighborAddDel represents the VPP binary API message 'ip_neighbor_add_del'.
-// Generated from '../../bin_api/ip.api.json', line 422:
+// Generated from 'ip.api.json', line 239:
 //
 //            "ip_neighbor_add_del",
 //            [
@@ -533,7 +903,7 @@ func NewIPNeighborDetails() api.Message {
 type IPNeighborAddDel struct {
        SwIfIndex  uint32
        IsAdd      uint8
-       IsIpv6     uint8
+       IsIPv6     uint8
        IsStatic   uint8
        IsNoAdjFib uint8
        MacAddress []byte `struc:"[6]byte"`
@@ -543,18 +913,18 @@ type IPNeighborAddDel struct {
 func (*IPNeighborAddDel) GetMessageName() string {
        return "ip_neighbor_add_del"
 }
-func (*IPNeighborAddDel) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*IPNeighborAddDel) GetCrcString() string {
        return "4711eb25"
 }
+func (*IPNeighborAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewIPNeighborAddDel() api.Message {
        return &IPNeighborAddDel{}
 }
 
 // IPNeighborAddDelReply represents the VPP binary API message 'ip_neighbor_add_del_reply'.
-// Generated from '../../bin_api/ip.api.json', line 470:
+// Generated from 'ip.api.json', line 287:
 //
 //            "ip_neighbor_add_del_reply",
 //            [
@@ -580,18 +950,18 @@ type IPNeighborAddDelReply struct {
 func (*IPNeighborAddDelReply) GetMessageName() string {
        return "ip_neighbor_add_del_reply"
 }
-func (*IPNeighborAddDelReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*IPNeighborAddDelReply) GetCrcString() string {
        return "e8d4e804"
 }
+func (*IPNeighborAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewIPNeighborAddDelReply() api.Message {
        return &IPNeighborAddDelReply{}
 }
 
 // SetIPFlowHash represents the VPP binary API message 'set_ip_flow_hash'.
-// Generated from '../../bin_api/ip.api.json', line 488:
+// Generated from 'ip.api.json', line 305:
 //
 //            "set_ip_flow_hash",
 //            [
@@ -644,7 +1014,7 @@ func NewIPNeighborAddDelReply() api.Message {
 //
 type SetIPFlowHash struct {
        VrfID   uint32
-       IsIpv6  uint8
+       IsIPv6  uint8
        Src     uint8
        Dst     uint8
        Sport   uint8
@@ -656,18 +1026,18 @@ type SetIPFlowHash struct {
 func (*SetIPFlowHash) GetMessageName() string {
        return "set_ip_flow_hash"
 }
-func (*SetIPFlowHash) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*SetIPFlowHash) GetCrcString() string {
        return "32ebf737"
 }
+func (*SetIPFlowHash) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewSetIPFlowHash() api.Message {
        return &SetIPFlowHash{}
 }
 
 // SetIPFlowHashReply represents the VPP binary API message 'set_ip_flow_hash_reply'.
-// Generated from '../../bin_api/ip.api.json', line 538:
+// Generated from 'ip.api.json', line 355:
 //
 //            "set_ip_flow_hash_reply",
 //            [
@@ -693,18 +1063,18 @@ type SetIPFlowHashReply struct {
 func (*SetIPFlowHashReply) GetMessageName() string {
        return "set_ip_flow_hash_reply"
 }
-func (*SetIPFlowHashReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*SetIPFlowHashReply) GetCrcString() string {
        return "e8d4e804"
 }
+func (*SetIPFlowHashReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewSetIPFlowHashReply() api.Message {
        return &SetIPFlowHashReply{}
 }
 
 // SwInterfaceIP6ndRaConfig represents the VPP binary API message 'sw_interface_ip6nd_ra_config'.
-// Generated from '../../bin_api/ip.api.json', line 556:
+// Generated from 'ip.api.json', line 373:
 //
 //            "sw_interface_ip6nd_ra_config",
 //            [
@@ -799,18 +1169,18 @@ type SwInterfaceIP6ndRaConfig struct {
 func (*SwInterfaceIP6ndRaConfig) GetMessageName() string {
        return "sw_interface_ip6nd_ra_config"
 }
-func (*SwInterfaceIP6ndRaConfig) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*SwInterfaceIP6ndRaConfig) GetCrcString() string {
        return "c3f02daa"
 }
+func (*SwInterfaceIP6ndRaConfig) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewSwInterfaceIP6ndRaConfig() api.Message {
        return &SwInterfaceIP6ndRaConfig{}
 }
 
 // SwInterfaceIP6ndRaConfigReply represents the VPP binary API message 'sw_interface_ip6nd_ra_config_reply'.
-// Generated from '../../bin_api/ip.api.json', line 630:
+// Generated from 'ip.api.json', line 447:
 //
 //            "sw_interface_ip6nd_ra_config_reply",
 //            [
@@ -836,18 +1206,18 @@ type SwInterfaceIP6ndRaConfigReply struct {
 func (*SwInterfaceIP6ndRaConfigReply) GetMessageName() string {
        return "sw_interface_ip6nd_ra_config_reply"
 }
-func (*SwInterfaceIP6ndRaConfigReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*SwInterfaceIP6ndRaConfigReply) GetCrcString() string {
        return "e8d4e804"
 }
+func (*SwInterfaceIP6ndRaConfigReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewSwInterfaceIP6ndRaConfigReply() api.Message {
        return &SwInterfaceIP6ndRaConfigReply{}
 }
 
 // SwInterfaceIP6ndRaPrefix represents the VPP binary API message 'sw_interface_ip6nd_ra_prefix'.
-// Generated from '../../bin_api/ip.api.json', line 648:
+// Generated from 'ip.api.json', line 465:
 //
 //            "sw_interface_ip6nd_ra_prefix",
 //            [
@@ -928,18 +1298,18 @@ type SwInterfaceIP6ndRaPrefix struct {
 func (*SwInterfaceIP6ndRaPrefix) GetMessageName() string {
        return "sw_interface_ip6nd_ra_prefix"
 }
-func (*SwInterfaceIP6ndRaPrefix) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*SwInterfaceIP6ndRaPrefix) GetCrcString() string {
        return "ca763c9a"
 }
+func (*SwInterfaceIP6ndRaPrefix) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewSwInterfaceIP6ndRaPrefix() api.Message {
        return &SwInterfaceIP6ndRaPrefix{}
 }
 
 // SwInterfaceIP6ndRaPrefixReply represents the VPP binary API message 'sw_interface_ip6nd_ra_prefix_reply'.
-// Generated from '../../bin_api/ip.api.json', line 711:
+// Generated from 'ip.api.json', line 528:
 //
 //            "sw_interface_ip6nd_ra_prefix_reply",
 //            [
@@ -965,18 +1335,18 @@ type SwInterfaceIP6ndRaPrefixReply struct {
 func (*SwInterfaceIP6ndRaPrefixReply) GetMessageName() string {
        return "sw_interface_ip6nd_ra_prefix_reply"
 }
-func (*SwInterfaceIP6ndRaPrefixReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*SwInterfaceIP6ndRaPrefixReply) GetCrcString() string {
        return "e8d4e804"
 }
+func (*SwInterfaceIP6ndRaPrefixReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewSwInterfaceIP6ndRaPrefixReply() api.Message {
        return &SwInterfaceIP6ndRaPrefixReply{}
 }
 
 // IP6ndProxyAddDel represents the VPP binary API message 'ip6nd_proxy_add_del'.
-// Generated from '../../bin_api/ip.api.json', line 729:
+// Generated from 'ip.api.json', line 546:
 //
 //            "ip6nd_proxy_add_del",
 //            [
@@ -1017,18 +1387,18 @@ type IP6ndProxyAddDel struct {
 func (*IP6ndProxyAddDel) GetMessageName() string {
        return "ip6nd_proxy_add_del"
 }
-func (*IP6ndProxyAddDel) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*IP6ndProxyAddDel) GetCrcString() string {
        return "d95f0fa0"
 }
+func (*IP6ndProxyAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewIP6ndProxyAddDel() api.Message {
        return &IP6ndProxyAddDel{}
 }
 
 // IP6ndProxyAddDelReply represents the VPP binary API message 'ip6nd_proxy_add_del_reply'.
-// Generated from '../../bin_api/ip.api.json', line 760:
+// Generated from 'ip.api.json', line 577:
 //
 //            "ip6nd_proxy_add_del_reply",
 //            [
@@ -1054,18 +1424,18 @@ type IP6ndProxyAddDelReply struct {
 func (*IP6ndProxyAddDelReply) GetMessageName() string {
        return "ip6nd_proxy_add_del_reply"
 }
-func (*IP6ndProxyAddDelReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*IP6ndProxyAddDelReply) GetCrcString() string {
        return "e8d4e804"
 }
+func (*IP6ndProxyAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewIP6ndProxyAddDelReply() api.Message {
        return &IP6ndProxyAddDelReply{}
 }
 
 // IP6ndProxyDetails represents the VPP binary API message 'ip6nd_proxy_details'.
-// Generated from '../../bin_api/ip.api.json', line 778:
+// Generated from 'ip.api.json', line 595:
 //
 //            "ip6nd_proxy_details",
 //            [
@@ -1101,18 +1471,18 @@ type IP6ndProxyDetails struct {
 func (*IP6ndProxyDetails) GetMessageName() string {
        return "ip6nd_proxy_details"
 }
-func (*IP6ndProxyDetails) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*IP6ndProxyDetails) GetCrcString() string {
        return "d73bf1ab"
 }
+func (*IP6ndProxyDetails) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewIP6ndProxyDetails() api.Message {
        return &IP6ndProxyDetails{}
 }
 
 // IP6ndProxyDump represents the VPP binary API message 'ip6nd_proxy_dump'.
-// Generated from '../../bin_api/ip.api.json', line 805:
+// Generated from 'ip.api.json', line 622:
 //
 //            "ip6nd_proxy_dump",
 //            [
@@ -1131,24 +1501,126 @@ func NewIP6ndProxyDetails() api.Message {
 //                "crc": "0x51077d14"
 //            }
 //
-type IP6ndProxyDump struct {
-}
+type IP6ndProxyDump struct{}
 
 func (*IP6ndProxyDump) GetMessageName() string {
        return "ip6nd_proxy_dump"
 }
-func (*IP6ndProxyDump) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*IP6ndProxyDump) GetCrcString() string {
        return "51077d14"
 }
+func (*IP6ndProxyDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewIP6ndProxyDump() api.Message {
        return &IP6ndProxyDump{}
 }
 
+// IP6ndSendRouterSolicitation represents the VPP binary API message 'ip6nd_send_router_solicitation'.
+// Generated from 'ip.api.json', line 640:
+//
+//            "ip6nd_send_router_solicitation",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "irt"
+//            ],
+//            [
+//                "u32",
+//                "mrt"
+//            ],
+//            [
+//                "u32",
+//                "mrc"
+//            ],
+//            [
+//                "u32",
+//                "mrd"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            [
+//                "u8",
+//                "stop"
+//            ],
+//            {
+//                "crc": "0xbd968917"
+//            }
+//
+type IP6ndSendRouterSolicitation struct {
+       Irt       uint32
+       Mrt       uint32
+       Mrc       uint32
+       Mrd       uint32
+       SwIfIndex uint32
+       Stop      uint8
+}
+
+func (*IP6ndSendRouterSolicitation) GetMessageName() string {
+       return "ip6nd_send_router_solicitation"
+}
+func (*IP6ndSendRouterSolicitation) GetCrcString() string {
+       return "bd968917"
+}
+func (*IP6ndSendRouterSolicitation) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func NewIP6ndSendRouterSolicitation() api.Message {
+       return &IP6ndSendRouterSolicitation{}
+}
+
+// IP6ndSendRouterSolicitationReply represents the VPP binary API message 'ip6nd_send_router_solicitation_reply'.
+// Generated from 'ip.api.json', line 682:
+//
+//            "ip6nd_send_router_solicitation_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type IP6ndSendRouterSolicitationReply struct {
+       Retval int32
+}
+
+func (*IP6ndSendRouterSolicitationReply) GetMessageName() string {
+       return "ip6nd_send_router_solicitation_reply"
+}
+func (*IP6ndSendRouterSolicitationReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func (*IP6ndSendRouterSolicitationReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func NewIP6ndSendRouterSolicitationReply() api.Message {
+       return &IP6ndSendRouterSolicitationReply{}
+}
+
 // SwInterfaceIP6EnableDisable represents the VPP binary API message 'sw_interface_ip6_enable_disable'.
-// Generated from '../../bin_api/ip.api.json', line 823:
+// Generated from 'ip.api.json', line 700:
 //
 //            "sw_interface_ip6_enable_disable",
 //            [
@@ -1183,18 +1655,18 @@ type SwInterfaceIP6EnableDisable struct {
 func (*SwInterfaceIP6EnableDisable) GetMessageName() string {
        return "sw_interface_ip6_enable_disable"
 }
-func (*SwInterfaceIP6EnableDisable) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*SwInterfaceIP6EnableDisable) GetCrcString() string {
        return "a36fadc0"
 }
+func (*SwInterfaceIP6EnableDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewSwInterfaceIP6EnableDisable() api.Message {
        return &SwInterfaceIP6EnableDisable{}
 }
 
 // SwInterfaceIP6EnableDisableReply represents the VPP binary API message 'sw_interface_ip6_enable_disable_reply'.
-// Generated from '../../bin_api/ip.api.json', line 849:
+// Generated from 'ip.api.json', line 726:
 //
 //            "sw_interface_ip6_enable_disable_reply",
 //            [
@@ -1220,18 +1692,18 @@ type SwInterfaceIP6EnableDisableReply struct {
 func (*SwInterfaceIP6EnableDisableReply) GetMessageName() string {
        return "sw_interface_ip6_enable_disable_reply"
 }
-func (*SwInterfaceIP6EnableDisableReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*SwInterfaceIP6EnableDisableReply) GetCrcString() string {
        return "e8d4e804"
 }
+func (*SwInterfaceIP6EnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewSwInterfaceIP6EnableDisableReply() api.Message {
        return &SwInterfaceIP6EnableDisableReply{}
 }
 
 // SwInterfaceIP6SetLinkLocalAddress represents the VPP binary API message 'sw_interface_ip6_set_link_local_address'.
-// Generated from '../../bin_api/ip.api.json', line 867:
+// Generated from 'ip.api.json', line 744:
 //
 //            "sw_interface_ip6_set_link_local_address",
 //            [
@@ -1267,18 +1739,18 @@ type SwInterfaceIP6SetLinkLocalAddress struct {
 func (*SwInterfaceIP6SetLinkLocalAddress) GetMessageName() string {
        return "sw_interface_ip6_set_link_local_address"
 }
-func (*SwInterfaceIP6SetLinkLocalAddress) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*SwInterfaceIP6SetLinkLocalAddress) GetCrcString() string {
        return "d73bf1ab"
 }
+func (*SwInterfaceIP6SetLinkLocalAddress) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewSwInterfaceIP6SetLinkLocalAddress() api.Message {
        return &SwInterfaceIP6SetLinkLocalAddress{}
 }
 
 // SwInterfaceIP6SetLinkLocalAddressReply represents the VPP binary API message 'sw_interface_ip6_set_link_local_address_reply'.
-// Generated from '../../bin_api/ip.api.json', line 894:
+// Generated from 'ip.api.json', line 771:
 //
 //            "sw_interface_ip6_set_link_local_address_reply",
 //            [
@@ -1304,18 +1776,18 @@ type SwInterfaceIP6SetLinkLocalAddressReply struct {
 func (*SwInterfaceIP6SetLinkLocalAddressReply) GetMessageName() string {
        return "sw_interface_ip6_set_link_local_address_reply"
 }
-func (*SwInterfaceIP6SetLinkLocalAddressReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*SwInterfaceIP6SetLinkLocalAddressReply) GetCrcString() string {
        return "e8d4e804"
 }
+func (*SwInterfaceIP6SetLinkLocalAddressReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewSwInterfaceIP6SetLinkLocalAddressReply() api.Message {
        return &SwInterfaceIP6SetLinkLocalAddressReply{}
 }
 
 // IPAddDelRoute represents the VPP binary API message 'ip_add_del_route'.
-// Generated from '../../bin_api/ip.api.json', line 912:
+// Generated from 'ip.api.json', line 789:
 //
 //            "ip_add_del_route",
 //            [
@@ -1437,13 +1909,13 @@ func NewSwInterfaceIP6SetLinkLocalAddressReply() api.Message {
 //                "next_hop_via_label"
 //            ],
 //            [
-//                "u32",
+//                "vl_api_fib_mpls_label_t",
 //                "next_hop_out_label_stack",
 //                0,
 //                "next_hop_n_out_labels"
 //            ],
 //            {
-//                "crc": "0xc85f8290"
+//                "crc": "0x4219d62d"
 //            }
 //
 type IPAddDelRoute struct {
@@ -1456,7 +1928,7 @@ type IPAddDelRoute struct {
        IsDrop               uint8
        IsUnreach            uint8
        IsProhibit           uint8
-       IsIpv6               uint8
+       IsIPv6               uint8
        IsLocal              uint8
        IsClassify           uint8
        IsMultipath          uint8
@@ -1473,24 +1945,24 @@ type IPAddDelRoute struct {
        NextHopAddress       []byte `struc:"[16]byte"`
        NextHopNOutLabels    uint8  `struc:"sizeof=NextHopOutLabelStack"`
        NextHopViaLabel      uint32
-       NextHopOutLabelStack []uint32
+       NextHopOutLabelStack []FibMplsLabel
 }
 
 func (*IPAddDelRoute) GetMessageName() string {
        return "ip_add_del_route"
 }
+func (*IPAddDelRoute) GetCrcString() string {
+       return "4219d62d"
+}
 func (*IPAddDelRoute) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
-func (*IPAddDelRoute) GetCrcString() string {
-       return "c85f8290"
-}
 func NewIPAddDelRoute() api.Message {
        return &IPAddDelRoute{}
 }
 
 // IPAddDelRouteReply represents the VPP binary API message 'ip_add_del_route_reply'.
-// Generated from '../../bin_api/ip.api.json', line 1042:
+// Generated from 'ip.api.json', line 919:
 //
 //            "ip_add_del_route_reply",
 //            [
@@ -1516,18 +1988,18 @@ type IPAddDelRouteReply struct {
 func (*IPAddDelRouteReply) GetMessageName() string {
        return "ip_add_del_route_reply"
 }
-func (*IPAddDelRouteReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*IPAddDelRouteReply) GetCrcString() string {
        return "e8d4e804"
 }
+func (*IPAddDelRouteReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewIPAddDelRouteReply() api.Message {
        return &IPAddDelRouteReply{}
 }
 
 // IPMrouteAddDel represents the VPP binary API message 'ip_mroute_add_del'.
-// Generated from '../../bin_api/ip.api.json', line 1060:
+// Generated from 'ip.api.json', line 937:
 //
 //            "ip_mroute_add_del",
 //            [
@@ -1596,8 +2068,13 @@ func NewIPAddDelRouteReply() api.Message {
 //                "src_address",
 //                16
 //            ],
+//            [
+//                "u8",
+//                "nh_address",
+//                16
+//            ],
 //            {
-//                "crc": "0xc37112f7"
+//                "crc": "0xf44c17b1"
 //            }
 //
 type IPMrouteAddDel struct {
@@ -1610,27 +2087,28 @@ type IPMrouteAddDel struct {
        GrpAddressLength uint16
        NextHopAfi       uint8
        IsAdd            uint8
-       IsIpv6           uint8
+       IsIPv6           uint8
        IsLocal          uint8
        GrpAddress       []byte `struc:"[16]byte"`
        SrcAddress       []byte `struc:"[16]byte"`
+       NhAddress        []byte `struc:"[16]byte"`
 }
 
 func (*IPMrouteAddDel) GetMessageName() string {
        return "ip_mroute_add_del"
 }
+func (*IPMrouteAddDel) GetCrcString() string {
+       return "f44c17b1"
+}
 func (*IPMrouteAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
-func (*IPMrouteAddDel) GetCrcString() string {
-       return "c37112f7"
-}
 func NewIPMrouteAddDel() api.Message {
        return &IPMrouteAddDel{}
 }
 
 // IPMrouteAddDelReply represents the VPP binary API message 'ip_mroute_add_del_reply'.
-// Generated from '../../bin_api/ip.api.json', line 1132:
+// Generated from 'ip.api.json', line 1014:
 //
 //            "ip_mroute_add_del_reply",
 //            [
@@ -1656,18 +2134,18 @@ type IPMrouteAddDelReply struct {
 func (*IPMrouteAddDelReply) GetMessageName() string {
        return "ip_mroute_add_del_reply"
 }
-func (*IPMrouteAddDelReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*IPMrouteAddDelReply) GetCrcString() string {
        return "e8d4e804"
 }
+func (*IPMrouteAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewIPMrouteAddDelReply() api.Message {
        return &IPMrouteAddDelReply{}
 }
 
 // IPMfibDump represents the VPP binary API message 'ip_mfib_dump'.
-// Generated from '../../bin_api/ip.api.json', line 1150:
+// Generated from 'ip.api.json', line 1032:
 //
 //            "ip_mfib_dump",
 //            [
@@ -1686,24 +2164,23 @@ func NewIPMrouteAddDelReply() api.Message {
 //                "crc": "0x51077d14"
 //            }
 //
-type IPMfibDump struct {
-}
+type IPMfibDump struct{}
 
 func (*IPMfibDump) GetMessageName() string {
        return "ip_mfib_dump"
 }
-func (*IPMfibDump) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*IPMfibDump) GetCrcString() string {
        return "51077d14"
 }
+func (*IPMfibDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewIPMfibDump() api.Message {
        return &IPMfibDump{}
 }
 
 // IPMfibDetails represents the VPP binary API message 'ip_mfib_details'.
-// Generated from '../../bin_api/ip.api.json', line 1168:
+// Generated from 'ip.api.json', line 1050:
 //
 //            "ip_mfib_details",
 //            [
@@ -1768,18 +2245,18 @@ type IPMfibDetails struct {
 func (*IPMfibDetails) GetMessageName() string {
        return "ip_mfib_details"
 }
-func (*IPMfibDetails) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*IPMfibDetails) GetCrcString() string {
        return "5e530d5e"
 }
+func (*IPMfibDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewIPMfibDetails() api.Message {
        return &IPMfibDetails{}
 }
 
 // IP6MfibDump represents the VPP binary API message 'ip6_mfib_dump'.
-// Generated from '../../bin_api/ip.api.json', line 1218:
+// Generated from 'ip.api.json', line 1100:
 //
 //            "ip6_mfib_dump",
 //            [
@@ -1798,24 +2275,23 @@ func NewIPMfibDetails() api.Message {
 //                "crc": "0x51077d14"
 //            }
 //
-type IP6MfibDump struct {
-}
+type IP6MfibDump struct{}
 
 func (*IP6MfibDump) GetMessageName() string {
        return "ip6_mfib_dump"
 }
-func (*IP6MfibDump) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*IP6MfibDump) GetCrcString() string {
        return "51077d14"
 }
+func (*IP6MfibDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewIP6MfibDump() api.Message {
        return &IP6MfibDump{}
 }
 
 // IP6MfibDetails represents the VPP binary API message 'ip6_mfib_details'.
-// Generated from '../../bin_api/ip.api.json', line 1236:
+// Generated from 'ip.api.json', line 1118:
 //
 //            "ip6_mfib_details",
 //            [
@@ -1870,18 +2346,18 @@ type IP6MfibDetails struct {
 func (*IP6MfibDetails) GetMessageName() string {
        return "ip6_mfib_details"
 }
-func (*IP6MfibDetails) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*IP6MfibDetails) GetCrcString() string {
        return "e02dcb4b"
 }
+func (*IP6MfibDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewIP6MfibDetails() api.Message {
        return &IP6MfibDetails{}
 }
 
 // IPAddressDetails represents the VPP binary API message 'ip_address_details'.
-// Generated from '../../bin_api/ip.api.json', line 1278:
+// Generated from 'ip.api.json', line 1160:
 //
 //            "ip_address_details",
 //            [
@@ -1921,24 +2397,24 @@ type IPAddressDetails struct {
        IP           []byte `struc:"[16]byte"`
        PrefixLength uint8
        SwIfIndex    uint32
-       IsIpv6       uint8
+       IsIPv6       uint8
 }
 
 func (*IPAddressDetails) GetMessageName() string {
        return "ip_address_details"
 }
-func (*IPAddressDetails) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*IPAddressDetails) GetCrcString() string {
        return "bc7442f2"
 }
+func (*IPAddressDetails) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewIPAddressDetails() api.Message {
        return &IPAddressDetails{}
 }
 
 // IPAddressDump represents the VPP binary API message 'ip_address_dump'.
-// Generated from '../../bin_api/ip.api.json', line 1313:
+// Generated from 'ip.api.json', line 1195:
 //
 //            "ip_address_dump",
 //            [
@@ -1967,69 +2443,72 @@ func NewIPAddressDetails() api.Message {
 //
 type IPAddressDump struct {
        SwIfIndex uint32
-       IsIpv6    uint8
+       IsIPv6    uint8
 }
 
 func (*IPAddressDump) GetMessageName() string {
        return "ip_address_dump"
 }
-func (*IPAddressDump) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*IPAddressDump) GetCrcString() string {
        return "6b7bcd0a"
 }
+func (*IPAddressDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewIPAddressDump() api.Message {
        return &IPAddressDump{}
 }
 
-// IPDetails represents the VPP binary API message 'ip_details'.
-// Generated from '../../bin_api/ip.api.json', line 1339:
+// IPUnnumberedDetails represents the VPP binary API message 'ip_unnumbered_details'.
+// Generated from 'ip.api.json', line 1221:
 //
-//            "ip_details",
+//            "ip_unnumbered_details",
 //            [
 //                "u16",
 //                "_vl_msg_id"
 //            ],
 //            [
 //                "u32",
-//                "sw_if_index"
+//                "client_index"
 //            ],
 //            [
 //                "u32",
 //                "context"
 //            ],
 //            [
-//                "u8",
-//                "is_ipv6"
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            [
+//                "u32",
+//                "ip_sw_if_index"
 //            ],
 //            {
-//                "crc": "0x452ffc5a"
+//                "crc": "0x05b717ca"
 //            }
 //
-type IPDetails struct {
-       SwIfIndex uint32
-       Context   uint32
-       IsIpv6    uint8
+type IPUnnumberedDetails struct {
+       SwIfIndex   uint32
+       IPSwIfIndex uint32
 }
 
-func (*IPDetails) GetMessageName() string {
-       return "ip_details"
+func (*IPUnnumberedDetails) GetMessageName() string {
+       return "ip_unnumbered_details"
 }
-func (*IPDetails) GetMessageType() api.MessageType {
-       return api.OtherMessage
+func (*IPUnnumberedDetails) GetCrcString() string {
+       return "05b717ca"
 }
-func (*IPDetails) GetCrcString() string {
-       return "452ffc5a"
+func (*IPUnnumberedDetails) GetMessageType() api.MessageType {
+       return api.RequestMessage
 }
-func NewIPDetails() api.Message {
-       return &IPDetails{}
+func NewIPUnnumberedDetails() api.Message {
+       return &IPUnnumberedDetails{}
 }
 
-// IPDump represents the VPP binary API message 'ip_dump'.
-// Generated from '../../bin_api/ip.api.json', line 1361:
+// IPUnnumberedDump represents the VPP binary API message 'ip_unnumbered_dump'.
+// Generated from 'ip.api.json', line 1247:
 //
-//            "ip_dump",
+//            "ip_unnumbered_dump",
 //            [
 //                "u16",
 //                "_vl_msg_id"
@@ -2043,7 +2522,91 @@ func NewIPDetails() api.Message {
 //                "context"
 //            ],
 //            [
-//                "u8",
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            {
+//                "crc": "0x529cb13f"
+//            }
+//
+type IPUnnumberedDump struct {
+       SwIfIndex uint32
+}
+
+func (*IPUnnumberedDump) GetMessageName() string {
+       return "ip_unnumbered_dump"
+}
+func (*IPUnnumberedDump) GetCrcString() string {
+       return "529cb13f"
+}
+func (*IPUnnumberedDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func NewIPUnnumberedDump() api.Message {
+       return &IPUnnumberedDump{}
+}
+
+// IPDetails represents the VPP binary API message 'ip_details'.
+// Generated from 'ip.api.json', line 1269:
+//
+//            "ip_details",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u8",
+//                "is_ipv6"
+//            ],
+//            {
+//                "crc": "0x452ffc5a"
+//            }
+//
+type IPDetails struct {
+       SwIfIndex uint32
+       Context   uint32
+       IsIPv6    uint8
+}
+
+func (*IPDetails) GetMessageName() string {
+       return "ip_details"
+}
+func (*IPDetails) GetCrcString() string {
+       return "452ffc5a"
+}
+func (*IPDetails) GetMessageType() api.MessageType {
+       return api.OtherMessage
+}
+func NewIPDetails() api.Message {
+       return &IPDetails{}
+}
+
+// IPDump represents the VPP binary API message 'ip_dump'.
+// Generated from 'ip.api.json', line 1291:
+//
+//            "ip_dump",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u8",
 //                "is_ipv6"
 //            ],
 //            {
@@ -2051,24 +2614,24 @@ func NewIPDetails() api.Message {
 //            }
 //
 type IPDump struct {
-       IsIpv6 uint8
+       IsIPv6 uint8
 }
 
 func (*IPDump) GetMessageName() string {
        return "ip_dump"
 }
-func (*IPDump) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*IPDump) GetCrcString() string {
        return "de883da4"
 }
+func (*IPDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewIPDump() api.Message {
        return &IPDump{}
 }
 
 // MfibSignalDump represents the VPP binary API message 'mfib_signal_dump'.
-// Generated from '../../bin_api/ip.api.json', line 1383:
+// Generated from 'ip.api.json', line 1313:
 //
 //            "mfib_signal_dump",
 //            [
@@ -2087,24 +2650,23 @@ func NewIPDump() api.Message {
 //                "crc": "0x51077d14"
 //            }
 //
-type MfibSignalDump struct {
-}
+type MfibSignalDump struct{}
 
 func (*MfibSignalDump) GetMessageName() string {
        return "mfib_signal_dump"
 }
-func (*MfibSignalDump) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*MfibSignalDump) GetCrcString() string {
        return "51077d14"
 }
+func (*MfibSignalDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewMfibSignalDump() api.Message {
        return &MfibSignalDump{}
 }
 
 // MfibSignalDetails represents the VPP binary API message 'mfib_signal_details'.
-// Generated from '../../bin_api/ip.api.json', line 1401:
+// Generated from 'ip.api.json', line 1331:
 //
 //            "mfib_signal_details",
 //            [
@@ -2167,18 +2729,18 @@ type MfibSignalDetails struct {
 func (*MfibSignalDetails) GetMessageName() string {
        return "mfib_signal_details"
 }
-func (*MfibSignalDetails) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*MfibSignalDetails) GetCrcString() string {
        return "791bbeab"
 }
+func (*MfibSignalDetails) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewMfibSignalDetails() api.Message {
        return &MfibSignalDetails{}
 }
 
 // IPPuntPolice represents the VPP binary API message 'ip_punt_police'.
-// Generated from '../../bin_api/ip.api.json', line 1450:
+// Generated from 'ip.api.json', line 1380:
 //
 //            "ip_punt_police",
 //            [
@@ -2218,18 +2780,18 @@ type IPPuntPolice struct {
 func (*IPPuntPolice) GetMessageName() string {
        return "ip_punt_police"
 }
-func (*IPPuntPolice) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*IPPuntPolice) GetCrcString() string {
        return "38691592"
 }
+func (*IPPuntPolice) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewIPPuntPolice() api.Message {
        return &IPPuntPolice{}
 }
 
 // IPPuntPoliceReply represents the VPP binary API message 'ip_punt_police_reply'.
-// Generated from '../../bin_api/ip.api.json', line 1480:
+// Generated from 'ip.api.json', line 1410:
 //
 //            "ip_punt_police_reply",
 //            [
@@ -2255,18 +2817,18 @@ type IPPuntPoliceReply struct {
 func (*IPPuntPoliceReply) GetMessageName() string {
        return "ip_punt_police_reply"
 }
-func (*IPPuntPoliceReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*IPPuntPoliceReply) GetCrcString() string {
        return "e8d4e804"
 }
+func (*IPPuntPoliceReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewIPPuntPoliceReply() api.Message {
        return &IPPuntPoliceReply{}
 }
 
 // IPPuntRedirect represents the VPP binary API message 'ip_punt_redirect'.
-// Generated from '../../bin_api/ip.api.json', line 1498:
+// Generated from 'ip.api.json', line 1428:
 //
 //            "ip_punt_redirect",
 //            [
@@ -2317,18 +2879,18 @@ type IPPuntRedirect struct {
 func (*IPPuntRedirect) GetMessageName() string {
        return "ip_punt_redirect"
 }
-func (*IPPuntRedirect) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*IPPuntRedirect) GetCrcString() string {
        return "996b6603"
 }
+func (*IPPuntRedirect) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewIPPuntRedirect() api.Message {
        return &IPPuntRedirect{}
 }
 
 // IPPuntRedirectReply represents the VPP binary API message 'ip_punt_redirect_reply'.
-// Generated from '../../bin_api/ip.api.json', line 1537:
+// Generated from 'ip.api.json', line 1467:
 //
 //            "ip_punt_redirect_reply",
 //            [
@@ -2354,18 +2916,18 @@ type IPPuntRedirectReply struct {
 func (*IPPuntRedirectReply) GetMessageName() string {
        return "ip_punt_redirect_reply"
 }
-func (*IPPuntRedirectReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*IPPuntRedirectReply) GetCrcString() string {
        return "e8d4e804"
 }
+func (*IPPuntRedirectReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewIPPuntRedirectReply() api.Message {
        return &IPPuntRedirectReply{}
 }
 
 // IPContainerProxyAddDel represents the VPP binary API message 'ip_container_proxy_add_del'.
-// Generated from '../../bin_api/ip.api.json', line 1555:
+// Generated from 'ip.api.json', line 1485:
 //
 //            "ip_container_proxy_add_del",
 //            [
@@ -2416,18 +2978,18 @@ type IPContainerProxyAddDel struct {
 func (*IPContainerProxyAddDel) GetMessageName() string {
        return "ip_container_proxy_add_del"
 }
-func (*IPContainerProxyAddDel) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*IPContainerProxyAddDel) GetCrcString() string {
        return "0a355d39"
 }
+func (*IPContainerProxyAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewIPContainerProxyAddDel() api.Message {
        return &IPContainerProxyAddDel{}
 }
 
 // IPContainerProxyAddDelReply represents the VPP binary API message 'ip_container_proxy_add_del_reply'.
-// Generated from '../../bin_api/ip.api.json', line 1594:
+// Generated from 'ip.api.json', line 1524:
 //
 //            "ip_container_proxy_add_del_reply",
 //            [
@@ -2453,18 +3015,18 @@ type IPContainerProxyAddDelReply struct {
 func (*IPContainerProxyAddDelReply) GetMessageName() string {
        return "ip_container_proxy_add_del_reply"
 }
-func (*IPContainerProxyAddDelReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*IPContainerProxyAddDelReply) GetCrcString() string {
        return "e8d4e804"
 }
+func (*IPContainerProxyAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewIPContainerProxyAddDelReply() api.Message {
        return &IPContainerProxyAddDelReply{}
 }
 
 // IPSourceAndPortRangeCheckAddDel represents the VPP binary API message 'ip_source_and_port_range_check_add_del'.
-// Generated from '../../bin_api/ip.api.json', line 1612:
+// Generated from 'ip.api.json', line 1542:
 //
 //            "ip_source_and_port_range_check_add_del",
 //            [
@@ -2519,7 +3081,7 @@ func NewIPContainerProxyAddDelReply() api.Message {
 //            }
 //
 type IPSourceAndPortRangeCheckAddDel struct {
-       IsIpv6         uint8
+       IsIPv6         uint8
        IsAdd          uint8
        MaskLength     uint8
        Address        []byte `struc:"[16]byte"`
@@ -2532,18 +3094,18 @@ type IPSourceAndPortRangeCheckAddDel struct {
 func (*IPSourceAndPortRangeCheckAddDel) GetMessageName() string {
        return "ip_source_and_port_range_check_add_del"
 }
-func (*IPSourceAndPortRangeCheckAddDel) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*IPSourceAndPortRangeCheckAddDel) GetCrcString() string {
        return "03d6b03a"
 }
+func (*IPSourceAndPortRangeCheckAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewIPSourceAndPortRangeCheckAddDel() api.Message {
        return &IPSourceAndPortRangeCheckAddDel{}
 }
 
 // IPSourceAndPortRangeCheckAddDelReply represents the VPP binary API message 'ip_source_and_port_range_check_add_del_reply'.
-// Generated from '../../bin_api/ip.api.json', line 1665:
+// Generated from 'ip.api.json', line 1595:
 //
 //            "ip_source_and_port_range_check_add_del_reply",
 //            [
@@ -2569,18 +3131,18 @@ type IPSourceAndPortRangeCheckAddDelReply struct {
 func (*IPSourceAndPortRangeCheckAddDelReply) GetMessageName() string {
        return "ip_source_and_port_range_check_add_del_reply"
 }
-func (*IPSourceAndPortRangeCheckAddDelReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*IPSourceAndPortRangeCheckAddDelReply) GetCrcString() string {
        return "e8d4e804"
 }
+func (*IPSourceAndPortRangeCheckAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewIPSourceAndPortRangeCheckAddDelReply() api.Message {
        return &IPSourceAndPortRangeCheckAddDelReply{}
 }
 
 // IPSourceAndPortRangeCheckInterfaceAddDel represents the VPP binary API message 'ip_source_and_port_range_check_interface_add_del'.
-// Generated from '../../bin_api/ip.api.json', line 1683:
+// Generated from 'ip.api.json', line 1613:
 //
 //            "ip_source_and_port_range_check_interface_add_del",
 //            [
@@ -2635,18 +3197,18 @@ type IPSourceAndPortRangeCheckInterfaceAddDel struct {
 func (*IPSourceAndPortRangeCheckInterfaceAddDel) GetMessageName() string {
        return "ip_source_and_port_range_check_interface_add_del"
 }
-func (*IPSourceAndPortRangeCheckInterfaceAddDel) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*IPSourceAndPortRangeCheckInterfaceAddDel) GetCrcString() string {
        return "6966bc44"
 }
+func (*IPSourceAndPortRangeCheckInterfaceAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewIPSourceAndPortRangeCheckInterfaceAddDel() api.Message {
        return &IPSourceAndPortRangeCheckInterfaceAddDel{}
 }
 
 // IPSourceAndPortRangeCheckInterfaceAddDelReply represents the VPP binary API message 'ip_source_and_port_range_check_interface_add_del_reply'.
-// Generated from '../../bin_api/ip.api.json', line 1725:
+// Generated from 'ip.api.json', line 1655:
 //
 //            "ip_source_and_port_range_check_interface_add_del_reply",
 //            [
@@ -2672,20 +3234,20 @@ type IPSourceAndPortRangeCheckInterfaceAddDelReply struct {
 func (*IPSourceAndPortRangeCheckInterfaceAddDelReply) GetMessageName() string {
        return "ip_source_and_port_range_check_interface_add_del_reply"
 }
-func (*IPSourceAndPortRangeCheckInterfaceAddDelReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*IPSourceAndPortRangeCheckInterfaceAddDelReply) GetCrcString() string {
        return "e8d4e804"
 }
+func (*IPSourceAndPortRangeCheckInterfaceAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewIPSourceAndPortRangeCheckInterfaceAddDelReply() api.Message {
        return &IPSourceAndPortRangeCheckInterfaceAddDelReply{}
 }
 
-// WantIP4ArpEvents represents the VPP binary API message 'want_ip4_arp_events'.
-// Generated from '../../bin_api/ip.api.json', line 1743:
+// IPScanNeighborEnableDisable represents the VPP binary API message 'ip_scan_neighbor_enable_disable'.
+// Generated from 'ip.api.json', line 1673:
 //
-//            "want_ip4_arp_events",
+//            "ip_scan_neighbor_enable_disable",
 //            [
 //                "u16",
 //                "_vl_msg_id"
@@ -2700,43 +3262,58 @@ func NewIPSourceAndPortRangeCheckInterfaceAddDelReply() api.Message {
 //            ],
 //            [
 //                "u8",
-//                "enable_disable"
+//                "mode"
 //            ],
 //            [
-//                "u32",
-//                "pid"
+//                "u8",
+//                "scan_interval"
 //            ],
 //            [
-//                "u32",
-//                "address"
+//                "u8",
+//                "max_proc_time"
+//            ],
+//            [
+//                "u8",
+//                "max_update"
+//            ],
+//            [
+//                "u8",
+//                "scan_int_delay"
+//            ],
+//            [
+//                "u8",
+//                "stale_threshold"
 //            ],
 //            {
-//                "crc": "0x77e06379"
+//                "crc": "0x0a6bf57a"
 //            }
 //
-type WantIP4ArpEvents struct {
-       EnableDisable uint8
-       Pid           uint32
-       Address       uint32
+type IPScanNeighborEnableDisable struct {
+       Mode           uint8
+       ScanInterval   uint8
+       MaxProcTime    uint8
+       MaxUpdate      uint8
+       ScanIntDelay   uint8
+       StaleThreshold uint8
 }
 
-func (*WantIP4ArpEvents) GetMessageName() string {
-       return "want_ip4_arp_events"
+func (*IPScanNeighborEnableDisable) GetMessageName() string {
+       return "ip_scan_neighbor_enable_disable"
 }
-func (*WantIP4ArpEvents) GetMessageType() api.MessageType {
-       return api.RequestMessage
+func (*IPScanNeighborEnableDisable) GetCrcString() string {
+       return "0a6bf57a"
 }
-func (*WantIP4ArpEvents) GetCrcString() string {
-       return "77e06379"
+func (*IPScanNeighborEnableDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
 }
-func NewWantIP4ArpEvents() api.Message {
-       return &WantIP4ArpEvents{}
+func NewIPScanNeighborEnableDisable() api.Message {
+       return &IPScanNeighborEnableDisable{}
 }
 
-// WantIP4ArpEventsReply represents the VPP binary API message 'want_ip4_arp_events_reply'.
-// Generated from '../../bin_api/ip.api.json', line 1773:
+// IPScanNeighborEnableDisableReply represents the VPP binary API message 'ip_scan_neighbor_enable_disable_reply'.
+// Generated from 'ip.api.json', line 1715:
 //
-//            "want_ip4_arp_events_reply",
+//            "ip_scan_neighbor_enable_disable_reply",
 //            [
 //                "u16",
 //                "_vl_msg_id"
@@ -2753,27 +3330,27 @@ func NewWantIP4ArpEvents() api.Message {
 //                "crc": "0xe8d4e804"
 //            }
 //
-type WantIP4ArpEventsReply struct {
+type IPScanNeighborEnableDisableReply struct {
        Retval int32
 }
 
-func (*WantIP4ArpEventsReply) GetMessageName() string {
-       return "want_ip4_arp_events_reply"
+func (*IPScanNeighborEnableDisableReply) GetMessageName() string {
+       return "ip_scan_neighbor_enable_disable_reply"
 }
-func (*WantIP4ArpEventsReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*WantIP4ArpEventsReply) GetCrcString() string {
+func (*IPScanNeighborEnableDisableReply) GetCrcString() string {
        return "e8d4e804"
 }
-func NewWantIP4ArpEventsReply() api.Message {
-       return &WantIP4ArpEventsReply{}
+func (*IPScanNeighborEnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func NewIPScanNeighborEnableDisableReply() api.Message {
+       return &IPScanNeighborEnableDisableReply{}
 }
 
-// IP4ArpEvent represents the VPP binary API message 'ip4_arp_event'.
-// Generated from '../../bin_api/ip.api.json', line 1791:
+// IPProbeNeighbor represents the VPP binary API message 'ip_probe_neighbor'.
+// Generated from 'ip.api.json', line 1733:
 //
-//            "ip4_arp_event",
+//            "ip_probe_neighbor",
 //            [
 //                "u16",
 //                "_vl_msg_id"
@@ -2784,11 +3361,7 @@ func NewWantIP4ArpEventsReply() api.Message {
 //            ],
 //            [
 //                "u32",
-//                "address"
-//            ],
-//            [
-//                "u32",
-//                "pid"
+//                "context"
 //            ],
 //            [
 //                "u32",
@@ -2796,92 +3369,273 @@ func NewWantIP4ArpEventsReply() api.Message {
 //            ],
 //            [
 //                "u8",
-//                "new_mac",
-//                6
+//                "dst_address",
+//                16
 //            ],
 //            [
 //                "u8",
-//                "mac_ip"
+//                "is_ipv6"
 //            ],
 //            {
-//                "crc": "0xef7235f7"
+//                "crc": "0x1e44bfd7"
 //            }
 //
-type IP4ArpEvent struct {
-       Address   uint32
-       Pid       uint32
-       SwIfIndex uint32
-       NewMac    []byte `struc:"[6]byte"`
-       MacIP     uint8
+type IPProbeNeighbor struct {
+       SwIfIndex  uint32
+       DstAddress []byte `struc:"[16]byte"`
+       IsIPv6     uint8
 }
 
-func (*IP4ArpEvent) GetMessageName() string {
-       return "ip4_arp_event"
+func (*IPProbeNeighbor) GetMessageName() string {
+       return "ip_probe_neighbor"
 }
-func (*IP4ArpEvent) GetMessageType() api.MessageType {
-       return api.EventMessage
+func (*IPProbeNeighbor) GetCrcString() string {
+       return "1e44bfd7"
 }
-func (*IP4ArpEvent) GetCrcString() string {
-       return "ef7235f7"
+func (*IPProbeNeighbor) GetMessageType() api.MessageType {
+       return api.RequestMessage
 }
-func NewIP4ArpEvent() api.Message {
-       return &IP4ArpEvent{}
+func NewIPProbeNeighbor() api.Message {
+       return &IPProbeNeighbor{}
 }
 
-// WantIP6NdEvents represents the VPP binary API message 'want_ip6_nd_events'.
-// Generated from '../../bin_api/ip.api.json', line 1826:
+// IPProbeNeighborReply represents the VPP binary API message 'ip_probe_neighbor_reply'.
+// Generated from 'ip.api.json', line 1764:
 //
-//            "want_ip6_nd_events",
+//            "ip_probe_neighbor_reply",
 //            [
 //                "u16",
 //                "_vl_msg_id"
 //            ],
 //            [
 //                "u32",
-//                "client_index"
-//            ],
-//            [
-//                "u32",
 //                "context"
 //            ],
 //            [
-//                "u8",
-//                "enable_disable"
-//            ],
-//            [
-//                "u32",
-//                "pid"
-//            ],
-//            [
-//                "u8",
-//                "address",
-//                16
+//                "i32",
+//                "retval"
 //            ],
 //            {
-//                "crc": "0x1cf65fbb"
+//                "crc": "0xe8d4e804"
 //            }
 //
-type WantIP6NdEvents struct {
-       EnableDisable uint8
-       Pid           uint32
-       Address       []byte `struc:"[16]byte"`
+type IPProbeNeighborReply struct {
+       Retval int32
 }
 
-func (*WantIP6NdEvents) GetMessageName() string {
-       return "want_ip6_nd_events"
+func (*IPProbeNeighborReply) GetMessageName() string {
+       return "ip_probe_neighbor_reply"
 }
-func (*WantIP6NdEvents) GetMessageType() api.MessageType {
-       return api.RequestMessage
+func (*IPProbeNeighborReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func (*IPProbeNeighborReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func NewIPProbeNeighborReply() api.Message {
+       return &IPProbeNeighborReply{}
+}
+
+// WantIP4ArpEvents represents the VPP binary API message 'want_ip4_arp_events'.
+// Generated from 'ip.api.json', line 1782:
+//
+//            "want_ip4_arp_events",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u8",
+//                "enable_disable"
+//            ],
+//            [
+//                "u32",
+//                "pid"
+//            ],
+//            [
+//                "u32",
+//                "address"
+//            ],
+//            {
+//                "crc": "0x77e06379"
+//            }
+//
+type WantIP4ArpEvents struct {
+       EnableDisable uint8
+       PID           uint32
+       Address       uint32
+}
+
+func (*WantIP4ArpEvents) GetMessageName() string {
+       return "want_ip4_arp_events"
+}
+func (*WantIP4ArpEvents) GetCrcString() string {
+       return "77e06379"
+}
+func (*WantIP4ArpEvents) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func NewWantIP4ArpEvents() api.Message {
+       return &WantIP4ArpEvents{}
+}
+
+// WantIP4ArpEventsReply represents the VPP binary API message 'want_ip4_arp_events_reply'.
+// Generated from 'ip.api.json', line 1812:
+//
+//            "want_ip4_arp_events_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type WantIP4ArpEventsReply struct {
+       Retval int32
+}
+
+func (*WantIP4ArpEventsReply) GetMessageName() string {
+       return "want_ip4_arp_events_reply"
+}
+func (*WantIP4ArpEventsReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func (*WantIP4ArpEventsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func NewWantIP4ArpEventsReply() api.Message {
+       return &WantIP4ArpEventsReply{}
+}
+
+// IP4ArpEvent represents the VPP binary API message 'ip4_arp_event'.
+// Generated from 'ip.api.json', line 1830:
+//
+//            "ip4_arp_event",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "address"
+//            ],
+//            [
+//                "u32",
+//                "pid"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            [
+//                "u8",
+//                "new_mac",
+//                6
+//            ],
+//            [
+//                "u8",
+//                "mac_ip"
+//            ],
+//            {
+//                "crc": "0xef7235f7"
+//            }
+//
+type IP4ArpEvent struct {
+       Address   uint32
+       PID       uint32
+       SwIfIndex uint32
+       NewMac    []byte `struc:"[6]byte"`
+       MacIP     uint8
+}
+
+func (*IP4ArpEvent) GetMessageName() string {
+       return "ip4_arp_event"
+}
+func (*IP4ArpEvent) GetCrcString() string {
+       return "ef7235f7"
+}
+func (*IP4ArpEvent) GetMessageType() api.MessageType {
+       return api.EventMessage
+}
+func NewIP4ArpEvent() api.Message {
+       return &IP4ArpEvent{}
+}
+
+// WantIP6NdEvents represents the VPP binary API message 'want_ip6_nd_events'.
+// Generated from 'ip.api.json', line 1865:
+//
+//            "want_ip6_nd_events",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u8",
+//                "enable_disable"
+//            ],
+//            [
+//                "u32",
+//                "pid"
+//            ],
+//            [
+//                "u8",
+//                "address",
+//                16
+//            ],
+//            {
+//                "crc": "0x1cf65fbb"
+//            }
+//
+type WantIP6NdEvents struct {
+       EnableDisable uint8
+       PID           uint32
+       Address       []byte `struc:"[16]byte"`
+}
+
+func (*WantIP6NdEvents) GetMessageName() string {
+       return "want_ip6_nd_events"
 }
 func (*WantIP6NdEvents) GetCrcString() string {
        return "1cf65fbb"
 }
+func (*WantIP6NdEvents) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewWantIP6NdEvents() api.Message {
        return &WantIP6NdEvents{}
 }
 
 // WantIP6NdEventsReply represents the VPP binary API message 'want_ip6_nd_events_reply'.
-// Generated from '../../bin_api/ip.api.json', line 1857:
+// Generated from 'ip.api.json', line 1896:
 //
 //            "want_ip6_nd_events_reply",
 //            [
@@ -2907,18 +3661,18 @@ type WantIP6NdEventsReply struct {
 func (*WantIP6NdEventsReply) GetMessageName() string {
        return "want_ip6_nd_events_reply"
 }
-func (*WantIP6NdEventsReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*WantIP6NdEventsReply) GetCrcString() string {
        return "e8d4e804"
 }
+func (*WantIP6NdEventsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewWantIP6NdEventsReply() api.Message {
        return &WantIP6NdEventsReply{}
 }
 
 // IP6NdEvent represents the VPP binary API message 'ip6_nd_event'.
-// Generated from '../../bin_api/ip.api.json', line 1875:
+// Generated from 'ip.api.json', line 1914:
 //
 //            "ip6_nd_event",
 //            [
@@ -2956,7 +3710,7 @@ func NewWantIP6NdEventsReply() api.Message {
 //            }
 //
 type IP6NdEvent struct {
-       Pid       uint32
+       PID       uint32
        SwIfIndex uint32
        Address   []byte `struc:"[16]byte"`
        NewMac    []byte `struc:"[6]byte"`
@@ -2966,20 +3720,20 @@ type IP6NdEvent struct {
 func (*IP6NdEvent) GetMessageName() string {
        return "ip6_nd_event"
 }
-func (*IP6NdEvent) GetMessageType() api.MessageType {
-       return api.EventMessage
-}
 func (*IP6NdEvent) GetCrcString() string {
        return "96ab2fdd"
 }
+func (*IP6NdEvent) GetMessageType() api.MessageType {
+       return api.EventMessage
+}
 func NewIP6NdEvent() api.Message {
        return &IP6NdEvent{}
 }
 
-// ProxyArpAddDel represents the VPP binary API message 'proxy_arp_add_del'.
-// Generated from '../../bin_api/ip.api.json', line 1911:
+// WantIP6RaEvents represents the VPP binary API message 'want_ip6_ra_events'.
+// Generated from 'ip.api.json', line 1950:
 //
-//            "proxy_arp_add_del",
+//            "want_ip6_ra_events",
 //            [
 //                "u16",
 //                "_vl_msg_id"
@@ -2993,49 +3747,205 @@ func NewIP6NdEvent() api.Message {
 //                "context"
 //            ],
 //            [
+//                "u8",
+//                "enable_disable"
+//            ],
+//            [
 //                "u32",
-//                "vrf_id"
+//                "pid"
+//            ],
+//            {
+//                "crc": "0x05b454b5"
+//            }
+//
+type WantIP6RaEvents struct {
+       EnableDisable uint8
+       PID           uint32
+}
+
+func (*WantIP6RaEvents) GetMessageName() string {
+       return "want_ip6_ra_events"
+}
+func (*WantIP6RaEvents) GetCrcString() string {
+       return "05b454b5"
+}
+func (*WantIP6RaEvents) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func NewWantIP6RaEvents() api.Message {
+       return &WantIP6RaEvents{}
+}
+
+// WantIP6RaEventsReply represents the VPP binary API message 'want_ip6_ra_events_reply'.
+// Generated from 'ip.api.json', line 1976:
+//
+//            "want_ip6_ra_events_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type WantIP6RaEventsReply struct {
+       Retval int32
+}
+
+func (*WantIP6RaEventsReply) GetMessageName() string {
+       return "want_ip6_ra_events_reply"
+}
+func (*WantIP6RaEventsReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func (*WantIP6RaEventsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func NewWantIP6RaEventsReply() api.Message {
+       return &WantIP6RaEventsReply{}
+}
+
+// IP6RaEvent represents the VPP binary API message 'ip6_ra_event'.
+// Generated from 'ip.api.json', line 1994:
+//
+//            "ip6_ra_event",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "pid"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
 //            ],
 //            [
 //                "u8",
-//                "is_add"
+//                "router_address",
+//                16
 //            ],
 //            [
 //                "u8",
-//                "low_address",
-//                4
+//                "current_hop_limit"
 //            ],
 //            [
 //                "u8",
-//                "hi_address",
-//                4
+//                "flags"
+//            ],
+//            [
+//                "u16",
+//                "router_lifetime_in_sec"
+//            ],
+//            [
+//                "u32",
+//                "neighbor_reachable_time_in_msec"
+//            ],
+//            [
+//                "u32",
+//                "time_in_msec_between_retransmitted_neighbor_solicitations"
+//            ],
+//            [
+//                "u32",
+//                "n_prefixes"
+//            ],
+//            [
+//                "vl_api_ip6_ra_prefix_info_t",
+//                "prefixes",
+//                0,
+//                "n_prefixes"
 //            ],
 //            {
-//                "crc": "0xc2442918"
+//                "crc": "0xc5e54257"
+//            }
+//
+type IP6RaEvent struct {
+       PID                                                 uint32
+       SwIfIndex                                           uint32
+       RouterAddress                                       []byte `struc:"[16]byte"`
+       CurrentHopLimit                                     uint8
+       Flags                                               uint8
+       RouterLifetimeInSec                                 uint16
+       NeighborReachableTimeInMsec                         uint32
+       TimeInMsecBetweenRetransmittedNeighborSolicitations uint32
+       NPrefixes                                           uint32 `struc:"sizeof=Prefixes"`
+       Prefixes                                            []IP6RaPrefixInfo
+}
+
+func (*IP6RaEvent) GetMessageName() string {
+       return "ip6_ra_event"
+}
+func (*IP6RaEvent) GetCrcString() string {
+       return "c5e54257"
+}
+func (*IP6RaEvent) GetMessageType() api.MessageType {
+       return api.EventMessage
+}
+func NewIP6RaEvent() api.Message {
+       return &IP6RaEvent{}
+}
+
+// ProxyArpAddDel represents the VPP binary API message 'proxy_arp_add_del'.
+// Generated from 'ip.api.json', line 2051:
+//
+//            "proxy_arp_add_del",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u8",
+//                "is_add"
+//            ],
+//            [
+//                "vl_api_proxy_arp_t",
+//                "proxy"
+//            ],
+//            {
+//                "crc": "0x227988d9"
 //            }
 //
 type ProxyArpAddDel struct {
-       VrfID      uint32
-       IsAdd      uint8
-       LowAddress []byte `struc:"[4]byte"`
-       HiAddress  []byte `struc:"[4]byte"`
+       IsAdd uint8
+       Proxy ProxyArp
 }
 
 func (*ProxyArpAddDel) GetMessageName() string {
        return "proxy_arp_add_del"
 }
+func (*ProxyArpAddDel) GetCrcString() string {
+       return "227988d9"
+}
 func (*ProxyArpAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
-func (*ProxyArpAddDel) GetCrcString() string {
-       return "c2442918"
-}
 func NewProxyArpAddDel() api.Message {
        return &ProxyArpAddDel{}
 }
 
 // ProxyArpAddDelReply represents the VPP binary API message 'proxy_arp_add_del_reply'.
-// Generated from '../../bin_api/ip.api.json', line 1947:
+// Generated from 'ip.api.json', line 2077:
 //
 //            "proxy_arp_add_del_reply",
 //            [
@@ -3061,18 +3971,90 @@ type ProxyArpAddDelReply struct {
 func (*ProxyArpAddDelReply) GetMessageName() string {
        return "proxy_arp_add_del_reply"
 }
-func (*ProxyArpAddDelReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*ProxyArpAddDelReply) GetCrcString() string {
        return "e8d4e804"
 }
+func (*ProxyArpAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewProxyArpAddDelReply() api.Message {
        return &ProxyArpAddDelReply{}
 }
 
+// ProxyArpDump represents the VPP binary API message 'proxy_arp_dump'.
+// Generated from 'ip.api.json', line 2095:
+//
+//            "proxy_arp_dump",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            {
+//                "crc": "0x51077d14"
+//            }
+//
+type ProxyArpDump struct{}
+
+func (*ProxyArpDump) GetMessageName() string {
+       return "proxy_arp_dump"
+}
+func (*ProxyArpDump) GetCrcString() string {
+       return "51077d14"
+}
+func (*ProxyArpDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func NewProxyArpDump() api.Message {
+       return &ProxyArpDump{}
+}
+
+// ProxyArpDetails represents the VPP binary API message 'proxy_arp_details'.
+// Generated from 'ip.api.json', line 2113:
+//
+//            "proxy_arp_details",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "vl_api_proxy_arp_t",
+//                "proxy"
+//            ],
+//            {
+//                "crc": "0x9b707c77"
+//            }
+//
+type ProxyArpDetails struct {
+       Proxy ProxyArp
+}
+
+func (*ProxyArpDetails) GetMessageName() string {
+       return "proxy_arp_details"
+}
+func (*ProxyArpDetails) GetCrcString() string {
+       return "9b707c77"
+}
+func (*ProxyArpDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func NewProxyArpDetails() api.Message {
+       return &ProxyArpDetails{}
+}
+
 // ProxyArpIntfcEnableDisable represents the VPP binary API message 'proxy_arp_intfc_enable_disable'.
-// Generated from '../../bin_api/ip.api.json', line 1965:
+// Generated from 'ip.api.json', line 2131:
 //
 //            "proxy_arp_intfc_enable_disable",
 //            [
@@ -3107,18 +4089,18 @@ type ProxyArpIntfcEnableDisable struct {
 func (*ProxyArpIntfcEnableDisable) GetMessageName() string {
        return "proxy_arp_intfc_enable_disable"
 }
-func (*ProxyArpIntfcEnableDisable) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*ProxyArpIntfcEnableDisable) GetCrcString() string {
        return "69d24598"
 }
+func (*ProxyArpIntfcEnableDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewProxyArpIntfcEnableDisable() api.Message {
        return &ProxyArpIntfcEnableDisable{}
 }
 
 // ProxyArpIntfcEnableDisableReply represents the VPP binary API message 'proxy_arp_intfc_enable_disable_reply'.
-// Generated from '../../bin_api/ip.api.json', line 1991:
+// Generated from 'ip.api.json', line 2157:
 //
 //            "proxy_arp_intfc_enable_disable_reply",
 //            [
@@ -3134,28 +4116,100 @@ func NewProxyArpIntfcEnableDisable() api.Message {
 //                "retval"
 //            ],
 //            {
-//                "crc": "0xe8d4e804"
+//                "crc": "0xe8d4e804"
+//            }
+//
+type ProxyArpIntfcEnableDisableReply struct {
+       Retval int32
+}
+
+func (*ProxyArpIntfcEnableDisableReply) GetMessageName() string {
+       return "proxy_arp_intfc_enable_disable_reply"
+}
+func (*ProxyArpIntfcEnableDisableReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func (*ProxyArpIntfcEnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func NewProxyArpIntfcEnableDisableReply() api.Message {
+       return &ProxyArpIntfcEnableDisableReply{}
+}
+
+// ProxyArpIntfcDump represents the VPP binary API message 'proxy_arp_intfc_dump'.
+// Generated from 'ip.api.json', line 2175:
+//
+//            "proxy_arp_intfc_dump",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            {
+//                "crc": "0x51077d14"
+//            }
+//
+type ProxyArpIntfcDump struct{}
+
+func (*ProxyArpIntfcDump) GetMessageName() string {
+       return "proxy_arp_intfc_dump"
+}
+func (*ProxyArpIntfcDump) GetCrcString() string {
+       return "51077d14"
+}
+func (*ProxyArpIntfcDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func NewProxyArpIntfcDump() api.Message {
+       return &ProxyArpIntfcDump{}
+}
+
+// ProxyArpIntfcDetails represents the VPP binary API message 'proxy_arp_intfc_details'.
+// Generated from 'ip.api.json', line 2193:
+//
+//            "proxy_arp_intfc_details",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            {
+//                "crc": "0xf6458e5f"
 //            }
 //
-type ProxyArpIntfcEnableDisableReply struct {
-       Retval int32
+type ProxyArpIntfcDetails struct {
+       SwIfIndex uint32
 }
 
-func (*ProxyArpIntfcEnableDisableReply) GetMessageName() string {
-       return "proxy_arp_intfc_enable_disable_reply"
+func (*ProxyArpIntfcDetails) GetMessageName() string {
+       return "proxy_arp_intfc_details"
 }
-func (*ProxyArpIntfcEnableDisableReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
+func (*ProxyArpIntfcDetails) GetCrcString() string {
+       return "f6458e5f"
 }
-func (*ProxyArpIntfcEnableDisableReply) GetCrcString() string {
-       return "e8d4e804"
+func (*ProxyArpIntfcDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
 }
-func NewProxyArpIntfcEnableDisableReply() api.Message {
-       return &ProxyArpIntfcEnableDisableReply{}
+func NewProxyArpIntfcDetails() api.Message {
+       return &ProxyArpIntfcDetails{}
 }
 
 // ResetFib represents the VPP binary API message 'reset_fib'.
-// Generated from '../../bin_api/ip.api.json', line 2009:
+// Generated from 'ip.api.json', line 2211:
 //
 //            "reset_fib",
 //            [
@@ -3184,24 +4238,24 @@ func NewProxyArpIntfcEnableDisableReply() api.Message {
 //
 type ResetFib struct {
        VrfID  uint32
-       IsIpv6 uint8
+       IsIPv6 uint8
 }
 
 func (*ResetFib) GetMessageName() string {
        return "reset_fib"
 }
-func (*ResetFib) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*ResetFib) GetCrcString() string {
        return "8553ebd9"
 }
+func (*ResetFib) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewResetFib() api.Message {
        return &ResetFib{}
 }
 
 // ResetFibReply represents the VPP binary API message 'reset_fib_reply'.
-// Generated from '../../bin_api/ip.api.json', line 2035:
+// Generated from 'ip.api.json', line 2237:
 //
 //            "reset_fib_reply",
 //            [
@@ -3227,18 +4281,18 @@ type ResetFibReply struct {
 func (*ResetFibReply) GetMessageName() string {
        return "reset_fib_reply"
 }
-func (*ResetFibReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*ResetFibReply) GetCrcString() string {
        return "e8d4e804"
 }
+func (*ResetFibReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewResetFibReply() api.Message {
        return &ResetFibReply{}
 }
 
 // SetArpNeighborLimit represents the VPP binary API message 'set_arp_neighbor_limit'.
-// Generated from '../../bin_api/ip.api.json', line 2053:
+// Generated from 'ip.api.json', line 2255:
 //
 //            "set_arp_neighbor_limit",
 //            [
@@ -3266,25 +4320,25 @@ func NewResetFibReply() api.Message {
 //            }
 //
 type SetArpNeighborLimit struct {
-       IsIpv6           uint8
+       IsIPv6           uint8
        ArpNeighborLimit uint32
 }
 
 func (*SetArpNeighborLimit) GetMessageName() string {
        return "set_arp_neighbor_limit"
 }
-func (*SetArpNeighborLimit) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*SetArpNeighborLimit) GetCrcString() string {
        return "97d01fd6"
 }
+func (*SetArpNeighborLimit) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewSetArpNeighborLimit() api.Message {
        return &SetArpNeighborLimit{}
 }
 
 // SetArpNeighborLimitReply represents the VPP binary API message 'set_arp_neighbor_limit_reply'.
-// Generated from '../../bin_api/ip.api.json', line 2079:
+// Generated from 'ip.api.json', line 2281:
 //
 //            "set_arp_neighbor_limit_reply",
 //            [
@@ -3310,18 +4364,18 @@ type SetArpNeighborLimitReply struct {
 func (*SetArpNeighborLimitReply) GetMessageName() string {
        return "set_arp_neighbor_limit_reply"
 }
-func (*SetArpNeighborLimitReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*SetArpNeighborLimitReply) GetCrcString() string {
        return "e8d4e804"
 }
+func (*SetArpNeighborLimitReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewSetArpNeighborLimitReply() api.Message {
        return &SetArpNeighborLimitReply{}
 }
 
 // IoamEnable represents the VPP binary API message 'ioam_enable'.
-// Generated from '../../bin_api/ip.api.json', line 2097:
+// Generated from 'ip.api.json', line 2299:
 //
 //            "ioam_enable",
 //            [
@@ -3376,18 +4430,18 @@ type IoamEnable struct {
 func (*IoamEnable) GetMessageName() string {
        return "ioam_enable"
 }
-func (*IoamEnable) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*IoamEnable) GetCrcString() string {
        return "9392e032"
 }
+func (*IoamEnable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewIoamEnable() api.Message {
        return &IoamEnable{}
 }
 
 // IoamEnableReply represents the VPP binary API message 'ioam_enable_reply'.
-// Generated from '../../bin_api/ip.api.json', line 2139:
+// Generated from 'ip.api.json', line 2341:
 //
 //            "ioam_enable_reply",
 //            [
@@ -3413,18 +4467,18 @@ type IoamEnableReply struct {
 func (*IoamEnableReply) GetMessageName() string {
        return "ioam_enable_reply"
 }
-func (*IoamEnableReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*IoamEnableReply) GetCrcString() string {
        return "e8d4e804"
 }
+func (*IoamEnableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewIoamEnableReply() api.Message {
        return &IoamEnableReply{}
 }
 
 // IoamDisable represents the VPP binary API message 'ioam_disable'.
-// Generated from '../../bin_api/ip.api.json', line 2157:
+// Generated from 'ip.api.json', line 2359:
 //
 //            "ioam_disable",
 //            [
@@ -3454,18 +4508,18 @@ type IoamDisable struct {
 func (*IoamDisable) GetMessageName() string {
        return "ioam_disable"
 }
-func (*IoamDisable) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
 func (*IoamDisable) GetCrcString() string {
        return "6b16a45e"
 }
+func (*IoamDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 func NewIoamDisable() api.Message {
        return &IoamDisable{}
 }
 
 // IoamDisableReply represents the VPP binary API message 'ioam_disable_reply'.
-// Generated from '../../bin_api/ip.api.json', line 2179:
+// Generated from 'ip.api.json', line 2381:
 //
 //            "ioam_disable_reply",
 //            [
@@ -3491,12 +4545,432 @@ type IoamDisableReply struct {
 func (*IoamDisableReply) GetMessageName() string {
        return "ioam_disable_reply"
 }
-func (*IoamDisableReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
 func (*IoamDisableReply) GetCrcString() string {
        return "e8d4e804"
 }
+func (*IoamDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 func NewIoamDisableReply() api.Message {
        return &IoamDisableReply{}
 }
+
+// IPReassemblySet represents the VPP binary API message 'ip_reassembly_set'.
+// Generated from 'ip.api.json', line 2399:
+//
+//            "ip_reassembly_set",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "timeout_ms"
+//            ],
+//            [
+//                "u32",
+//                "max_reassemblies"
+//            ],
+//            [
+//                "u32",
+//                "expire_walk_interval_ms"
+//            ],
+//            [
+//                "u8",
+//                "is_ip6"
+//            ],
+//            {
+//                "crc": "0x1db184de"
+//            }
+//
+type IPReassemblySet struct {
+       TimeoutMs            uint32
+       MaxReassemblies      uint32
+       ExpireWalkIntervalMs uint32
+       IsIP6                uint8
+}
+
+func (*IPReassemblySet) GetMessageName() string {
+       return "ip_reassembly_set"
+}
+func (*IPReassemblySet) GetCrcString() string {
+       return "1db184de"
+}
+func (*IPReassemblySet) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func NewIPReassemblySet() api.Message {
+       return &IPReassemblySet{}
+}
+
+// IPReassemblySetReply represents the VPP binary API message 'ip_reassembly_set_reply'.
+// Generated from 'ip.api.json', line 2433:
+//
+//            "ip_reassembly_set_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type IPReassemblySetReply struct {
+       Retval int32
+}
+
+func (*IPReassemblySetReply) GetMessageName() string {
+       return "ip_reassembly_set_reply"
+}
+func (*IPReassemblySetReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func (*IPReassemblySetReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func NewIPReassemblySetReply() api.Message {
+       return &IPReassemblySetReply{}
+}
+
+// IPReassemblyGet represents the VPP binary API message 'ip_reassembly_get'.
+// Generated from 'ip.api.json', line 2451:
+//
+//            "ip_reassembly_get",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u8",
+//                "is_ip6"
+//            ],
+//            {
+//                "crc": "0x6fe91190"
+//            }
+//
+type IPReassemblyGet struct {
+       IsIP6 uint8
+}
+
+func (*IPReassemblyGet) GetMessageName() string {
+       return "ip_reassembly_get"
+}
+func (*IPReassemblyGet) GetCrcString() string {
+       return "6fe91190"
+}
+func (*IPReassemblyGet) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func NewIPReassemblyGet() api.Message {
+       return &IPReassemblyGet{}
+}
+
+// IPReassemblyGetReply represents the VPP binary API message 'ip_reassembly_get_reply'.
+// Generated from 'ip.api.json', line 2473:
+//
+//            "ip_reassembly_get_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            [
+//                "u32",
+//                "timeout_ms"
+//            ],
+//            [
+//                "u32",
+//                "max_reassemblies"
+//            ],
+//            [
+//                "u32",
+//                "expire_walk_interval_ms"
+//            ],
+//            [
+//                "u8",
+//                "is_ip6"
+//            ],
+//            {
+//                "crc": "0xd746fc57"
+//            }
+//
+type IPReassemblyGetReply struct {
+       Retval               int32
+       TimeoutMs            uint32
+       MaxReassemblies      uint32
+       ExpireWalkIntervalMs uint32
+       IsIP6                uint8
+}
+
+func (*IPReassemblyGetReply) GetMessageName() string {
+       return "ip_reassembly_get_reply"
+}
+func (*IPReassemblyGetReply) GetCrcString() string {
+       return "d746fc57"
+}
+func (*IPReassemblyGetReply) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func NewIPReassemblyGetReply() api.Message {
+       return &IPReassemblyGetReply{}
+}
+
+// IPReassemblyEnableDisable represents the VPP binary API message 'ip_reassembly_enable_disable'.
+// Generated from 'ip.api.json', line 2511:
+//
+//            "ip_reassembly_enable_disable",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            [
+//                "u8",
+//                "enable_ip4"
+//            ],
+//            [
+//                "u8",
+//                "enable_ip6"
+//            ],
+//            {
+//                "crc": "0xbb8dc5d0"
+//            }
+//
+type IPReassemblyEnableDisable struct {
+       SwIfIndex uint32
+       EnableIP4 uint8
+       EnableIP6 uint8
+}
+
+func (*IPReassemblyEnableDisable) GetMessageName() string {
+       return "ip_reassembly_enable_disable"
+}
+func (*IPReassemblyEnableDisable) GetCrcString() string {
+       return "bb8dc5d0"
+}
+func (*IPReassemblyEnableDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func NewIPReassemblyEnableDisable() api.Message {
+       return &IPReassemblyEnableDisable{}
+}
+
+// IPReassemblyEnableDisableReply represents the VPP binary API message 'ip_reassembly_enable_disable_reply'.
+// Generated from 'ip.api.json', line 2541:
+//
+//            "ip_reassembly_enable_disable_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type IPReassemblyEnableDisableReply struct {
+       Retval int32
+}
+
+func (*IPReassemblyEnableDisableReply) GetMessageName() string {
+       return "ip_reassembly_enable_disable_reply"
+}
+func (*IPReassemblyEnableDisableReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func (*IPReassemblyEnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func NewIPReassemblyEnableDisableReply() api.Message {
+       return &IPReassemblyEnableDisableReply{}
+}
+
+/* Services */
+
+type Services interface {
+       DumpIP6Fib(*IP6FibDump) (*IP6FibDetails, error)
+       DumpIP6Mfib(*IP6MfibDump) (*IP6MfibDetails, error)
+       DumpIP6ndProxy(*IP6ndProxyDump) (*IP6ndProxyDetails, error)
+       DumpIPAddress(*IPAddressDump) (*IPAddressDetails, error)
+       DumpIP(*IPDump) (*IPDetails, error)
+       DumpIPFib(*IPFibDump) (*IPFibDetails, error)
+       DumpIPMfib(*IPMfibDump) (*IPMfibDetails, error)
+       DumpIPNeighbor(*IPNeighborDump) (*IPNeighborDetails, error)
+       DumpIPUnnumbered(*IPUnnumberedDump) (*IPUnnumberedDetails, error)
+       DumpMfibSignal(*MfibSignalDump) (*MfibSignalDetails, error)
+       DumpProxyArp(*ProxyArpDump) (*ProxyArpDetails, error)
+       DumpProxyArpIntfc(*ProxyArpIntfcDump) (*ProxyArpIntfcDetails, error)
+       IoamDisable(*IoamDisable) (*IoamDisableReply, error)
+       IoamEnable(*IoamEnable) (*IoamEnableReply, error)
+       IP6ndProxyAddDel(*IP6ndProxyAddDel) (*IP6ndProxyAddDelReply, error)
+       IP6ndSendRouterSolicitation(*IP6ndSendRouterSolicitation) (*IP6ndSendRouterSolicitationReply, error)
+       IPAddDelRoute(*IPAddDelRoute) (*IPAddDelRouteReply, error)
+       IPContainerProxyAddDel(*IPContainerProxyAddDel) (*IPContainerProxyAddDelReply, error)
+       IPMrouteAddDel(*IPMrouteAddDel) (*IPMrouteAddDelReply, error)
+       IPNeighborAddDel(*IPNeighborAddDel) (*IPNeighborAddDelReply, error)
+       IPProbeNeighbor(*IPProbeNeighbor) (*IPProbeNeighborReply, error)
+       IPPuntPolice(*IPPuntPolice) (*IPPuntPoliceReply, error)
+       IPPuntRedirect(*IPPuntRedirect) (*IPPuntRedirectReply, error)
+       IPReassemblyEnableDisable(*IPReassemblyEnableDisable) (*IPReassemblyEnableDisableReply, error)
+       IPReassemblyGet(*IPReassemblyGet) (*IPReassemblyGetReply, error)
+       IPReassemblySet(*IPReassemblySet) (*IPReassemblySetReply, error)
+       IPScanNeighborEnableDisable(*IPScanNeighborEnableDisable) (*IPScanNeighborEnableDisableReply, error)
+       IPSourceAndPortRangeCheckAddDel(*IPSourceAndPortRangeCheckAddDel) (*IPSourceAndPortRangeCheckAddDelReply, error)
+       IPSourceAndPortRangeCheckInterfaceAddDel(*IPSourceAndPortRangeCheckInterfaceAddDel) (*IPSourceAndPortRangeCheckInterfaceAddDelReply, error)
+       IPTableAddDel(*IPTableAddDel) (*IPTableAddDelReply, error)
+       ProxyArpAddDel(*ProxyArpAddDel) (*ProxyArpAddDelReply, error)
+       ProxyArpIntfcEnableDisable(*ProxyArpIntfcEnableDisable) (*ProxyArpIntfcEnableDisableReply, error)
+       ResetFib(*ResetFib) (*ResetFibReply, error)
+       SetArpNeighborLimit(*SetArpNeighborLimit) (*SetArpNeighborLimitReply, error)
+       SetIPFlowHash(*SetIPFlowHash) (*SetIPFlowHashReply, error)
+       SwInterfaceIP6EnableDisable(*SwInterfaceIP6EnableDisable) (*SwInterfaceIP6EnableDisableReply, error)
+       SwInterfaceIP6SetLinkLocalAddress(*SwInterfaceIP6SetLinkLocalAddress) (*SwInterfaceIP6SetLinkLocalAddressReply, error)
+       SwInterfaceIP6ndRaConfig(*SwInterfaceIP6ndRaConfig) (*SwInterfaceIP6ndRaConfigReply, error)
+       SwInterfaceIP6ndRaPrefix(*SwInterfaceIP6ndRaPrefix) (*SwInterfaceIP6ndRaPrefixReply, error)
+       WantIP4ArpEvents(*WantIP4ArpEvents) (*WantIP4ArpEventsReply, error)
+       WantIP6NdEvents(*WantIP6NdEvents) (*WantIP6NdEventsReply, error)
+       WantIP6RaEvents(*WantIP6RaEvents) (*WantIP6RaEventsReply, error)
+}
+
+func init() {
+       api.RegisterMessage((*IPTableAddDel)(nil), "ip.IPTableAddDel")
+       api.RegisterMessage((*IPTableAddDelReply)(nil), "ip.IPTableAddDelReply")
+       api.RegisterMessage((*IPFibDump)(nil), "ip.IPFibDump")
+       api.RegisterMessage((*IPFibDetails)(nil), "ip.IPFibDetails")
+       api.RegisterMessage((*IP6FibDump)(nil), "ip.IP6FibDump")
+       api.RegisterMessage((*IP6FibDetails)(nil), "ip.IP6FibDetails")
+       api.RegisterMessage((*IPNeighborDump)(nil), "ip.IPNeighborDump")
+       api.RegisterMessage((*IPNeighborDetails)(nil), "ip.IPNeighborDetails")
+       api.RegisterMessage((*IPNeighborAddDel)(nil), "ip.IPNeighborAddDel")
+       api.RegisterMessage((*IPNeighborAddDelReply)(nil), "ip.IPNeighborAddDelReply")
+       api.RegisterMessage((*SetIPFlowHash)(nil), "ip.SetIPFlowHash")
+       api.RegisterMessage((*SetIPFlowHashReply)(nil), "ip.SetIPFlowHashReply")
+       api.RegisterMessage((*SwInterfaceIP6ndRaConfig)(nil), "ip.SwInterfaceIP6ndRaConfig")
+       api.RegisterMessage((*SwInterfaceIP6ndRaConfigReply)(nil), "ip.SwInterfaceIP6ndRaConfigReply")
+       api.RegisterMessage((*SwInterfaceIP6ndRaPrefix)(nil), "ip.SwInterfaceIP6ndRaPrefix")
+       api.RegisterMessage((*SwInterfaceIP6ndRaPrefixReply)(nil), "ip.SwInterfaceIP6ndRaPrefixReply")
+       api.RegisterMessage((*IP6ndProxyAddDel)(nil), "ip.IP6ndProxyAddDel")
+       api.RegisterMessage((*IP6ndProxyAddDelReply)(nil), "ip.IP6ndProxyAddDelReply")
+       api.RegisterMessage((*IP6ndProxyDetails)(nil), "ip.IP6ndProxyDetails")
+       api.RegisterMessage((*IP6ndProxyDump)(nil), "ip.IP6ndProxyDump")
+       api.RegisterMessage((*IP6ndSendRouterSolicitation)(nil), "ip.IP6ndSendRouterSolicitation")
+       api.RegisterMessage((*IP6ndSendRouterSolicitationReply)(nil), "ip.IP6ndSendRouterSolicitationReply")
+       api.RegisterMessage((*SwInterfaceIP6EnableDisable)(nil), "ip.SwInterfaceIP6EnableDisable")
+       api.RegisterMessage((*SwInterfaceIP6EnableDisableReply)(nil), "ip.SwInterfaceIP6EnableDisableReply")
+       api.RegisterMessage((*SwInterfaceIP6SetLinkLocalAddress)(nil), "ip.SwInterfaceIP6SetLinkLocalAddress")
+       api.RegisterMessage((*SwInterfaceIP6SetLinkLocalAddressReply)(nil), "ip.SwInterfaceIP6SetLinkLocalAddressReply")
+       api.RegisterMessage((*IPAddDelRoute)(nil), "ip.IPAddDelRoute")
+       api.RegisterMessage((*IPAddDelRouteReply)(nil), "ip.IPAddDelRouteReply")
+       api.RegisterMessage((*IPMrouteAddDel)(nil), "ip.IPMrouteAddDel")
+       api.RegisterMessage((*IPMrouteAddDelReply)(nil), "ip.IPMrouteAddDelReply")
+       api.RegisterMessage((*IPMfibDump)(nil), "ip.IPMfibDump")
+       api.RegisterMessage((*IPMfibDetails)(nil), "ip.IPMfibDetails")
+       api.RegisterMessage((*IP6MfibDump)(nil), "ip.IP6MfibDump")
+       api.RegisterMessage((*IP6MfibDetails)(nil), "ip.IP6MfibDetails")
+       api.RegisterMessage((*IPAddressDetails)(nil), "ip.IPAddressDetails")
+       api.RegisterMessage((*IPAddressDump)(nil), "ip.IPAddressDump")
+       api.RegisterMessage((*IPUnnumberedDetails)(nil), "ip.IPUnnumberedDetails")
+       api.RegisterMessage((*IPUnnumberedDump)(nil), "ip.IPUnnumberedDump")
+       api.RegisterMessage((*IPDetails)(nil), "ip.IPDetails")
+       api.RegisterMessage((*IPDump)(nil), "ip.IPDump")
+       api.RegisterMessage((*MfibSignalDump)(nil), "ip.MfibSignalDump")
+       api.RegisterMessage((*MfibSignalDetails)(nil), "ip.MfibSignalDetails")
+       api.RegisterMessage((*IPPuntPolice)(nil), "ip.IPPuntPolice")
+       api.RegisterMessage((*IPPuntPoliceReply)(nil), "ip.IPPuntPoliceReply")
+       api.RegisterMessage((*IPPuntRedirect)(nil), "ip.IPPuntRedirect")
+       api.RegisterMessage((*IPPuntRedirectReply)(nil), "ip.IPPuntRedirectReply")
+       api.RegisterMessage((*IPContainerProxyAddDel)(nil), "ip.IPContainerProxyAddDel")
+       api.RegisterMessage((*IPContainerProxyAddDelReply)(nil), "ip.IPContainerProxyAddDelReply")
+       api.RegisterMessage((*IPSourceAndPortRangeCheckAddDel)(nil), "ip.IPSourceAndPortRangeCheckAddDel")
+       api.RegisterMessage((*IPSourceAndPortRangeCheckAddDelReply)(nil), "ip.IPSourceAndPortRangeCheckAddDelReply")
+       api.RegisterMessage((*IPSourceAndPortRangeCheckInterfaceAddDel)(nil), "ip.IPSourceAndPortRangeCheckInterfaceAddDel")
+       api.RegisterMessage((*IPSourceAndPortRangeCheckInterfaceAddDelReply)(nil), "ip.IPSourceAndPortRangeCheckInterfaceAddDelReply")
+       api.RegisterMessage((*IPScanNeighborEnableDisable)(nil), "ip.IPScanNeighborEnableDisable")
+       api.RegisterMessage((*IPScanNeighborEnableDisableReply)(nil), "ip.IPScanNeighborEnableDisableReply")
+       api.RegisterMessage((*IPProbeNeighbor)(nil), "ip.IPProbeNeighbor")
+       api.RegisterMessage((*IPProbeNeighborReply)(nil), "ip.IPProbeNeighborReply")
+       api.RegisterMessage((*WantIP4ArpEvents)(nil), "ip.WantIP4ArpEvents")
+       api.RegisterMessage((*WantIP4ArpEventsReply)(nil), "ip.WantIP4ArpEventsReply")
+       api.RegisterMessage((*IP4ArpEvent)(nil), "ip.IP4ArpEvent")
+       api.RegisterMessage((*WantIP6NdEvents)(nil), "ip.WantIP6NdEvents")
+       api.RegisterMessage((*WantIP6NdEventsReply)(nil), "ip.WantIP6NdEventsReply")
+       api.RegisterMessage((*IP6NdEvent)(nil), "ip.IP6NdEvent")
+       api.RegisterMessage((*WantIP6RaEvents)(nil), "ip.WantIP6RaEvents")
+       api.RegisterMessage((*WantIP6RaEventsReply)(nil), "ip.WantIP6RaEventsReply")
+       api.RegisterMessage((*IP6RaEvent)(nil), "ip.IP6RaEvent")
+       api.RegisterMessage((*ProxyArpAddDel)(nil), "ip.ProxyArpAddDel")
+       api.RegisterMessage((*ProxyArpAddDelReply)(nil), "ip.ProxyArpAddDelReply")
+       api.RegisterMessage((*ProxyArpDump)(nil), "ip.ProxyArpDump")
+       api.RegisterMessage((*ProxyArpDetails)(nil), "ip.ProxyArpDetails")
+       api.RegisterMessage((*ProxyArpIntfcEnableDisable)(nil), "ip.ProxyArpIntfcEnableDisable")
+       api.RegisterMessage((*ProxyArpIntfcEnableDisableReply)(nil), "ip.ProxyArpIntfcEnableDisableReply")
+       api.RegisterMessage((*ProxyArpIntfcDump)(nil), "ip.ProxyArpIntfcDump")
+       api.RegisterMessage((*ProxyArpIntfcDetails)(nil), "ip.ProxyArpIntfcDetails")
+       api.RegisterMessage((*ResetFib)(nil), "ip.ResetFib")
+       api.RegisterMessage((*ResetFibReply)(nil), "ip.ResetFibReply")
+       api.RegisterMessage((*SetArpNeighborLimit)(nil), "ip.SetArpNeighborLimit")
+       api.RegisterMessage((*SetArpNeighborLimitReply)(nil), "ip.SetArpNeighborLimitReply")
+       api.RegisterMessage((*IoamEnable)(nil), "ip.IoamEnable")
+       api.RegisterMessage((*IoamEnableReply)(nil), "ip.IoamEnableReply")
+       api.RegisterMessage((*IoamDisable)(nil), "ip.IoamDisable")
+       api.RegisterMessage((*IoamDisableReply)(nil), "ip.IoamDisableReply")
+       api.RegisterMessage((*IPReassemblySet)(nil), "ip.IPReassemblySet")
+       api.RegisterMessage((*IPReassemblySetReply)(nil), "ip.IPReassemblySetReply")
+       api.RegisterMessage((*IPReassemblyGet)(nil), "ip.IPReassemblyGet")
+       api.RegisterMessage((*IPReassemblyGetReply)(nil), "ip.IPReassemblyGetReply")
+       api.RegisterMessage((*IPReassemblyEnableDisable)(nil), "ip.IPReassemblyEnableDisable")
+       api.RegisterMessage((*IPReassemblyEnableDisableReply)(nil), "ip.IPReassemblyEnableDisableReply")
+}