Fix binapigen decoding and minor improvements
[govpp.git] / internal / testbinapi / binapi2001 / acl / acl.ba.go
index 7253552..091f63a 100644 (file)
@@ -1,53 +1,41 @@
 // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
 // versions:
 //  binapi-generator: v0.4.0-dev
-//  VPP:              20.01-45~g7a071e370~b63
-// source: /usr/share/vpp/api/plugins/acl.api.json
-
-/*
-Package acl contains generated code for VPP binary API defined by acl.api (version 1.0.1).
-
-It consists of:
-        38 messages
-         2 types
-*/
+//  VPP:              20.01
+// source: .vppapi/plugins/acl.api.json
+
+// Package acl contains generated bindings for API file acl.api.
+//
+// Contents:
+//   2 structs
+//  38 messages
+//
 package acl
 
 import (
-       "bytes"
-       "context"
-       "encoding/binary"
-       "io"
-       "math"
-       "strconv"
-
        api "git.fd.io/govpp.git/api"
        codec "git.fd.io/govpp.git/codec"
-       struc "github.com/lunixbochs/struc"
 )
 
 // 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 // please upgrade the GoVPP api package
+const _ = api.GoVppAPIPackageIsVersion2
 
 const (
-       // ModuleName is the name of this module.
-       ModuleName = "acl"
-       // APIVersion is the API version of this module.
+       APIFile    = "acl"
        APIVersion = "1.0.1"
-       // VersionCrc is the CRC of this module.
        VersionCrc = 0x11c5c1e5
 )
 
-// ACLRule represents VPP binary API type 'acl_rule'.
+// ACLRule defines type 'acl_rule'.
 type ACLRule struct {
        IsPermit               uint8  `binapi:"u8,name=is_permit" json:"is_permit,omitempty"`
        IsIPv6                 uint8  `binapi:"u8,name=is_ipv6" json:"is_ipv6,omitempty"`
-       SrcIPAddr              []byte `binapi:"u8[16],name=src_ip_addr" json:"src_ip_addr,omitempty" struc:"[16]byte"`
+       SrcIPAddr              []byte `binapi:"u8[16],name=src_ip_addr" json:"src_ip_addr,omitempty"`
        SrcIPPrefixLen         uint8  `binapi:"u8,name=src_ip_prefix_len" json:"src_ip_prefix_len,omitempty"`
-       DstIPAddr              []byte `binapi:"u8[16],name=dst_ip_addr" json:"dst_ip_addr,omitempty" struc:"[16]byte"`
+       DstIPAddr              []byte `binapi:"u8[16],name=dst_ip_addr" json:"dst_ip_addr,omitempty"`
        DstIPPrefixLen         uint8  `binapi:"u8,name=dst_ip_prefix_len" json:"dst_ip_prefix_len,omitempty"`
        Proto                  uint8  `binapi:"u8,name=proto" json:"proto,omitempty"`
        SrcportOrIcmptypeFirst uint16 `binapi:"u16,name=srcport_or_icmptype_first" json:"srcport_or_icmptype_first,omitempty"`
@@ -58,644 +46,353 @@ type ACLRule struct {
        TCPFlagsValue          uint8  `binapi:"u8,name=tcp_flags_value" json:"tcp_flags_value,omitempty"`
 }
 
-func (*ACLRule) GetTypeName() string { return "acl_rule" }
-
-// MacipACLRule represents VPP binary API type 'macip_acl_rule'.
+// MacipACLRule defines type 'macip_acl_rule'.
 type MacipACLRule struct {
        IsPermit       uint8  `binapi:"u8,name=is_permit" json:"is_permit,omitempty"`
        IsIPv6         uint8  `binapi:"u8,name=is_ipv6" json:"is_ipv6,omitempty"`
-       SrcMac         []byte `binapi:"u8[6],name=src_mac" json:"src_mac,omitempty" struc:"[6]byte"`
-       SrcMacMask     []byte `binapi:"u8[6],name=src_mac_mask" json:"src_mac_mask,omitempty" struc:"[6]byte"`
-       SrcIPAddr      []byte `binapi:"u8[16],name=src_ip_addr" json:"src_ip_addr,omitempty" struc:"[16]byte"`
+       SrcMac         []byte `binapi:"u8[6],name=src_mac" json:"src_mac,omitempty"`
+       SrcMacMask     []byte `binapi:"u8[6],name=src_mac_mask" json:"src_mac_mask,omitempty"`
+       SrcIPAddr      []byte `binapi:"u8[16],name=src_ip_addr" json:"src_ip_addr,omitempty"`
        SrcIPPrefixLen uint8  `binapi:"u8,name=src_ip_prefix_len" json:"src_ip_prefix_len,omitempty"`
 }
 
-func (*MacipACLRule) GetTypeName() string { return "macip_acl_rule" }
-
-// ACLAddReplace represents VPP binary API message 'acl_add_replace'.
+// ACLAddReplace defines message 'acl_add_replace'.
 type ACLAddReplace struct {
        ACLIndex uint32    `binapi:"u32,name=acl_index" json:"acl_index,omitempty"`
-       Tag      []byte    `binapi:"u8[64],name=tag" json:"tag,omitempty" struc:"[64]byte"`
-       Count    uint32    `binapi:"u32,name=count" json:"count,omitempty" struc:"sizeof=R"`
+       Tag      []byte    `binapi:"u8[64],name=tag" json:"tag,omitempty"`
+       Count    uint32    `binapi:"u32,name=count" json:"-"`
        R        []ACLRule `binapi:"acl_rule[count],name=r" json:"r,omitempty"`
 }
 
-func (m *ACLAddReplace) Reset()                        { *m = ACLAddReplace{} }
-func (*ACLAddReplace) GetMessageName() string          { return "acl_add_replace" }
-func (*ACLAddReplace) GetCrcString() string            { return "13bc8539" }
-func (*ACLAddReplace) GetMessageType() api.MessageType { return api.RequestMessage }
+func (m *ACLAddReplace) Reset()               { *m = ACLAddReplace{} }
+func (*ACLAddReplace) GetMessageName() string { return "acl_add_replace" }
+func (*ACLAddReplace) GetCrcString() string   { return "13bc8539" }
+func (*ACLAddReplace) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 
-func (m *ACLAddReplace) Size() int {
+func (m *ACLAddReplace) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.ACLIndex
-       size += 4
-       // field[1] m.Tag
-       size += 64
-       // field[1] m.Count
-       size += 4
-       // field[1] m.R
+       size += 4      // m.ACLIndex
+       size += 1 * 64 // m.Tag
+       size += 4      // m.Count
        for j1 := 0; j1 < len(m.R); j1++ {
                var s1 ACLRule
                _ = s1
                if j1 < len(m.R) {
                        s1 = m.R[j1]
                }
-               // field[2] s1.IsPermit
-               size += 1
-               // field[2] s1.IsIPv6
-               size += 1
-               // field[2] s1.SrcIPAddr
-               size += 16
-               // field[2] s1.SrcIPPrefixLen
-               size += 1
-               // field[2] s1.DstIPAddr
-               size += 16
-               // field[2] s1.DstIPPrefixLen
-               size += 1
-               // field[2] s1.Proto
-               size += 1
-               // field[2] s1.SrcportOrIcmptypeFirst
-               size += 2
-               // field[2] s1.SrcportOrIcmptypeLast
-               size += 2
-               // field[2] s1.DstportOrIcmpcodeFirst
-               size += 2
-               // field[2] s1.DstportOrIcmpcodeLast
-               size += 2
-               // field[2] s1.TCPFlagsMask
-               size += 1
-               // field[2] s1.TCPFlagsValue
-               size += 1
+               size += 1      // s1.IsPermit
+               size += 1      // s1.IsIPv6
+               size += 1 * 16 // s1.SrcIPAddr
+               size += 1      // s1.SrcIPPrefixLen
+               size += 1 * 16 // s1.DstIPAddr
+               size += 1      // s1.DstIPPrefixLen
+               size += 1      // s1.Proto
+               size += 2      // s1.SrcportOrIcmptypeFirst
+               size += 2      // s1.SrcportOrIcmptypeLast
+               size += 2      // s1.DstportOrIcmpcodeFirst
+               size += 2      // s1.DstportOrIcmpcodeLast
+               size += 1      // s1.TCPFlagsMask
+               size += 1      // s1.TCPFlagsValue
        }
        return size
 }
 func (m *ACLAddReplace) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.ACLIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.ACLIndex))
-       pos += 4
-       // field[1] m.Tag
-       for i := 0; i < 64; i++ {
-               var x uint8
-               if i < len(m.Tag) {
-                       x = uint8(m.Tag[i])
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.ACLIndex)
+       buf.EncodeBytes(m.Tag, 64)
+       buf.EncodeUint32(uint32(len(m.R)))
+       for j0 := 0; j0 < len(m.R); j0++ {
+               var v0 ACLRule // R
+               if j0 < len(m.R) {
+                       v0 = m.R[j0]
                }
-               buf[pos] = uint8(x)
-               pos += 1
-       }
-       // field[1] m.Count
-       o.PutUint32(buf[pos:pos+4], uint32(len(m.R)))
-       pos += 4
-       // field[1] m.R
-       for j1 := 0; j1 < len(m.R); j1++ {
-               var v1 ACLRule
-               if j1 < len(m.R) {
-                       v1 = m.R[j1]
-               }
-               // field[2] v1.IsPermit
-               buf[pos] = uint8(v1.IsPermit)
-               pos += 1
-               // field[2] v1.IsIPv6
-               buf[pos] = uint8(v1.IsIPv6)
-               pos += 1
-               // field[2] v1.SrcIPAddr
-               for i := 0; i < 16; i++ {
-                       var x uint8
-                       if i < len(v1.SrcIPAddr) {
-                               x = uint8(v1.SrcIPAddr[i])
-                       }
-                       buf[pos] = uint8(x)
-                       pos += 1
-               }
-               // field[2] v1.SrcIPPrefixLen
-               buf[pos] = uint8(v1.SrcIPPrefixLen)
-               pos += 1
-               // field[2] v1.DstIPAddr
-               for i := 0; i < 16; i++ {
-                       var x uint8
-                       if i < len(v1.DstIPAddr) {
-                               x = uint8(v1.DstIPAddr[i])
-                       }
-                       buf[pos] = uint8(x)
-                       pos += 1
-               }
-               // field[2] v1.DstIPPrefixLen
-               buf[pos] = uint8(v1.DstIPPrefixLen)
-               pos += 1
-               // field[2] v1.Proto
-               buf[pos] = uint8(v1.Proto)
-               pos += 1
-               // field[2] v1.SrcportOrIcmptypeFirst
-               o.PutUint16(buf[pos:pos+2], uint16(v1.SrcportOrIcmptypeFirst))
-               pos += 2
-               // field[2] v1.SrcportOrIcmptypeLast
-               o.PutUint16(buf[pos:pos+2], uint16(v1.SrcportOrIcmptypeLast))
-               pos += 2
-               // field[2] v1.DstportOrIcmpcodeFirst
-               o.PutUint16(buf[pos:pos+2], uint16(v1.DstportOrIcmpcodeFirst))
-               pos += 2
-               // field[2] v1.DstportOrIcmpcodeLast
-               o.PutUint16(buf[pos:pos+2], uint16(v1.DstportOrIcmpcodeLast))
-               pos += 2
-               // field[2] v1.TCPFlagsMask
-               buf[pos] = uint8(v1.TCPFlagsMask)
-               pos += 1
-               // field[2] v1.TCPFlagsValue
-               buf[pos] = uint8(v1.TCPFlagsValue)
-               pos += 1
-       }
-       return buf, nil
-}
-func (m *ACLAddReplace) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.ACLIndex
-       m.ACLIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.Tag
-       m.Tag = make([]uint8, 64)
-       for i := 0; i < len(m.Tag); i++ {
-               m.Tag[i] = uint8(tmp[pos])
-               pos += 1
-       }
-       // field[1] m.Count
-       m.Count = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.R
-       m.R = make([]ACLRule, int(m.Count))
-       for j1 := 0; j1 < int(m.Count); j1++ {
-               // field[2] m.R[j1].IsPermit
-               m.R[j1].IsPermit = uint8(tmp[pos])
-               pos += 1
-               // field[2] m.R[j1].IsIPv6
-               m.R[j1].IsIPv6 = uint8(tmp[pos])
-               pos += 1
-               // field[2] m.R[j1].SrcIPAddr
-               m.R[j1].SrcIPAddr = make([]uint8, 16)
-               for i := 0; i < len(m.R[j1].SrcIPAddr); i++ {
-                       m.R[j1].SrcIPAddr[i] = uint8(tmp[pos])
-                       pos += 1
-               }
-               // field[2] m.R[j1].SrcIPPrefixLen
-               m.R[j1].SrcIPPrefixLen = uint8(tmp[pos])
-               pos += 1
-               // field[2] m.R[j1].DstIPAddr
-               m.R[j1].DstIPAddr = make([]uint8, 16)
-               for i := 0; i < len(m.R[j1].DstIPAddr); i++ {
-                       m.R[j1].DstIPAddr[i] = uint8(tmp[pos])
-                       pos += 1
-               }
-               // field[2] m.R[j1].DstIPPrefixLen
-               m.R[j1].DstIPPrefixLen = uint8(tmp[pos])
-               pos += 1
-               // field[2] m.R[j1].Proto
-               m.R[j1].Proto = uint8(tmp[pos])
-               pos += 1
-               // field[2] m.R[j1].SrcportOrIcmptypeFirst
-               m.R[j1].SrcportOrIcmptypeFirst = uint16(o.Uint16(tmp[pos : pos+2]))
-               pos += 2
-               // field[2] m.R[j1].SrcportOrIcmptypeLast
-               m.R[j1].SrcportOrIcmptypeLast = uint16(o.Uint16(tmp[pos : pos+2]))
-               pos += 2
-               // field[2] m.R[j1].DstportOrIcmpcodeFirst
-               m.R[j1].DstportOrIcmpcodeFirst = uint16(o.Uint16(tmp[pos : pos+2]))
-               pos += 2
-               // field[2] m.R[j1].DstportOrIcmpcodeLast
-               m.R[j1].DstportOrIcmpcodeLast = uint16(o.Uint16(tmp[pos : pos+2]))
-               pos += 2
-               // field[2] m.R[j1].TCPFlagsMask
-               m.R[j1].TCPFlagsMask = uint8(tmp[pos])
-               pos += 1
-               // field[2] m.R[j1].TCPFlagsValue
-               m.R[j1].TCPFlagsValue = uint8(tmp[pos])
-               pos += 1
+               buf.EncodeUint8(v0.IsPermit)
+               buf.EncodeUint8(v0.IsIPv6)
+               buf.EncodeBytes(v0.SrcIPAddr, 16)
+               buf.EncodeUint8(v0.SrcIPPrefixLen)
+               buf.EncodeBytes(v0.DstIPAddr, 16)
+               buf.EncodeUint8(v0.DstIPPrefixLen)
+               buf.EncodeUint8(v0.Proto)
+               buf.EncodeUint16(v0.SrcportOrIcmptypeFirst)
+               buf.EncodeUint16(v0.SrcportOrIcmptypeLast)
+               buf.EncodeUint16(v0.DstportOrIcmpcodeFirst)
+               buf.EncodeUint16(v0.DstportOrIcmpcodeLast)
+               buf.EncodeUint8(v0.TCPFlagsMask)
+               buf.EncodeUint8(v0.TCPFlagsValue)
+       }
+       return buf.Bytes(), nil
+}
+func (m *ACLAddReplace) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.ACLIndex = buf.DecodeUint32()
+       m.Tag = make([]byte, 64)
+       copy(m.Tag, buf.DecodeBytes(len(m.Tag)))
+       m.Count = buf.DecodeUint32()
+       m.R = make([]ACLRule, m.Count)
+       for j0 := 0; j0 < len(m.R); j0++ {
+               m.R[j0].IsPermit = buf.DecodeUint8()
+               m.R[j0].IsIPv6 = buf.DecodeUint8()
+               m.R[j0].SrcIPAddr = make([]byte, 16)
+               copy(m.R[j0].SrcIPAddr, buf.DecodeBytes(len(m.R[j0].SrcIPAddr)))
+               m.R[j0].SrcIPPrefixLen = buf.DecodeUint8()
+               m.R[j0].DstIPAddr = make([]byte, 16)
+               copy(m.R[j0].DstIPAddr, buf.DecodeBytes(len(m.R[j0].DstIPAddr)))
+               m.R[j0].DstIPPrefixLen = buf.DecodeUint8()
+               m.R[j0].Proto = buf.DecodeUint8()
+               m.R[j0].SrcportOrIcmptypeFirst = buf.DecodeUint16()
+               m.R[j0].SrcportOrIcmptypeLast = buf.DecodeUint16()
+               m.R[j0].DstportOrIcmpcodeFirst = buf.DecodeUint16()
+               m.R[j0].DstportOrIcmpcodeLast = buf.DecodeUint16()
+               m.R[j0].TCPFlagsMask = buf.DecodeUint8()
+               m.R[j0].TCPFlagsValue = buf.DecodeUint8()
        }
        return nil
 }
 
-// ACLAddReplaceReply represents VPP binary API message 'acl_add_replace_reply'.
+// ACLAddReplaceReply defines message 'acl_add_replace_reply'.
 type ACLAddReplaceReply struct {
        ACLIndex uint32 `binapi:"u32,name=acl_index" json:"acl_index,omitempty"`
        Retval   int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
 
-func (m *ACLAddReplaceReply) Reset()                        { *m = ACLAddReplaceReply{} }
-func (*ACLAddReplaceReply) GetMessageName() string          { return "acl_add_replace_reply" }
-func (*ACLAddReplaceReply) GetCrcString() string            { return "ac407b0c" }
-func (*ACLAddReplaceReply) GetMessageType() api.MessageType { return api.ReplyMessage }
+func (m *ACLAddReplaceReply) Reset()               { *m = ACLAddReplaceReply{} }
+func (*ACLAddReplaceReply) GetMessageName() string { return "acl_add_replace_reply" }
+func (*ACLAddReplaceReply) GetCrcString() string   { return "ac407b0c" }
+func (*ACLAddReplaceReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 
-func (m *ACLAddReplaceReply) Size() int {
+func (m *ACLAddReplaceReply) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.ACLIndex
-       size += 4
-       // field[1] m.Retval
-       size += 4
+       size += 4 // m.ACLIndex
+       size += 4 // m.Retval
        return size
 }
 func (m *ACLAddReplaceReply) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.ACLIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.ACLIndex))
-       pos += 4
-       // field[1] m.Retval
-       o.PutUint32(buf[pos:pos+4], uint32(m.Retval))
-       pos += 4
-       return buf, nil
-}
-func (m *ACLAddReplaceReply) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.ACLIndex
-       m.ACLIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.Retval
-       m.Retval = int32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.ACLIndex)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *ACLAddReplaceReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.ACLIndex = buf.DecodeUint32()
+       m.Retval = buf.DecodeInt32()
        return nil
 }
 
-// ACLDel represents VPP binary API message 'acl_del'.
+// ACLDel defines message 'acl_del'.
 type ACLDel struct {
        ACLIndex uint32 `binapi:"u32,name=acl_index" json:"acl_index,omitempty"`
 }
 
-func (m *ACLDel) Reset()                        { *m = ACLDel{} }
-func (*ACLDel) GetMessageName() string          { return "acl_del" }
-func (*ACLDel) GetCrcString() string            { return "ef34fea4" }
-func (*ACLDel) GetMessageType() api.MessageType { return api.RequestMessage }
+func (m *ACLDel) Reset()               { *m = ACLDel{} }
+func (*ACLDel) GetMessageName() string { return "acl_del" }
+func (*ACLDel) GetCrcString() string   { return "ef34fea4" }
+func (*ACLDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 
-func (m *ACLDel) Size() int {
+func (m *ACLDel) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.ACLIndex
-       size += 4
+       size += 4 // m.ACLIndex
        return size
 }
 func (m *ACLDel) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.ACLIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.ACLIndex))
-       pos += 4
-       return buf, nil
-}
-func (m *ACLDel) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.ACLIndex
-       m.ACLIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.ACLIndex)
+       return buf.Bytes(), nil
+}
+func (m *ACLDel) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.ACLIndex = buf.DecodeUint32()
        return nil
 }
 
-// ACLDelReply represents VPP binary API message 'acl_del_reply'.
+// ACLDelReply defines message 'acl_del_reply'.
 type ACLDelReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
 
-func (m *ACLDelReply) Reset()                        { *m = ACLDelReply{} }
-func (*ACLDelReply) GetMessageName() string          { return "acl_del_reply" }
-func (*ACLDelReply) GetCrcString() string            { return "e8d4e804" }
-func (*ACLDelReply) GetMessageType() api.MessageType { return api.ReplyMessage }
+func (m *ACLDelReply) Reset()               { *m = ACLDelReply{} }
+func (*ACLDelReply) GetMessageName() string { return "acl_del_reply" }
+func (*ACLDelReply) GetCrcString() string   { return "e8d4e804" }
+func (*ACLDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 
-func (m *ACLDelReply) Size() int {
+func (m *ACLDelReply) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.Retval
-       size += 4
+       size += 4 // m.Retval
        return size
 }
 func (m *ACLDelReply) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.Retval
-       o.PutUint32(buf[pos:pos+4], uint32(m.Retval))
-       pos += 4
-       return buf, nil
-}
-func (m *ACLDelReply) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.Retval
-       m.Retval = int32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *ACLDelReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
        return nil
 }
 
-// ACLDetails represents VPP binary API message 'acl_details'.
+// ACLDetails defines message 'acl_details'.
 type ACLDetails struct {
        ACLIndex uint32    `binapi:"u32,name=acl_index" json:"acl_index,omitempty"`
-       Tag      []byte    `binapi:"u8[64],name=tag" json:"tag,omitempty" struc:"[64]byte"`
-       Count    uint32    `binapi:"u32,name=count" json:"count,omitempty" struc:"sizeof=R"`
+       Tag      []byte    `binapi:"u8[64],name=tag" json:"tag,omitempty"`
+       Count    uint32    `binapi:"u32,name=count" json:"-"`
        R        []ACLRule `binapi:"acl_rule[count],name=r" json:"r,omitempty"`
 }
 
-func (m *ACLDetails) Reset()                        { *m = ACLDetails{} }
-func (*ACLDetails) GetMessageName() string          { return "acl_details" }
-func (*ACLDetails) GetCrcString() string            { return "f89d7a88" }
-func (*ACLDetails) GetMessageType() api.MessageType { return api.ReplyMessage }
+func (m *ACLDetails) Reset()               { *m = ACLDetails{} }
+func (*ACLDetails) GetMessageName() string { return "acl_details" }
+func (*ACLDetails) GetCrcString() string   { return "f89d7a88" }
+func (*ACLDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 
-func (m *ACLDetails) Size() int {
+func (m *ACLDetails) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.ACLIndex
-       size += 4
-       // field[1] m.Tag
-       size += 64
-       // field[1] m.Count
-       size += 4
-       // field[1] m.R
+       size += 4      // m.ACLIndex
+       size += 1 * 64 // m.Tag
+       size += 4      // m.Count
        for j1 := 0; j1 < len(m.R); j1++ {
                var s1 ACLRule
                _ = s1
                if j1 < len(m.R) {
                        s1 = m.R[j1]
                }
-               // field[2] s1.IsPermit
-               size += 1
-               // field[2] s1.IsIPv6
-               size += 1
-               // field[2] s1.SrcIPAddr
-               size += 16
-               // field[2] s1.SrcIPPrefixLen
-               size += 1
-               // field[2] s1.DstIPAddr
-               size += 16
-               // field[2] s1.DstIPPrefixLen
-               size += 1
-               // field[2] s1.Proto
-               size += 1
-               // field[2] s1.SrcportOrIcmptypeFirst
-               size += 2
-               // field[2] s1.SrcportOrIcmptypeLast
-               size += 2
-               // field[2] s1.DstportOrIcmpcodeFirst
-               size += 2
-               // field[2] s1.DstportOrIcmpcodeLast
-               size += 2
-               // field[2] s1.TCPFlagsMask
-               size += 1
-               // field[2] s1.TCPFlagsValue
-               size += 1
+               size += 1      // s1.IsPermit
+               size += 1      // s1.IsIPv6
+               size += 1 * 16 // s1.SrcIPAddr
+               size += 1      // s1.SrcIPPrefixLen
+               size += 1 * 16 // s1.DstIPAddr
+               size += 1      // s1.DstIPPrefixLen
+               size += 1      // s1.Proto
+               size += 2      // s1.SrcportOrIcmptypeFirst
+               size += 2      // s1.SrcportOrIcmptypeLast
+               size += 2      // s1.DstportOrIcmpcodeFirst
+               size += 2      // s1.DstportOrIcmpcodeLast
+               size += 1      // s1.TCPFlagsMask
+               size += 1      // s1.TCPFlagsValue
        }
        return size
 }
 func (m *ACLDetails) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.ACLIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.ACLIndex))
-       pos += 4
-       // field[1] m.Tag
-       for i := 0; i < 64; i++ {
-               var x uint8
-               if i < len(m.Tag) {
-                       x = uint8(m.Tag[i])
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.ACLIndex)
+       buf.EncodeBytes(m.Tag, 64)
+       buf.EncodeUint32(uint32(len(m.R)))
+       for j0 := 0; j0 < len(m.R); j0++ {
+               var v0 ACLRule // R
+               if j0 < len(m.R) {
+                       v0 = m.R[j0]
                }
-               buf[pos] = uint8(x)
-               pos += 1
-       }
-       // field[1] m.Count
-       o.PutUint32(buf[pos:pos+4], uint32(len(m.R)))
-       pos += 4
-       // field[1] m.R
-       for j1 := 0; j1 < len(m.R); j1++ {
-               var v1 ACLRule
-               if j1 < len(m.R) {
-                       v1 = m.R[j1]
-               }
-               // field[2] v1.IsPermit
-               buf[pos] = uint8(v1.IsPermit)
-               pos += 1
-               // field[2] v1.IsIPv6
-               buf[pos] = uint8(v1.IsIPv6)
-               pos += 1
-               // field[2] v1.SrcIPAddr
-               for i := 0; i < 16; i++ {
-                       var x uint8
-                       if i < len(v1.SrcIPAddr) {
-                               x = uint8(v1.SrcIPAddr[i])
-                       }
-                       buf[pos] = uint8(x)
-                       pos += 1
-               }
-               // field[2] v1.SrcIPPrefixLen
-               buf[pos] = uint8(v1.SrcIPPrefixLen)
-               pos += 1
-               // field[2] v1.DstIPAddr
-               for i := 0; i < 16; i++ {
-                       var x uint8
-                       if i < len(v1.DstIPAddr) {
-                               x = uint8(v1.DstIPAddr[i])
-                       }
-                       buf[pos] = uint8(x)
-                       pos += 1
-               }
-               // field[2] v1.DstIPPrefixLen
-               buf[pos] = uint8(v1.DstIPPrefixLen)
-               pos += 1
-               // field[2] v1.Proto
-               buf[pos] = uint8(v1.Proto)
-               pos += 1
-               // field[2] v1.SrcportOrIcmptypeFirst
-               o.PutUint16(buf[pos:pos+2], uint16(v1.SrcportOrIcmptypeFirst))
-               pos += 2
-               // field[2] v1.SrcportOrIcmptypeLast
-               o.PutUint16(buf[pos:pos+2], uint16(v1.SrcportOrIcmptypeLast))
-               pos += 2
-               // field[2] v1.DstportOrIcmpcodeFirst
-               o.PutUint16(buf[pos:pos+2], uint16(v1.DstportOrIcmpcodeFirst))
-               pos += 2
-               // field[2] v1.DstportOrIcmpcodeLast
-               o.PutUint16(buf[pos:pos+2], uint16(v1.DstportOrIcmpcodeLast))
-               pos += 2
-               // field[2] v1.TCPFlagsMask
-               buf[pos] = uint8(v1.TCPFlagsMask)
-               pos += 1
-               // field[2] v1.TCPFlagsValue
-               buf[pos] = uint8(v1.TCPFlagsValue)
-               pos += 1
-       }
-       return buf, nil
-}
-func (m *ACLDetails) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.ACLIndex
-       m.ACLIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.Tag
-       m.Tag = make([]uint8, 64)
-       for i := 0; i < len(m.Tag); i++ {
-               m.Tag[i] = uint8(tmp[pos])
-               pos += 1
-       }
-       // field[1] m.Count
-       m.Count = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.R
-       m.R = make([]ACLRule, int(m.Count))
-       for j1 := 0; j1 < int(m.Count); j1++ {
-               // field[2] m.R[j1].IsPermit
-               m.R[j1].IsPermit = uint8(tmp[pos])
-               pos += 1
-               // field[2] m.R[j1].IsIPv6
-               m.R[j1].IsIPv6 = uint8(tmp[pos])
-               pos += 1
-               // field[2] m.R[j1].SrcIPAddr
-               m.R[j1].SrcIPAddr = make([]uint8, 16)
-               for i := 0; i < len(m.R[j1].SrcIPAddr); i++ {
-                       m.R[j1].SrcIPAddr[i] = uint8(tmp[pos])
-                       pos += 1
-               }
-               // field[2] m.R[j1].SrcIPPrefixLen
-               m.R[j1].SrcIPPrefixLen = uint8(tmp[pos])
-               pos += 1
-               // field[2] m.R[j1].DstIPAddr
-               m.R[j1].DstIPAddr = make([]uint8, 16)
-               for i := 0; i < len(m.R[j1].DstIPAddr); i++ {
-                       m.R[j1].DstIPAddr[i] = uint8(tmp[pos])
-                       pos += 1
-               }
-               // field[2] m.R[j1].DstIPPrefixLen
-               m.R[j1].DstIPPrefixLen = uint8(tmp[pos])
-               pos += 1
-               // field[2] m.R[j1].Proto
-               m.R[j1].Proto = uint8(tmp[pos])
-               pos += 1
-               // field[2] m.R[j1].SrcportOrIcmptypeFirst
-               m.R[j1].SrcportOrIcmptypeFirst = uint16(o.Uint16(tmp[pos : pos+2]))
-               pos += 2
-               // field[2] m.R[j1].SrcportOrIcmptypeLast
-               m.R[j1].SrcportOrIcmptypeLast = uint16(o.Uint16(tmp[pos : pos+2]))
-               pos += 2
-               // field[2] m.R[j1].DstportOrIcmpcodeFirst
-               m.R[j1].DstportOrIcmpcodeFirst = uint16(o.Uint16(tmp[pos : pos+2]))
-               pos += 2
-               // field[2] m.R[j1].DstportOrIcmpcodeLast
-               m.R[j1].DstportOrIcmpcodeLast = uint16(o.Uint16(tmp[pos : pos+2]))
-               pos += 2
-               // field[2] m.R[j1].TCPFlagsMask
-               m.R[j1].TCPFlagsMask = uint8(tmp[pos])
-               pos += 1
-               // field[2] m.R[j1].TCPFlagsValue
-               m.R[j1].TCPFlagsValue = uint8(tmp[pos])
-               pos += 1
+               buf.EncodeUint8(v0.IsPermit)
+               buf.EncodeUint8(v0.IsIPv6)
+               buf.EncodeBytes(v0.SrcIPAddr, 16)
+               buf.EncodeUint8(v0.SrcIPPrefixLen)
+               buf.EncodeBytes(v0.DstIPAddr, 16)
+               buf.EncodeUint8(v0.DstIPPrefixLen)
+               buf.EncodeUint8(v0.Proto)
+               buf.EncodeUint16(v0.SrcportOrIcmptypeFirst)
+               buf.EncodeUint16(v0.SrcportOrIcmptypeLast)
+               buf.EncodeUint16(v0.DstportOrIcmpcodeFirst)
+               buf.EncodeUint16(v0.DstportOrIcmpcodeLast)
+               buf.EncodeUint8(v0.TCPFlagsMask)
+               buf.EncodeUint8(v0.TCPFlagsValue)
+       }
+       return buf.Bytes(), nil
+}
+func (m *ACLDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.ACLIndex = buf.DecodeUint32()
+       m.Tag = make([]byte, 64)
+       copy(m.Tag, buf.DecodeBytes(len(m.Tag)))
+       m.Count = buf.DecodeUint32()
+       m.R = make([]ACLRule, m.Count)
+       for j0 := 0; j0 < len(m.R); j0++ {
+               m.R[j0].IsPermit = buf.DecodeUint8()
+               m.R[j0].IsIPv6 = buf.DecodeUint8()
+               m.R[j0].SrcIPAddr = make([]byte, 16)
+               copy(m.R[j0].SrcIPAddr, buf.DecodeBytes(len(m.R[j0].SrcIPAddr)))
+               m.R[j0].SrcIPPrefixLen = buf.DecodeUint8()
+               m.R[j0].DstIPAddr = make([]byte, 16)
+               copy(m.R[j0].DstIPAddr, buf.DecodeBytes(len(m.R[j0].DstIPAddr)))
+               m.R[j0].DstIPPrefixLen = buf.DecodeUint8()
+               m.R[j0].Proto = buf.DecodeUint8()
+               m.R[j0].SrcportOrIcmptypeFirst = buf.DecodeUint16()
+               m.R[j0].SrcportOrIcmptypeLast = buf.DecodeUint16()
+               m.R[j0].DstportOrIcmpcodeFirst = buf.DecodeUint16()
+               m.R[j0].DstportOrIcmpcodeLast = buf.DecodeUint16()
+               m.R[j0].TCPFlagsMask = buf.DecodeUint8()
+               m.R[j0].TCPFlagsValue = buf.DecodeUint8()
        }
        return nil
 }
 
-// ACLDump represents VPP binary API message 'acl_dump'.
+// ACLDump defines message 'acl_dump'.
 type ACLDump struct {
        ACLIndex uint32 `binapi:"u32,name=acl_index" json:"acl_index,omitempty"`
 }
 
-func (m *ACLDump) Reset()                        { *m = ACLDump{} }
-func (*ACLDump) GetMessageName() string          { return "acl_dump" }
-func (*ACLDump) GetCrcString() string            { return "ef34fea4" }
-func (*ACLDump) GetMessageType() api.MessageType { return api.RequestMessage }
+func (m *ACLDump) Reset()               { *m = ACLDump{} }
+func (*ACLDump) GetMessageName() string { return "acl_dump" }
+func (*ACLDump) GetCrcString() string   { return "ef34fea4" }
+func (*ACLDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 
-func (m *ACLDump) Size() int {
+func (m *ACLDump) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.ACLIndex
-       size += 4
+       size += 4 // m.ACLIndex
        return size
 }
 func (m *ACLDump) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.ACLIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.ACLIndex))
-       pos += 4
-       return buf, nil
-}
-func (m *ACLDump) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.ACLIndex
-       m.ACLIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.ACLIndex)
+       return buf.Bytes(), nil
+}
+func (m *ACLDump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.ACLIndex = buf.DecodeUint32()
        return nil
 }
 
-// ACLInterfaceAddDel represents VPP binary API message 'acl_interface_add_del'.
+// ACLInterfaceAddDel defines message 'acl_interface_add_del'.
 type ACLInterfaceAddDel struct {
        IsAdd     uint8  `binapi:"u8,name=is_add" json:"is_add,omitempty"`
        IsInput   uint8  `binapi:"u8,name=is_input" json:"is_input,omitempty"`
@@ -703,121 +400,80 @@ type ACLInterfaceAddDel struct {
        ACLIndex  uint32 `binapi:"u32,name=acl_index" json:"acl_index,omitempty"`
 }
 
-func (m *ACLInterfaceAddDel) Reset()                        { *m = ACLInterfaceAddDel{} }
-func (*ACLInterfaceAddDel) GetMessageName() string          { return "acl_interface_add_del" }
-func (*ACLInterfaceAddDel) GetCrcString() string            { return "0b2aedd1" }
-func (*ACLInterfaceAddDel) GetMessageType() api.MessageType { return api.RequestMessage }
+func (m *ACLInterfaceAddDel) Reset()               { *m = ACLInterfaceAddDel{} }
+func (*ACLInterfaceAddDel) GetMessageName() string { return "acl_interface_add_del" }
+func (*ACLInterfaceAddDel) GetCrcString() string   { return "0b2aedd1" }
+func (*ACLInterfaceAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 
-func (m *ACLInterfaceAddDel) Size() int {
+func (m *ACLInterfaceAddDel) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.IsAdd
-       size += 1
-       // field[1] m.IsInput
-       size += 1
-       // field[1] m.SwIfIndex
-       size += 4
-       // field[1] m.ACLIndex
-       size += 4
+       size += 1 // m.IsAdd
+       size += 1 // m.IsInput
+       size += 4 // m.SwIfIndex
+       size += 4 // m.ACLIndex
        return size
 }
 func (m *ACLInterfaceAddDel) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.IsAdd
-       buf[pos] = uint8(m.IsAdd)
-       pos += 1
-       // field[1] m.IsInput
-       buf[pos] = uint8(m.IsInput)
-       pos += 1
-       // field[1] m.SwIfIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.SwIfIndex))
-       pos += 4
-       // field[1] m.ACLIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.ACLIndex))
-       pos += 4
-       return buf, nil
-}
-func (m *ACLInterfaceAddDel) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.IsAdd
-       m.IsAdd = uint8(tmp[pos])
-       pos += 1
-       // field[1] m.IsInput
-       m.IsInput = uint8(tmp[pos])
-       pos += 1
-       // field[1] m.SwIfIndex
-       m.SwIfIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.ACLIndex
-       m.ACLIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(m.IsAdd)
+       buf.EncodeUint8(m.IsInput)
+       buf.EncodeUint32(m.SwIfIndex)
+       buf.EncodeUint32(m.ACLIndex)
+       return buf.Bytes(), nil
+}
+func (m *ACLInterfaceAddDel) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeUint8()
+       m.IsInput = buf.DecodeUint8()
+       m.SwIfIndex = buf.DecodeUint32()
+       m.ACLIndex = buf.DecodeUint32()
        return nil
 }
 
-// ACLInterfaceAddDelReply represents VPP binary API message 'acl_interface_add_del_reply'.
+// ACLInterfaceAddDelReply defines message 'acl_interface_add_del_reply'.
 type ACLInterfaceAddDelReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
 
-func (m *ACLInterfaceAddDelReply) Reset()                        { *m = ACLInterfaceAddDelReply{} }
-func (*ACLInterfaceAddDelReply) GetMessageName() string          { return "acl_interface_add_del_reply" }
-func (*ACLInterfaceAddDelReply) GetCrcString() string            { return "e8d4e804" }
-func (*ACLInterfaceAddDelReply) GetMessageType() api.MessageType { return api.ReplyMessage }
+func (m *ACLInterfaceAddDelReply) Reset()               { *m = ACLInterfaceAddDelReply{} }
+func (*ACLInterfaceAddDelReply) GetMessageName() string { return "acl_interface_add_del_reply" }
+func (*ACLInterfaceAddDelReply) GetCrcString() string   { return "e8d4e804" }
+func (*ACLInterfaceAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 
-func (m *ACLInterfaceAddDelReply) Size() int {
+func (m *ACLInterfaceAddDelReply) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.Retval
-       size += 4
+       size += 4 // m.Retval
        return size
 }
 func (m *ACLInterfaceAddDelReply) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.Retval
-       o.PutUint32(buf[pos:pos+4], uint32(m.Retval))
-       pos += 4
-       return buf, nil
-}
-func (m *ACLInterfaceAddDelReply) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.Retval
-       m.Retval = int32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *ACLInterfaceAddDelReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
        return nil
 }
 
-// ACLInterfaceEtypeWhitelistDetails represents VPP binary API message 'acl_interface_etype_whitelist_details'.
+// ACLInterfaceEtypeWhitelistDetails defines message 'acl_interface_etype_whitelist_details'.
 type ACLInterfaceEtypeWhitelistDetails struct {
        SwIfIndex uint32   `binapi:"u32,name=sw_if_index" json:"sw_if_index,omitempty"`
-       Count     uint8    `binapi:"u8,name=count" json:"count,omitempty" struc:"sizeof=Whitelist"`
+       Count     uint8    `binapi:"u8,name=count" json:"-"`
        NInput    uint8    `binapi:"u8,name=n_input" json:"n_input,omitempty"`
        Whitelist []uint16 `binapi:"u16[count],name=whitelist" json:"whitelist,omitempty"`
 }
@@ -826,79 +482,51 @@ func (m *ACLInterfaceEtypeWhitelistDetails) Reset() { *m = ACLInterfaceEtypeWhit
 func (*ACLInterfaceEtypeWhitelistDetails) GetMessageName() string {
        return "acl_interface_etype_whitelist_details"
 }
-func (*ACLInterfaceEtypeWhitelistDetails) GetCrcString() string            { return "6a5d4e81" }
-func (*ACLInterfaceEtypeWhitelistDetails) GetMessageType() api.MessageType { return api.ReplyMessage }
+func (*ACLInterfaceEtypeWhitelistDetails) GetCrcString() string { return "6a5d4e81" }
+func (*ACLInterfaceEtypeWhitelistDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 
-func (m *ACLInterfaceEtypeWhitelistDetails) Size() int {
+func (m *ACLInterfaceEtypeWhitelistDetails) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.SwIfIndex
-       size += 4
-       // field[1] m.Count
-       size += 1
-       // field[1] m.NInput
-       size += 1
-       // field[1] m.Whitelist
-       size += 2 * len(m.Whitelist)
+       size += 4                    // m.SwIfIndex
+       size += 1                    // m.Count
+       size += 1                    // m.NInput
+       size += 2 * len(m.Whitelist) // m.Whitelist
        return size
 }
 func (m *ACLInterfaceEtypeWhitelistDetails) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.SwIfIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.SwIfIndex))
-       pos += 4
-       // field[1] m.Count
-       buf[pos] = uint8(len(m.Whitelist))
-       pos += 1
-       // field[1] m.NInput
-       buf[pos] = uint8(m.NInput)
-       pos += 1
-       // field[1] m.Whitelist
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.SwIfIndex)
+       buf.EncodeUint8(uint8(len(m.Whitelist)))
+       buf.EncodeUint8(m.NInput)
        for i := 0; i < len(m.Whitelist); i++ {
                var x uint16
                if i < len(m.Whitelist) {
                        x = uint16(m.Whitelist[i])
                }
-               o.PutUint16(buf[pos:pos+2], uint16(x))
-               pos += 2
-       }
-       return buf, nil
-}
-func (m *ACLInterfaceEtypeWhitelistDetails) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.SwIfIndex
-       m.SwIfIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.Count
-       m.Count = uint8(tmp[pos])
-       pos += 1
-       // field[1] m.NInput
-       m.NInput = uint8(tmp[pos])
-       pos += 1
-       // field[1] m.Whitelist
+               buf.EncodeUint16(x)
+       }
+       return buf.Bytes(), nil
+}
+func (m *ACLInterfaceEtypeWhitelistDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = buf.DecodeUint32()
+       m.Count = buf.DecodeUint8()
+       m.NInput = buf.DecodeUint8()
        m.Whitelist = make([]uint16, m.Count)
        for i := 0; i < len(m.Whitelist); i++ {
-               m.Whitelist[i] = uint16(o.Uint16(tmp[pos : pos+2]))
-               pos += 2
+               m.Whitelist[i] = buf.DecodeUint16()
        }
        return nil
 }
 
-// ACLInterfaceEtypeWhitelistDump represents VPP binary API message 'acl_interface_etype_whitelist_dump'.
+// ACLInterfaceEtypeWhitelistDump defines message 'acl_interface_etype_whitelist_dump'.
 type ACLInterfaceEtypeWhitelistDump struct {
        SwIfIndex uint32 `binapi:"u32,name=sw_if_index" json:"sw_if_index,omitempty"`
 }
@@ -907,256 +535,174 @@ func (m *ACLInterfaceEtypeWhitelistDump) Reset() { *m = ACLInterfaceEtypeWhiteli
 func (*ACLInterfaceEtypeWhitelistDump) GetMessageName() string {
        return "acl_interface_etype_whitelist_dump"
 }
-func (*ACLInterfaceEtypeWhitelistDump) GetCrcString() string            { return "529cb13f" }
-func (*ACLInterfaceEtypeWhitelistDump) GetMessageType() api.MessageType { return api.RequestMessage }
+func (*ACLInterfaceEtypeWhitelistDump) GetCrcString() string { return "529cb13f" }
+func (*ACLInterfaceEtypeWhitelistDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 
-func (m *ACLInterfaceEtypeWhitelistDump) Size() int {
+func (m *ACLInterfaceEtypeWhitelistDump) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.SwIfIndex
-       size += 4
+       size += 4 // m.SwIfIndex
        return size
 }
 func (m *ACLInterfaceEtypeWhitelistDump) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.SwIfIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.SwIfIndex))
-       pos += 4
-       return buf, nil
-}
-func (m *ACLInterfaceEtypeWhitelistDump) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.SwIfIndex
-       m.SwIfIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.SwIfIndex)
+       return buf.Bytes(), nil
+}
+func (m *ACLInterfaceEtypeWhitelistDump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = buf.DecodeUint32()
        return nil
 }
 
-// ACLInterfaceListDetails represents VPP binary API message 'acl_interface_list_details'.
+// ACLInterfaceListDetails defines message 'acl_interface_list_details'.
 type ACLInterfaceListDetails struct {
        SwIfIndex uint32   `binapi:"u32,name=sw_if_index" json:"sw_if_index,omitempty"`
-       Count     uint8    `binapi:"u8,name=count" json:"count,omitempty" struc:"sizeof=Acls"`
+       Count     uint8    `binapi:"u8,name=count" json:"-"`
        NInput    uint8    `binapi:"u8,name=n_input" json:"n_input,omitempty"`
        Acls      []uint32 `binapi:"u32[count],name=acls" json:"acls,omitempty"`
 }
 
-func (m *ACLInterfaceListDetails) Reset()                        { *m = ACLInterfaceListDetails{} }
-func (*ACLInterfaceListDetails) GetMessageName() string          { return "acl_interface_list_details" }
-func (*ACLInterfaceListDetails) GetCrcString() string            { return "d5e80809" }
-func (*ACLInterfaceListDetails) GetMessageType() api.MessageType { return api.ReplyMessage }
+func (m *ACLInterfaceListDetails) Reset()               { *m = ACLInterfaceListDetails{} }
+func (*ACLInterfaceListDetails) GetMessageName() string { return "acl_interface_list_details" }
+func (*ACLInterfaceListDetails) GetCrcString() string   { return "d5e80809" }
+func (*ACLInterfaceListDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 
-func (m *ACLInterfaceListDetails) Size() int {
+func (m *ACLInterfaceListDetails) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.SwIfIndex
-       size += 4
-       // field[1] m.Count
-       size += 1
-       // field[1] m.NInput
-       size += 1
-       // field[1] m.Acls
-       size += 4 * len(m.Acls)
+       size += 4               // m.SwIfIndex
+       size += 1               // m.Count
+       size += 1               // m.NInput
+       size += 4 * len(m.Acls) // m.Acls
        return size
 }
 func (m *ACLInterfaceListDetails) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.SwIfIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.SwIfIndex))
-       pos += 4
-       // field[1] m.Count
-       buf[pos] = uint8(len(m.Acls))
-       pos += 1
-       // field[1] m.NInput
-       buf[pos] = uint8(m.NInput)
-       pos += 1
-       // field[1] m.Acls
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.SwIfIndex)
+       buf.EncodeUint8(uint8(len(m.Acls)))
+       buf.EncodeUint8(m.NInput)
        for i := 0; i < len(m.Acls); i++ {
                var x uint32
                if i < len(m.Acls) {
                        x = uint32(m.Acls[i])
                }
-               o.PutUint32(buf[pos:pos+4], uint32(x))
-               pos += 4
-       }
-       return buf, nil
-}
-func (m *ACLInterfaceListDetails) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.SwIfIndex
-       m.SwIfIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.Count
-       m.Count = uint8(tmp[pos])
-       pos += 1
-       // field[1] m.NInput
-       m.NInput = uint8(tmp[pos])
-       pos += 1
-       // field[1] m.Acls
+               buf.EncodeUint32(x)
+       }
+       return buf.Bytes(), nil
+}
+func (m *ACLInterfaceListDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = buf.DecodeUint32()
+       m.Count = buf.DecodeUint8()
+       m.NInput = buf.DecodeUint8()
        m.Acls = make([]uint32, m.Count)
        for i := 0; i < len(m.Acls); i++ {
-               m.Acls[i] = uint32(o.Uint32(tmp[pos : pos+4]))
-               pos += 4
+               m.Acls[i] = buf.DecodeUint32()
        }
        return nil
 }
 
-// ACLInterfaceListDump represents VPP binary API message 'acl_interface_list_dump'.
+// ACLInterfaceListDump defines message 'acl_interface_list_dump'.
 type ACLInterfaceListDump struct {
        SwIfIndex uint32 `binapi:"u32,name=sw_if_index" json:"sw_if_index,omitempty"`
 }
 
-func (m *ACLInterfaceListDump) Reset()                        { *m = ACLInterfaceListDump{} }
-func (*ACLInterfaceListDump) GetMessageName() string          { return "acl_interface_list_dump" }
-func (*ACLInterfaceListDump) GetCrcString() string            { return "529cb13f" }
-func (*ACLInterfaceListDump) GetMessageType() api.MessageType { return api.RequestMessage }
+func (m *ACLInterfaceListDump) Reset()               { *m = ACLInterfaceListDump{} }
+func (*ACLInterfaceListDump) GetMessageName() string { return "acl_interface_list_dump" }
+func (*ACLInterfaceListDump) GetCrcString() string   { return "529cb13f" }
+func (*ACLInterfaceListDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 
-func (m *ACLInterfaceListDump) Size() int {
+func (m *ACLInterfaceListDump) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.SwIfIndex
-       size += 4
+       size += 4 // m.SwIfIndex
        return size
 }
 func (m *ACLInterfaceListDump) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.SwIfIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.SwIfIndex))
-       pos += 4
-       return buf, nil
-}
-func (m *ACLInterfaceListDump) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.SwIfIndex
-       m.SwIfIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.SwIfIndex)
+       return buf.Bytes(), nil
+}
+func (m *ACLInterfaceListDump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = buf.DecodeUint32()
        return nil
 }
 
-// ACLInterfaceSetACLList represents VPP binary API message 'acl_interface_set_acl_list'.
+// ACLInterfaceSetACLList defines message 'acl_interface_set_acl_list'.
 type ACLInterfaceSetACLList struct {
        SwIfIndex uint32   `binapi:"u32,name=sw_if_index" json:"sw_if_index,omitempty"`
-       Count     uint8    `binapi:"u8,name=count" json:"count,omitempty" struc:"sizeof=Acls"`
+       Count     uint8    `binapi:"u8,name=count" json:"-"`
        NInput    uint8    `binapi:"u8,name=n_input" json:"n_input,omitempty"`
        Acls      []uint32 `binapi:"u32[count],name=acls" json:"acls,omitempty"`
 }
 
-func (m *ACLInterfaceSetACLList) Reset()                        { *m = ACLInterfaceSetACLList{} }
-func (*ACLInterfaceSetACLList) GetMessageName() string          { return "acl_interface_set_acl_list" }
-func (*ACLInterfaceSetACLList) GetCrcString() string            { return "8baece38" }
-func (*ACLInterfaceSetACLList) GetMessageType() api.MessageType { return api.RequestMessage }
+func (m *ACLInterfaceSetACLList) Reset()               { *m = ACLInterfaceSetACLList{} }
+func (*ACLInterfaceSetACLList) GetMessageName() string { return "acl_interface_set_acl_list" }
+func (*ACLInterfaceSetACLList) GetCrcString() string   { return "8baece38" }
+func (*ACLInterfaceSetACLList) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 
-func (m *ACLInterfaceSetACLList) Size() int {
+func (m *ACLInterfaceSetACLList) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.SwIfIndex
-       size += 4
-       // field[1] m.Count
-       size += 1
-       // field[1] m.NInput
-       size += 1
-       // field[1] m.Acls
-       size += 4 * len(m.Acls)
+       size += 4               // m.SwIfIndex
+       size += 1               // m.Count
+       size += 1               // m.NInput
+       size += 4 * len(m.Acls) // m.Acls
        return size
 }
 func (m *ACLInterfaceSetACLList) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.SwIfIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.SwIfIndex))
-       pos += 4
-       // field[1] m.Count
-       buf[pos] = uint8(len(m.Acls))
-       pos += 1
-       // field[1] m.NInput
-       buf[pos] = uint8(m.NInput)
-       pos += 1
-       // field[1] m.Acls
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.SwIfIndex)
+       buf.EncodeUint8(uint8(len(m.Acls)))
+       buf.EncodeUint8(m.NInput)
        for i := 0; i < len(m.Acls); i++ {
                var x uint32
                if i < len(m.Acls) {
                        x = uint32(m.Acls[i])
                }
-               o.PutUint32(buf[pos:pos+4], uint32(x))
-               pos += 4
-       }
-       return buf, nil
-}
-func (m *ACLInterfaceSetACLList) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.SwIfIndex
-       m.SwIfIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.Count
-       m.Count = uint8(tmp[pos])
-       pos += 1
-       // field[1] m.NInput
-       m.NInput = uint8(tmp[pos])
-       pos += 1
-       // field[1] m.Acls
+               buf.EncodeUint32(x)
+       }
+       return buf.Bytes(), nil
+}
+func (m *ACLInterfaceSetACLList) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = buf.DecodeUint32()
+       m.Count = buf.DecodeUint8()
+       m.NInput = buf.DecodeUint8()
        m.Acls = make([]uint32, m.Count)
        for i := 0; i < len(m.Acls); i++ {
-               m.Acls[i] = uint32(o.Uint32(tmp[pos : pos+4]))
-               pos += 4
+               m.Acls[i] = buf.DecodeUint32()
        }
        return nil
 }
 
-// ACLInterfaceSetACLListReply represents VPP binary API message 'acl_interface_set_acl_list_reply'.
+// ACLInterfaceSetACLListReply defines message 'acl_interface_set_acl_list_reply'.
 type ACLInterfaceSetACLListReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -1165,49 +711,36 @@ func (m *ACLInterfaceSetACLListReply) Reset() { *m = ACLInterfaceSetACLListReply
 func (*ACLInterfaceSetACLListReply) GetMessageName() string {
        return "acl_interface_set_acl_list_reply"
 }
-func (*ACLInterfaceSetACLListReply) GetCrcString() string            { return "e8d4e804" }
-func (*ACLInterfaceSetACLListReply) GetMessageType() api.MessageType { return api.ReplyMessage }
+func (*ACLInterfaceSetACLListReply) GetCrcString() string { return "e8d4e804" }
+func (*ACLInterfaceSetACLListReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 
-func (m *ACLInterfaceSetACLListReply) Size() int {
+func (m *ACLInterfaceSetACLListReply) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.Retval
-       size += 4
+       size += 4 // m.Retval
        return size
 }
 func (m *ACLInterfaceSetACLListReply) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.Retval
-       o.PutUint32(buf[pos:pos+4], uint32(m.Retval))
-       pos += 4
-       return buf, nil
-}
-func (m *ACLInterfaceSetACLListReply) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.Retval
-       m.Retval = int32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *ACLInterfaceSetACLListReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
        return nil
 }
 
-// ACLInterfaceSetEtypeWhitelist represents VPP binary API message 'acl_interface_set_etype_whitelist'.
+// ACLInterfaceSetEtypeWhitelist defines message 'acl_interface_set_etype_whitelist'.
 type ACLInterfaceSetEtypeWhitelist struct {
        SwIfIndex uint32   `binapi:"u32,name=sw_if_index" json:"sw_if_index,omitempty"`
-       Count     uint8    `binapi:"u8,name=count" json:"count,omitempty" struc:"sizeof=Whitelist"`
+       Count     uint8    `binapi:"u8,name=count" json:"-"`
        NInput    uint8    `binapi:"u8,name=n_input" json:"n_input,omitempty"`
        Whitelist []uint16 `binapi:"u16[count],name=whitelist" json:"whitelist,omitempty"`
 }
@@ -1216,79 +749,51 @@ func (m *ACLInterfaceSetEtypeWhitelist) Reset() { *m = ACLInterfaceSetEtypeWhite
 func (*ACLInterfaceSetEtypeWhitelist) GetMessageName() string {
        return "acl_interface_set_etype_whitelist"
 }
-func (*ACLInterfaceSetEtypeWhitelist) GetCrcString() string            { return "f515efc5" }
-func (*ACLInterfaceSetEtypeWhitelist) GetMessageType() api.MessageType { return api.RequestMessage }
+func (*ACLInterfaceSetEtypeWhitelist) GetCrcString() string { return "f515efc5" }
+func (*ACLInterfaceSetEtypeWhitelist) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 
-func (m *ACLInterfaceSetEtypeWhitelist) Size() int {
+func (m *ACLInterfaceSetEtypeWhitelist) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.SwIfIndex
-       size += 4
-       // field[1] m.Count
-       size += 1
-       // field[1] m.NInput
-       size += 1
-       // field[1] m.Whitelist
-       size += 2 * len(m.Whitelist)
+       size += 4                    // m.SwIfIndex
+       size += 1                    // m.Count
+       size += 1                    // m.NInput
+       size += 2 * len(m.Whitelist) // m.Whitelist
        return size
 }
 func (m *ACLInterfaceSetEtypeWhitelist) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.SwIfIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.SwIfIndex))
-       pos += 4
-       // field[1] m.Count
-       buf[pos] = uint8(len(m.Whitelist))
-       pos += 1
-       // field[1] m.NInput
-       buf[pos] = uint8(m.NInput)
-       pos += 1
-       // field[1] m.Whitelist
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.SwIfIndex)
+       buf.EncodeUint8(uint8(len(m.Whitelist)))
+       buf.EncodeUint8(m.NInput)
        for i := 0; i < len(m.Whitelist); i++ {
                var x uint16
                if i < len(m.Whitelist) {
                        x = uint16(m.Whitelist[i])
                }
-               o.PutUint16(buf[pos:pos+2], uint16(x))
-               pos += 2
-       }
-       return buf, nil
-}
-func (m *ACLInterfaceSetEtypeWhitelist) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.SwIfIndex
-       m.SwIfIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.Count
-       m.Count = uint8(tmp[pos])
-       pos += 1
-       // field[1] m.NInput
-       m.NInput = uint8(tmp[pos])
-       pos += 1
-       // field[1] m.Whitelist
+               buf.EncodeUint16(x)
+       }
+       return buf.Bytes(), nil
+}
+func (m *ACLInterfaceSetEtypeWhitelist) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = buf.DecodeUint32()
+       m.Count = buf.DecodeUint8()
+       m.NInput = buf.DecodeUint8()
        m.Whitelist = make([]uint16, m.Count)
        for i := 0; i < len(m.Whitelist); i++ {
-               m.Whitelist[i] = uint16(o.Uint16(tmp[pos : pos+2]))
-               pos += 2
+               m.Whitelist[i] = buf.DecodeUint16()
        }
        return nil
 }
 
-// ACLInterfaceSetEtypeWhitelistReply represents VPP binary API message 'acl_interface_set_etype_whitelist_reply'.
+// ACLInterfaceSetEtypeWhitelistReply defines message 'acl_interface_set_etype_whitelist_reply'.
 type ACLInterfaceSetEtypeWhitelistReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -1297,184 +802,130 @@ func (m *ACLInterfaceSetEtypeWhitelistReply) Reset() { *m = ACLInterfaceSetEtype
 func (*ACLInterfaceSetEtypeWhitelistReply) GetMessageName() string {
        return "acl_interface_set_etype_whitelist_reply"
 }
-func (*ACLInterfaceSetEtypeWhitelistReply) GetCrcString() string            { return "e8d4e804" }
-func (*ACLInterfaceSetEtypeWhitelistReply) GetMessageType() api.MessageType { return api.ReplyMessage }
+func (*ACLInterfaceSetEtypeWhitelistReply) GetCrcString() string { return "e8d4e804" }
+func (*ACLInterfaceSetEtypeWhitelistReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 
-func (m *ACLInterfaceSetEtypeWhitelistReply) Size() int {
+func (m *ACLInterfaceSetEtypeWhitelistReply) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.Retval
-       size += 4
+       size += 4 // m.Retval
        return size
 }
 func (m *ACLInterfaceSetEtypeWhitelistReply) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.Retval
-       o.PutUint32(buf[pos:pos+4], uint32(m.Retval))
-       pos += 4
-       return buf, nil
-}
-func (m *ACLInterfaceSetEtypeWhitelistReply) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.Retval
-       m.Retval = int32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *ACLInterfaceSetEtypeWhitelistReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
        return nil
 }
 
-// ACLPluginControlPing represents VPP binary API message 'acl_plugin_control_ping'.
+// ACLPluginControlPing defines message 'acl_plugin_control_ping'.
 type ACLPluginControlPing struct{}
 
-func (m *ACLPluginControlPing) Reset()                        { *m = ACLPluginControlPing{} }
-func (*ACLPluginControlPing) GetMessageName() string          { return "acl_plugin_control_ping" }
-func (*ACLPluginControlPing) GetCrcString() string            { return "51077d14" }
-func (*ACLPluginControlPing) GetMessageType() api.MessageType { return api.RequestMessage }
+func (m *ACLPluginControlPing) Reset()               { *m = ACLPluginControlPing{} }
+func (*ACLPluginControlPing) GetMessageName() string { return "acl_plugin_control_ping" }
+func (*ACLPluginControlPing) GetCrcString() string   { return "51077d14" }
+func (*ACLPluginControlPing) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 
-func (m *ACLPluginControlPing) Size() int {
+func (m *ACLPluginControlPing) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
        return size
 }
 func (m *ACLPluginControlPing) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
+               b = make([]byte, m.Size())
        }
-       return buf, nil
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
 }
-func (m *ACLPluginControlPing) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
+func (m *ACLPluginControlPing) Unmarshal(b []byte) error {
        return nil
 }
 
-// ACLPluginControlPingReply represents VPP binary API message 'acl_plugin_control_ping_reply'.
+// ACLPluginControlPingReply defines message 'acl_plugin_control_ping_reply'.
 type ACLPluginControlPingReply 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 *ACLPluginControlPingReply) Reset()                        { *m = ACLPluginControlPingReply{} }
-func (*ACLPluginControlPingReply) GetMessageName() string          { return "acl_plugin_control_ping_reply" }
-func (*ACLPluginControlPingReply) GetCrcString() string            { return "f6b0b8ca" }
-func (*ACLPluginControlPingReply) GetMessageType() api.MessageType { return api.ReplyMessage }
+func (m *ACLPluginControlPingReply) Reset()               { *m = ACLPluginControlPingReply{} }
+func (*ACLPluginControlPingReply) GetMessageName() string { return "acl_plugin_control_ping_reply" }
+func (*ACLPluginControlPingReply) GetCrcString() string   { return "f6b0b8ca" }
+func (*ACLPluginControlPingReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 
-func (m *ACLPluginControlPingReply) Size() int {
+func (m *ACLPluginControlPingReply) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.Retval
-       size += 4
-       // field[1] m.ClientIndex
-       size += 4
-       // field[1] m.VpePID
-       size += 4
+       size += 4 // m.Retval
+       size += 4 // m.ClientIndex
+       size += 4 // m.VpePID
        return size
 }
 func (m *ACLPluginControlPingReply) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.Retval
-       o.PutUint32(buf[pos:pos+4], uint32(m.Retval))
-       pos += 4
-       // field[1] m.ClientIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.ClientIndex))
-       pos += 4
-       // field[1] m.VpePID
-       o.PutUint32(buf[pos:pos+4], uint32(m.VpePID))
-       pos += 4
-       return buf, nil
-}
-func (m *ACLPluginControlPingReply) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.Retval
-       m.Retval = int32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.ClientIndex
-       m.ClientIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.VpePID
-       m.VpePID = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       buf.EncodeUint32(m.ClientIndex)
+       buf.EncodeUint32(m.VpePID)
+       return buf.Bytes(), nil
+}
+func (m *ACLPluginControlPingReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
+       m.ClientIndex = buf.DecodeUint32()
+       m.VpePID = buf.DecodeUint32()
        return nil
 }
 
-// ACLPluginGetConnTableMaxEntries represents VPP binary API message 'acl_plugin_get_conn_table_max_entries'.
+// ACLPluginGetConnTableMaxEntries defines message 'acl_plugin_get_conn_table_max_entries'.
 type ACLPluginGetConnTableMaxEntries struct{}
 
 func (m *ACLPluginGetConnTableMaxEntries) Reset() { *m = ACLPluginGetConnTableMaxEntries{} }
 func (*ACLPluginGetConnTableMaxEntries) GetMessageName() string {
        return "acl_plugin_get_conn_table_max_entries"
 }
-func (*ACLPluginGetConnTableMaxEntries) GetCrcString() string            { return "51077d14" }
-func (*ACLPluginGetConnTableMaxEntries) GetMessageType() api.MessageType { return api.RequestMessage }
+func (*ACLPluginGetConnTableMaxEntries) GetCrcString() string { return "51077d14" }
+func (*ACLPluginGetConnTableMaxEntries) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 
-func (m *ACLPluginGetConnTableMaxEntries) Size() int {
+func (m *ACLPluginGetConnTableMaxEntries) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
        return size
 }
 func (m *ACLPluginGetConnTableMaxEntries) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
+               b = make([]byte, m.Size())
        }
-       return buf, nil
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
 }
-func (m *ACLPluginGetConnTableMaxEntries) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
+func (m *ACLPluginGetConnTableMaxEntries) Unmarshal(b []byte) error {
        return nil
 }
 
-// ACLPluginGetConnTableMaxEntriesReply represents VPP binary API message 'acl_plugin_get_conn_table_max_entries_reply'.
+// ACLPluginGetConnTableMaxEntriesReply defines message 'acl_plugin_get_conn_table_max_entries_reply'.
 type ACLPluginGetConnTableMaxEntriesReply struct {
        ConnTableMaxEntries uint64 `binapi:"u64,name=conn_table_max_entries" json:"conn_table_max_entries,omitempty"`
 }
@@ -1488,182 +939,125 @@ func (*ACLPluginGetConnTableMaxEntriesReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 
-func (m *ACLPluginGetConnTableMaxEntriesReply) Size() int {
+func (m *ACLPluginGetConnTableMaxEntriesReply) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.ConnTableMaxEntries
-       size += 8
+       size += 8 // m.ConnTableMaxEntries
        return size
 }
 func (m *ACLPluginGetConnTableMaxEntriesReply) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.ConnTableMaxEntries
-       o.PutUint64(buf[pos:pos+8], uint64(m.ConnTableMaxEntries))
-       pos += 8
-       return buf, nil
-}
-func (m *ACLPluginGetConnTableMaxEntriesReply) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.ConnTableMaxEntries
-       m.ConnTableMaxEntries = uint64(o.Uint64(tmp[pos : pos+8]))
-       pos += 8
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint64(m.ConnTableMaxEntries)
+       return buf.Bytes(), nil
+}
+func (m *ACLPluginGetConnTableMaxEntriesReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.ConnTableMaxEntries = buf.DecodeUint64()
        return nil
 }
 
-// ACLPluginGetVersion represents VPP binary API message 'acl_plugin_get_version'.
+// ACLPluginGetVersion defines message 'acl_plugin_get_version'.
 type ACLPluginGetVersion struct{}
 
-func (m *ACLPluginGetVersion) Reset()                        { *m = ACLPluginGetVersion{} }
-func (*ACLPluginGetVersion) GetMessageName() string          { return "acl_plugin_get_version" }
-func (*ACLPluginGetVersion) GetCrcString() string            { return "51077d14" }
-func (*ACLPluginGetVersion) GetMessageType() api.MessageType { return api.RequestMessage }
+func (m *ACLPluginGetVersion) Reset()               { *m = ACLPluginGetVersion{} }
+func (*ACLPluginGetVersion) GetMessageName() string { return "acl_plugin_get_version" }
+func (*ACLPluginGetVersion) GetCrcString() string   { return "51077d14" }
+func (*ACLPluginGetVersion) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 
-func (m *ACLPluginGetVersion) Size() int {
+func (m *ACLPluginGetVersion) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
        return size
 }
 func (m *ACLPluginGetVersion) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
+               b = make([]byte, m.Size())
        }
-       return buf, nil
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
 }
-func (m *ACLPluginGetVersion) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
+func (m *ACLPluginGetVersion) Unmarshal(b []byte) error {
        return nil
 }
 
-// ACLPluginGetVersionReply represents VPP binary API message 'acl_plugin_get_version_reply'.
+// ACLPluginGetVersionReply defines message 'acl_plugin_get_version_reply'.
 type ACLPluginGetVersionReply struct {
        Major uint32 `binapi:"u32,name=major" json:"major,omitempty"`
        Minor uint32 `binapi:"u32,name=minor" json:"minor,omitempty"`
 }
 
-func (m *ACLPluginGetVersionReply) Reset()                        { *m = ACLPluginGetVersionReply{} }
-func (*ACLPluginGetVersionReply) GetMessageName() string          { return "acl_plugin_get_version_reply" }
-func (*ACLPluginGetVersionReply) GetCrcString() string            { return "9b32cf86" }
-func (*ACLPluginGetVersionReply) GetMessageType() api.MessageType { return api.ReplyMessage }
+func (m *ACLPluginGetVersionReply) Reset()               { *m = ACLPluginGetVersionReply{} }
+func (*ACLPluginGetVersionReply) GetMessageName() string { return "acl_plugin_get_version_reply" }
+func (*ACLPluginGetVersionReply) GetCrcString() string   { return "9b32cf86" }
+func (*ACLPluginGetVersionReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 
-func (m *ACLPluginGetVersionReply) Size() int {
+func (m *ACLPluginGetVersionReply) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.Major
-       size += 4
-       // field[1] m.Minor
-       size += 4
+       size += 4 // m.Major
+       size += 4 // m.Minor
        return size
 }
 func (m *ACLPluginGetVersionReply) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.Major
-       o.PutUint32(buf[pos:pos+4], uint32(m.Major))
-       pos += 4
-       // field[1] m.Minor
-       o.PutUint32(buf[pos:pos+4], uint32(m.Minor))
-       pos += 4
-       return buf, nil
-}
-func (m *ACLPluginGetVersionReply) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.Major
-       m.Major = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.Minor
-       m.Minor = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.Major)
+       buf.EncodeUint32(m.Minor)
+       return buf.Bytes(), nil
+}
+func (m *ACLPluginGetVersionReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Major = buf.DecodeUint32()
+       m.Minor = buf.DecodeUint32()
        return nil
 }
 
-// ACLStatsIntfCountersEnable represents VPP binary API message 'acl_stats_intf_counters_enable'.
+// ACLStatsIntfCountersEnable defines message 'acl_stats_intf_counters_enable'.
 type ACLStatsIntfCountersEnable struct {
        Enable bool `binapi:"bool,name=enable" json:"enable,omitempty"`
 }
 
-func (m *ACLStatsIntfCountersEnable) Reset()                        { *m = ACLStatsIntfCountersEnable{} }
-func (*ACLStatsIntfCountersEnable) GetMessageName() string          { return "acl_stats_intf_counters_enable" }
-func (*ACLStatsIntfCountersEnable) GetCrcString() string            { return "b3e225d2" }
-func (*ACLStatsIntfCountersEnable) GetMessageType() api.MessageType { return api.RequestMessage }
+func (m *ACLStatsIntfCountersEnable) Reset()               { *m = ACLStatsIntfCountersEnable{} }
+func (*ACLStatsIntfCountersEnable) GetMessageName() string { return "acl_stats_intf_counters_enable" }
+func (*ACLStatsIntfCountersEnable) GetCrcString() string   { return "b3e225d2" }
+func (*ACLStatsIntfCountersEnable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 
-func (m *ACLStatsIntfCountersEnable) Size() int {
+func (m *ACLStatsIntfCountersEnable) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.Enable
-       size += 1
+       size += 1 // m.Enable
        return size
 }
 func (m *ACLStatsIntfCountersEnable) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.Enable
-       if m.Enable {
-               buf[pos] = 1
-       }
-       pos += 1
-       return buf, nil
-}
-func (m *ACLStatsIntfCountersEnable) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.Enable
-       m.Enable = tmp[pos] != 0
-       pos += 1
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBool(m.Enable)
+       return buf.Bytes(), nil
+}
+func (m *ACLStatsIntfCountersEnable) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Enable = buf.DecodeBool()
        return nil
 }
 
-// ACLStatsIntfCountersEnableReply represents VPP binary API message 'acl_stats_intf_counters_enable_reply'.
+// ACLStatsIntfCountersEnableReply defines message 'acl_stats_intf_counters_enable_reply'.
 type ACLStatsIntfCountersEnableReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -1672,853 +1066,483 @@ func (m *ACLStatsIntfCountersEnableReply) Reset() { *m = ACLStatsIntfCountersEna
 func (*ACLStatsIntfCountersEnableReply) GetMessageName() string {
        return "acl_stats_intf_counters_enable_reply"
 }
-func (*ACLStatsIntfCountersEnableReply) GetCrcString() string            { return "e8d4e804" }
-func (*ACLStatsIntfCountersEnableReply) GetMessageType() api.MessageType { return api.ReplyMessage }
+func (*ACLStatsIntfCountersEnableReply) GetCrcString() string { return "e8d4e804" }
+func (*ACLStatsIntfCountersEnableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 
-func (m *ACLStatsIntfCountersEnableReply) Size() int {
+func (m *ACLStatsIntfCountersEnableReply) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.Retval
-       size += 4
+       size += 4 // m.Retval
        return size
 }
 func (m *ACLStatsIntfCountersEnableReply) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.Retval
-       o.PutUint32(buf[pos:pos+4], uint32(m.Retval))
-       pos += 4
-       return buf, nil
-}
-func (m *ACLStatsIntfCountersEnableReply) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.Retval
-       m.Retval = int32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *ACLStatsIntfCountersEnableReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
        return nil
 }
 
-// MacipACLAdd represents VPP binary API message 'macip_acl_add'.
+// MacipACLAdd defines message 'macip_acl_add'.
 type MacipACLAdd struct {
-       Tag   []byte         `binapi:"u8[64],name=tag" json:"tag,omitempty" struc:"[64]byte"`
-       Count uint32         `binapi:"u32,name=count" json:"count,omitempty" struc:"sizeof=R"`
+       Tag   []byte         `binapi:"u8[64],name=tag" json:"tag,omitempty"`
+       Count uint32         `binapi:"u32,name=count" json:"-"`
        R     []MacipACLRule `binapi:"macip_acl_rule[count],name=r" json:"r,omitempty"`
 }
 
-func (m *MacipACLAdd) Reset()                        { *m = MacipACLAdd{} }
-func (*MacipACLAdd) GetMessageName() string          { return "macip_acl_add" }
-func (*MacipACLAdd) GetCrcString() string            { return "0c680ca5" }
-func (*MacipACLAdd) GetMessageType() api.MessageType { return api.RequestMessage }
+func (m *MacipACLAdd) Reset()               { *m = MacipACLAdd{} }
+func (*MacipACLAdd) GetMessageName() string { return "macip_acl_add" }
+func (*MacipACLAdd) GetCrcString() string   { return "0c680ca5" }
+func (*MacipACLAdd) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 
-func (m *MacipACLAdd) Size() int {
+func (m *MacipACLAdd) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.Tag
-       size += 64
-       // field[1] m.Count
-       size += 4
-       // field[1] m.R
+       size += 1 * 64 // m.Tag
+       size += 4      // m.Count
        for j1 := 0; j1 < len(m.R); j1++ {
                var s1 MacipACLRule
                _ = s1
                if j1 < len(m.R) {
                        s1 = m.R[j1]
                }
-               // field[2] s1.IsPermit
-               size += 1
-               // field[2] s1.IsIPv6
-               size += 1
-               // field[2] s1.SrcMac
-               size += 6
-               // field[2] s1.SrcMacMask
-               size += 6
-               // field[2] s1.SrcIPAddr
-               size += 16
-               // field[2] s1.SrcIPPrefixLen
-               size += 1
+               size += 1      // s1.IsPermit
+               size += 1      // s1.IsIPv6
+               size += 1 * 6  // s1.SrcMac
+               size += 1 * 6  // s1.SrcMacMask
+               size += 1 * 16 // s1.SrcIPAddr
+               size += 1      // s1.SrcIPPrefixLen
        }
        return size
 }
 func (m *MacipACLAdd) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.Tag
-       for i := 0; i < 64; i++ {
-               var x uint8
-               if i < len(m.Tag) {
-                       x = uint8(m.Tag[i])
-               }
-               buf[pos] = uint8(x)
-               pos += 1
-       }
-       // field[1] m.Count
-       o.PutUint32(buf[pos:pos+4], uint32(len(m.R)))
-       pos += 4
-       // field[1] m.R
-       for j1 := 0; j1 < len(m.R); j1++ {
-               var v1 MacipACLRule
-               if j1 < len(m.R) {
-                       v1 = m.R[j1]
-               }
-               // field[2] v1.IsPermit
-               buf[pos] = uint8(v1.IsPermit)
-               pos += 1
-               // field[2] v1.IsIPv6
-               buf[pos] = uint8(v1.IsIPv6)
-               pos += 1
-               // field[2] v1.SrcMac
-               for i := 0; i < 6; i++ {
-                       var x uint8
-                       if i < len(v1.SrcMac) {
-                               x = uint8(v1.SrcMac[i])
-                       }
-                       buf[pos] = uint8(x)
-                       pos += 1
-               }
-               // field[2] v1.SrcMacMask
-               for i := 0; i < 6; i++ {
-                       var x uint8
-                       if i < len(v1.SrcMacMask) {
-                               x = uint8(v1.SrcMacMask[i])
-                       }
-                       buf[pos] = uint8(x)
-                       pos += 1
-               }
-               // field[2] v1.SrcIPAddr
-               for i := 0; i < 16; i++ {
-                       var x uint8
-                       if i < len(v1.SrcIPAddr) {
-                               x = uint8(v1.SrcIPAddr[i])
-                       }
-                       buf[pos] = uint8(x)
-                       pos += 1
-               }
-               // field[2] v1.SrcIPPrefixLen
-               buf[pos] = uint8(v1.SrcIPPrefixLen)
-               pos += 1
-       }
-       return buf, nil
-}
-func (m *MacipACLAdd) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.Tag
-       m.Tag = make([]uint8, 64)
-       for i := 0; i < len(m.Tag); i++ {
-               m.Tag[i] = uint8(tmp[pos])
-               pos += 1
-       }
-       // field[1] m.Count
-       m.Count = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.R
-       m.R = make([]MacipACLRule, int(m.Count))
-       for j1 := 0; j1 < int(m.Count); j1++ {
-               // field[2] m.R[j1].IsPermit
-               m.R[j1].IsPermit = uint8(tmp[pos])
-               pos += 1
-               // field[2] m.R[j1].IsIPv6
-               m.R[j1].IsIPv6 = uint8(tmp[pos])
-               pos += 1
-               // field[2] m.R[j1].SrcMac
-               m.R[j1].SrcMac = make([]uint8, 6)
-               for i := 0; i < len(m.R[j1].SrcMac); i++ {
-                       m.R[j1].SrcMac[i] = uint8(tmp[pos])
-                       pos += 1
-               }
-               // field[2] m.R[j1].SrcMacMask
-               m.R[j1].SrcMacMask = make([]uint8, 6)
-               for i := 0; i < len(m.R[j1].SrcMacMask); i++ {
-                       m.R[j1].SrcMacMask[i] = uint8(tmp[pos])
-                       pos += 1
-               }
-               // field[2] m.R[j1].SrcIPAddr
-               m.R[j1].SrcIPAddr = make([]uint8, 16)
-               for i := 0; i < len(m.R[j1].SrcIPAddr); i++ {
-                       m.R[j1].SrcIPAddr[i] = uint8(tmp[pos])
-                       pos += 1
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeBytes(m.Tag, 64)
+       buf.EncodeUint32(uint32(len(m.R)))
+       for j0 := 0; j0 < len(m.R); j0++ {
+               var v0 MacipACLRule // R
+               if j0 < len(m.R) {
+                       v0 = m.R[j0]
                }
-               // field[2] m.R[j1].SrcIPPrefixLen
-               m.R[j1].SrcIPPrefixLen = uint8(tmp[pos])
-               pos += 1
+               buf.EncodeUint8(v0.IsPermit)
+               buf.EncodeUint8(v0.IsIPv6)
+               buf.EncodeBytes(v0.SrcMac, 6)
+               buf.EncodeBytes(v0.SrcMacMask, 6)
+               buf.EncodeBytes(v0.SrcIPAddr, 16)
+               buf.EncodeUint8(v0.SrcIPPrefixLen)
+       }
+       return buf.Bytes(), nil
+}
+func (m *MacipACLAdd) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Tag = make([]byte, 64)
+       copy(m.Tag, buf.DecodeBytes(len(m.Tag)))
+       m.Count = buf.DecodeUint32()
+       m.R = make([]MacipACLRule, m.Count)
+       for j0 := 0; j0 < len(m.R); j0++ {
+               m.R[j0].IsPermit = buf.DecodeUint8()
+               m.R[j0].IsIPv6 = buf.DecodeUint8()
+               m.R[j0].SrcMac = make([]byte, 6)
+               copy(m.R[j0].SrcMac, buf.DecodeBytes(len(m.R[j0].SrcMac)))
+               m.R[j0].SrcMacMask = make([]byte, 6)
+               copy(m.R[j0].SrcMacMask, buf.DecodeBytes(len(m.R[j0].SrcMacMask)))
+               m.R[j0].SrcIPAddr = make([]byte, 16)
+               copy(m.R[j0].SrcIPAddr, buf.DecodeBytes(len(m.R[j0].SrcIPAddr)))
+               m.R[j0].SrcIPPrefixLen = buf.DecodeUint8()
        }
        return nil
 }
 
-// MacipACLAddReplace represents VPP binary API message 'macip_acl_add_replace'.
+// MacipACLAddReplace defines message 'macip_acl_add_replace'.
 type MacipACLAddReplace struct {
        ACLIndex uint32         `binapi:"u32,name=acl_index" json:"acl_index,omitempty"`
-       Tag      []byte         `binapi:"u8[64],name=tag" json:"tag,omitempty" struc:"[64]byte"`
-       Count    uint32         `binapi:"u32,name=count" json:"count,omitempty" struc:"sizeof=R"`
+       Tag      []byte         `binapi:"u8[64],name=tag" json:"tag,omitempty"`
+       Count    uint32         `binapi:"u32,name=count" json:"-"`
        R        []MacipACLRule `binapi:"macip_acl_rule[count],name=r" json:"r,omitempty"`
 }
 
-func (m *MacipACLAddReplace) Reset()                        { *m = MacipACLAddReplace{} }
-func (*MacipACLAddReplace) GetMessageName() string          { return "macip_acl_add_replace" }
-func (*MacipACLAddReplace) GetCrcString() string            { return "d3d313e7" }
-func (*MacipACLAddReplace) GetMessageType() api.MessageType { return api.RequestMessage }
+func (m *MacipACLAddReplace) Reset()               { *m = MacipACLAddReplace{} }
+func (*MacipACLAddReplace) GetMessageName() string { return "macip_acl_add_replace" }
+func (*MacipACLAddReplace) GetCrcString() string   { return "d3d313e7" }
+func (*MacipACLAddReplace) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 
-func (m *MacipACLAddReplace) Size() int {
+func (m *MacipACLAddReplace) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.ACLIndex
-       size += 4
-       // field[1] m.Tag
-       size += 64
-       // field[1] m.Count
-       size += 4
-       // field[1] m.R
+       size += 4      // m.ACLIndex
+       size += 1 * 64 // m.Tag
+       size += 4      // m.Count
        for j1 := 0; j1 < len(m.R); j1++ {
                var s1 MacipACLRule
                _ = s1
                if j1 < len(m.R) {
                        s1 = m.R[j1]
                }
-               // field[2] s1.IsPermit
-               size += 1
-               // field[2] s1.IsIPv6
-               size += 1
-               // field[2] s1.SrcMac
-               size += 6
-               // field[2] s1.SrcMacMask
-               size += 6
-               // field[2] s1.SrcIPAddr
-               size += 16
-               // field[2] s1.SrcIPPrefixLen
-               size += 1
+               size += 1      // s1.IsPermit
+               size += 1      // s1.IsIPv6
+               size += 1 * 6  // s1.SrcMac
+               size += 1 * 6  // s1.SrcMacMask
+               size += 1 * 16 // s1.SrcIPAddr
+               size += 1      // s1.SrcIPPrefixLen
        }
        return size
 }
 func (m *MacipACLAddReplace) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.ACLIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.ACLIndex))
-       pos += 4
-       // field[1] m.Tag
-       for i := 0; i < 64; i++ {
-               var x uint8
-               if i < len(m.Tag) {
-                       x = uint8(m.Tag[i])
-               }
-               buf[pos] = uint8(x)
-               pos += 1
-       }
-       // field[1] m.Count
-       o.PutUint32(buf[pos:pos+4], uint32(len(m.R)))
-       pos += 4
-       // field[1] m.R
-       for j1 := 0; j1 < len(m.R); j1++ {
-               var v1 MacipACLRule
-               if j1 < len(m.R) {
-                       v1 = m.R[j1]
-               }
-               // field[2] v1.IsPermit
-               buf[pos] = uint8(v1.IsPermit)
-               pos += 1
-               // field[2] v1.IsIPv6
-               buf[pos] = uint8(v1.IsIPv6)
-               pos += 1
-               // field[2] v1.SrcMac
-               for i := 0; i < 6; i++ {
-                       var x uint8
-                       if i < len(v1.SrcMac) {
-                               x = uint8(v1.SrcMac[i])
-                       }
-                       buf[pos] = uint8(x)
-                       pos += 1
-               }
-               // field[2] v1.SrcMacMask
-               for i := 0; i < 6; i++ {
-                       var x uint8
-                       if i < len(v1.SrcMacMask) {
-                               x = uint8(v1.SrcMacMask[i])
-                       }
-                       buf[pos] = uint8(x)
-                       pos += 1
-               }
-               // field[2] v1.SrcIPAddr
-               for i := 0; i < 16; i++ {
-                       var x uint8
-                       if i < len(v1.SrcIPAddr) {
-                               x = uint8(v1.SrcIPAddr[i])
-                       }
-                       buf[pos] = uint8(x)
-                       pos += 1
-               }
-               // field[2] v1.SrcIPPrefixLen
-               buf[pos] = uint8(v1.SrcIPPrefixLen)
-               pos += 1
-       }
-       return buf, nil
-}
-func (m *MacipACLAddReplace) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.ACLIndex
-       m.ACLIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.Tag
-       m.Tag = make([]uint8, 64)
-       for i := 0; i < len(m.Tag); i++ {
-               m.Tag[i] = uint8(tmp[pos])
-               pos += 1
-       }
-       // field[1] m.Count
-       m.Count = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.R
-       m.R = make([]MacipACLRule, int(m.Count))
-       for j1 := 0; j1 < int(m.Count); j1++ {
-               // field[2] m.R[j1].IsPermit
-               m.R[j1].IsPermit = uint8(tmp[pos])
-               pos += 1
-               // field[2] m.R[j1].IsIPv6
-               m.R[j1].IsIPv6 = uint8(tmp[pos])
-               pos += 1
-               // field[2] m.R[j1].SrcMac
-               m.R[j1].SrcMac = make([]uint8, 6)
-               for i := 0; i < len(m.R[j1].SrcMac); i++ {
-                       m.R[j1].SrcMac[i] = uint8(tmp[pos])
-                       pos += 1
-               }
-               // field[2] m.R[j1].SrcMacMask
-               m.R[j1].SrcMacMask = make([]uint8, 6)
-               for i := 0; i < len(m.R[j1].SrcMacMask); i++ {
-                       m.R[j1].SrcMacMask[i] = uint8(tmp[pos])
-                       pos += 1
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.ACLIndex)
+       buf.EncodeBytes(m.Tag, 64)
+       buf.EncodeUint32(uint32(len(m.R)))
+       for j0 := 0; j0 < len(m.R); j0++ {
+               var v0 MacipACLRule // R
+               if j0 < len(m.R) {
+                       v0 = m.R[j0]
                }
-               // field[2] m.R[j1].SrcIPAddr
-               m.R[j1].SrcIPAddr = make([]uint8, 16)
-               for i := 0; i < len(m.R[j1].SrcIPAddr); i++ {
-                       m.R[j1].SrcIPAddr[i] = uint8(tmp[pos])
-                       pos += 1
-               }
-               // field[2] m.R[j1].SrcIPPrefixLen
-               m.R[j1].SrcIPPrefixLen = uint8(tmp[pos])
-               pos += 1
+               buf.EncodeUint8(v0.IsPermit)
+               buf.EncodeUint8(v0.IsIPv6)
+               buf.EncodeBytes(v0.SrcMac, 6)
+               buf.EncodeBytes(v0.SrcMacMask, 6)
+               buf.EncodeBytes(v0.SrcIPAddr, 16)
+               buf.EncodeUint8(v0.SrcIPPrefixLen)
+       }
+       return buf.Bytes(), nil
+}
+func (m *MacipACLAddReplace) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.ACLIndex = buf.DecodeUint32()
+       m.Tag = make([]byte, 64)
+       copy(m.Tag, buf.DecodeBytes(len(m.Tag)))
+       m.Count = buf.DecodeUint32()
+       m.R = make([]MacipACLRule, m.Count)
+       for j0 := 0; j0 < len(m.R); j0++ {
+               m.R[j0].IsPermit = buf.DecodeUint8()
+               m.R[j0].IsIPv6 = buf.DecodeUint8()
+               m.R[j0].SrcMac = make([]byte, 6)
+               copy(m.R[j0].SrcMac, buf.DecodeBytes(len(m.R[j0].SrcMac)))
+               m.R[j0].SrcMacMask = make([]byte, 6)
+               copy(m.R[j0].SrcMacMask, buf.DecodeBytes(len(m.R[j0].SrcMacMask)))
+               m.R[j0].SrcIPAddr = make([]byte, 16)
+               copy(m.R[j0].SrcIPAddr, buf.DecodeBytes(len(m.R[j0].SrcIPAddr)))
+               m.R[j0].SrcIPPrefixLen = buf.DecodeUint8()
        }
        return nil
 }
 
-// MacipACLAddReplaceReply represents VPP binary API message 'macip_acl_add_replace_reply'.
+// MacipACLAddReplaceReply defines message 'macip_acl_add_replace_reply'.
 type MacipACLAddReplaceReply struct {
        ACLIndex uint32 `binapi:"u32,name=acl_index" json:"acl_index,omitempty"`
        Retval   int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
 
-func (m *MacipACLAddReplaceReply) Reset()                        { *m = MacipACLAddReplaceReply{} }
-func (*MacipACLAddReplaceReply) GetMessageName() string          { return "macip_acl_add_replace_reply" }
-func (*MacipACLAddReplaceReply) GetCrcString() string            { return "ac407b0c" }
-func (*MacipACLAddReplaceReply) GetMessageType() api.MessageType { return api.ReplyMessage }
+func (m *MacipACLAddReplaceReply) Reset()               { *m = MacipACLAddReplaceReply{} }
+func (*MacipACLAddReplaceReply) GetMessageName() string { return "macip_acl_add_replace_reply" }
+func (*MacipACLAddReplaceReply) GetCrcString() string   { return "ac407b0c" }
+func (*MacipACLAddReplaceReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 
-func (m *MacipACLAddReplaceReply) Size() int {
+func (m *MacipACLAddReplaceReply) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.ACLIndex
-       size += 4
-       // field[1] m.Retval
-       size += 4
+       size += 4 // m.ACLIndex
+       size += 4 // m.Retval
        return size
 }
 func (m *MacipACLAddReplaceReply) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.ACLIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.ACLIndex))
-       pos += 4
-       // field[1] m.Retval
-       o.PutUint32(buf[pos:pos+4], uint32(m.Retval))
-       pos += 4
-       return buf, nil
-}
-func (m *MacipACLAddReplaceReply) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.ACLIndex
-       m.ACLIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.Retval
-       m.Retval = int32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.ACLIndex)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *MacipACLAddReplaceReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.ACLIndex = buf.DecodeUint32()
+       m.Retval = buf.DecodeInt32()
        return nil
 }
 
-// MacipACLAddReply represents VPP binary API message 'macip_acl_add_reply'.
+// MacipACLAddReply defines message 'macip_acl_add_reply'.
 type MacipACLAddReply struct {
        ACLIndex uint32 `binapi:"u32,name=acl_index" json:"acl_index,omitempty"`
        Retval   int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
 
-func (m *MacipACLAddReply) Reset()                        { *m = MacipACLAddReply{} }
-func (*MacipACLAddReply) GetMessageName() string          { return "macip_acl_add_reply" }
-func (*MacipACLAddReply) GetCrcString() string            { return "ac407b0c" }
-func (*MacipACLAddReply) GetMessageType() api.MessageType { return api.ReplyMessage }
+func (m *MacipACLAddReply) Reset()               { *m = MacipACLAddReply{} }
+func (*MacipACLAddReply) GetMessageName() string { return "macip_acl_add_reply" }
+func (*MacipACLAddReply) GetCrcString() string   { return "ac407b0c" }
+func (*MacipACLAddReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 
-func (m *MacipACLAddReply) Size() int {
+func (m *MacipACLAddReply) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.ACLIndex
-       size += 4
-       // field[1] m.Retval
-       size += 4
+       size += 4 // m.ACLIndex
+       size += 4 // m.Retval
        return size
 }
 func (m *MacipACLAddReply) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.ACLIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.ACLIndex))
-       pos += 4
-       // field[1] m.Retval
-       o.PutUint32(buf[pos:pos+4], uint32(m.Retval))
-       pos += 4
-       return buf, nil
-}
-func (m *MacipACLAddReply) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.ACLIndex
-       m.ACLIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.Retval
-       m.Retval = int32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.ACLIndex)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *MacipACLAddReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.ACLIndex = buf.DecodeUint32()
+       m.Retval = buf.DecodeInt32()
        return nil
 }
 
-// MacipACLDel represents VPP binary API message 'macip_acl_del'.
+// MacipACLDel defines message 'macip_acl_del'.
 type MacipACLDel struct {
        ACLIndex uint32 `binapi:"u32,name=acl_index" json:"acl_index,omitempty"`
 }
 
-func (m *MacipACLDel) Reset()                        { *m = MacipACLDel{} }
-func (*MacipACLDel) GetMessageName() string          { return "macip_acl_del" }
-func (*MacipACLDel) GetCrcString() string            { return "ef34fea4" }
-func (*MacipACLDel) GetMessageType() api.MessageType { return api.RequestMessage }
+func (m *MacipACLDel) Reset()               { *m = MacipACLDel{} }
+func (*MacipACLDel) GetMessageName() string { return "macip_acl_del" }
+func (*MacipACLDel) GetCrcString() string   { return "ef34fea4" }
+func (*MacipACLDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 
-func (m *MacipACLDel) Size() int {
+func (m *MacipACLDel) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.ACLIndex
-       size += 4
+       size += 4 // m.ACLIndex
        return size
 }
 func (m *MacipACLDel) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.ACLIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.ACLIndex))
-       pos += 4
-       return buf, nil
-}
-func (m *MacipACLDel) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.ACLIndex
-       m.ACLIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.ACLIndex)
+       return buf.Bytes(), nil
+}
+func (m *MacipACLDel) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.ACLIndex = buf.DecodeUint32()
        return nil
 }
 
-// MacipACLDelReply represents VPP binary API message 'macip_acl_del_reply'.
+// MacipACLDelReply defines message 'macip_acl_del_reply'.
 type MacipACLDelReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
 
-func (m *MacipACLDelReply) Reset()                        { *m = MacipACLDelReply{} }
-func (*MacipACLDelReply) GetMessageName() string          { return "macip_acl_del_reply" }
-func (*MacipACLDelReply) GetCrcString() string            { return "e8d4e804" }
-func (*MacipACLDelReply) GetMessageType() api.MessageType { return api.ReplyMessage }
+func (m *MacipACLDelReply) Reset()               { *m = MacipACLDelReply{} }
+func (*MacipACLDelReply) GetMessageName() string { return "macip_acl_del_reply" }
+func (*MacipACLDelReply) GetCrcString() string   { return "e8d4e804" }
+func (*MacipACLDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 
-func (m *MacipACLDelReply) Size() int {
+func (m *MacipACLDelReply) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.Retval
-       size += 4
+       size += 4 // m.Retval
        return size
 }
 func (m *MacipACLDelReply) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.Retval
-       o.PutUint32(buf[pos:pos+4], uint32(m.Retval))
-       pos += 4
-       return buf, nil
-}
-func (m *MacipACLDelReply) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.Retval
-       m.Retval = int32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *MacipACLDelReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
        return nil
 }
 
-// MacipACLDetails represents VPP binary API message 'macip_acl_details'.
+// MacipACLDetails defines message 'macip_acl_details'.
 type MacipACLDetails struct {
        ACLIndex uint32         `binapi:"u32,name=acl_index" json:"acl_index,omitempty"`
-       Tag      []byte         `binapi:"u8[64],name=tag" json:"tag,omitempty" struc:"[64]byte"`
-       Count    uint32         `binapi:"u32,name=count" json:"count,omitempty" struc:"sizeof=R"`
+       Tag      []byte         `binapi:"u8[64],name=tag" json:"tag,omitempty"`
+       Count    uint32         `binapi:"u32,name=count" json:"-"`
        R        []MacipACLRule `binapi:"macip_acl_rule[count],name=r" json:"r,omitempty"`
 }
 
-func (m *MacipACLDetails) Reset()                        { *m = MacipACLDetails{} }
-func (*MacipACLDetails) GetMessageName() string          { return "macip_acl_details" }
-func (*MacipACLDetails) GetCrcString() string            { return "e164e69a" }
-func (*MacipACLDetails) GetMessageType() api.MessageType { return api.ReplyMessage }
+func (m *MacipACLDetails) Reset()               { *m = MacipACLDetails{} }
+func (*MacipACLDetails) GetMessageName() string { return "macip_acl_details" }
+func (*MacipACLDetails) GetCrcString() string   { return "e164e69a" }
+func (*MacipACLDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 
-func (m *MacipACLDetails) Size() int {
+func (m *MacipACLDetails) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.ACLIndex
-       size += 4
-       // field[1] m.Tag
-       size += 64
-       // field[1] m.Count
-       size += 4
-       // field[1] m.R
+       size += 4      // m.ACLIndex
+       size += 1 * 64 // m.Tag
+       size += 4      // m.Count
        for j1 := 0; j1 < len(m.R); j1++ {
                var s1 MacipACLRule
                _ = s1
                if j1 < len(m.R) {
                        s1 = m.R[j1]
                }
-               // field[2] s1.IsPermit
-               size += 1
-               // field[2] s1.IsIPv6
-               size += 1
-               // field[2] s1.SrcMac
-               size += 6
-               // field[2] s1.SrcMacMask
-               size += 6
-               // field[2] s1.SrcIPAddr
-               size += 16
-               // field[2] s1.SrcIPPrefixLen
-               size += 1
+               size += 1      // s1.IsPermit
+               size += 1      // s1.IsIPv6
+               size += 1 * 6  // s1.SrcMac
+               size += 1 * 6  // s1.SrcMacMask
+               size += 1 * 16 // s1.SrcIPAddr
+               size += 1      // s1.SrcIPPrefixLen
        }
        return size
 }
 func (m *MacipACLDetails) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.ACLIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.ACLIndex))
-       pos += 4
-       // field[1] m.Tag
-       for i := 0; i < 64; i++ {
-               var x uint8
-               if i < len(m.Tag) {
-                       x = uint8(m.Tag[i])
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.ACLIndex)
+       buf.EncodeBytes(m.Tag, 64)
+       buf.EncodeUint32(uint32(len(m.R)))
+       for j0 := 0; j0 < len(m.R); j0++ {
+               var v0 MacipACLRule // R
+               if j0 < len(m.R) {
+                       v0 = m.R[j0]
                }
-               buf[pos] = uint8(x)
-               pos += 1
-       }
-       // field[1] m.Count
-       o.PutUint32(buf[pos:pos+4], uint32(len(m.R)))
-       pos += 4
-       // field[1] m.R
-       for j1 := 0; j1 < len(m.R); j1++ {
-               var v1 MacipACLRule
-               if j1 < len(m.R) {
-                       v1 = m.R[j1]
-               }
-               // field[2] v1.IsPermit
-               buf[pos] = uint8(v1.IsPermit)
-               pos += 1
-               // field[2] v1.IsIPv6
-               buf[pos] = uint8(v1.IsIPv6)
-               pos += 1
-               // field[2] v1.SrcMac
-               for i := 0; i < 6; i++ {
-                       var x uint8
-                       if i < len(v1.SrcMac) {
-                               x = uint8(v1.SrcMac[i])
-                       }
-                       buf[pos] = uint8(x)
-                       pos += 1
-               }
-               // field[2] v1.SrcMacMask
-               for i := 0; i < 6; i++ {
-                       var x uint8
-                       if i < len(v1.SrcMacMask) {
-                               x = uint8(v1.SrcMacMask[i])
-                       }
-                       buf[pos] = uint8(x)
-                       pos += 1
-               }
-               // field[2] v1.SrcIPAddr
-               for i := 0; i < 16; i++ {
-                       var x uint8
-                       if i < len(v1.SrcIPAddr) {
-                               x = uint8(v1.SrcIPAddr[i])
-                       }
-                       buf[pos] = uint8(x)
-                       pos += 1
-               }
-               // field[2] v1.SrcIPPrefixLen
-               buf[pos] = uint8(v1.SrcIPPrefixLen)
-               pos += 1
-       }
-       return buf, nil
-}
-func (m *MacipACLDetails) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.ACLIndex
-       m.ACLIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.Tag
-       m.Tag = make([]uint8, 64)
-       for i := 0; i < len(m.Tag); i++ {
-               m.Tag[i] = uint8(tmp[pos])
-               pos += 1
-       }
-       // field[1] m.Count
-       m.Count = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.R
-       m.R = make([]MacipACLRule, int(m.Count))
-       for j1 := 0; j1 < int(m.Count); j1++ {
-               // field[2] m.R[j1].IsPermit
-               m.R[j1].IsPermit = uint8(tmp[pos])
-               pos += 1
-               // field[2] m.R[j1].IsIPv6
-               m.R[j1].IsIPv6 = uint8(tmp[pos])
-               pos += 1
-               // field[2] m.R[j1].SrcMac
-               m.R[j1].SrcMac = make([]uint8, 6)
-               for i := 0; i < len(m.R[j1].SrcMac); i++ {
-                       m.R[j1].SrcMac[i] = uint8(tmp[pos])
-                       pos += 1
-               }
-               // field[2] m.R[j1].SrcMacMask
-               m.R[j1].SrcMacMask = make([]uint8, 6)
-               for i := 0; i < len(m.R[j1].SrcMacMask); i++ {
-                       m.R[j1].SrcMacMask[i] = uint8(tmp[pos])
-                       pos += 1
-               }
-               // field[2] m.R[j1].SrcIPAddr
-               m.R[j1].SrcIPAddr = make([]uint8, 16)
-               for i := 0; i < len(m.R[j1].SrcIPAddr); i++ {
-                       m.R[j1].SrcIPAddr[i] = uint8(tmp[pos])
-                       pos += 1
-               }
-               // field[2] m.R[j1].SrcIPPrefixLen
-               m.R[j1].SrcIPPrefixLen = uint8(tmp[pos])
-               pos += 1
+               buf.EncodeUint8(v0.IsPermit)
+               buf.EncodeUint8(v0.IsIPv6)
+               buf.EncodeBytes(v0.SrcMac, 6)
+               buf.EncodeBytes(v0.SrcMacMask, 6)
+               buf.EncodeBytes(v0.SrcIPAddr, 16)
+               buf.EncodeUint8(v0.SrcIPPrefixLen)
+       }
+       return buf.Bytes(), nil
+}
+func (m *MacipACLDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.ACLIndex = buf.DecodeUint32()
+       m.Tag = make([]byte, 64)
+       copy(m.Tag, buf.DecodeBytes(len(m.Tag)))
+       m.Count = buf.DecodeUint32()
+       m.R = make([]MacipACLRule, m.Count)
+       for j0 := 0; j0 < len(m.R); j0++ {
+               m.R[j0].IsPermit = buf.DecodeUint8()
+               m.R[j0].IsIPv6 = buf.DecodeUint8()
+               m.R[j0].SrcMac = make([]byte, 6)
+               copy(m.R[j0].SrcMac, buf.DecodeBytes(len(m.R[j0].SrcMac)))
+               m.R[j0].SrcMacMask = make([]byte, 6)
+               copy(m.R[j0].SrcMacMask, buf.DecodeBytes(len(m.R[j0].SrcMacMask)))
+               m.R[j0].SrcIPAddr = make([]byte, 16)
+               copy(m.R[j0].SrcIPAddr, buf.DecodeBytes(len(m.R[j0].SrcIPAddr)))
+               m.R[j0].SrcIPPrefixLen = buf.DecodeUint8()
        }
        return nil
 }
 
-// MacipACLDump represents VPP binary API message 'macip_acl_dump'.
+// MacipACLDump defines message 'macip_acl_dump'.
 type MacipACLDump struct {
        ACLIndex uint32 `binapi:"u32,name=acl_index" json:"acl_index,omitempty"`
 }
 
-func (m *MacipACLDump) Reset()                        { *m = MacipACLDump{} }
-func (*MacipACLDump) GetMessageName() string          { return "macip_acl_dump" }
-func (*MacipACLDump) GetCrcString() string            { return "ef34fea4" }
-func (*MacipACLDump) GetMessageType() api.MessageType { return api.RequestMessage }
+func (m *MacipACLDump) Reset()               { *m = MacipACLDump{} }
+func (*MacipACLDump) GetMessageName() string { return "macip_acl_dump" }
+func (*MacipACLDump) GetCrcString() string   { return "ef34fea4" }
+func (*MacipACLDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 
-func (m *MacipACLDump) Size() int {
+func (m *MacipACLDump) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.ACLIndex
-       size += 4
+       size += 4 // m.ACLIndex
        return size
 }
 func (m *MacipACLDump) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.ACLIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.ACLIndex))
-       pos += 4
-       return buf, nil
-}
-func (m *MacipACLDump) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.ACLIndex
-       m.ACLIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.ACLIndex)
+       return buf.Bytes(), nil
+}
+func (m *MacipACLDump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.ACLIndex = buf.DecodeUint32()
        return nil
 }
 
-// MacipACLInterfaceAddDel represents VPP binary API message 'macip_acl_interface_add_del'.
+// MacipACLInterfaceAddDel defines message 'macip_acl_interface_add_del'.
 type MacipACLInterfaceAddDel struct {
        IsAdd     uint8  `binapi:"u8,name=is_add" json:"is_add,omitempty"`
        SwIfIndex uint32 `binapi:"u32,name=sw_if_index" json:"sw_if_index,omitempty"`
        ACLIndex  uint32 `binapi:"u32,name=acl_index" json:"acl_index,omitempty"`
 }
 
-func (m *MacipACLInterfaceAddDel) Reset()                        { *m = MacipACLInterfaceAddDel{} }
-func (*MacipACLInterfaceAddDel) GetMessageName() string          { return "macip_acl_interface_add_del" }
-func (*MacipACLInterfaceAddDel) GetCrcString() string            { return "6a6be97c" }
-func (*MacipACLInterfaceAddDel) GetMessageType() api.MessageType { return api.RequestMessage }
+func (m *MacipACLInterfaceAddDel) Reset()               { *m = MacipACLInterfaceAddDel{} }
+func (*MacipACLInterfaceAddDel) GetMessageName() string { return "macip_acl_interface_add_del" }
+func (*MacipACLInterfaceAddDel) GetCrcString() string   { return "6a6be97c" }
+func (*MacipACLInterfaceAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 
-func (m *MacipACLInterfaceAddDel) Size() int {
+func (m *MacipACLInterfaceAddDel) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.IsAdd
-       size += 1
-       // field[1] m.SwIfIndex
-       size += 4
-       // field[1] m.ACLIndex
-       size += 4
+       size += 1 // m.IsAdd
+       size += 4 // m.SwIfIndex
+       size += 4 // m.ACLIndex
        return size
 }
 func (m *MacipACLInterfaceAddDel) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.IsAdd
-       buf[pos] = uint8(m.IsAdd)
-       pos += 1
-       // field[1] m.SwIfIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.SwIfIndex))
-       pos += 4
-       // field[1] m.ACLIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.ACLIndex))
-       pos += 4
-       return buf, nil
-}
-func (m *MacipACLInterfaceAddDel) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.IsAdd
-       m.IsAdd = uint8(tmp[pos])
-       pos += 1
-       // field[1] m.SwIfIndex
-       m.SwIfIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.ACLIndex
-       m.ACLIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint8(m.IsAdd)
+       buf.EncodeUint32(m.SwIfIndex)
+       buf.EncodeUint32(m.ACLIndex)
+       return buf.Bytes(), nil
+}
+func (m *MacipACLInterfaceAddDel) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.IsAdd = buf.DecodeUint8()
+       m.SwIfIndex = buf.DecodeUint32()
+       m.ACLIndex = buf.DecodeUint32()
        return nil
 }
 
-// MacipACLInterfaceAddDelReply represents VPP binary API message 'macip_acl_interface_add_del_reply'.
+// MacipACLInterfaceAddDelReply defines message 'macip_acl_interface_add_del_reply'.
 type MacipACLInterfaceAddDelReply struct {
        Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
 }
@@ -2527,149 +1551,109 @@ func (m *MacipACLInterfaceAddDelReply) Reset() { *m = MacipACLInterfaceAddDelRep
 func (*MacipACLInterfaceAddDelReply) GetMessageName() string {
        return "macip_acl_interface_add_del_reply"
 }
-func (*MacipACLInterfaceAddDelReply) GetCrcString() string            { return "e8d4e804" }
-func (*MacipACLInterfaceAddDelReply) GetMessageType() api.MessageType { return api.ReplyMessage }
+func (*MacipACLInterfaceAddDelReply) GetCrcString() string { return "e8d4e804" }
+func (*MacipACLInterfaceAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 
-func (m *MacipACLInterfaceAddDelReply) Size() int {
+func (m *MacipACLInterfaceAddDelReply) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.Retval
-       size += 4
+       size += 4 // m.Retval
        return size
 }
 func (m *MacipACLInterfaceAddDelReply) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.Retval
-       o.PutUint32(buf[pos:pos+4], uint32(m.Retval))
-       pos += 4
-       return buf, nil
-}
-func (m *MacipACLInterfaceAddDelReply) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.Retval
-       m.Retval = int32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeInt32(m.Retval)
+       return buf.Bytes(), nil
+}
+func (m *MacipACLInterfaceAddDelReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = buf.DecodeInt32()
        return nil
 }
 
-// MacipACLInterfaceGet represents VPP binary API message 'macip_acl_interface_get'.
+// MacipACLInterfaceGet defines message 'macip_acl_interface_get'.
 type MacipACLInterfaceGet struct{}
 
-func (m *MacipACLInterfaceGet) Reset()                        { *m = MacipACLInterfaceGet{} }
-func (*MacipACLInterfaceGet) GetMessageName() string          { return "macip_acl_interface_get" }
-func (*MacipACLInterfaceGet) GetCrcString() string            { return "51077d14" }
-func (*MacipACLInterfaceGet) GetMessageType() api.MessageType { return api.RequestMessage }
+func (m *MacipACLInterfaceGet) Reset()               { *m = MacipACLInterfaceGet{} }
+func (*MacipACLInterfaceGet) GetMessageName() string { return "macip_acl_interface_get" }
+func (*MacipACLInterfaceGet) GetCrcString() string   { return "51077d14" }
+func (*MacipACLInterfaceGet) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 
-func (m *MacipACLInterfaceGet) Size() int {
+func (m *MacipACLInterfaceGet) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
        return size
 }
 func (m *MacipACLInterfaceGet) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
+               b = make([]byte, m.Size())
        }
-       return buf, nil
+       buf := codec.NewBuffer(b)
+       return buf.Bytes(), nil
 }
-func (m *MacipACLInterfaceGet) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
+func (m *MacipACLInterfaceGet) Unmarshal(b []byte) error {
        return nil
 }
 
-// MacipACLInterfaceGetReply represents VPP binary API message 'macip_acl_interface_get_reply'.
+// MacipACLInterfaceGetReply defines message 'macip_acl_interface_get_reply'.
 type MacipACLInterfaceGetReply struct {
-       Count uint32   `binapi:"u32,name=count" json:"count,omitempty" struc:"sizeof=Acls"`
+       Count uint32   `binapi:"u32,name=count" json:"-"`
        Acls  []uint32 `binapi:"u32[count],name=acls" json:"acls,omitempty"`
 }
 
-func (m *MacipACLInterfaceGetReply) Reset()                        { *m = MacipACLInterfaceGetReply{} }
-func (*MacipACLInterfaceGetReply) GetMessageName() string          { return "macip_acl_interface_get_reply" }
-func (*MacipACLInterfaceGetReply) GetCrcString() string            { return "accf9b05" }
-func (*MacipACLInterfaceGetReply) GetMessageType() api.MessageType { return api.ReplyMessage }
+func (m *MacipACLInterfaceGetReply) Reset()               { *m = MacipACLInterfaceGetReply{} }
+func (*MacipACLInterfaceGetReply) GetMessageName() string { return "macip_acl_interface_get_reply" }
+func (*MacipACLInterfaceGetReply) GetCrcString() string   { return "accf9b05" }
+func (*MacipACLInterfaceGetReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 
-func (m *MacipACLInterfaceGetReply) Size() int {
+func (m *MacipACLInterfaceGetReply) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.Count
-       size += 4
-       // field[1] m.Acls
-       size += 4 * len(m.Acls)
+       size += 4               // m.Count
+       size += 4 * len(m.Acls) // m.Acls
        return size
 }
 func (m *MacipACLInterfaceGetReply) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.Count
-       o.PutUint32(buf[pos:pos+4], uint32(len(m.Acls)))
-       pos += 4
-       // field[1] m.Acls
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(uint32(len(m.Acls)))
        for i := 0; i < len(m.Acls); i++ {
                var x uint32
                if i < len(m.Acls) {
                        x = uint32(m.Acls[i])
                }
-               o.PutUint32(buf[pos:pos+4], uint32(x))
-               pos += 4
-       }
-       return buf, nil
-}
-func (m *MacipACLInterfaceGetReply) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.Count
-       m.Count = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.Acls
+               buf.EncodeUint32(x)
+       }
+       return buf.Bytes(), nil
+}
+func (m *MacipACLInterfaceGetReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Count = buf.DecodeUint32()
        m.Acls = make([]uint32, m.Count)
        for i := 0; i < len(m.Acls); i++ {
-               m.Acls[i] = uint32(o.Uint32(tmp[pos : pos+4]))
-               pos += 4
+               m.Acls[i] = buf.DecodeUint32()
        }
        return nil
 }
 
-// MacipACLInterfaceListDetails represents VPP binary API message 'macip_acl_interface_list_details'.
+// MacipACLInterfaceListDetails defines message 'macip_acl_interface_list_details'.
 type MacipACLInterfaceListDetails struct {
        SwIfIndex uint32   `binapi:"u32,name=sw_if_index" json:"sw_if_index,omitempty"`
-       Count     uint8    `binapi:"u8,name=count" json:"count,omitempty" struc:"sizeof=Acls"`
+       Count     uint8    `binapi:"u8,name=count" json:"-"`
        Acls      []uint32 `binapi:"u32[count],name=acls" json:"acls,omitempty"`
 }
 
@@ -2677,156 +1661,120 @@ func (m *MacipACLInterfaceListDetails) Reset() { *m = MacipACLInterfaceListDetai
 func (*MacipACLInterfaceListDetails) GetMessageName() string {
        return "macip_acl_interface_list_details"
 }
-func (*MacipACLInterfaceListDetails) GetCrcString() string            { return "29783fa0" }
-func (*MacipACLInterfaceListDetails) GetMessageType() api.MessageType { return api.ReplyMessage }
+func (*MacipACLInterfaceListDetails) GetCrcString() string { return "29783fa0" }
+func (*MacipACLInterfaceListDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
 
-func (m *MacipACLInterfaceListDetails) Size() int {
+func (m *MacipACLInterfaceListDetails) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.SwIfIndex
-       size += 4
-       // field[1] m.Count
-       size += 1
-       // field[1] m.Acls
-       size += 4 * len(m.Acls)
+       size += 4               // m.SwIfIndex
+       size += 1               // m.Count
+       size += 4 * len(m.Acls) // m.Acls
        return size
 }
 func (m *MacipACLInterfaceListDetails) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.SwIfIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.SwIfIndex))
-       pos += 4
-       // field[1] m.Count
-       buf[pos] = uint8(len(m.Acls))
-       pos += 1
-       // field[1] m.Acls
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.SwIfIndex)
+       buf.EncodeUint8(uint8(len(m.Acls)))
        for i := 0; i < len(m.Acls); i++ {
                var x uint32
                if i < len(m.Acls) {
                        x = uint32(m.Acls[i])
                }
-               o.PutUint32(buf[pos:pos+4], uint32(x))
-               pos += 4
-       }
-       return buf, nil
-}
-func (m *MacipACLInterfaceListDetails) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.SwIfIndex
-       m.SwIfIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
-       // field[1] m.Count
-       m.Count = uint8(tmp[pos])
-       pos += 1
-       // field[1] m.Acls
+               buf.EncodeUint32(x)
+       }
+       return buf.Bytes(), nil
+}
+func (m *MacipACLInterfaceListDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = buf.DecodeUint32()
+       m.Count = buf.DecodeUint8()
        m.Acls = make([]uint32, m.Count)
        for i := 0; i < len(m.Acls); i++ {
-               m.Acls[i] = uint32(o.Uint32(tmp[pos : pos+4]))
-               pos += 4
+               m.Acls[i] = buf.DecodeUint32()
        }
        return nil
 }
 
-// MacipACLInterfaceListDump represents VPP binary API message 'macip_acl_interface_list_dump'.
+// MacipACLInterfaceListDump defines message 'macip_acl_interface_list_dump'.
 type MacipACLInterfaceListDump struct {
        SwIfIndex uint32 `binapi:"u32,name=sw_if_index" json:"sw_if_index,omitempty"`
 }
 
-func (m *MacipACLInterfaceListDump) Reset()                        { *m = MacipACLInterfaceListDump{} }
-func (*MacipACLInterfaceListDump) GetMessageName() string          { return "macip_acl_interface_list_dump" }
-func (*MacipACLInterfaceListDump) GetCrcString() string            { return "529cb13f" }
-func (*MacipACLInterfaceListDump) GetMessageType() api.MessageType { return api.RequestMessage }
+func (m *MacipACLInterfaceListDump) Reset()               { *m = MacipACLInterfaceListDump{} }
+func (*MacipACLInterfaceListDump) GetMessageName() string { return "macip_acl_interface_list_dump" }
+func (*MacipACLInterfaceListDump) GetCrcString() string   { return "529cb13f" }
+func (*MacipACLInterfaceListDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
 
-func (m *MacipACLInterfaceListDump) Size() int {
+func (m *MacipACLInterfaceListDump) Size() (size int) {
        if m == nil {
                return 0
        }
-       var size int
-       // field[1] m.SwIfIndex
-       size += 4
+       size += 4 // m.SwIfIndex
        return size
 }
 func (m *MacipACLInterfaceListDump) Marshal(b []byte) ([]byte, error) {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       var buf []byte
        if b == nil {
-               buf = make([]byte, m.Size())
-       } else {
-               buf = b
-       }
-       // field[1] m.SwIfIndex
-       o.PutUint32(buf[pos:pos+4], uint32(m.SwIfIndex))
-       pos += 4
-       return buf, nil
-}
-func (m *MacipACLInterfaceListDump) Unmarshal(tmp []byte) error {
-       o := binary.BigEndian
-       _ = o
-       pos := 0
-       _ = pos
-       // field[1] m.SwIfIndex
-       m.SwIfIndex = uint32(o.Uint32(tmp[pos : pos+4]))
-       pos += 4
+               b = make([]byte, m.Size())
+       }
+       buf := codec.NewBuffer(b)
+       buf.EncodeUint32(m.SwIfIndex)
+       return buf.Bytes(), nil
+}
+func (m *MacipACLInterfaceListDump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.SwIfIndex = buf.DecodeUint32()
        return nil
 }
 
 func init() { file_acl_binapi_init() }
 func file_acl_binapi_init() {
-       api.RegisterMessage((*ACLAddReplace)(nil), "acl.ACLAddReplace")
-       api.RegisterMessage((*ACLAddReplaceReply)(nil), "acl.ACLAddReplaceReply")
-       api.RegisterMessage((*ACLDel)(nil), "acl.ACLDel")
-       api.RegisterMessage((*ACLDelReply)(nil), "acl.ACLDelReply")
-       api.RegisterMessage((*ACLDetails)(nil), "acl.ACLDetails")
-       api.RegisterMessage((*ACLDump)(nil), "acl.ACLDump")
-       api.RegisterMessage((*ACLInterfaceAddDel)(nil), "acl.ACLInterfaceAddDel")
-       api.RegisterMessage((*ACLInterfaceAddDelReply)(nil), "acl.ACLInterfaceAddDelReply")
-       api.RegisterMessage((*ACLInterfaceEtypeWhitelistDetails)(nil), "acl.ACLInterfaceEtypeWhitelistDetails")
-       api.RegisterMessage((*ACLInterfaceEtypeWhitelistDump)(nil), "acl.ACLInterfaceEtypeWhitelistDump")
-       api.RegisterMessage((*ACLInterfaceListDetails)(nil), "acl.ACLInterfaceListDetails")
-       api.RegisterMessage((*ACLInterfaceListDump)(nil), "acl.ACLInterfaceListDump")
-       api.RegisterMessage((*ACLInterfaceSetACLList)(nil), "acl.ACLInterfaceSetACLList")
-       api.RegisterMessage((*ACLInterfaceSetACLListReply)(nil), "acl.ACLInterfaceSetACLListReply")
-       api.RegisterMessage((*ACLInterfaceSetEtypeWhitelist)(nil), "acl.ACLInterfaceSetEtypeWhitelist")
-       api.RegisterMessage((*ACLInterfaceSetEtypeWhitelistReply)(nil), "acl.ACLInterfaceSetEtypeWhitelistReply")
-       api.RegisterMessage((*ACLPluginControlPing)(nil), "acl.ACLPluginControlPing")
-       api.RegisterMessage((*ACLPluginControlPingReply)(nil), "acl.ACLPluginControlPingReply")
-       api.RegisterMessage((*ACLPluginGetConnTableMaxEntries)(nil), "acl.ACLPluginGetConnTableMaxEntries")
-       api.RegisterMessage((*ACLPluginGetConnTableMaxEntriesReply)(nil), "acl.ACLPluginGetConnTableMaxEntriesReply")
-       api.RegisterMessage((*ACLPluginGetVersion)(nil), "acl.ACLPluginGetVersion")
-       api.RegisterMessage((*ACLPluginGetVersionReply)(nil), "acl.ACLPluginGetVersionReply")
-       api.RegisterMessage((*ACLStatsIntfCountersEnable)(nil), "acl.ACLStatsIntfCountersEnable")
-       api.RegisterMessage((*ACLStatsIntfCountersEnableReply)(nil), "acl.ACLStatsIntfCountersEnableReply")
-       api.RegisterMessage((*MacipACLAdd)(nil), "acl.MacipACLAdd")
-       api.RegisterMessage((*MacipACLAddReplace)(nil), "acl.MacipACLAddReplace")
-       api.RegisterMessage((*MacipACLAddReplaceReply)(nil), "acl.MacipACLAddReplaceReply")
-       api.RegisterMessage((*MacipACLAddReply)(nil), "acl.MacipACLAddReply")
-       api.RegisterMessage((*MacipACLDel)(nil), "acl.MacipACLDel")
-       api.RegisterMessage((*MacipACLDelReply)(nil), "acl.MacipACLDelReply")
-       api.RegisterMessage((*MacipACLDetails)(nil), "acl.MacipACLDetails")
-       api.RegisterMessage((*MacipACLDump)(nil), "acl.MacipACLDump")
-       api.RegisterMessage((*MacipACLInterfaceAddDel)(nil), "acl.MacipACLInterfaceAddDel")
-       api.RegisterMessage((*MacipACLInterfaceAddDelReply)(nil), "acl.MacipACLInterfaceAddDelReply")
-       api.RegisterMessage((*MacipACLInterfaceGet)(nil), "acl.MacipACLInterfaceGet")
-       api.RegisterMessage((*MacipACLInterfaceGetReply)(nil), "acl.MacipACLInterfaceGetReply")
-       api.RegisterMessage((*MacipACLInterfaceListDetails)(nil), "acl.MacipACLInterfaceListDetails")
-       api.RegisterMessage((*MacipACLInterfaceListDump)(nil), "acl.MacipACLInterfaceListDump")
+       api.RegisterMessage((*ACLAddReplace)(nil), "acl_add_replace_13bc8539")
+       api.RegisterMessage((*ACLAddReplaceReply)(nil), "acl_add_replace_reply_ac407b0c")
+       api.RegisterMessage((*ACLDel)(nil), "acl_del_ef34fea4")
+       api.RegisterMessage((*ACLDelReply)(nil), "acl_del_reply_e8d4e804")
+       api.RegisterMessage((*ACLDetails)(nil), "acl_details_f89d7a88")
+       api.RegisterMessage((*ACLDump)(nil), "acl_dump_ef34fea4")
+       api.RegisterMessage((*ACLInterfaceAddDel)(nil), "acl_interface_add_del_0b2aedd1")
+       api.RegisterMessage((*ACLInterfaceAddDelReply)(nil), "acl_interface_add_del_reply_e8d4e804")
+       api.RegisterMessage((*ACLInterfaceEtypeWhitelistDetails)(nil), "acl_interface_etype_whitelist_details_6a5d4e81")
+       api.RegisterMessage((*ACLInterfaceEtypeWhitelistDump)(nil), "acl_interface_etype_whitelist_dump_529cb13f")
+       api.RegisterMessage((*ACLInterfaceListDetails)(nil), "acl_interface_list_details_d5e80809")
+       api.RegisterMessage((*ACLInterfaceListDump)(nil), "acl_interface_list_dump_529cb13f")
+       api.RegisterMessage((*ACLInterfaceSetACLList)(nil), "acl_interface_set_acl_list_8baece38")
+       api.RegisterMessage((*ACLInterfaceSetACLListReply)(nil), "acl_interface_set_acl_list_reply_e8d4e804")
+       api.RegisterMessage((*ACLInterfaceSetEtypeWhitelist)(nil), "acl_interface_set_etype_whitelist_f515efc5")
+       api.RegisterMessage((*ACLInterfaceSetEtypeWhitelistReply)(nil), "acl_interface_set_etype_whitelist_reply_e8d4e804")
+       api.RegisterMessage((*ACLPluginControlPing)(nil), "acl_plugin_control_ping_51077d14")
+       api.RegisterMessage((*ACLPluginControlPingReply)(nil), "acl_plugin_control_ping_reply_f6b0b8ca")
+       api.RegisterMessage((*ACLPluginGetConnTableMaxEntries)(nil), "acl_plugin_get_conn_table_max_entries_51077d14")
+       api.RegisterMessage((*ACLPluginGetConnTableMaxEntriesReply)(nil), "acl_plugin_get_conn_table_max_entries_reply_7a096d3d")
+       api.RegisterMessage((*ACLPluginGetVersion)(nil), "acl_plugin_get_version_51077d14")
+       api.RegisterMessage((*ACLPluginGetVersionReply)(nil), "acl_plugin_get_version_reply_9b32cf86")
+       api.RegisterMessage((*ACLStatsIntfCountersEnable)(nil), "acl_stats_intf_counters_enable_b3e225d2")
+       api.RegisterMessage((*ACLStatsIntfCountersEnableReply)(nil), "acl_stats_intf_counters_enable_reply_e8d4e804")
+       api.RegisterMessage((*MacipACLAdd)(nil), "macip_acl_add_0c680ca5")
+       api.RegisterMessage((*MacipACLAddReplace)(nil), "macip_acl_add_replace_d3d313e7")
+       api.RegisterMessage((*MacipACLAddReplaceReply)(nil), "macip_acl_add_replace_reply_ac407b0c")
+       api.RegisterMessage((*MacipACLAddReply)(nil), "macip_acl_add_reply_ac407b0c")
+       api.RegisterMessage((*MacipACLDel)(nil), "macip_acl_del_ef34fea4")
+       api.RegisterMessage((*MacipACLDelReply)(nil), "macip_acl_del_reply_e8d4e804")
+       api.RegisterMessage((*MacipACLDetails)(nil), "macip_acl_details_e164e69a")
+       api.RegisterMessage((*MacipACLDump)(nil), "macip_acl_dump_ef34fea4")
+       api.RegisterMessage((*MacipACLInterfaceAddDel)(nil), "macip_acl_interface_add_del_6a6be97c")
+       api.RegisterMessage((*MacipACLInterfaceAddDelReply)(nil), "macip_acl_interface_add_del_reply_e8d4e804")
+       api.RegisterMessage((*MacipACLInterfaceGet)(nil), "macip_acl_interface_get_51077d14")
+       api.RegisterMessage((*MacipACLInterfaceGetReply)(nil), "macip_acl_interface_get_reply_accf9b05")
+       api.RegisterMessage((*MacipACLInterfaceListDetails)(nil), "macip_acl_interface_list_details_29783fa0")
+       api.RegisterMessage((*MacipACLInterfaceListDump)(nil), "macip_acl_interface_list_dump_529cb13f")
 }
 
 // Messages returns list of all messages in this module.
@@ -2872,14 +1820,3 @@ func AllMessages() []api.Message {
                (*MacipACLInterfaceListDump)(nil),
        }
 }
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = api.RegisterMessage
-var _ = codec.DecodeString
-var _ = bytes.NewBuffer
-var _ = context.Background
-var _ = io.Copy
-var _ = strconv.Itoa
-var _ = struc.Pack
-var _ = binary.BigEndian
-var _ = math.Float32bits