Improve binapi generator
[govpp.git] / binapi / bier / bier.ba.go
diff --git a/binapi/bier/bier.ba.go b/binapi/bier/bier.ba.go
new file mode 100644 (file)
index 0000000..456e25c
--- /dev/null
@@ -0,0 +1,1343 @@
+// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
+// versions:
+//  binapi-generator: v0.4.0-dev
+//  VPP:              20.05-release
+// source: /usr/share/vpp/api/core/bier.api.json
+
+// Package bier contains generated bindings for API file bier.api.
+//
+// Contents:
+//   2 structs
+//  22 messages
+//
+package bier
+
+import (
+       api "git.fd.io/govpp.git/api"
+       fib_types "git.fd.io/govpp.git/binapi/fib_types"
+       _ "git.fd.io/govpp.git/binapi/ip_types"
+       codec "git.fd.io/govpp.git/codec"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the GoVPP api package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// GoVPP api package needs to be updated.
+const _ = api.GoVppAPIPackageIsVersion2
+
+const (
+       APIFile    = "bier"
+       APIVersion = "1.2.1"
+       VersionCrc = 0x9196a2d4
+)
+
+// BierRoute defines type 'bier_route'.
+type BierRoute struct {
+       BrBp     uint32              `binapi:"u32,name=br_bp" json:"br_bp,omitempty"`
+       BrTblID  BierTableID         `binapi:"bier_table_id,name=br_tbl_id" json:"br_tbl_id,omitempty"`
+       BrNPaths uint8               `binapi:"u8,name=br_n_paths" json:"-"`
+       BrPaths  []fib_types.FibPath `binapi:"fib_path[br_n_paths],name=br_paths" json:"br_paths,omitempty"`
+}
+
+// BierTableID defines type 'bier_table_id'.
+type BierTableID struct {
+       BtSet       uint8 `binapi:"u8,name=bt_set" json:"bt_set,omitempty"`
+       BtSubDomain uint8 `binapi:"u8,name=bt_sub_domain" json:"bt_sub_domain,omitempty"`
+       BtHdrLenID  uint8 `binapi:"u8,name=bt_hdr_len_id" json:"bt_hdr_len_id,omitempty"`
+}
+
+// BierDispEntryAddDel defines message 'bier_disp_entry_add_del'.
+type BierDispEntryAddDel struct {
+       BdeBp           uint16              `binapi:"u16,name=bde_bp" json:"bde_bp,omitempty"`
+       BdeTblID        uint32              `binapi:"u32,name=bde_tbl_id" json:"bde_tbl_id,omitempty"`
+       BdeIsAdd        bool                `binapi:"bool,name=bde_is_add" json:"bde_is_add,omitempty"`
+       BdePayloadProto uint8               `binapi:"u8,name=bde_payload_proto" json:"bde_payload_proto,omitempty"`
+       BdeNPaths       uint8               `binapi:"u8,name=bde_n_paths" json:"-"`
+       BdePaths        []fib_types.FibPath `binapi:"fib_path[bde_n_paths],name=bde_paths" json:"bde_paths,omitempty"`
+}
+
+func (m *BierDispEntryAddDel) Reset()               { *m = BierDispEntryAddDel{} }
+func (*BierDispEntryAddDel) GetMessageName() string { return "bier_disp_entry_add_del" }
+func (*BierDispEntryAddDel) GetCrcString() string   { return "648323eb" }
+func (*BierDispEntryAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *BierDispEntryAddDel) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 2 // m.BdeBp
+       size += 4 // m.BdeTblID
+       size += 1 // m.BdeIsAdd
+       size += 1 // m.BdePayloadProto
+       size += 1 // m.BdeNPaths
+       for j1 := 0; j1 < len(m.BdePaths); j1++ {
+               var s1 fib_types.FibPath
+               _ = s1
+               if j1 < len(m.BdePaths) {
+                       s1 = m.BdePaths[j1]
+               }
+               size += 4      // s1.SwIfIndex
+               size += 4      // s1.TableID
+               size += 4      // s1.RpfID
+               size += 1      // s1.Weight
+               size += 1      // s1.Preference
+               size += 4      // s1.Type
+               size += 4      // s1.Flags
+               size += 4      // s1.Proto
+               size += 1 * 16 // s1.Nh.Address
+               size += 4      // s1.Nh.ViaLabel
+               size += 4      // s1.Nh.ObjID
+               size += 4      // s1.Nh.ClassifyTableIndex
+               size += 1      // s1.NLabels
+               for j2 := 0; j2 < 16; j2++ {
+                       var s2 fib_types.FibMplsLabel
+                       _ = s2
+                       if j2 < len(s1.LabelStack) {
+                               s2 = s1.LabelStack[j2]
+                       }
+                       size += 1 // s2.IsUniform
+                       size += 4 // s2.Label
+                       size += 1 // s2.TTL
+                       size += 1 // s2.Exp
+               }
+       }
+       return size
+}
+func (m *BierDispEntryAddDel) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint16(uint16(m.BdeBp))
+       buf.EncodeUint32(uint32(m.BdeTblID))
+       buf.EncodeBool(m.BdeIsAdd)
+       buf.EncodeUint8(uint8(m.BdePayloadProto))
+       buf.EncodeUint8(uint8(len(m.BdePaths)))
+       for j0 := 0; j0 < len(m.BdePaths); j0++ {
+               var v0 fib_types.FibPath
+               if j0 < len(m.BdePaths) {
+                       v0 = m.BdePaths[j0]
+               }
+               buf.EncodeUint32(uint32(v0.SwIfIndex))
+               buf.EncodeUint32(uint32(v0.TableID))
+               buf.EncodeUint32(uint32(v0.RpfID))
+               buf.EncodeUint8(uint8(v0.Weight))
+               buf.EncodeUint8(uint8(v0.Preference))
+               buf.EncodeUint32(uint32(v0.Type))
+               buf.EncodeUint32(uint32(v0.Flags))
+               buf.EncodeUint32(uint32(v0.Proto))
+               buf.EncodeBytes(v0.Nh.Address.XXX_UnionData[:], 0)
+               buf.EncodeUint32(uint32(v0.Nh.ViaLabel))
+               buf.EncodeUint32(uint32(v0.Nh.ObjID))
+               buf.EncodeUint32(uint32(v0.Nh.ClassifyTableIndex))
+               buf.EncodeUint8(uint8(v0.NLabels))
+               for j1 := 0; j1 < 16; j1++ {
+                       var v1 fib_types.FibMplsLabel
+                       if j1 < len(v0.LabelStack) {
+                               v1 = v0.LabelStack[j1]
+                       }
+                       buf.EncodeUint8(uint8(v1.IsUniform))
+                       buf.EncodeUint32(uint32(v1.Label))
+                       buf.EncodeUint8(uint8(v1.TTL))
+                       buf.EncodeUint8(uint8(v1.Exp))
+               }
+       }
+       return buf.Bytes(), nil
+}
+func (m *BierDispEntryAddDel) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.BdeBp = buf.DecodeUint16()
+       m.BdeTblID = buf.DecodeUint32()
+       m.BdeIsAdd = buf.DecodeBool()
+       m.BdePayloadProto = buf.DecodeUint8()
+       m.BdeNPaths = buf.DecodeUint8()
+       m.BdePaths = make([]fib_types.FibPath, int(m.BdeNPaths))
+       for j0 := 0; j0 < len(m.BdePaths); j0++ {
+               m.BdePaths[j0].SwIfIndex = buf.DecodeUint32()
+               m.BdePaths[j0].TableID = buf.DecodeUint32()
+               m.BdePaths[j0].RpfID = buf.DecodeUint32()
+               m.BdePaths[j0].Weight = buf.DecodeUint8()
+               m.BdePaths[j0].Preference = buf.DecodeUint8()
+               m.BdePaths[j0].Type = fib_types.FibPathType(buf.DecodeUint32())
+               m.BdePaths[j0].Flags = fib_types.FibPathFlags(buf.DecodeUint32())
+               m.BdePaths[j0].Proto = fib_types.FibPathNhProto(buf.DecodeUint32())
+               copy(m.BdePaths[j0].Nh.Address.XXX_UnionData[:], buf.DecodeBytes(16))
+               m.BdePaths[j0].Nh.ViaLabel = buf.DecodeUint32()
+               m.BdePaths[j0].Nh.ObjID = buf.DecodeUint32()
+               m.BdePaths[j0].Nh.ClassifyTableIndex = buf.DecodeUint32()
+               m.BdePaths[j0].NLabels = buf.DecodeUint8()
+               for j1 := 0; j1 < 16; j1++ {
+                       m.BdePaths[j0].LabelStack[j1].IsUniform = buf.DecodeUint8()
+                       m.BdePaths[j0].LabelStack[j1].Label = buf.DecodeUint32()
+                       m.BdePaths[j0].LabelStack[j1].TTL = buf.DecodeUint8()
+                       m.BdePaths[j0].LabelStack[j1].Exp = buf.DecodeUint8()
+               }
+       }
+       return nil
+}
+
+// BierDispEntryAddDelReply defines message 'bier_disp_entry_add_del_reply'.
+type BierDispEntryAddDelReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *BierDispEntryAddDelReply) Reset()               { *m = BierDispEntryAddDelReply{} }
+func (*BierDispEntryAddDelReply) GetMessageName() string { return "bier_disp_entry_add_del_reply" }
+func (*BierDispEntryAddDelReply) GetCrcString() string   { return "e8d4e804" }
+func (*BierDispEntryAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *BierDispEntryAddDelReply) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.Retval
+       return size
+}
+func (m *BierDispEntryAddDelReply) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.Retval))
+       return buf.Bytes(), nil
+}
+func (m *BierDispEntryAddDelReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = int32(buf.DecodeUint32())
+       return nil
+}
+
+// BierDispEntryDetails defines message 'bier_disp_entry_details'.
+type BierDispEntryDetails struct {
+       BdeBp           uint16              `binapi:"u16,name=bde_bp" json:"bde_bp,omitempty"`
+       BdeTblID        uint32              `binapi:"u32,name=bde_tbl_id" json:"bde_tbl_id,omitempty"`
+       BdeIsAdd        bool                `binapi:"bool,name=bde_is_add" json:"bde_is_add,omitempty"`
+       BdePayloadProto uint8               `binapi:"u8,name=bde_payload_proto" json:"bde_payload_proto,omitempty"`
+       BdeNPaths       uint8               `binapi:"u8,name=bde_n_paths" json:"-"`
+       BdePaths        []fib_types.FibPath `binapi:"fib_path[bde_n_paths],name=bde_paths" json:"bde_paths,omitempty"`
+}
+
+func (m *BierDispEntryDetails) Reset()               { *m = BierDispEntryDetails{} }
+func (*BierDispEntryDetails) GetMessageName() string { return "bier_disp_entry_details" }
+func (*BierDispEntryDetails) GetCrcString() string   { return "e5b039a9" }
+func (*BierDispEntryDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *BierDispEntryDetails) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 2 // m.BdeBp
+       size += 4 // m.BdeTblID
+       size += 1 // m.BdeIsAdd
+       size += 1 // m.BdePayloadProto
+       size += 1 // m.BdeNPaths
+       for j1 := 0; j1 < len(m.BdePaths); j1++ {
+               var s1 fib_types.FibPath
+               _ = s1
+               if j1 < len(m.BdePaths) {
+                       s1 = m.BdePaths[j1]
+               }
+               size += 4      // s1.SwIfIndex
+               size += 4      // s1.TableID
+               size += 4      // s1.RpfID
+               size += 1      // s1.Weight
+               size += 1      // s1.Preference
+               size += 4      // s1.Type
+               size += 4      // s1.Flags
+               size += 4      // s1.Proto
+               size += 1 * 16 // s1.Nh.Address
+               size += 4      // s1.Nh.ViaLabel
+               size += 4      // s1.Nh.ObjID
+               size += 4      // s1.Nh.ClassifyTableIndex
+               size += 1      // s1.NLabels
+               for j2 := 0; j2 < 16; j2++ {
+                       var s2 fib_types.FibMplsLabel
+                       _ = s2
+                       if j2 < len(s1.LabelStack) {
+                               s2 = s1.LabelStack[j2]
+                       }
+                       size += 1 // s2.IsUniform
+                       size += 4 // s2.Label
+                       size += 1 // s2.TTL
+                       size += 1 // s2.Exp
+               }
+       }
+       return size
+}
+func (m *BierDispEntryDetails) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint16(uint16(m.BdeBp))
+       buf.EncodeUint32(uint32(m.BdeTblID))
+       buf.EncodeBool(m.BdeIsAdd)
+       buf.EncodeUint8(uint8(m.BdePayloadProto))
+       buf.EncodeUint8(uint8(len(m.BdePaths)))
+       for j0 := 0; j0 < len(m.BdePaths); j0++ {
+               var v0 fib_types.FibPath
+               if j0 < len(m.BdePaths) {
+                       v0 = m.BdePaths[j0]
+               }
+               buf.EncodeUint32(uint32(v0.SwIfIndex))
+               buf.EncodeUint32(uint32(v0.TableID))
+               buf.EncodeUint32(uint32(v0.RpfID))
+               buf.EncodeUint8(uint8(v0.Weight))
+               buf.EncodeUint8(uint8(v0.Preference))
+               buf.EncodeUint32(uint32(v0.Type))
+               buf.EncodeUint32(uint32(v0.Flags))
+               buf.EncodeUint32(uint32(v0.Proto))
+               buf.EncodeBytes(v0.Nh.Address.XXX_UnionData[:], 0)
+               buf.EncodeUint32(uint32(v0.Nh.ViaLabel))
+               buf.EncodeUint32(uint32(v0.Nh.ObjID))
+               buf.EncodeUint32(uint32(v0.Nh.ClassifyTableIndex))
+               buf.EncodeUint8(uint8(v0.NLabels))
+               for j1 := 0; j1 < 16; j1++ {
+                       var v1 fib_types.FibMplsLabel
+                       if j1 < len(v0.LabelStack) {
+                               v1 = v0.LabelStack[j1]
+                       }
+                       buf.EncodeUint8(uint8(v1.IsUniform))
+                       buf.EncodeUint32(uint32(v1.Label))
+                       buf.EncodeUint8(uint8(v1.TTL))
+                       buf.EncodeUint8(uint8(v1.Exp))
+               }
+       }
+       return buf.Bytes(), nil
+}
+func (m *BierDispEntryDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.BdeBp = buf.DecodeUint16()
+       m.BdeTblID = buf.DecodeUint32()
+       m.BdeIsAdd = buf.DecodeBool()
+       m.BdePayloadProto = buf.DecodeUint8()
+       m.BdeNPaths = buf.DecodeUint8()
+       m.BdePaths = make([]fib_types.FibPath, int(m.BdeNPaths))
+       for j0 := 0; j0 < len(m.BdePaths); j0++ {
+               m.BdePaths[j0].SwIfIndex = buf.DecodeUint32()
+               m.BdePaths[j0].TableID = buf.DecodeUint32()
+               m.BdePaths[j0].RpfID = buf.DecodeUint32()
+               m.BdePaths[j0].Weight = buf.DecodeUint8()
+               m.BdePaths[j0].Preference = buf.DecodeUint8()
+               m.BdePaths[j0].Type = fib_types.FibPathType(buf.DecodeUint32())
+               m.BdePaths[j0].Flags = fib_types.FibPathFlags(buf.DecodeUint32())
+               m.BdePaths[j0].Proto = fib_types.FibPathNhProto(buf.DecodeUint32())
+               copy(m.BdePaths[j0].Nh.Address.XXX_UnionData[:], buf.DecodeBytes(16))
+               m.BdePaths[j0].Nh.ViaLabel = buf.DecodeUint32()
+               m.BdePaths[j0].Nh.ObjID = buf.DecodeUint32()
+               m.BdePaths[j0].Nh.ClassifyTableIndex = buf.DecodeUint32()
+               m.BdePaths[j0].NLabels = buf.DecodeUint8()
+               for j1 := 0; j1 < 16; j1++ {
+                       m.BdePaths[j0].LabelStack[j1].IsUniform = buf.DecodeUint8()
+                       m.BdePaths[j0].LabelStack[j1].Label = buf.DecodeUint32()
+                       m.BdePaths[j0].LabelStack[j1].TTL = buf.DecodeUint8()
+                       m.BdePaths[j0].LabelStack[j1].Exp = buf.DecodeUint8()
+               }
+       }
+       return nil
+}
+
+// BierDispEntryDump defines message 'bier_disp_entry_dump'.
+type BierDispEntryDump struct {
+       BdeTblID uint32 `binapi:"u32,name=bde_tbl_id" json:"bde_tbl_id,omitempty"`
+}
+
+func (m *BierDispEntryDump) Reset()               { *m = BierDispEntryDump{} }
+func (*BierDispEntryDump) GetMessageName() string { return "bier_disp_entry_dump" }
+func (*BierDispEntryDump) GetCrcString() string   { return "b5fa54ad" }
+func (*BierDispEntryDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *BierDispEntryDump) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.BdeTblID
+       return size
+}
+func (m *BierDispEntryDump) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.BdeTblID))
+       return buf.Bytes(), nil
+}
+func (m *BierDispEntryDump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.BdeTblID = buf.DecodeUint32()
+       return nil
+}
+
+// BierDispTableAddDel defines message 'bier_disp_table_add_del'.
+type BierDispTableAddDel struct {
+       BdtTblID uint32 `binapi:"u32,name=bdt_tbl_id" json:"bdt_tbl_id,omitempty"`
+       BdtIsAdd bool   `binapi:"bool,name=bdt_is_add" json:"bdt_is_add,omitempty"`
+}
+
+func (m *BierDispTableAddDel) Reset()               { *m = BierDispTableAddDel{} }
+func (*BierDispTableAddDel) GetMessageName() string { return "bier_disp_table_add_del" }
+func (*BierDispTableAddDel) GetCrcString() string   { return "889657ac" }
+func (*BierDispTableAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *BierDispTableAddDel) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.BdtTblID
+       size += 1 // m.BdtIsAdd
+       return size
+}
+func (m *BierDispTableAddDel) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.BdtTblID))
+       buf.EncodeBool(m.BdtIsAdd)
+       return buf.Bytes(), nil
+}
+func (m *BierDispTableAddDel) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.BdtTblID = buf.DecodeUint32()
+       m.BdtIsAdd = buf.DecodeBool()
+       return nil
+}
+
+// BierDispTableAddDelReply defines message 'bier_disp_table_add_del_reply'.
+type BierDispTableAddDelReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *BierDispTableAddDelReply) Reset()               { *m = BierDispTableAddDelReply{} }
+func (*BierDispTableAddDelReply) GetMessageName() string { return "bier_disp_table_add_del_reply" }
+func (*BierDispTableAddDelReply) GetCrcString() string   { return "e8d4e804" }
+func (*BierDispTableAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *BierDispTableAddDelReply) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.Retval
+       return size
+}
+func (m *BierDispTableAddDelReply) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.Retval))
+       return buf.Bytes(), nil
+}
+func (m *BierDispTableAddDelReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = int32(buf.DecodeUint32())
+       return nil
+}
+
+// BierDispTableDetails defines message 'bier_disp_table_details'.
+type BierDispTableDetails struct {
+       BdtTblID uint32 `binapi:"u32,name=bdt_tbl_id" json:"bdt_tbl_id,omitempty"`
+}
+
+func (m *BierDispTableDetails) Reset()               { *m = BierDispTableDetails{} }
+func (*BierDispTableDetails) GetMessageName() string { return "bier_disp_table_details" }
+func (*BierDispTableDetails) GetCrcString() string   { return "d27942c0" }
+func (*BierDispTableDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *BierDispTableDetails) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.BdtTblID
+       return size
+}
+func (m *BierDispTableDetails) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.BdtTblID))
+       return buf.Bytes(), nil
+}
+func (m *BierDispTableDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.BdtTblID = buf.DecodeUint32()
+       return nil
+}
+
+// BierDispTableDump defines message 'bier_disp_table_dump'.
+type BierDispTableDump struct{}
+
+func (m *BierDispTableDump) Reset()               { *m = BierDispTableDump{} }
+func (*BierDispTableDump) GetMessageName() string { return "bier_disp_table_dump" }
+func (*BierDispTableDump) GetCrcString() string   { return "51077d14" }
+func (*BierDispTableDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *BierDispTableDump) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       return size
+}
+func (m *BierDispTableDump) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       return buf.Bytes(), nil
+}
+func (m *BierDispTableDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+// BierImpAdd defines message 'bier_imp_add'.
+type BierImpAdd struct {
+       BiTblID  BierTableID `binapi:"bier_table_id,name=bi_tbl_id" json:"bi_tbl_id,omitempty"`
+       BiSrc    uint16      `binapi:"u16,name=bi_src" json:"bi_src,omitempty"`
+       BiNBytes uint8       `binapi:"u8,name=bi_n_bytes" json:"-"`
+       BiBytes  []byte      `binapi:"u8[bi_n_bytes],name=bi_bytes" json:"bi_bytes,omitempty"`
+}
+
+func (m *BierImpAdd) Reset()               { *m = BierImpAdd{} }
+func (*BierImpAdd) GetMessageName() string { return "bier_imp_add" }
+func (*BierImpAdd) GetCrcString() string   { return "3856dc3d" }
+func (*BierImpAdd) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *BierImpAdd) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 1                  // m.BiTblID.BtSet
+       size += 1                  // m.BiTblID.BtSubDomain
+       size += 1                  // m.BiTblID.BtHdrLenID
+       size += 2                  // m.BiSrc
+       size += 1                  // m.BiNBytes
+       size += 1 * len(m.BiBytes) // m.BiBytes
+       return size
+}
+func (m *BierImpAdd) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint8(uint8(m.BiTblID.BtSet))
+       buf.EncodeUint8(uint8(m.BiTblID.BtSubDomain))
+       buf.EncodeUint8(uint8(m.BiTblID.BtHdrLenID))
+       buf.EncodeUint16(uint16(m.BiSrc))
+       buf.EncodeUint8(uint8(len(m.BiBytes)))
+       buf.EncodeBytes(m.BiBytes[:], 0)
+       return buf.Bytes(), nil
+}
+func (m *BierImpAdd) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.BiTblID.BtSet = buf.DecodeUint8()
+       m.BiTblID.BtSubDomain = buf.DecodeUint8()
+       m.BiTblID.BtHdrLenID = buf.DecodeUint8()
+       m.BiSrc = buf.DecodeUint16()
+       m.BiNBytes = buf.DecodeUint8()
+       copy(m.BiBytes[:], buf.DecodeBytes(0))
+       return nil
+}
+
+// BierImpAddReply defines message 'bier_imp_add_reply'.
+type BierImpAddReply struct {
+       Retval  int32  `binapi:"i32,name=retval" json:"retval,omitempty"`
+       BiIndex uint32 `binapi:"u32,name=bi_index" json:"bi_index,omitempty"`
+}
+
+func (m *BierImpAddReply) Reset()               { *m = BierImpAddReply{} }
+func (*BierImpAddReply) GetMessageName() string { return "bier_imp_add_reply" }
+func (*BierImpAddReply) GetCrcString() string   { return "d49c5793" }
+func (*BierImpAddReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *BierImpAddReply) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.Retval
+       size += 4 // m.BiIndex
+       return size
+}
+func (m *BierImpAddReply) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.Retval))
+       buf.EncodeUint32(uint32(m.BiIndex))
+       return buf.Bytes(), nil
+}
+func (m *BierImpAddReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = int32(buf.DecodeUint32())
+       m.BiIndex = buf.DecodeUint32()
+       return nil
+}
+
+// BierImpDel defines message 'bier_imp_del'.
+type BierImpDel struct {
+       BiIndex uint32 `binapi:"u32,name=bi_index" json:"bi_index,omitempty"`
+}
+
+func (m *BierImpDel) Reset()               { *m = BierImpDel{} }
+func (*BierImpDel) GetMessageName() string { return "bier_imp_del" }
+func (*BierImpDel) GetCrcString() string   { return "7d45edf6" }
+func (*BierImpDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *BierImpDel) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.BiIndex
+       return size
+}
+func (m *BierImpDel) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.BiIndex))
+       return buf.Bytes(), nil
+}
+func (m *BierImpDel) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.BiIndex = buf.DecodeUint32()
+       return nil
+}
+
+// BierImpDelReply defines message 'bier_imp_del_reply'.
+type BierImpDelReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *BierImpDelReply) Reset()               { *m = BierImpDelReply{} }
+func (*BierImpDelReply) GetMessageName() string { return "bier_imp_del_reply" }
+func (*BierImpDelReply) GetCrcString() string   { return "e8d4e804" }
+func (*BierImpDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *BierImpDelReply) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.Retval
+       return size
+}
+func (m *BierImpDelReply) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.Retval))
+       return buf.Bytes(), nil
+}
+func (m *BierImpDelReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = int32(buf.DecodeUint32())
+       return nil
+}
+
+// BierImpDetails defines message 'bier_imp_details'.
+type BierImpDetails struct {
+       BiTblID  BierTableID `binapi:"bier_table_id,name=bi_tbl_id" json:"bi_tbl_id,omitempty"`
+       BiSrc    uint16      `binapi:"u16,name=bi_src" json:"bi_src,omitempty"`
+       BiNBytes uint8       `binapi:"u8,name=bi_n_bytes" json:"-"`
+       BiBytes  []byte      `binapi:"u8[bi_n_bytes],name=bi_bytes" json:"bi_bytes,omitempty"`
+}
+
+func (m *BierImpDetails) Reset()               { *m = BierImpDetails{} }
+func (*BierImpDetails) GetMessageName() string { return "bier_imp_details" }
+func (*BierImpDetails) GetCrcString() string   { return "b76192df" }
+func (*BierImpDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *BierImpDetails) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 1                  // m.BiTblID.BtSet
+       size += 1                  // m.BiTblID.BtSubDomain
+       size += 1                  // m.BiTblID.BtHdrLenID
+       size += 2                  // m.BiSrc
+       size += 1                  // m.BiNBytes
+       size += 1 * len(m.BiBytes) // m.BiBytes
+       return size
+}
+func (m *BierImpDetails) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint8(uint8(m.BiTblID.BtSet))
+       buf.EncodeUint8(uint8(m.BiTblID.BtSubDomain))
+       buf.EncodeUint8(uint8(m.BiTblID.BtHdrLenID))
+       buf.EncodeUint16(uint16(m.BiSrc))
+       buf.EncodeUint8(uint8(len(m.BiBytes)))
+       buf.EncodeBytes(m.BiBytes[:], 0)
+       return buf.Bytes(), nil
+}
+func (m *BierImpDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.BiTblID.BtSet = buf.DecodeUint8()
+       m.BiTblID.BtSubDomain = buf.DecodeUint8()
+       m.BiTblID.BtHdrLenID = buf.DecodeUint8()
+       m.BiSrc = buf.DecodeUint16()
+       m.BiNBytes = buf.DecodeUint8()
+       copy(m.BiBytes[:], buf.DecodeBytes(0))
+       return nil
+}
+
+// BierImpDump defines message 'bier_imp_dump'.
+type BierImpDump struct{}
+
+func (m *BierImpDump) Reset()               { *m = BierImpDump{} }
+func (*BierImpDump) GetMessageName() string { return "bier_imp_dump" }
+func (*BierImpDump) GetCrcString() string   { return "51077d14" }
+func (*BierImpDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *BierImpDump) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       return size
+}
+func (m *BierImpDump) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       return buf.Bytes(), nil
+}
+func (m *BierImpDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+// BierRouteAddDel defines message 'bier_route_add_del'.
+type BierRouteAddDel struct {
+       BrIsAdd     bool      `binapi:"bool,name=br_is_add" json:"br_is_add,omitempty"`
+       BrIsReplace bool      `binapi:"bool,name=br_is_replace" json:"br_is_replace,omitempty"`
+       BrRoute     BierRoute `binapi:"bier_route,name=br_route" json:"br_route,omitempty"`
+}
+
+func (m *BierRouteAddDel) Reset()               { *m = BierRouteAddDel{} }
+func (*BierRouteAddDel) GetMessageName() string { return "bier_route_add_del" }
+func (*BierRouteAddDel) GetCrcString() string   { return "f29edca0" }
+func (*BierRouteAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *BierRouteAddDel) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 1 // m.BrIsAdd
+       size += 1 // m.BrIsReplace
+       size += 4 // m.BrRoute.BrBp
+       size += 1 // m.BrRoute.BrTblID.BtSet
+       size += 1 // m.BrRoute.BrTblID.BtSubDomain
+       size += 1 // m.BrRoute.BrTblID.BtHdrLenID
+       size += 1 // m.BrRoute.BrNPaths
+       for j2 := 0; j2 < len(m.BrRoute.BrPaths); j2++ {
+               var s2 fib_types.FibPath
+               _ = s2
+               if j2 < len(m.BrRoute.BrPaths) {
+                       s2 = m.BrRoute.BrPaths[j2]
+               }
+               size += 4      // s2.SwIfIndex
+               size += 4      // s2.TableID
+               size += 4      // s2.RpfID
+               size += 1      // s2.Weight
+               size += 1      // s2.Preference
+               size += 4      // s2.Type
+               size += 4      // s2.Flags
+               size += 4      // s2.Proto
+               size += 1 * 16 // s2.Nh.Address
+               size += 4      // s2.Nh.ViaLabel
+               size += 4      // s2.Nh.ObjID
+               size += 4      // s2.Nh.ClassifyTableIndex
+               size += 1      // s2.NLabels
+               for j3 := 0; j3 < 16; j3++ {
+                       var s3 fib_types.FibMplsLabel
+                       _ = s3
+                       if j3 < len(s2.LabelStack) {
+                               s3 = s2.LabelStack[j3]
+                       }
+                       size += 1 // s3.IsUniform
+                       size += 4 // s3.Label
+                       size += 1 // s3.TTL
+                       size += 1 // s3.Exp
+               }
+       }
+       return size
+}
+func (m *BierRouteAddDel) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeBool(m.BrIsAdd)
+       buf.EncodeBool(m.BrIsReplace)
+       buf.EncodeUint32(uint32(m.BrRoute.BrBp))
+       buf.EncodeUint8(uint8(m.BrRoute.BrTblID.BtSet))
+       buf.EncodeUint8(uint8(m.BrRoute.BrTblID.BtSubDomain))
+       buf.EncodeUint8(uint8(m.BrRoute.BrTblID.BtHdrLenID))
+       buf.EncodeUint8(uint8(len(m.BrRoute.BrPaths)))
+       for j1 := 0; j1 < len(m.BrRoute.BrPaths); j1++ {
+               var v1 fib_types.FibPath
+               if j1 < len(m.BrRoute.BrPaths) {
+                       v1 = m.BrRoute.BrPaths[j1]
+               }
+               buf.EncodeUint32(uint32(v1.SwIfIndex))
+               buf.EncodeUint32(uint32(v1.TableID))
+               buf.EncodeUint32(uint32(v1.RpfID))
+               buf.EncodeUint8(uint8(v1.Weight))
+               buf.EncodeUint8(uint8(v1.Preference))
+               buf.EncodeUint32(uint32(v1.Type))
+               buf.EncodeUint32(uint32(v1.Flags))
+               buf.EncodeUint32(uint32(v1.Proto))
+               buf.EncodeBytes(v1.Nh.Address.XXX_UnionData[:], 0)
+               buf.EncodeUint32(uint32(v1.Nh.ViaLabel))
+               buf.EncodeUint32(uint32(v1.Nh.ObjID))
+               buf.EncodeUint32(uint32(v1.Nh.ClassifyTableIndex))
+               buf.EncodeUint8(uint8(v1.NLabels))
+               for j2 := 0; j2 < 16; j2++ {
+                       var v2 fib_types.FibMplsLabel
+                       if j2 < len(v1.LabelStack) {
+                               v2 = v1.LabelStack[j2]
+                       }
+                       buf.EncodeUint8(uint8(v2.IsUniform))
+                       buf.EncodeUint32(uint32(v2.Label))
+                       buf.EncodeUint8(uint8(v2.TTL))
+                       buf.EncodeUint8(uint8(v2.Exp))
+               }
+       }
+       return buf.Bytes(), nil
+}
+func (m *BierRouteAddDel) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.BrIsAdd = buf.DecodeBool()
+       m.BrIsReplace = buf.DecodeBool()
+       m.BrRoute.BrBp = buf.DecodeUint32()
+       m.BrRoute.BrTblID.BtSet = buf.DecodeUint8()
+       m.BrRoute.BrTblID.BtSubDomain = buf.DecodeUint8()
+       m.BrRoute.BrTblID.BtHdrLenID = buf.DecodeUint8()
+       m.BrRoute.BrNPaths = buf.DecodeUint8()
+       m.BrRoute.BrPaths = make([]fib_types.FibPath, int(m.BrRoute.BrNPaths))
+       for j1 := 0; j1 < len(m.BrRoute.BrPaths); j1++ {
+               m.BrRoute.BrPaths[j1].SwIfIndex = buf.DecodeUint32()
+               m.BrRoute.BrPaths[j1].TableID = buf.DecodeUint32()
+               m.BrRoute.BrPaths[j1].RpfID = buf.DecodeUint32()
+               m.BrRoute.BrPaths[j1].Weight = buf.DecodeUint8()
+               m.BrRoute.BrPaths[j1].Preference = buf.DecodeUint8()
+               m.BrRoute.BrPaths[j1].Type = fib_types.FibPathType(buf.DecodeUint32())
+               m.BrRoute.BrPaths[j1].Flags = fib_types.FibPathFlags(buf.DecodeUint32())
+               m.BrRoute.BrPaths[j1].Proto = fib_types.FibPathNhProto(buf.DecodeUint32())
+               copy(m.BrRoute.BrPaths[j1].Nh.Address.XXX_UnionData[:], buf.DecodeBytes(16))
+               m.BrRoute.BrPaths[j1].Nh.ViaLabel = buf.DecodeUint32()
+               m.BrRoute.BrPaths[j1].Nh.ObjID = buf.DecodeUint32()
+               m.BrRoute.BrPaths[j1].Nh.ClassifyTableIndex = buf.DecodeUint32()
+               m.BrRoute.BrPaths[j1].NLabels = buf.DecodeUint8()
+               for j2 := 0; j2 < 16; j2++ {
+                       m.BrRoute.BrPaths[j1].LabelStack[j2].IsUniform = buf.DecodeUint8()
+                       m.BrRoute.BrPaths[j1].LabelStack[j2].Label = buf.DecodeUint32()
+                       m.BrRoute.BrPaths[j1].LabelStack[j2].TTL = buf.DecodeUint8()
+                       m.BrRoute.BrPaths[j1].LabelStack[j2].Exp = buf.DecodeUint8()
+               }
+       }
+       return nil
+}
+
+// BierRouteAddDelReply defines message 'bier_route_add_del_reply'.
+type BierRouteAddDelReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *BierRouteAddDelReply) Reset()               { *m = BierRouteAddDelReply{} }
+func (*BierRouteAddDelReply) GetMessageName() string { return "bier_route_add_del_reply" }
+func (*BierRouteAddDelReply) GetCrcString() string   { return "e8d4e804" }
+func (*BierRouteAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *BierRouteAddDelReply) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.Retval
+       return size
+}
+func (m *BierRouteAddDelReply) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.Retval))
+       return buf.Bytes(), nil
+}
+func (m *BierRouteAddDelReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = int32(buf.DecodeUint32())
+       return nil
+}
+
+// BierRouteDetails defines message 'bier_route_details'.
+type BierRouteDetails struct {
+       BrRoute BierRoute `binapi:"bier_route,name=br_route" json:"br_route,omitempty"`
+}
+
+func (m *BierRouteDetails) Reset()               { *m = BierRouteDetails{} }
+func (*BierRouteDetails) GetMessageName() string { return "bier_route_details" }
+func (*BierRouteDetails) GetCrcString() string   { return "39ee6a56" }
+func (*BierRouteDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *BierRouteDetails) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.BrRoute.BrBp
+       size += 1 // m.BrRoute.BrTblID.BtSet
+       size += 1 // m.BrRoute.BrTblID.BtSubDomain
+       size += 1 // m.BrRoute.BrTblID.BtHdrLenID
+       size += 1 // m.BrRoute.BrNPaths
+       for j2 := 0; j2 < len(m.BrRoute.BrPaths); j2++ {
+               var s2 fib_types.FibPath
+               _ = s2
+               if j2 < len(m.BrRoute.BrPaths) {
+                       s2 = m.BrRoute.BrPaths[j2]
+               }
+               size += 4      // s2.SwIfIndex
+               size += 4      // s2.TableID
+               size += 4      // s2.RpfID
+               size += 1      // s2.Weight
+               size += 1      // s2.Preference
+               size += 4      // s2.Type
+               size += 4      // s2.Flags
+               size += 4      // s2.Proto
+               size += 1 * 16 // s2.Nh.Address
+               size += 4      // s2.Nh.ViaLabel
+               size += 4      // s2.Nh.ObjID
+               size += 4      // s2.Nh.ClassifyTableIndex
+               size += 1      // s2.NLabels
+               for j3 := 0; j3 < 16; j3++ {
+                       var s3 fib_types.FibMplsLabel
+                       _ = s3
+                       if j3 < len(s2.LabelStack) {
+                               s3 = s2.LabelStack[j3]
+                       }
+                       size += 1 // s3.IsUniform
+                       size += 4 // s3.Label
+                       size += 1 // s3.TTL
+                       size += 1 // s3.Exp
+               }
+       }
+       return size
+}
+func (m *BierRouteDetails) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.BrRoute.BrBp))
+       buf.EncodeUint8(uint8(m.BrRoute.BrTblID.BtSet))
+       buf.EncodeUint8(uint8(m.BrRoute.BrTblID.BtSubDomain))
+       buf.EncodeUint8(uint8(m.BrRoute.BrTblID.BtHdrLenID))
+       buf.EncodeUint8(uint8(len(m.BrRoute.BrPaths)))
+       for j1 := 0; j1 < len(m.BrRoute.BrPaths); j1++ {
+               var v1 fib_types.FibPath
+               if j1 < len(m.BrRoute.BrPaths) {
+                       v1 = m.BrRoute.BrPaths[j1]
+               }
+               buf.EncodeUint32(uint32(v1.SwIfIndex))
+               buf.EncodeUint32(uint32(v1.TableID))
+               buf.EncodeUint32(uint32(v1.RpfID))
+               buf.EncodeUint8(uint8(v1.Weight))
+               buf.EncodeUint8(uint8(v1.Preference))
+               buf.EncodeUint32(uint32(v1.Type))
+               buf.EncodeUint32(uint32(v1.Flags))
+               buf.EncodeUint32(uint32(v1.Proto))
+               buf.EncodeBytes(v1.Nh.Address.XXX_UnionData[:], 0)
+               buf.EncodeUint32(uint32(v1.Nh.ViaLabel))
+               buf.EncodeUint32(uint32(v1.Nh.ObjID))
+               buf.EncodeUint32(uint32(v1.Nh.ClassifyTableIndex))
+               buf.EncodeUint8(uint8(v1.NLabels))
+               for j2 := 0; j2 < 16; j2++ {
+                       var v2 fib_types.FibMplsLabel
+                       if j2 < len(v1.LabelStack) {
+                               v2 = v1.LabelStack[j2]
+                       }
+                       buf.EncodeUint8(uint8(v2.IsUniform))
+                       buf.EncodeUint32(uint32(v2.Label))
+                       buf.EncodeUint8(uint8(v2.TTL))
+                       buf.EncodeUint8(uint8(v2.Exp))
+               }
+       }
+       return buf.Bytes(), nil
+}
+func (m *BierRouteDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.BrRoute.BrBp = buf.DecodeUint32()
+       m.BrRoute.BrTblID.BtSet = buf.DecodeUint8()
+       m.BrRoute.BrTblID.BtSubDomain = buf.DecodeUint8()
+       m.BrRoute.BrTblID.BtHdrLenID = buf.DecodeUint8()
+       m.BrRoute.BrNPaths = buf.DecodeUint8()
+       m.BrRoute.BrPaths = make([]fib_types.FibPath, int(m.BrRoute.BrNPaths))
+       for j1 := 0; j1 < len(m.BrRoute.BrPaths); j1++ {
+               m.BrRoute.BrPaths[j1].SwIfIndex = buf.DecodeUint32()
+               m.BrRoute.BrPaths[j1].TableID = buf.DecodeUint32()
+               m.BrRoute.BrPaths[j1].RpfID = buf.DecodeUint32()
+               m.BrRoute.BrPaths[j1].Weight = buf.DecodeUint8()
+               m.BrRoute.BrPaths[j1].Preference = buf.DecodeUint8()
+               m.BrRoute.BrPaths[j1].Type = fib_types.FibPathType(buf.DecodeUint32())
+               m.BrRoute.BrPaths[j1].Flags = fib_types.FibPathFlags(buf.DecodeUint32())
+               m.BrRoute.BrPaths[j1].Proto = fib_types.FibPathNhProto(buf.DecodeUint32())
+               copy(m.BrRoute.BrPaths[j1].Nh.Address.XXX_UnionData[:], buf.DecodeBytes(16))
+               m.BrRoute.BrPaths[j1].Nh.ViaLabel = buf.DecodeUint32()
+               m.BrRoute.BrPaths[j1].Nh.ObjID = buf.DecodeUint32()
+               m.BrRoute.BrPaths[j1].Nh.ClassifyTableIndex = buf.DecodeUint32()
+               m.BrRoute.BrPaths[j1].NLabels = buf.DecodeUint8()
+               for j2 := 0; j2 < 16; j2++ {
+                       m.BrRoute.BrPaths[j1].LabelStack[j2].IsUniform = buf.DecodeUint8()
+                       m.BrRoute.BrPaths[j1].LabelStack[j2].Label = buf.DecodeUint32()
+                       m.BrRoute.BrPaths[j1].LabelStack[j2].TTL = buf.DecodeUint8()
+                       m.BrRoute.BrPaths[j1].LabelStack[j2].Exp = buf.DecodeUint8()
+               }
+       }
+       return nil
+}
+
+// BierRouteDump defines message 'bier_route_dump'.
+type BierRouteDump struct {
+       BrTblID BierTableID `binapi:"bier_table_id,name=br_tbl_id" json:"br_tbl_id,omitempty"`
+}
+
+func (m *BierRouteDump) Reset()               { *m = BierRouteDump{} }
+func (*BierRouteDump) GetMessageName() string { return "bier_route_dump" }
+func (*BierRouteDump) GetCrcString() string   { return "38339846" }
+func (*BierRouteDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *BierRouteDump) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 1 // m.BrTblID.BtSet
+       size += 1 // m.BrTblID.BtSubDomain
+       size += 1 // m.BrTblID.BtHdrLenID
+       return size
+}
+func (m *BierRouteDump) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint8(uint8(m.BrTblID.BtSet))
+       buf.EncodeUint8(uint8(m.BrTblID.BtSubDomain))
+       buf.EncodeUint8(uint8(m.BrTblID.BtHdrLenID))
+       return buf.Bytes(), nil
+}
+func (m *BierRouteDump) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.BrTblID.BtSet = buf.DecodeUint8()
+       m.BrTblID.BtSubDomain = buf.DecodeUint8()
+       m.BrTblID.BtHdrLenID = buf.DecodeUint8()
+       return nil
+}
+
+// BierTableAddDel defines message 'bier_table_add_del'.
+type BierTableAddDel struct {
+       BtTblID BierTableID `binapi:"bier_table_id,name=bt_tbl_id" json:"bt_tbl_id,omitempty"`
+       BtLabel uint32      `binapi:"u32,name=bt_label" json:"bt_label,omitempty"`
+       BtIsAdd bool        `binapi:"bool,name=bt_is_add" json:"bt_is_add,omitempty"`
+}
+
+func (m *BierTableAddDel) Reset()               { *m = BierTableAddDel{} }
+func (*BierTableAddDel) GetMessageName() string { return "bier_table_add_del" }
+func (*BierTableAddDel) GetCrcString() string   { return "35e59209" }
+func (*BierTableAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *BierTableAddDel) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 1 // m.BtTblID.BtSet
+       size += 1 // m.BtTblID.BtSubDomain
+       size += 1 // m.BtTblID.BtHdrLenID
+       size += 4 // m.BtLabel
+       size += 1 // m.BtIsAdd
+       return size
+}
+func (m *BierTableAddDel) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint8(uint8(m.BtTblID.BtSet))
+       buf.EncodeUint8(uint8(m.BtTblID.BtSubDomain))
+       buf.EncodeUint8(uint8(m.BtTblID.BtHdrLenID))
+       buf.EncodeUint32(uint32(m.BtLabel))
+       buf.EncodeBool(m.BtIsAdd)
+       return buf.Bytes(), nil
+}
+func (m *BierTableAddDel) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.BtTblID.BtSet = buf.DecodeUint8()
+       m.BtTblID.BtSubDomain = buf.DecodeUint8()
+       m.BtTblID.BtHdrLenID = buf.DecodeUint8()
+       m.BtLabel = buf.DecodeUint32()
+       m.BtIsAdd = buf.DecodeBool()
+       return nil
+}
+
+// BierTableAddDelReply defines message 'bier_table_add_del_reply'.
+type BierTableAddDelReply struct {
+       Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
+}
+
+func (m *BierTableAddDelReply) Reset()               { *m = BierTableAddDelReply{} }
+func (*BierTableAddDelReply) GetMessageName() string { return "bier_table_add_del_reply" }
+func (*BierTableAddDelReply) GetCrcString() string   { return "e8d4e804" }
+func (*BierTableAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *BierTableAddDelReply) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.Retval
+       return size
+}
+func (m *BierTableAddDelReply) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.Retval))
+       return buf.Bytes(), nil
+}
+func (m *BierTableAddDelReply) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.Retval = int32(buf.DecodeUint32())
+       return nil
+}
+
+// BierTableDetails defines message 'bier_table_details'.
+type BierTableDetails struct {
+       BtLabel uint32      `binapi:"u32,name=bt_label" json:"bt_label,omitempty"`
+       BtTblID BierTableID `binapi:"bier_table_id,name=bt_tbl_id" json:"bt_tbl_id,omitempty"`
+}
+
+func (m *BierTableDetails) Reset()               { *m = BierTableDetails{} }
+func (*BierTableDetails) GetMessageName() string { return "bier_table_details" }
+func (*BierTableDetails) GetCrcString() string   { return "fc44a9dd" }
+func (*BierTableDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+
+func (m *BierTableDetails) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       size += 4 // m.BtLabel
+       size += 1 // m.BtTblID.BtSet
+       size += 1 // m.BtTblID.BtSubDomain
+       size += 1 // m.BtTblID.BtHdrLenID
+       return size
+}
+func (m *BierTableDetails) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       buf.EncodeUint32(uint32(m.BtLabel))
+       buf.EncodeUint8(uint8(m.BtTblID.BtSet))
+       buf.EncodeUint8(uint8(m.BtTblID.BtSubDomain))
+       buf.EncodeUint8(uint8(m.BtTblID.BtHdrLenID))
+       return buf.Bytes(), nil
+}
+func (m *BierTableDetails) Unmarshal(b []byte) error {
+       buf := codec.NewBuffer(b)
+       m.BtLabel = buf.DecodeUint32()
+       m.BtTblID.BtSet = buf.DecodeUint8()
+       m.BtTblID.BtSubDomain = buf.DecodeUint8()
+       m.BtTblID.BtHdrLenID = buf.DecodeUint8()
+       return nil
+}
+
+// BierTableDump defines message 'bier_table_dump'.
+type BierTableDump struct{}
+
+func (m *BierTableDump) Reset()               { *m = BierTableDump{} }
+func (*BierTableDump) GetMessageName() string { return "bier_table_dump" }
+func (*BierTableDump) GetCrcString() string   { return "51077d14" }
+func (*BierTableDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+
+func (m *BierTableDump) Size() int {
+       if m == nil {
+               return 0
+       }
+       var size int
+       return size
+}
+func (m *BierTableDump) Marshal(b []byte) ([]byte, error) {
+       var buf *codec.Buffer
+       if b == nil {
+               buf = codec.NewBuffer(make([]byte, m.Size()))
+       } else {
+               buf = codec.NewBuffer(b)
+       }
+       return buf.Bytes(), nil
+}
+func (m *BierTableDump) Unmarshal(b []byte) error {
+       return nil
+}
+
+func init() { file_bier_binapi_init() }
+func file_bier_binapi_init() {
+       api.RegisterMessage((*BierDispEntryAddDel)(nil), "bier_disp_entry_add_del_648323eb")
+       api.RegisterMessage((*BierDispEntryAddDelReply)(nil), "bier_disp_entry_add_del_reply_e8d4e804")
+       api.RegisterMessage((*BierDispEntryDetails)(nil), "bier_disp_entry_details_e5b039a9")
+       api.RegisterMessage((*BierDispEntryDump)(nil), "bier_disp_entry_dump_b5fa54ad")
+       api.RegisterMessage((*BierDispTableAddDel)(nil), "bier_disp_table_add_del_889657ac")
+       api.RegisterMessage((*BierDispTableAddDelReply)(nil), "bier_disp_table_add_del_reply_e8d4e804")
+       api.RegisterMessage((*BierDispTableDetails)(nil), "bier_disp_table_details_d27942c0")
+       api.RegisterMessage((*BierDispTableDump)(nil), "bier_disp_table_dump_51077d14")
+       api.RegisterMessage((*BierImpAdd)(nil), "bier_imp_add_3856dc3d")
+       api.RegisterMessage((*BierImpAddReply)(nil), "bier_imp_add_reply_d49c5793")
+       api.RegisterMessage((*BierImpDel)(nil), "bier_imp_del_7d45edf6")
+       api.RegisterMessage((*BierImpDelReply)(nil), "bier_imp_del_reply_e8d4e804")
+       api.RegisterMessage((*BierImpDetails)(nil), "bier_imp_details_b76192df")
+       api.RegisterMessage((*BierImpDump)(nil), "bier_imp_dump_51077d14")
+       api.RegisterMessage((*BierRouteAddDel)(nil), "bier_route_add_del_f29edca0")
+       api.RegisterMessage((*BierRouteAddDelReply)(nil), "bier_route_add_del_reply_e8d4e804")
+       api.RegisterMessage((*BierRouteDetails)(nil), "bier_route_details_39ee6a56")
+       api.RegisterMessage((*BierRouteDump)(nil), "bier_route_dump_38339846")
+       api.RegisterMessage((*BierTableAddDel)(nil), "bier_table_add_del_35e59209")
+       api.RegisterMessage((*BierTableAddDelReply)(nil), "bier_table_add_del_reply_e8d4e804")
+       api.RegisterMessage((*BierTableDetails)(nil), "bier_table_details_fc44a9dd")
+       api.RegisterMessage((*BierTableDump)(nil), "bier_table_dump_51077d14")
+}
+
+// Messages returns list of all messages in this module.
+func AllMessages() []api.Message {
+       return []api.Message{
+               (*BierDispEntryAddDel)(nil),
+               (*BierDispEntryAddDelReply)(nil),
+               (*BierDispEntryDetails)(nil),
+               (*BierDispEntryDump)(nil),
+               (*BierDispTableAddDel)(nil),
+               (*BierDispTableAddDelReply)(nil),
+               (*BierDispTableDetails)(nil),
+               (*BierDispTableDump)(nil),
+               (*BierImpAdd)(nil),
+               (*BierImpAddReply)(nil),
+               (*BierImpDel)(nil),
+               (*BierImpDelReply)(nil),
+               (*BierImpDetails)(nil),
+               (*BierImpDump)(nil),
+               (*BierRouteAddDel)(nil),
+               (*BierRouteAddDelReply)(nil),
+               (*BierRouteDetails)(nil),
+               (*BierRouteDump)(nil),
+               (*BierTableAddDel)(nil),
+               (*BierTableAddDelReply)(nil),
+               (*BierTableDetails)(nil),
+               (*BierTableDump)(nil),
+       }
+}