Improve binapi generator
[govpp.git] / binapi / dhcp / dhcp.ba.go
diff --git a/binapi/dhcp/dhcp.ba.go b/binapi/dhcp/dhcp.ba.go
new file mode 100644 (file)
index 0000000..cb18b48
--- /dev/null
@@ -0,0 +1,1845 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.4.0-dev
+//  VPP:              20.05-release
+// source: /usr/share/vpp/api/plugins/dhcp.api.json
+
+// Package dhcp contains generated bindings for API file dhcp.api.
+//
+// Contents:
+//   3 enums
+//   6 structs
+//  29 messages
+//
+package dhcp
+
+import (
+       api "git.fd.io/govpp.git/api"
+       ethernet_types "git.fd.io/govpp.git/binapi/ethernet_types"
+       interface_types "git.fd.io/govpp.git/binapi/interface_types"
+       ip_types "git.fd.io/govpp.git/binapi/ip_types"
+       codec "git.fd.io/govpp.git/codec"
+       "strconv"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+const (
+       APIFile    = "dhcp"
+       APIVersion = "3.0.1"
+       VersionCrc = 0x96274cae
+)
+
+// DHCPClientState defines enum 'dhcp_client_state'.
+type DHCPClientState uint32
+
+const (
+       DHCP_CLIENT_STATE_API_DISCOVER DHCPClientState = 1
+       DHCP_CLIENT_STATE_API_REQUEST  DHCPClientState = 2
+       DHCP_CLIENT_STATE_API_BOUND    DHCPClientState = 3
+)
+
+var (
+       DHCPClientState_name = map[uint32]string{
+               1: "DHCP_CLIENT_STATE_API_DISCOVER",
+               2: "DHCP_CLIENT_STATE_API_REQUEST",
+               3: "DHCP_CLIENT_STATE_API_BOUND",
+       }
+       DHCPClientState_value = map[string]uint32{
+               "DHCP_CLIENT_STATE_API_DISCOVER": 1,
+               "DHCP_CLIENT_STATE_API_REQUEST":  2,
+               "DHCP_CLIENT_STATE_API_BOUND":    3,
+       }
+)
+
+func (x DHCPClientState) String() string {
+       s, ok := DHCPClientState_name[uint32(x)]
+       if ok {
+               return s
+       }
+       return "DHCPClientState(" + strconv.Itoa(int(x)) + ")"
+}
+
+// Dhcpv6MsgType defines enum 'dhcpv6_msg_type'.
+type Dhcpv6MsgType uint32
+
+const (
+       DHCPV6_MSG_API_SOLICIT             Dhcpv6MsgType = 1
+       DHCPV6_MSG_API_ADVERTISE           Dhcpv6MsgType = 2
+       DHCPV6_MSG_API_REQUEST             Dhcpv6MsgType = 3
+       DHCPV6_MSG_API_CONFIRM             Dhcpv6MsgType = 4
+       DHCPV6_MSG_API_RENEW               Dhcpv6MsgType = 5
+       DHCPV6_MSG_API_REBIND              Dhcpv6MsgType = 6
+       DHCPV6_MSG_API_REPLY               Dhcpv6MsgType = 7
+       DHCPV6_MSG_API_RELEASE             Dhcpv6MsgType = 8
+       DHCPV6_MSG_API_DECLINE             Dhcpv6MsgType = 9
+       DHCPV6_MSG_API_RECONFIGURE         Dhcpv6MsgType = 10
+       DHCPV6_MSG_API_INFORMATION_REQUEST Dhcpv6MsgType = 11
+       DHCPV6_MSG_API_RELAY_FORW          Dhcpv6MsgType = 12
+       DHCPV6_MSG_API_RELAY_REPL          Dhcpv6MsgType = 13
+)
+
+var (
+       Dhcpv6MsgType_name = map[uint32]string{
+               1:  "DHCPV6_MSG_API_SOLICIT",
+               2:  "DHCPV6_MSG_API_ADVERTISE",
+               3:  "DHCPV6_MSG_API_REQUEST",
+               4:  "DHCPV6_MSG_API_CONFIRM",
+               5:  "DHCPV6_MSG_API_RENEW",
+               6:  "DHCPV6_MSG_API_REBIND",
+               7:  "DHCPV6_MSG_API_REPLY",
+               8:  "DHCPV6_MSG_API_RELEASE",
+               9:  "DHCPV6_MSG_API_DECLINE",
+               10: "DHCPV6_MSG_API_RECONFIGURE",
+               11: "DHCPV6_MSG_API_INFORMATION_REQUEST",
+               12: "DHCPV6_MSG_API_RELAY_FORW",
+               13: "DHCPV6_MSG_API_RELAY_REPL",
+       }
+       Dhcpv6MsgType_value = map[string]uint32{
+               "DHCPV6_MSG_API_SOLICIT":             1,
+               "DHCPV6_MSG_API_ADVERTISE":           2,
+               "DHCPV6_MSG_API_REQUEST":             3,
+               "DHCPV6_MSG_API_CONFIRM":             4,
+               "DHCPV6_MSG_API_RENEW":               5,
+               "DHCPV6_MSG_API_REBIND":              6,
+               "DHCPV6_MSG_API_REPLY":               7,
+               "DHCPV6_MSG_API_RELEASE":             8,
+               "DHCPV6_MSG_API_DECLINE":             9,
+               "DHCPV6_MSG_API_RECONFIGURE":         10,
+               "DHCPV6_MSG_API_INFORMATION_REQUEST": 11,
+               "DHCPV6_MSG_API_RELAY_FORW":          12,
+               "DHCPV6_MSG_API_RELAY_REPL":          13,
+       }
+)
+
+func (x Dhcpv6MsgType) String() string {
+       s, ok := Dhcpv6MsgType_name[uint32(x)]
+       if ok {
+               return s
+       }
+       return "Dhcpv6MsgType(" + strconv.Itoa(int(x)) + ")"
+}
+
+// VssType defines enum 'vss_type'.
+type VssType uint32
+
+const (
+       VSS_TYPE_API_ASCII   VssType = 0
+       VSS_TYPE_API_VPN_ID  VssType = 1
+       VSS_TYPE_API_INVALID VssType = 123
+       VSS_TYPE_API_DEFAULT VssType = 255
+)
+
+var (
+       VssType_name = map[uint32]string{
+               0:   "VSS_TYPE_API_ASCII",
+               1:   "VSS_TYPE_API_VPN_ID",
+               123: "VSS_TYPE_API_INVALID",
+               255: "VSS_TYPE_API_DEFAULT",
+       }
+       VssType_value = map[string]uint32{
+               "VSS_TYPE_API_ASCII":   0,
+               "VSS_TYPE_API_VPN_ID":  1,
+               "VSS_TYPE_API_INVALID": 123,
+               "VSS_TYPE_API_DEFAULT": 255,
+       }
+)
+
+func (x VssType) String() string {
+       s, ok := VssType_name[uint32(x)]
+       if ok {
+               return s
+       }
+       return "VssType(" + strconv.Itoa(int(x)) + ")"
+}
+
+// DHCP6AddressInfo defines type 'dhcp6_address_info'.
+type DHCP6AddressInfo struct {
+       Address       ip_types.IP6Address `binapi:"ip6_address,name=address" json:"address,omitempty"`
+       ValidTime     uint32              `binapi:"u32,name=valid_time" json:"valid_time,omitempty"`
+       PreferredTime uint32              `binapi:"u32,name=preferred_time" json:"preferred_time,omitempty"`
+}
+
+// DHCP6PdPrefixInfo defines type 'dhcp6_pd_prefix_info'.
+type DHCP6PdPrefixInfo struct {
+       Prefix        ip_types.IP6Prefix `binapi:"ip6_prefix,name=prefix" json:"prefix,omitempty"`
+       ValidTime     uint32             `binapi:"u32,name=valid_time" json:"valid_time,omitempty"`
+       PreferredTime uint32             `binapi:"u32,name=preferred_time" json:"preferred_time,omitempty"`
+}
+
+// DHCPClient defines type 'dhcp_client'.
+type DHCPClient struct {
+       SwIfIndex        interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       Hostname         string                         `binapi:"string[64],name=hostname" json:"hostname,omitempty"`
+       ID               []byte                         `binapi:"u8[64],name=id" json:"id,omitempty"`
+       WantDHCPEvent    bool                           `binapi:"bool,name=want_dhcp_event" json:"want_dhcp_event,omitempty"`
+       SetBroadcastFlag bool                           `binapi:"bool,name=set_broadcast_flag" json:"set_broadcast_flag,omitempty"`
+       Dscp             ip_types.IPDscp                `binapi:"ip_dscp,name=dscp" json:"dscp,omitempty"`
+       PID              uint32                         `binapi:"u32,name=pid" json:"pid,omitempty"`
+}
+
+// DHCPLease defines type 'dhcp_lease'.
+type DHCPLease struct {
+       SwIfIndex     interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       State         DHCPClientState                `binapi:"dhcp_client_state,name=state" json:"state,omitempty"`
+       IsIPv6        bool                           `binapi:"bool,name=is_ipv6" json:"is_ipv6,omitempty"`
+       Hostname      string                         `binapi:"string[64],name=hostname" json:"hostname,omitempty"`
+       MaskWidth     uint8                          `binapi:"u8,name=mask_width" json:"mask_width,omitempty"`
+       HostAddress   ip_types.Address               `binapi:"address,name=host_address" json:"host_address,omitempty"`
+       RouterAddress ip_types.Address               `binapi:"address,name=router_address" json:"router_address,omitempty"`
+       HostMac       ethernet_types.MacAddress      `binapi:"mac_address,name=host_mac" json:"host_mac,omitempty"`
+       Count         uint8                          `binapi:"u8,name=count" json:"-"`
+       DomainServer  []DomainServer                 `binapi:"domain_server[count],name=domain_server" json:"domain_server,omitempty"`
+}
+
+// DHCPServer defines type 'dhcp_server'.
+type DHCPServer struct {
+       ServerVrfID uint32           `binapi:"u32,name=server_vrf_id" json:"server_vrf_id,omitempty"`
+       DHCPServer  ip_types.Address `binapi:"address,name=dhcp_server" json:"dhcp_server,omitempty"`
+}
+
+// DomainServer defines type 'domain_server'.
+type DomainServer struct {
+       Address ip_types.Address `binapi:"address,name=address" json:"address,omitempty"`
+}
+
+// DHCP6ClientsEnableDisable defines message 'dhcp6_clients_enable_disable'.
+type DHCP6ClientsEnableDisable struct {
+       Enable bool `binapi:"bool,name=enable" json:"enable,omitempty"`
+}
+
+func (m *DHCP6ClientsEnableDisable) Reset()               { *m = DHCP6ClientsEnableDisable{} }
+func (*DHCP6ClientsEnableDisable) GetMessageName() string { return "dhcp6_clients_enable_disable" }
+func (*DHCP6ClientsEnableDisable) GetCrcString() string   { return "b3e225d2" }
+func (*DHCP6ClientsEnableDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *DHCP6ClientsEnableDisable) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 1 // m.Enable
+       return size
+}
+func (m *DHCP6ClientsEnableDisable) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeBool(m.Enable)
+       return buf.Bytes(), nil
+}
+func (m *DHCP6ClientsEnableDisable) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Enable = buf.DecodeBool()
+       return nil
+}
+
+// DHCP6ClientsEnableDisableReply defines message 'dhcp6_clients_enable_disable_reply'.
+type DHCP6ClientsEnableDisableReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *DHCP6ClientsEnableDisableReply) Reset() { *m = DHCP6ClientsEnableDisableReply{} }
+func (*DHCP6ClientsEnableDisableReply) GetMessageName() string {
+       return "dhcp6_clients_enable_disable_reply"
+}
+func (*DHCP6ClientsEnableDisableReply) GetCrcString() string { return "e8d4e804" }
+func (*DHCP6ClientsEnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *DHCP6ClientsEnableDisableReply) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.Retval
+       return size
+}
+func (m *DHCP6ClientsEnableDisableReply) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.Retval))
+       return buf.Bytes(), nil
+}
+func (m *DHCP6ClientsEnableDisableReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = int32(buf.DecodeUint32())
+       return nil
+}
+
+// DHCP6DuidLlSet defines message 'dhcp6_duid_ll_set'.
+type DHCP6DuidLlSet struct {
+       DuidLl []byte `binapi:"u8[10],name=duid_ll" json:"duid_ll,omitempty"`
+}
+
+func (m *DHCP6DuidLlSet) Reset()               { *m = DHCP6DuidLlSet{} }
+func (*DHCP6DuidLlSet) GetMessageName() string { return "dhcp6_duid_ll_set" }
+func (*DHCP6DuidLlSet) GetCrcString() string   { return "0f6ca323" }
+func (*DHCP6DuidLlSet) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *DHCP6DuidLlSet) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 1 * 10 // m.DuidLl
+       return size
+}
+func (m *DHCP6DuidLlSet) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeBytes(m.DuidLl[:], 10)
+       return buf.Bytes(), nil
+}
+func (m *DHCP6DuidLlSet) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       copy(m.DuidLl[:], buf.DecodeBytes(10))
+       return nil
+}
+
+// DHCP6DuidLlSetReply defines message 'dhcp6_duid_ll_set_reply'.
+type DHCP6DuidLlSetReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *DHCP6DuidLlSetReply) Reset()               { *m = DHCP6DuidLlSetReply{} }
+func (*DHCP6DuidLlSetReply) GetMessageName() string { return "dhcp6_duid_ll_set_reply" }
+func (*DHCP6DuidLlSetReply) GetCrcString() string   { return "e8d4e804" }
+func (*DHCP6DuidLlSetReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *DHCP6DuidLlSetReply) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.Retval
+       return size
+}
+func (m *DHCP6DuidLlSetReply) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.Retval))
+       return buf.Bytes(), nil
+}
+func (m *DHCP6DuidLlSetReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = int32(buf.DecodeUint32())
+       return nil
+}
+
+// DHCP6PdReplyEvent defines message 'dhcp6_pd_reply_event'.
+type DHCP6PdReplyEvent struct {
+       PID             uint32                         `binapi:"u32,name=pid" json:"pid,omitempty"`
+       SwIfIndex       interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       ServerIndex     uint32                         `binapi:"u32,name=server_index" json:"server_index,omitempty"`
+       MsgType         Dhcpv6MsgType                  `binapi:"dhcpv6_msg_type,name=msg_type" json:"msg_type,omitempty"`
+       T1              uint32                         `binapi:"u32,name=T1" json:"T1,omitempty"`
+       T2              uint32                         `binapi:"u32,name=T2" json:"T2,omitempty"`
+       InnerStatusCode uint16                         `binapi:"u16,name=inner_status_code" json:"inner_status_code,omitempty"`
+       StatusCode      uint16                         `binapi:"u16,name=status_code" json:"status_code,omitempty"`
+       Preference      uint8                          `binapi:"u8,name=preference" json:"preference,omitempty"`
+       NPrefixes       uint32                         `binapi:"u32,name=n_prefixes" json:"-"`
+       Prefixes        []DHCP6PdPrefixInfo            `binapi:"dhcp6_pd_prefix_info[n_prefixes],name=prefixes" json:"prefixes,omitempty"`
+}
+
+func (m *DHCP6PdReplyEvent) Reset()               { *m = DHCP6PdReplyEvent{} }
+func (*DHCP6PdReplyEvent) GetMessageName() string { return "dhcp6_pd_reply_event" }
+func (*DHCP6PdReplyEvent) GetCrcString() string   { return "cb3e462b" }
+func (*DHCP6PdReplyEvent) GetMessageType() api.MessageType {
+       return api.EventMessage
+}
+
+func (m *DHCP6PdReplyEvent) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.PID
+       size += 4 // m.SwIfIndex
+       size += 4 // m.ServerIndex
+       size += 4 // m.MsgType
+       size += 4 // m.T1
+       size += 4 // m.T2
+       size += 2 // m.InnerStatusCode
+       size += 2 // m.StatusCode
+       size += 1 // m.Preference
+       size += 4 // m.NPrefixes
+       for j1 := 0; j1 < len(m.Prefixes); j1++ {
+               var s1 DHCP6PdPrefixInfo
+               _ = s1
+               if j1 < len(m.Prefixes) {
+                       s1 = m.Prefixes[j1]
+               }
+               size += 1 * 16 // s1.Prefix.Address
+               size += 1      // s1.Prefix.Len
+               size += 4      // s1.ValidTime
+               size += 4      // s1.PreferredTime
+       }
+       return size
+}
+func (m *DHCP6PdReplyEvent) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.PID))
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint32(uint32(m.ServerIndex))
+       buf.EncodeUint32(uint32(m.MsgType))
+       buf.EncodeUint32(uint32(m.T1))
+       buf.EncodeUint32(uint32(m.T2))
+       buf.EncodeUint16(uint16(m.InnerStatusCode))
+       buf.EncodeUint16(uint16(m.StatusCode))
+       buf.EncodeUint8(uint8(m.Preference))
+       buf.EncodeUint32(uint32(len(m.Prefixes)))
+       for j0 := 0; j0 < len(m.Prefixes); j0++ {
+               var v0 DHCP6PdPrefixInfo
+               if j0 < len(m.Prefixes) {
+                       v0 = m.Prefixes[j0]
+               }
+               buf.EncodeBytes(v0.Prefix.Address[:], 16)
+               buf.EncodeUint8(uint8(v0.Prefix.Len))
+               buf.EncodeUint32(uint32(v0.ValidTime))
+               buf.EncodeUint32(uint32(v0.PreferredTime))
+       }
+       return buf.Bytes(), nil
+}
+func (m *DHCP6PdReplyEvent) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.PID = buf.DecodeUint32()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.ServerIndex = buf.DecodeUint32()
+       m.MsgType = Dhcpv6MsgType(buf.DecodeUint32())
+       m.T1 = buf.DecodeUint32()
+       m.T2 = buf.DecodeUint32()
+       m.InnerStatusCode = buf.DecodeUint16()
+       m.StatusCode = buf.DecodeUint16()
+       m.Preference = buf.DecodeUint8()
+       m.NPrefixes = buf.DecodeUint32()
+       m.Prefixes = make([]DHCP6PdPrefixInfo, int(m.NPrefixes))
+       for j0 := 0; j0 < len(m.Prefixes); j0++ {
+               copy(m.Prefixes[j0].Prefix.Address[:], buf.DecodeBytes(16))
+               m.Prefixes[j0].Prefix.Len = buf.DecodeUint8()
+               m.Prefixes[j0].ValidTime = buf.DecodeUint32()
+               m.Prefixes[j0].PreferredTime = buf.DecodeUint32()
+       }
+       return nil
+}
+
+// DHCP6PdSendClientMessage defines message 'dhcp6_pd_send_client_message'.
+type DHCP6PdSendClientMessage struct {
+       SwIfIndex   interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       ServerIndex uint32                         `binapi:"u32,name=server_index" json:"server_index,omitempty"`
+       Irt         uint32                         `binapi:"u32,name=irt" json:"irt,omitempty"`
+       Mrt         uint32                         `binapi:"u32,name=mrt" json:"mrt,omitempty"`
+       Mrc         uint32                         `binapi:"u32,name=mrc" json:"mrc,omitempty"`
+       Mrd         uint32                         `binapi:"u32,name=mrd" json:"mrd,omitempty"`
+       Stop        bool                           `binapi:"bool,name=stop" json:"stop,omitempty"`
+       MsgType     Dhcpv6MsgType                  `binapi:"dhcpv6_msg_type,name=msg_type" json:"msg_type,omitempty"`
+       T1          uint32                         `binapi:"u32,name=T1" json:"T1,omitempty"`
+       T2          uint32                         `binapi:"u32,name=T2" json:"T2,omitempty"`
+       NPrefixes   uint32                         `binapi:"u32,name=n_prefixes" json:"-"`
+       Prefixes    []DHCP6PdPrefixInfo            `binapi:"dhcp6_pd_prefix_info[n_prefixes],name=prefixes" json:"prefixes,omitempty"`
+}
+
+func (m *DHCP6PdSendClientMessage) Reset()               { *m = DHCP6PdSendClientMessage{} }
+func (*DHCP6PdSendClientMessage) GetMessageName() string { return "dhcp6_pd_send_client_message" }
+func (*DHCP6PdSendClientMessage) GetCrcString() string   { return "064badb8" }
+func (*DHCP6PdSendClientMessage) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *DHCP6PdSendClientMessage) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.SwIfIndex
+       size += 4 // m.ServerIndex
+       size += 4 // m.Irt
+       size += 4 // m.Mrt
+       size += 4 // m.Mrc
+       size += 4 // m.Mrd
+       size += 1 // m.Stop
+       size += 4 // m.MsgType
+       size += 4 // m.T1
+       size += 4 // m.T2
+       size += 4 // m.NPrefixes
+       for j1 := 0; j1 < len(m.Prefixes); j1++ {
+               var s1 DHCP6PdPrefixInfo
+               _ = s1
+               if j1 < len(m.Prefixes) {
+                       s1 = m.Prefixes[j1]
+               }
+               size += 1 * 16 // s1.Prefix.Address
+               size += 1      // s1.Prefix.Len
+               size += 4      // s1.ValidTime
+               size += 4      // s1.PreferredTime
+       }
+       return size
+}
+func (m *DHCP6PdSendClientMessage) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint32(uint32(m.ServerIndex))
+       buf.EncodeUint32(uint32(m.Irt))
+       buf.EncodeUint32(uint32(m.Mrt))
+       buf.EncodeUint32(uint32(m.Mrc))
+       buf.EncodeUint32(uint32(m.Mrd))
+       buf.EncodeBool(m.Stop)
+       buf.EncodeUint32(uint32(m.MsgType))
+       buf.EncodeUint32(uint32(m.T1))
+       buf.EncodeUint32(uint32(m.T2))
+       buf.EncodeUint32(uint32(len(m.Prefixes)))
+       for j0 := 0; j0 < len(m.Prefixes); j0++ {
+               var v0 DHCP6PdPrefixInfo
+               if j0 < len(m.Prefixes) {
+                       v0 = m.Prefixes[j0]
+               }
+               buf.EncodeBytes(v0.Prefix.Address[:], 16)
+               buf.EncodeUint8(uint8(v0.Prefix.Len))
+               buf.EncodeUint32(uint32(v0.ValidTime))
+               buf.EncodeUint32(uint32(v0.PreferredTime))
+       }
+       return buf.Bytes(), nil
+}
+func (m *DHCP6PdSendClientMessage) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.ServerIndex = buf.DecodeUint32()
+       m.Irt = buf.DecodeUint32()
+       m.Mrt = buf.DecodeUint32()
+       m.Mrc = buf.DecodeUint32()
+       m.Mrd = buf.DecodeUint32()
+       m.Stop = buf.DecodeBool()
+       m.MsgType = Dhcpv6MsgType(buf.DecodeUint32())
+       m.T1 = buf.DecodeUint32()
+       m.T2 = buf.DecodeUint32()
+       m.NPrefixes = buf.DecodeUint32()
+       m.Prefixes = make([]DHCP6PdPrefixInfo, int(m.NPrefixes))
+       for j0 := 0; j0 < len(m.Prefixes); j0++ {
+               copy(m.Prefixes[j0].Prefix.Address[:], buf.DecodeBytes(16))
+               m.Prefixes[j0].Prefix.Len = buf.DecodeUint8()
+               m.Prefixes[j0].ValidTime = buf.DecodeUint32()
+               m.Prefixes[j0].PreferredTime = buf.DecodeUint32()
+       }
+       return nil
+}
+
+// DHCP6PdSendClientMessageReply defines message 'dhcp6_pd_send_client_message_reply'.
+type DHCP6PdSendClientMessageReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *DHCP6PdSendClientMessageReply) Reset() { *m = DHCP6PdSendClientMessageReply{} }
+func (*DHCP6PdSendClientMessageReply) GetMessageName() string {
+       return "dhcp6_pd_send_client_message_reply"
+}
+func (*DHCP6PdSendClientMessageReply) GetCrcString() string { return "e8d4e804" }
+func (*DHCP6PdSendClientMessageReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *DHCP6PdSendClientMessageReply) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.Retval
+       return size
+}
+func (m *DHCP6PdSendClientMessageReply) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.Retval))
+       return buf.Bytes(), nil
+}
+func (m *DHCP6PdSendClientMessageReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = int32(buf.DecodeUint32())
+       return nil
+}
+
+// DHCP6ReplyEvent defines message 'dhcp6_reply_event'.
+type DHCP6ReplyEvent struct {
+       PID             uint32                         `binapi:"u32,name=pid" json:"pid,omitempty"`
+       SwIfIndex       interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       ServerIndex     uint32                         `binapi:"u32,name=server_index" json:"server_index,omitempty"`
+       MsgType         Dhcpv6MsgType                  `binapi:"dhcpv6_msg_type,name=msg_type" json:"msg_type,omitempty"`
+       T1              uint32                         `binapi:"u32,name=T1" json:"T1,omitempty"`
+       T2              uint32                         `binapi:"u32,name=T2" json:"T2,omitempty"`
+       InnerStatusCode uint16                         `binapi:"u16,name=inner_status_code" json:"inner_status_code,omitempty"`
+       StatusCode      uint16                         `binapi:"u16,name=status_code" json:"status_code,omitempty"`
+       Preference      uint8                          `binapi:"u8,name=preference" json:"preference,omitempty"`
+       NAddresses      uint32                         `binapi:"u32,name=n_addresses" json:"-"`
+       Addresses       []DHCP6AddressInfo             `binapi:"dhcp6_address_info[n_addresses],name=addresses" json:"addresses,omitempty"`
+}
+
+func (m *DHCP6ReplyEvent) Reset()               { *m = DHCP6ReplyEvent{} }
+func (*DHCP6ReplyEvent) GetMessageName() string { return "dhcp6_reply_event" }
+func (*DHCP6ReplyEvent) GetCrcString() string   { return "9f3af9e5" }
+func (*DHCP6ReplyEvent) GetMessageType() api.MessageType {
+       return api.EventMessage
+}
+
+func (m *DHCP6ReplyEvent) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.PID
+       size += 4 // m.SwIfIndex
+       size += 4 // m.ServerIndex
+       size += 4 // m.MsgType
+       size += 4 // m.T1
+       size += 4 // m.T2
+       size += 2 // m.InnerStatusCode
+       size += 2 // m.StatusCode
+       size += 1 // m.Preference
+       size += 4 // m.NAddresses
+       for j1 := 0; j1 < len(m.Addresses); j1++ {
+               var s1 DHCP6AddressInfo
+               _ = s1
+               if j1 < len(m.Addresses) {
+                       s1 = m.Addresses[j1]
+               }
+               size += 1 * 16 // s1.Address
+               size += 4      // s1.ValidTime
+               size += 4      // s1.PreferredTime
+       }
+       return size
+}
+func (m *DHCP6ReplyEvent) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.PID))
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint32(uint32(m.ServerIndex))
+       buf.EncodeUint32(uint32(m.MsgType))
+       buf.EncodeUint32(uint32(m.T1))
+       buf.EncodeUint32(uint32(m.T2))
+       buf.EncodeUint16(uint16(m.InnerStatusCode))
+       buf.EncodeUint16(uint16(m.StatusCode))
+       buf.EncodeUint8(uint8(m.Preference))
+       buf.EncodeUint32(uint32(len(m.Addresses)))
+       for j0 := 0; j0 < len(m.Addresses); j0++ {
+               var v0 DHCP6AddressInfo
+               if j0 < len(m.Addresses) {
+                       v0 = m.Addresses[j0]
+               }
+               buf.EncodeBytes(v0.Address[:], 16)
+               buf.EncodeUint32(uint32(v0.ValidTime))
+               buf.EncodeUint32(uint32(v0.PreferredTime))
+       }
+       return buf.Bytes(), nil
+}
+func (m *DHCP6ReplyEvent) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.PID = buf.DecodeUint32()
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.ServerIndex = buf.DecodeUint32()
+       m.MsgType = Dhcpv6MsgType(buf.DecodeUint32())
+       m.T1 = buf.DecodeUint32()
+       m.T2 = buf.DecodeUint32()
+       m.InnerStatusCode = buf.DecodeUint16()
+       m.StatusCode = buf.DecodeUint16()
+       m.Preference = buf.DecodeUint8()
+       m.NAddresses = buf.DecodeUint32()
+       m.Addresses = make([]DHCP6AddressInfo, int(m.NAddresses))
+       for j0 := 0; j0 < len(m.Addresses); j0++ {
+               copy(m.Addresses[j0].Address[:], buf.DecodeBytes(16))
+               m.Addresses[j0].ValidTime = buf.DecodeUint32()
+               m.Addresses[j0].PreferredTime = buf.DecodeUint32()
+       }
+       return nil
+}
+
+// DHCP6SendClientMessage defines message 'dhcp6_send_client_message'.
+type DHCP6SendClientMessage struct {
+       SwIfIndex   interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+       ServerIndex uint32                         `binapi:"u32,name=server_index" json:"server_index,omitempty"`
+       Irt         uint32                         `binapi:"u32,name=irt" json:"irt,omitempty"`
+       Mrt         uint32                         `binapi:"u32,name=mrt" json:"mrt,omitempty"`
+       Mrc         uint32                         `binapi:"u32,name=mrc" json:"mrc,omitempty"`
+       Mrd         uint32                         `binapi:"u32,name=mrd" json:"mrd,omitempty"`
+       Stop        bool                           `binapi:"bool,name=stop" json:"stop,omitempty"`
+       MsgType     Dhcpv6MsgType                  `binapi:"dhcpv6_msg_type,name=msg_type" json:"msg_type,omitempty"`
+       T1          uint32                         `binapi:"u32,name=T1" json:"T1,omitempty"`
+       T2          uint32                         `binapi:"u32,name=T2" json:"T2,omitempty"`
+       NAddresses  uint32                         `binapi:"u32,name=n_addresses" json:"-"`
+       Addresses   []DHCP6AddressInfo             `binapi:"dhcp6_address_info[n_addresses],name=addresses" json:"addresses,omitempty"`
+}
+
+func (m *DHCP6SendClientMessage) Reset()               { *m = DHCP6SendClientMessage{} }
+func (*DHCP6SendClientMessage) GetMessageName() string { return "dhcp6_send_client_message" }
+func (*DHCP6SendClientMessage) GetCrcString() string   { return "f6f14ef0" }
+func (*DHCP6SendClientMessage) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *DHCP6SendClientMessage) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.SwIfIndex
+       size += 4 // m.ServerIndex
+       size += 4 // m.Irt
+       size += 4 // m.Mrt
+       size += 4 // m.Mrc
+       size += 4 // m.Mrd
+       size += 1 // m.Stop
+       size += 4 // m.MsgType
+       size += 4 // m.T1
+       size += 4 // m.T2
+       size += 4 // m.NAddresses
+       for j1 := 0; j1 < len(m.Addresses); j1++ {
+               var s1 DHCP6AddressInfo
+               _ = s1
+               if j1 < len(m.Addresses) {
+                       s1 = m.Addresses[j1]
+               }
+               size += 1 * 16 // s1.Address
+               size += 4      // s1.ValidTime
+               size += 4      // s1.PreferredTime
+       }
+       return size
+}
+func (m *DHCP6SendClientMessage) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.SwIfIndex))
+       buf.EncodeUint32(uint32(m.ServerIndex))
+       buf.EncodeUint32(uint32(m.Irt))
+       buf.EncodeUint32(uint32(m.Mrt))
+       buf.EncodeUint32(uint32(m.Mrc))
+       buf.EncodeUint32(uint32(m.Mrd))
+       buf.EncodeBool(m.Stop)
+       buf.EncodeUint32(uint32(m.MsgType))
+       buf.EncodeUint32(uint32(m.T1))
+       buf.EncodeUint32(uint32(m.T2))
+       buf.EncodeUint32(uint32(len(m.Addresses)))
+       for j0 := 0; j0 < len(m.Addresses); j0++ {
+               var v0 DHCP6AddressInfo
+               if j0 < len(m.Addresses) {
+                       v0 = m.Addresses[j0]
+               }
+               buf.EncodeBytes(v0.Address[:], 16)
+               buf.EncodeUint32(uint32(v0.ValidTime))
+               buf.EncodeUint32(uint32(v0.PreferredTime))
+       }
+       return buf.Bytes(), nil
+}
+func (m *DHCP6SendClientMessage) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.ServerIndex = buf.DecodeUint32()
+       m.Irt = buf.DecodeUint32()
+       m.Mrt = buf.DecodeUint32()
+       m.Mrc = buf.DecodeUint32()
+       m.Mrd = buf.DecodeUint32()
+       m.Stop = buf.DecodeBool()
+       m.MsgType = Dhcpv6MsgType(buf.DecodeUint32())
+       m.T1 = buf.DecodeUint32()
+       m.T2 = buf.DecodeUint32()
+       m.NAddresses = buf.DecodeUint32()
+       m.Addresses = make([]DHCP6AddressInfo, int(m.NAddresses))
+       for j0 := 0; j0 < len(m.Addresses); j0++ {
+               copy(m.Addresses[j0].Address[:], buf.DecodeBytes(16))
+               m.Addresses[j0].ValidTime = buf.DecodeUint32()
+               m.Addresses[j0].PreferredTime = buf.DecodeUint32()
+       }
+       return nil
+}
+
+// DHCP6SendClientMessageReply defines message 'dhcp6_send_client_message_reply'.
+type DHCP6SendClientMessageReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *DHCP6SendClientMessageReply) Reset()               { *m = DHCP6SendClientMessageReply{} }
+func (*DHCP6SendClientMessageReply) GetMessageName() string { return "dhcp6_send_client_message_reply" }
+func (*DHCP6SendClientMessageReply) GetCrcString() string   { return "e8d4e804" }
+func (*DHCP6SendClientMessageReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *DHCP6SendClientMessageReply) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.Retval
+       return size
+}
+func (m *DHCP6SendClientMessageReply) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.Retval))
+       return buf.Bytes(), nil
+}
+func (m *DHCP6SendClientMessageReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = int32(buf.DecodeUint32())
+       return nil
+}
+
+// DHCPClientConfig defines message 'dhcp_client_config'.
+type DHCPClientConfig struct {
+       IsAdd  bool       `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       Client DHCPClient `binapi:"dhcp_client,name=client" json:"client,omitempty"`
+}
+
+func (m *DHCPClientConfig) Reset()               { *m = DHCPClientConfig{} }
+func (*DHCPClientConfig) GetMessageName() string { return "dhcp_client_config" }
+func (*DHCPClientConfig) GetCrcString() string   { return "959b80a3" }
+func (*DHCPClientConfig) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *DHCPClientConfig) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 1      // m.IsAdd
+       size += 4      // m.Client.SwIfIndex
+       size += 64     // m.Client.Hostname
+       size += 1 * 64 // m.Client.ID
+       size += 1      // m.Client.WantDHCPEvent
+       size += 1      // m.Client.SetBroadcastFlag
+       size += 1      // m.Client.Dscp
+       size += 4      // m.Client.PID
+       return size
+}
+func (m *DHCPClientConfig) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeBool(m.IsAdd)
+       buf.EncodeUint32(uint32(m.Client.SwIfIndex))
+       buf.EncodeString(m.Client.Hostname, 64)
+       buf.EncodeBytes(m.Client.ID[:], 64)
+       buf.EncodeBool(m.Client.WantDHCPEvent)
+       buf.EncodeBool(m.Client.SetBroadcastFlag)
+       buf.EncodeUint8(uint8(m.Client.Dscp))
+       buf.EncodeUint32(uint32(m.Client.PID))
+       return buf.Bytes(), nil
+}
+func (m *DHCPClientConfig) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeBool()
+       m.Client.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Client.Hostname = buf.DecodeString(64)
+       copy(m.Client.ID[:], buf.DecodeBytes(64))
+       m.Client.WantDHCPEvent = buf.DecodeBool()
+       m.Client.SetBroadcastFlag = buf.DecodeBool()
+       m.Client.Dscp = ip_types.IPDscp(buf.DecodeUint8())
+       m.Client.PID = buf.DecodeUint32()
+       return nil
+}
+
+// DHCPClientConfigReply defines message 'dhcp_client_config_reply'.
+type DHCPClientConfigReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *DHCPClientConfigReply) Reset()               { *m = DHCPClientConfigReply{} }
+func (*DHCPClientConfigReply) GetMessageName() string { return "dhcp_client_config_reply" }
+func (*DHCPClientConfigReply) GetCrcString() string   { return "e8d4e804" }
+func (*DHCPClientConfigReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *DHCPClientConfigReply) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.Retval
+       return size
+}
+func (m *DHCPClientConfigReply) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.Retval))
+       return buf.Bytes(), nil
+}
+func (m *DHCPClientConfigReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = int32(buf.DecodeUint32())
+       return nil
+}
+
+// DHCPClientDetails defines message 'dhcp_client_details'.
+type DHCPClientDetails struct {
+       Client DHCPClient `binapi:"dhcp_client,name=client" json:"client,omitempty"`
+       Lease  DHCPLease  `binapi:"dhcp_lease,name=lease" json:"lease,omitempty"`
+}
+
+func (m *DHCPClientDetails) Reset()               { *m = DHCPClientDetails{} }
+func (*DHCPClientDetails) GetMessageName() string { return "dhcp_client_details" }
+func (*DHCPClientDetails) GetCrcString() string   { return "acd82f5a" }
+func (*DHCPClientDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *DHCPClientDetails) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4      // m.Client.SwIfIndex
+       size += 64     // m.Client.Hostname
+       size += 1 * 64 // m.Client.ID
+       size += 1      // m.Client.WantDHCPEvent
+       size += 1      // m.Client.SetBroadcastFlag
+       size += 1      // m.Client.Dscp
+       size += 4      // m.Client.PID
+       size += 4      // m.Lease.SwIfIndex
+       size += 4      // m.Lease.State
+       size += 1      // m.Lease.IsIPv6
+       size += 64     // m.Lease.Hostname
+       size += 1      // m.Lease.MaskWidth
+       size += 1      // m.Lease.HostAddress.Af
+       size += 1 * 16 // m.Lease.HostAddress.Un
+       size += 1      // m.Lease.RouterAddress.Af
+       size += 1 * 16 // m.Lease.RouterAddress.Un
+       size += 1 * 6  // m.Lease.HostMac
+       size += 1      // m.Lease.Count
+       for j2 := 0; j2 < len(m.Lease.DomainServer); j2++ {
+               var s2 DomainServer
+               _ = s2
+               if j2 < len(m.Lease.DomainServer) {
+                       s2 = m.Lease.DomainServer[j2]
+               }
+               size += 1      // s2.Address.Af
+               size += 1 * 16 // s2.Address.Un
+       }
+       return size
+}
+func (m *DHCPClientDetails) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.Client.SwIfIndex))
+       buf.EncodeString(m.Client.Hostname, 64)
+       buf.EncodeBytes(m.Client.ID[:], 64)
+       buf.EncodeBool(m.Client.WantDHCPEvent)
+       buf.EncodeBool(m.Client.SetBroadcastFlag)
+       buf.EncodeUint8(uint8(m.Client.Dscp))
+       buf.EncodeUint32(uint32(m.Client.PID))
+       buf.EncodeUint32(uint32(m.Lease.SwIfIndex))
+       buf.EncodeUint32(uint32(m.Lease.State))
+       buf.EncodeBool(m.Lease.IsIPv6)
+       buf.EncodeString(m.Lease.Hostname, 64)
+       buf.EncodeUint8(uint8(m.Lease.MaskWidth))
+       buf.EncodeUint8(uint8(m.Lease.HostAddress.Af))
+       buf.EncodeBytes(m.Lease.HostAddress.Un.XXX_UnionData[:], 0)
+       buf.EncodeUint8(uint8(m.Lease.RouterAddress.Af))
+       buf.EncodeBytes(m.Lease.RouterAddress.Un.XXX_UnionData[:], 0)
+       buf.EncodeBytes(m.Lease.HostMac[:], 6)
+       buf.EncodeUint8(uint8(len(m.Lease.DomainServer)))
+       for j1 := 0; j1 < len(m.Lease.DomainServer); j1++ {
+               var v1 DomainServer
+               if j1 < len(m.Lease.DomainServer) {
+                       v1 = m.Lease.DomainServer[j1]
+               }
+               buf.EncodeUint8(uint8(v1.Address.Af))
+               buf.EncodeBytes(v1.Address.Un.XXX_UnionData[:], 0)
+       }
+       return buf.Bytes(), nil
+}
+func (m *DHCPClientDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Client.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Client.Hostname = buf.DecodeString(64)
+       copy(m.Client.ID[:], buf.DecodeBytes(64))
+       m.Client.WantDHCPEvent = buf.DecodeBool()
+       m.Client.SetBroadcastFlag = buf.DecodeBool()
+       m.Client.Dscp = ip_types.IPDscp(buf.DecodeUint8())
+       m.Client.PID = buf.DecodeUint32()
+       m.Lease.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Lease.State = DHCPClientState(buf.DecodeUint32())
+       m.Lease.IsIPv6 = buf.DecodeBool()
+       m.Lease.Hostname = buf.DecodeString(64)
+       m.Lease.MaskWidth = buf.DecodeUint8()
+       m.Lease.HostAddress.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Lease.HostAddress.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Lease.RouterAddress.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Lease.RouterAddress.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       copy(m.Lease.HostMac[:], buf.DecodeBytes(6))
+       m.Lease.Count = buf.DecodeUint8()
+       m.Lease.DomainServer = make([]DomainServer, int(m.Lease.Count))
+       for j1 := 0; j1 < len(m.Lease.DomainServer); j1++ {
+               m.Lease.DomainServer[j1].Address.Af = ip_types.AddressFamily(buf.DecodeUint8())
+               copy(m.Lease.DomainServer[j1].Address.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       }
+       return nil
+}
+
+// DHCPClientDump defines message 'dhcp_client_dump'.
+type DHCPClientDump struct{}
+
+func (m *DHCPClientDump) Reset()               { *m = DHCPClientDump{} }
+func (*DHCPClientDump) GetMessageName() string { return "dhcp_client_dump" }
+func (*DHCPClientDump) GetCrcString() string   { return "51077d14" }
+func (*DHCPClientDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *DHCPClientDump) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       return size
+}
+func (m *DHCPClientDump) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       return buf.Bytes(), nil
+}
+func (m *DHCPClientDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+// DHCPComplEvent defines message 'dhcp_compl_event'.
+type DHCPComplEvent struct {
+       PID   uint32    `binapi:"u32,name=pid" json:"pid,omitempty"`
+       Lease DHCPLease `binapi:"dhcp_lease,name=lease" json:"lease,omitempty"`
+}
+
+func (m *DHCPComplEvent) Reset()               { *m = DHCPComplEvent{} }
+func (*DHCPComplEvent) GetMessageName() string { return "dhcp_compl_event" }
+func (*DHCPComplEvent) GetCrcString() string   { return "e908fd1d" }
+func (*DHCPComplEvent) GetMessageType() api.MessageType {
+       return api.EventMessage
+}
+
+func (m *DHCPComplEvent) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4      // m.PID
+       size += 4      // m.Lease.SwIfIndex
+       size += 4      // m.Lease.State
+       size += 1      // m.Lease.IsIPv6
+       size += 64     // m.Lease.Hostname
+       size += 1      // m.Lease.MaskWidth
+       size += 1      // m.Lease.HostAddress.Af
+       size += 1 * 16 // m.Lease.HostAddress.Un
+       size += 1      // m.Lease.RouterAddress.Af
+       size += 1 * 16 // m.Lease.RouterAddress.Un
+       size += 1 * 6  // m.Lease.HostMac
+       size += 1      // m.Lease.Count
+       for j2 := 0; j2 < len(m.Lease.DomainServer); j2++ {
+               var s2 DomainServer
+               _ = s2
+               if j2 < len(m.Lease.DomainServer) {
+                       s2 = m.Lease.DomainServer[j2]
+               }
+               size += 1      // s2.Address.Af
+               size += 1 * 16 // s2.Address.Un
+       }
+       return size
+}
+func (m *DHCPComplEvent) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.PID))
+       buf.EncodeUint32(uint32(m.Lease.SwIfIndex))
+       buf.EncodeUint32(uint32(m.Lease.State))
+       buf.EncodeBool(m.Lease.IsIPv6)
+       buf.EncodeString(m.Lease.Hostname, 64)
+       buf.EncodeUint8(uint8(m.Lease.MaskWidth))
+       buf.EncodeUint8(uint8(m.Lease.HostAddress.Af))
+       buf.EncodeBytes(m.Lease.HostAddress.Un.XXX_UnionData[:], 0)
+       buf.EncodeUint8(uint8(m.Lease.RouterAddress.Af))
+       buf.EncodeBytes(m.Lease.RouterAddress.Un.XXX_UnionData[:], 0)
+       buf.EncodeBytes(m.Lease.HostMac[:], 6)
+       buf.EncodeUint8(uint8(len(m.Lease.DomainServer)))
+       for j1 := 0; j1 < len(m.Lease.DomainServer); j1++ {
+               var v1 DomainServer
+               if j1 < len(m.Lease.DomainServer) {
+                       v1 = m.Lease.DomainServer[j1]
+               }
+               buf.EncodeUint8(uint8(v1.Address.Af))
+               buf.EncodeBytes(v1.Address.Un.XXX_UnionData[:], 0)
+       }
+       return buf.Bytes(), nil
+}
+func (m *DHCPComplEvent) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.PID = buf.DecodeUint32()
+       m.Lease.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
+       m.Lease.State = DHCPClientState(buf.DecodeUint32())
+       m.Lease.IsIPv6 = buf.DecodeBool()
+       m.Lease.Hostname = buf.DecodeString(64)
+       m.Lease.MaskWidth = buf.DecodeUint8()
+       m.Lease.HostAddress.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Lease.HostAddress.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Lease.RouterAddress.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.Lease.RouterAddress.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       copy(m.Lease.HostMac[:], buf.DecodeBytes(6))
+       m.Lease.Count = buf.DecodeUint8()
+       m.Lease.DomainServer = make([]DomainServer, int(m.Lease.Count))
+       for j1 := 0; j1 < len(m.Lease.DomainServer); j1++ {
+               m.Lease.DomainServer[j1].Address.Af = ip_types.AddressFamily(buf.DecodeUint8())
+               copy(m.Lease.DomainServer[j1].Address.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       }
+       return nil
+}
+
+// DHCPPluginControlPing defines message 'dhcp_plugin_control_ping'.
+type DHCPPluginControlPing struct{}
+
+func (m *DHCPPluginControlPing) Reset()               { *m = DHCPPluginControlPing{} }
+func (*DHCPPluginControlPing) GetMessageName() string { return "dhcp_plugin_control_ping" }
+func (*DHCPPluginControlPing) GetCrcString() string   { return "51077d14" }
+func (*DHCPPluginControlPing) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *DHCPPluginControlPing) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       return size
+}
+func (m *DHCPPluginControlPing) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       return buf.Bytes(), nil
+}
+func (m *DHCPPluginControlPing) Unmarshal(b []byte) error {
+       return nil
+}
+
+// DHCPPluginControlPingReply defines message 'dhcp_plugin_control_ping_reply'.
+type DHCPPluginControlPingReply struct {
+       Retval      int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       ClientIndex uint32 `binapi:"u32,name=client_index" json:"client_index,omitempty"`
+       VpePID      uint32 `binapi:"u32,name=vpe_pid" json:"vpe_pid,omitempty"`
+}
+
+func (m *DHCPPluginControlPingReply) Reset()               { *m = DHCPPluginControlPingReply{} }
+func (*DHCPPluginControlPingReply) GetMessageName() string { return "dhcp_plugin_control_ping_reply" }
+func (*DHCPPluginControlPingReply) GetCrcString() string   { return "f6b0b8ca" }
+func (*DHCPPluginControlPingReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *DHCPPluginControlPingReply) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.Retval
+       size += 4 // m.ClientIndex
+       size += 4 // m.VpePID
+       return size
+}
+func (m *DHCPPluginControlPingReply) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.Retval))
+       buf.EncodeUint32(uint32(m.ClientIndex))
+       buf.EncodeUint32(uint32(m.VpePID))
+       return buf.Bytes(), nil
+}
+func (m *DHCPPluginControlPingReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = int32(buf.DecodeUint32())
+       m.ClientIndex = buf.DecodeUint32()
+       m.VpePID = buf.DecodeUint32()
+       return nil
+}
+
+// DHCPPluginGetVersion defines message 'dhcp_plugin_get_version'.
+type DHCPPluginGetVersion struct{}
+
+func (m *DHCPPluginGetVersion) Reset()               { *m = DHCPPluginGetVersion{} }
+func (*DHCPPluginGetVersion) GetMessageName() string { return "dhcp_plugin_get_version" }
+func (*DHCPPluginGetVersion) GetCrcString() string   { return "51077d14" }
+func (*DHCPPluginGetVersion) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *DHCPPluginGetVersion) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       return size
+}
+func (m *DHCPPluginGetVersion) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       return buf.Bytes(), nil
+}
+func (m *DHCPPluginGetVersion) Unmarshal(b []byte) error {
+       return nil
+}
+
+// DHCPPluginGetVersionReply defines message 'dhcp_plugin_get_version_reply'.
+type DHCPPluginGetVersionReply struct {
+       Major uint32 `binapi:"u32,name=major" json:"major,omitempty"`
+       Minor uint32 `binapi:"u32,name=minor" json:"minor,omitempty"`
+}
+
+func (m *DHCPPluginGetVersionReply) Reset()               { *m = DHCPPluginGetVersionReply{} }
+func (*DHCPPluginGetVersionReply) GetMessageName() string { return "dhcp_plugin_get_version_reply" }
+func (*DHCPPluginGetVersionReply) GetCrcString() string   { return "9b32cf86" }
+func (*DHCPPluginGetVersionReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *DHCPPluginGetVersionReply) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.Major
+       size += 4 // m.Minor
+       return size
+}
+func (m *DHCPPluginGetVersionReply) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.Major))
+       buf.EncodeUint32(uint32(m.Minor))
+       return buf.Bytes(), nil
+}
+func (m *DHCPPluginGetVersionReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Major = buf.DecodeUint32()
+       m.Minor = buf.DecodeUint32()
+       return nil
+}
+
+// DHCPProxyConfig defines message 'dhcp_proxy_config'.
+type DHCPProxyConfig struct {
+       RxVrfID        uint32           `binapi:"u32,name=rx_vrf_id" json:"rx_vrf_id,omitempty"`
+       ServerVrfID    uint32           `binapi:"u32,name=server_vrf_id" json:"server_vrf_id,omitempty"`
+       IsAdd          bool             `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+       DHCPServer     ip_types.Address `binapi:"address,name=dhcp_server" json:"dhcp_server,omitempty"`
+       DHCPSrcAddress ip_types.Address `binapi:"address,name=dhcp_src_address" json:"dhcp_src_address,omitempty"`
+}
+
+func (m *DHCPProxyConfig) Reset()               { *m = DHCPProxyConfig{} }
+func (*DHCPProxyConfig) GetMessageName() string { return "dhcp_proxy_config" }
+func (*DHCPProxyConfig) GetCrcString() string   { return "6767230e" }
+func (*DHCPProxyConfig) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *DHCPProxyConfig) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4      // m.RxVrfID
+       size += 4      // m.ServerVrfID
+       size += 1      // m.IsAdd
+       size += 1      // m.DHCPServer.Af
+       size += 1 * 16 // m.DHCPServer.Un
+       size += 1      // m.DHCPSrcAddress.Af
+       size += 1 * 16 // m.DHCPSrcAddress.Un
+       return size
+}
+func (m *DHCPProxyConfig) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.RxVrfID))
+       buf.EncodeUint32(uint32(m.ServerVrfID))
+       buf.EncodeBool(m.IsAdd)
+       buf.EncodeUint8(uint8(m.DHCPServer.Af))
+       buf.EncodeBytes(m.DHCPServer.Un.XXX_UnionData[:], 0)
+       buf.EncodeUint8(uint8(m.DHCPSrcAddress.Af))
+       buf.EncodeBytes(m.DHCPSrcAddress.Un.XXX_UnionData[:], 0)
+       return buf.Bytes(), nil
+}
+func (m *DHCPProxyConfig) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.RxVrfID = buf.DecodeUint32()
+       m.ServerVrfID = buf.DecodeUint32()
+       m.IsAdd = buf.DecodeBool()
+       m.DHCPServer.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.DHCPServer.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.DHCPSrcAddress.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.DHCPSrcAddress.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       return nil
+}
+
+// DHCPProxyConfigReply defines message 'dhcp_proxy_config_reply'.
+type DHCPProxyConfigReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *DHCPProxyConfigReply) Reset()               { *m = DHCPProxyConfigReply{} }
+func (*DHCPProxyConfigReply) GetMessageName() string { return "dhcp_proxy_config_reply" }
+func (*DHCPProxyConfigReply) GetCrcString() string   { return "e8d4e804" }
+func (*DHCPProxyConfigReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *DHCPProxyConfigReply) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.Retval
+       return size
+}
+func (m *DHCPProxyConfigReply) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.Retval))
+       return buf.Bytes(), nil
+}
+func (m *DHCPProxyConfigReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = int32(buf.DecodeUint32())
+       return nil
+}
+
+// DHCPProxyDetails defines message 'dhcp_proxy_details'.
+type DHCPProxyDetails struct {
+       RxVrfID        uint32           `binapi:"u32,name=rx_vrf_id" json:"rx_vrf_id,omitempty"`
+       VssOui         uint32           `binapi:"u32,name=vss_oui" json:"vss_oui,omitempty"`
+       VssFibID       uint32           `binapi:"u32,name=vss_fib_id" json:"vss_fib_id,omitempty"`
+       VssType        VssType          `binapi:"vss_type,name=vss_type" json:"vss_type,omitempty"`
+       IsIPv6         bool             `binapi:"bool,name=is_ipv6" json:"is_ipv6,omitempty"`
+       VssVPNAsciiID  string           `binapi:"string[129],name=vss_vpn_ascii_id" json:"vss_vpn_ascii_id,omitempty"`
+       DHCPSrcAddress ip_types.Address `binapi:"address,name=dhcp_src_address" json:"dhcp_src_address,omitempty"`
+       Count          uint8            `binapi:"u8,name=count" json:"-"`
+       Servers        []DHCPServer     `binapi:"dhcp_server[count],name=servers" json:"servers,omitempty"`
+}
+
+func (m *DHCPProxyDetails) Reset()               { *m = DHCPProxyDetails{} }
+func (*DHCPProxyDetails) GetMessageName() string { return "dhcp_proxy_details" }
+func (*DHCPProxyDetails) GetCrcString() string   { return "ce16f044" }
+func (*DHCPProxyDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *DHCPProxyDetails) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4      // m.RxVrfID
+       size += 4      // m.VssOui
+       size += 4      // m.VssFibID
+       size += 4      // m.VssType
+       size += 1      // m.IsIPv6
+       size += 129    // m.VssVPNAsciiID
+       size += 1      // m.DHCPSrcAddress.Af
+       size += 1 * 16 // m.DHCPSrcAddress.Un
+       size += 1      // m.Count
+       for j1 := 0; j1 < len(m.Servers); j1++ {
+               var s1 DHCPServer
+               _ = s1
+               if j1 < len(m.Servers) {
+                       s1 = m.Servers[j1]
+               }
+               size += 4      // s1.ServerVrfID
+               size += 1      // s1.DHCPServer.Af
+               size += 1 * 16 // s1.DHCPServer.Un
+       }
+       return size
+}
+func (m *DHCPProxyDetails) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.RxVrfID))
+       buf.EncodeUint32(uint32(m.VssOui))
+       buf.EncodeUint32(uint32(m.VssFibID))
+       buf.EncodeUint32(uint32(m.VssType))
+       buf.EncodeBool(m.IsIPv6)
+       buf.EncodeString(m.VssVPNAsciiID, 129)
+       buf.EncodeUint8(uint8(m.DHCPSrcAddress.Af))
+       buf.EncodeBytes(m.DHCPSrcAddress.Un.XXX_UnionData[:], 0)
+       buf.EncodeUint8(uint8(len(m.Servers)))
+       for j0 := 0; j0 < len(m.Servers); j0++ {
+               var v0 DHCPServer
+               if j0 < len(m.Servers) {
+                       v0 = m.Servers[j0]
+               }
+               buf.EncodeUint32(uint32(v0.ServerVrfID))
+               buf.EncodeUint8(uint8(v0.DHCPServer.Af))
+               buf.EncodeBytes(v0.DHCPServer.Un.XXX_UnionData[:], 0)
+       }
+       return buf.Bytes(), nil
+}
+func (m *DHCPProxyDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.RxVrfID = buf.DecodeUint32()
+       m.VssOui = buf.DecodeUint32()
+       m.VssFibID = buf.DecodeUint32()
+       m.VssType = VssType(buf.DecodeUint32())
+       m.IsIPv6 = buf.DecodeBool()
+       m.VssVPNAsciiID = buf.DecodeString(129)
+       m.DHCPSrcAddress.Af = ip_types.AddressFamily(buf.DecodeUint8())
+       copy(m.DHCPSrcAddress.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       m.Count = buf.DecodeUint8()
+       m.Servers = make([]DHCPServer, int(m.Count))
+       for j0 := 0; j0 < len(m.Servers); j0++ {
+               m.Servers[j0].ServerVrfID = buf.DecodeUint32()
+               m.Servers[j0].DHCPServer.Af = ip_types.AddressFamily(buf.DecodeUint8())
+               copy(m.Servers[j0].DHCPServer.Un.XXX_UnionData[:], buf.DecodeBytes(16))
+       }
+       return nil
+}
+
+// DHCPProxyDump defines message 'dhcp_proxy_dump'.
+type DHCPProxyDump struct {
+       IsIP6 bool `binapi:"bool,name=is_ip6" json:"is_ip6,omitempty"`
+}
+
+func (m *DHCPProxyDump) Reset()               { *m = DHCPProxyDump{} }
+func (*DHCPProxyDump) GetMessageName() string { return "dhcp_proxy_dump" }
+func (*DHCPProxyDump) GetCrcString() string   { return "5c5b063f" }
+func (*DHCPProxyDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *DHCPProxyDump) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 1 // m.IsIP6
+       return size
+}
+func (m *DHCPProxyDump) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeBool(m.IsIP6)
+       return buf.Bytes(), nil
+}
+func (m *DHCPProxyDump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsIP6 = buf.DecodeBool()
+       return nil
+}
+
+// DHCPProxySetVss defines message 'dhcp_proxy_set_vss'.
+type DHCPProxySetVss struct {
+       TblID      uint32  `binapi:"u32,name=tbl_id" json:"tbl_id,omitempty"`
+       VssType    VssType `binapi:"vss_type,name=vss_type" json:"vss_type,omitempty"`
+       VPNAsciiID string  `binapi:"string[129],name=vpn_ascii_id" json:"vpn_ascii_id,omitempty"`
+       Oui        uint32  `binapi:"u32,name=oui" json:"oui,omitempty"`
+       VPNIndex   uint32  `binapi:"u32,name=vpn_index" json:"vpn_index,omitempty"`
+       IsIPv6     bool    `binapi:"bool,name=is_ipv6" json:"is_ipv6,omitempty"`
+       IsAdd      bool    `binapi:"bool,name=is_add" json:"is_add,omitempty"`
+}
+
+func (m *DHCPProxySetVss) Reset()               { *m = DHCPProxySetVss{} }
+func (*DHCPProxySetVss) GetMessageName() string { return "dhcp_proxy_set_vss" }
+func (*DHCPProxySetVss) GetCrcString() string   { return "50537301" }
+func (*DHCPProxySetVss) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *DHCPProxySetVss) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4   // m.TblID
+       size += 4   // m.VssType
+       size += 129 // m.VPNAsciiID
+       size += 4   // m.Oui
+       size += 4   // m.VPNIndex
+       size += 1   // m.IsIPv6
+       size += 1   // m.IsAdd
+       return size
+}
+func (m *DHCPProxySetVss) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.TblID))
+       buf.EncodeUint32(uint32(m.VssType))
+       buf.EncodeString(m.VPNAsciiID, 129)
+       buf.EncodeUint32(uint32(m.Oui))
+       buf.EncodeUint32(uint32(m.VPNIndex))
+       buf.EncodeBool(m.IsIPv6)
+       buf.EncodeBool(m.IsAdd)
+       return buf.Bytes(), nil
+}
+func (m *DHCPProxySetVss) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.TblID = buf.DecodeUint32()
+       m.VssType = VssType(buf.DecodeUint32())
+       m.VPNAsciiID = buf.DecodeString(129)
+       m.Oui = buf.DecodeUint32()
+       m.VPNIndex = buf.DecodeUint32()
+       m.IsIPv6 = buf.DecodeBool()
+       m.IsAdd = buf.DecodeBool()
+       return nil
+}
+
+// DHCPProxySetVssReply defines message 'dhcp_proxy_set_vss_reply'.
+type DHCPProxySetVssReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *DHCPProxySetVssReply) Reset()               { *m = DHCPProxySetVssReply{} }
+func (*DHCPProxySetVssReply) GetMessageName() string { return "dhcp_proxy_set_vss_reply" }
+func (*DHCPProxySetVssReply) GetCrcString() string   { return "e8d4e804" }
+func (*DHCPProxySetVssReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *DHCPProxySetVssReply) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.Retval
+       return size
+}
+func (m *DHCPProxySetVssReply) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.Retval))
+       return buf.Bytes(), nil
+}
+func (m *DHCPProxySetVssReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = int32(buf.DecodeUint32())
+       return nil
+}
+
+// WantDHCP6PdReplyEvents defines message 'want_dhcp6_pd_reply_events'.
+type WantDHCP6PdReplyEvents struct {
+       EnableDisable bool   `binapi:"bool,name=enable_disable" json:"enable_disable,omitempty"`
+       PID           uint32 `binapi:"u32,name=pid" json:"pid,omitempty"`
+}
+
+func (m *WantDHCP6PdReplyEvents) Reset()               { *m = WantDHCP6PdReplyEvents{} }
+func (*WantDHCP6PdReplyEvents) GetMessageName() string { return "want_dhcp6_pd_reply_events" }
+func (*WantDHCP6PdReplyEvents) GetCrcString() string   { return "c5e2af94" }
+func (*WantDHCP6PdReplyEvents) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *WantDHCP6PdReplyEvents) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 1 // m.EnableDisable
+       size += 4 // m.PID
+       return size
+}
+func (m *WantDHCP6PdReplyEvents) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeBool(m.EnableDisable)
+       buf.EncodeUint32(uint32(m.PID))
+       return buf.Bytes(), nil
+}
+func (m *WantDHCP6PdReplyEvents) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.EnableDisable = buf.DecodeBool()
+       m.PID = buf.DecodeUint32()
+       return nil
+}
+
+// WantDHCP6PdReplyEventsReply defines message 'want_dhcp6_pd_reply_events_reply'.
+type WantDHCP6PdReplyEventsReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *WantDHCP6PdReplyEventsReply) Reset() { *m = WantDHCP6PdReplyEventsReply{} }
+func (*WantDHCP6PdReplyEventsReply) GetMessageName() string {
+       return "want_dhcp6_pd_reply_events_reply"
+}
+func (*WantDHCP6PdReplyEventsReply) GetCrcString() string { return "e8d4e804" }
+func (*WantDHCP6PdReplyEventsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *WantDHCP6PdReplyEventsReply) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.Retval
+       return size
+}
+func (m *WantDHCP6PdReplyEventsReply) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.Retval))
+       return buf.Bytes(), nil
+}
+func (m *WantDHCP6PdReplyEventsReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = int32(buf.DecodeUint32())
+       return nil
+}
+
+// WantDHCP6ReplyEvents defines message 'want_dhcp6_reply_events'.
+type WantDHCP6ReplyEvents struct {
+       EnableDisable uint8  `binapi:"u8,name=enable_disable" json:"enable_disable,omitempty"`
+       PID           uint32 `binapi:"u32,name=pid" json:"pid,omitempty"`
+}
+
+func (m *WantDHCP6ReplyEvents) Reset()               { *m = WantDHCP6ReplyEvents{} }
+func (*WantDHCP6ReplyEvents) GetMessageName() string { return "want_dhcp6_reply_events" }
+func (*WantDHCP6ReplyEvents) GetCrcString() string   { return "05b454b5" }
+func (*WantDHCP6ReplyEvents) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *WantDHCP6ReplyEvents) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 1 // m.EnableDisable
+       size += 4 // m.PID
+       return size
+}
+func (m *WantDHCP6ReplyEvents) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint8(uint8(m.EnableDisable))
+       buf.EncodeUint32(uint32(m.PID))
+       return buf.Bytes(), nil
+}
+func (m *WantDHCP6ReplyEvents) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.EnableDisable = buf.DecodeUint8()
+       m.PID = buf.DecodeUint32()
+       return nil
+}
+
+// WantDHCP6ReplyEventsReply defines message 'want_dhcp6_reply_events_reply'.
+type WantDHCP6ReplyEventsReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *WantDHCP6ReplyEventsReply) Reset()               { *m = WantDHCP6ReplyEventsReply{} }
+func (*WantDHCP6ReplyEventsReply) GetMessageName() string { return "want_dhcp6_reply_events_reply" }
+func (*WantDHCP6ReplyEventsReply) GetCrcString() string   { return "e8d4e804" }
+func (*WantDHCP6ReplyEventsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *WantDHCP6ReplyEventsReply) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.Retval
+       return size
+}
+func (m *WantDHCP6ReplyEventsReply) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.Retval))
+       return buf.Bytes(), nil
+}
+func (m *WantDHCP6ReplyEventsReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = int32(buf.DecodeUint32())
+       return nil
+}
+
+func init() { file_dhcp_binapi_init() }
+func file_dhcp_binapi_init() {
+       api.RegisterMessage((*DHCP6ClientsEnableDisable)(nil), "dhcp6_clients_enable_disable_b3e225d2")
+       api.RegisterMessage((*DHCP6ClientsEnableDisableReply)(nil), "dhcp6_clients_enable_disable_reply_e8d4e804")
+       api.RegisterMessage((*DHCP6DuidLlSet)(nil), "dhcp6_duid_ll_set_0f6ca323")
+       api.RegisterMessage((*DHCP6DuidLlSetReply)(nil), "dhcp6_duid_ll_set_reply_e8d4e804")
+       api.RegisterMessage((*DHCP6PdReplyEvent)(nil), "dhcp6_pd_reply_event_cb3e462b")
+       api.RegisterMessage((*DHCP6PdSendClientMessage)(nil), "dhcp6_pd_send_client_message_064badb8")
+       api.RegisterMessage((*DHCP6PdSendClientMessageReply)(nil), "dhcp6_pd_send_client_message_reply_e8d4e804")
+       api.RegisterMessage((*DHCP6ReplyEvent)(nil), "dhcp6_reply_event_9f3af9e5")
+       api.RegisterMessage((*DHCP6SendClientMessage)(nil), "dhcp6_send_client_message_f6f14ef0")
+       api.RegisterMessage((*DHCP6SendClientMessageReply)(nil), "dhcp6_send_client_message_reply_e8d4e804")
+       api.RegisterMessage((*DHCPClientConfig)(nil), "dhcp_client_config_959b80a3")
+       api.RegisterMessage((*DHCPClientConfigReply)(nil), "dhcp_client_config_reply_e8d4e804")
+       api.RegisterMessage((*DHCPClientDetails)(nil), "dhcp_client_details_acd82f5a")
+       api.RegisterMessage((*DHCPClientDump)(nil), "dhcp_client_dump_51077d14")
+       api.RegisterMessage((*DHCPComplEvent)(nil), "dhcp_compl_event_e908fd1d")
+       api.RegisterMessage((*DHCPPluginControlPing)(nil), "dhcp_plugin_control_ping_51077d14")
+       api.RegisterMessage((*DHCPPluginControlPingReply)(nil), "dhcp_plugin_control_ping_reply_f6b0b8ca")
+       api.RegisterMessage((*DHCPPluginGetVersion)(nil), "dhcp_plugin_get_version_51077d14")
+       api.RegisterMessage((*DHCPPluginGetVersionReply)(nil), "dhcp_plugin_get_version_reply_9b32cf86")
+       api.RegisterMessage((*DHCPProxyConfig)(nil), "dhcp_proxy_config_6767230e")
+       api.RegisterMessage((*DHCPProxyConfigReply)(nil), "dhcp_proxy_config_reply_e8d4e804")
+       api.RegisterMessage((*DHCPProxyDetails)(nil), "dhcp_proxy_details_ce16f044")
+       api.RegisterMessage((*DHCPProxyDump)(nil), "dhcp_proxy_dump_5c5b063f")
+       api.RegisterMessage((*DHCPProxySetVss)(nil), "dhcp_proxy_set_vss_50537301")
+       api.RegisterMessage((*DHCPProxySetVssReply)(nil), "dhcp_proxy_set_vss_reply_e8d4e804")
+       api.RegisterMessage((*WantDHCP6PdReplyEvents)(nil), "want_dhcp6_pd_reply_events_c5e2af94")
+       api.RegisterMessage((*WantDHCP6PdReplyEventsReply)(nil), "want_dhcp6_pd_reply_events_reply_e8d4e804")
+       api.RegisterMessage((*WantDHCP6ReplyEvents)(nil), "want_dhcp6_reply_events_05b454b5")
+       api.RegisterMessage((*WantDHCP6ReplyEventsReply)(nil), "want_dhcp6_reply_events_reply_e8d4e804")
+}
+
+// Messages returns list of all messages in this module.
+func AllMessages() []api.Message {
+       return []api.Message{
+               (*DHCP6ClientsEnableDisable)(nil),
+               (*DHCP6ClientsEnableDisableReply)(nil),
+               (*DHCP6DuidLlSet)(nil),
+               (*DHCP6DuidLlSetReply)(nil),
+               (*DHCP6PdReplyEvent)(nil),
+               (*DHCP6PdSendClientMessage)(nil),
+               (*DHCP6PdSendClientMessageReply)(nil),
+               (*DHCP6ReplyEvent)(nil),
+               (*DHCP6SendClientMessage)(nil),
+               (*DHCP6SendClientMessageReply)(nil),
+               (*DHCPClientConfig)(nil),
+               (*DHCPClientConfigReply)(nil),
+               (*DHCPClientDetails)(nil),
+               (*DHCPClientDump)(nil),
+               (*DHCPComplEvent)(nil),
+               (*DHCPPluginControlPing)(nil),
+               (*DHCPPluginControlPingReply)(nil),
+               (*DHCPPluginGetVersion)(nil),
+               (*DHCPPluginGetVersionReply)(nil),
+               (*DHCPProxyConfig)(nil),
+               (*DHCPProxyConfigReply)(nil),
+               (*DHCPProxyDetails)(nil),
+               (*DHCPProxyDump)(nil),
+               (*DHCPProxySetVss)(nil),
+               (*DHCPProxySetVssReply)(nil),
+               (*WantDHCP6PdReplyEvents)(nil),
+               (*WantDHCP6PdReplyEventsReply)(nil),
+               (*WantDHCP6ReplyEvents)(nil),
+               (*WantDHCP6ReplyEventsReply)(nil),
+       }
+}